Backup of the source code and contents from a few years ago
This commit is contained in:
commit
f92f8f7853
17
.htaccess
Normal file
17
.htaccess
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
RewriteRule ^$ ./site/page/Accueil.html [PT,L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} !^/site/
|
||||
RewriteRule (.*) /site/$1 [NC]
|
||||
|
||||
RewriteCond %{REQUEST_URI} !^/site/page/
|
||||
RewriteCond %{REQUEST_URI} !^/diff/
|
||||
RewriteCond %{REQUEST_URI} !^/editer/
|
||||
RewriteCond %{REQUEST_URI} !^/historique/
|
||||
RewriteCond %{REQUEST_URI} !^/image/
|
||||
RewriteCond %{REQUEST_URI} !^/login/
|
||||
RewriteCond %{REQUEST_URI} !^/style/
|
||||
RewriteCond %{REQUEST_URI} !^/utilisateur/
|
||||
RewriteRule /site/(.*) /site/page/$1 [L]
|
8
config.php
Normal file
8
config.php
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?php
|
||||
cfg("localisation", "langue", "fr");
|
||||
|
||||
cfg("url", "base", "http://gruntnetwork.com/");
|
||||
cfg("url", "accueil", get_cfg("url", "base") . "Accueil.html");
|
||||
cfg("url", "licence", get_cfg("url", "base") . "Licence.html");
|
||||
cfg("url", "page", "ne:" . get_cfg("url", "base") . "{nom}.html");
|
||||
?>
|
11
fastiki/langues/en.php
Normal file
11
fastiki/langues/en.php
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
nouvelle_langue("en");
|
||||
|
||||
traduction("en", "_code langue", "en");
|
||||
|
||||
traduction("en", "Accueil", "Home");
|
||||
traduction("en", "Éditer", "Edit");
|
||||
traduction("en", "Édition de la page", "Editing the page");
|
||||
traduction("en", "Appliquer", "Apply");
|
||||
traduction("en", "Apperçu", "Preview");
|
||||
?>
|
11
fastiki/langues/fr.php
Normal file
11
fastiki/langues/fr.php
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?php
|
||||
nouvelle_langue("fr");
|
||||
|
||||
traduction("fr", "_code langue", "fr");
|
||||
|
||||
traduction("fr", "Accueil", "Accueil");
|
||||
traduction("fr", "Éditer", "Éditer");
|
||||
traduction("fr", "Édition de la page", "Édition de la page");
|
||||
traduction("fr", "Appliquer", "Appliquer");
|
||||
traduction("fr", "Apperçu", "Apperçu");
|
||||
?>
|
4
fastiki/modeles/appercu.htmlf
Normal file
4
fastiki/modeles/appercu.htmlf
Normal file
|
@ -0,0 +1,4 @@
|
|||
<h1>{{{lang:Apperçu}}}</h1>
|
||||
${contenu}
|
||||
<h1>{{{lang:Edition de la page}}} ${he:nom page}</h1>
|
||||
${formulaire_edition}
|
2
fastiki/modeles/editer.htmlf
Normal file
2
fastiki/modeles/editer.htmlf
Normal file
|
@ -0,0 +1,2 @@
|
|||
<h1>{{{lang:Edition de la page}}} ${he:nom page}</h1>
|
||||
${formulaire_edition}
|
12
fastiki/modeles/formulaire_edition.htmlf
Normal file
12
fastiki/modeles/formulaire_edition.htmlf
Normal file
|
@ -0,0 +1,12 @@
|
|||
<form action="{{{url:editer:${nom page}:}}}" method="post" enctype="multipart/form-data">
|
||||
<p>
|
||||
<input type="text" name="titre" value="${he:nouveau nom page}" />
|
||||
</p>
|
||||
<p>
|
||||
<textarea name="source" cols="70" rows="22">${he:source}</textarea>
|
||||
</p>
|
||||
<p>
|
||||
<input type="submit" name="appliquer" value="{{{lang:Appliquer}}}" />
|
||||
<input type="submit" name="appercu" value="{{{lang:Apperçu}}}" />
|
||||
</p>
|
||||
</form>
|
29
fastiki/modeles/site.html
Normal file
29
fastiki/modeles/site.html
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{{{lang:_code langue}}}">
|
||||
<head>
|
||||
<title>${he:nom page}</title>
|
||||
<link rel="stylesheet" href="{{{url:style:style.css:}}}" type="text/css" />
|
||||
<script type="text/javascript" src="{{{url:style:logo.js:}}}"></script>
|
||||
</head>
|
||||
<body>
|
||||
<p id="entete">
|
||||
<img alt="Gruntnetwork ⁃" src="{{{url:image:${logo}:}}}" id="logo-grunt" />
|
||||
<span id="liens">
|
||||
<a href="{{{url:accueil::}}}" id="lien-accueil">{{{lang:Accueil}}}</a> ⁃
|
||||
<a href="{{{url:editer:${nom page}:}}}" id="lien-editer">{{{lang:Éditer}}}</a>
|
||||
</span>
|
||||
</p>
|
||||
<hr />
|
||||
<div id="contenu">
|
||||
${contenu}
|
||||
</div>
|
||||
<hr />
|
||||
<p id="pied">
|
||||
<span id="hebergeur">Hébergé par <a href="http://tuxfamily.org/" id="lien-tuxfamily">tuxfamily</a>.</span>
|
||||
<a href="{{{url:licence::}}}" id="lien-licence">{{{lang:Licence}}}</a>
|
||||
<span id="maj"><abbr title="Mise à jour">Màj </abbr>: ${he:datenbsp}</span>
|
||||
<span class="barriere-float"></span>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
1
fastiki/modeles/typedoc/page.htmlf
Normal file
1
fastiki/modeles/typedoc/page.htmlf
Normal file
|
@ -0,0 +1 @@
|
|||
${contenu}
|
7
fastiki/modeles/typedoc/tache.htmlf
Normal file
7
fastiki/modeles/typedoc/tache.htmlf
Normal file
|
@ -0,0 +1,7 @@
|
|||
<h1>Tâche : ${titre}</h1>
|
||||
<dl>
|
||||
<dt>Dependances :</dt>
|
||||
<dd>${dependances}</dd>
|
||||
</dl>
|
||||
<h2 id="tache-description">Description</h2>
|
||||
${contenu}
|
9
fastiki/php/authentification.php
Normal file
9
fastiki/php/authentification.php
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
function auth_get_user() {
|
||||
return "js";
|
||||
}
|
||||
|
||||
function auth_has_privilege($action, $page) {
|
||||
return true;
|
||||
}
|
||||
?>
|
15
fastiki/php/cache.php
Normal file
15
fastiki/php/cache.php
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?php
|
||||
function get_nom_fichier_cache($type_cache, $nom_page) {
|
||||
return get_cfg("dossier cache", $type_cache) . "/" . securiser_chaine($nom_page) . ".html";
|
||||
}
|
||||
|
||||
// TODO : Il faudrait mettre en cache tous les tags / seulement certains, selon le type de cache.
|
||||
// TODO : Pour l'instant, le cache des sources compilées n'est pas utilisé (ni utilisable).
|
||||
function mettre_a_jour_cache($type_cache, $nom_page, $nouveau_nom_page, $tags) {
|
||||
if ($nom_page != $nouveau_nom_page)
|
||||
unlink(get_nom_fichier_cache($type_cache, $nom_page)); // TODO : mettre en place une redirection
|
||||
|
||||
if (! file_put_contents(get_nom_fichier_cache($type_cache, $nouveau_nom_page), $tags["contenu"], LOCK_EX))
|
||||
die("N'a pas pu mettre à jour le cache $type_cache pour $page");
|
||||
}
|
||||
?>
|
42
fastiki/php/config_defaut.php
Normal file
42
fastiki/php/config_defaut.php
Normal file
|
@ -0,0 +1,42 @@
|
|||
<?php
|
||||
cfg("localisation", "langue", "fr");
|
||||
|
||||
/* Dossiers */
|
||||
cfg("dossier", "base", "../..");
|
||||
cfg("dossier", "source page", get_cfg("dossier", "base") . "/source_pages");
|
||||
cfg("dossier", "modeles", get_cfg("dossier", "base") . "/fastiki/modeles");
|
||||
cfg("dossier", "plugins", get_cfg("dossier", "base") . "/fastiki/plugins");
|
||||
cfg("dossier", "langues", get_cfg("dossier", "base") . "/fastiki/langues");
|
||||
cfg("dossier", "historique", get_cfg("dossier", "base") . "/historique");
|
||||
cfg("dossier", "historique", get_cfg("dossier", "base") . "/historique");
|
||||
|
||||
cfg("fichier", "log", get_cfg("dossier", "base") . "/historique/log.txt");
|
||||
|
||||
/* cfg("dossier", "page", get_cfg("dossier", "base") . "/pages");
|
||||
cfg("dossier", "cache", get_cfg("dossier", "base") . "/cache");
|
||||
cfg("dossier", "historique", get_cfg("dossier", "base") . "/historique");
|
||||
cfg("dossier", "langue", get_cfg("dossier", "base") . "/langues");
|
||||
cfg("dossier", "php", get_cfg("dossier", "base") . "/php");
|
||||
cfg("dossier", "utilisateur", get_cfg("dossier", "base") . "/utilisateurs"); */
|
||||
|
||||
/* Dossiers de cache */
|
||||
// cfg("dossier cache", "source compilee", get_cfg("dossier", "cache") . "/source_compilee");
|
||||
cfg("dossier cache", "page", get_cfg("dossier", "base") . "/site/page");
|
||||
// cfg("dossier cache", "historique", get_cfg("dossier", "cache") . "/historique");
|
||||
// cfg("dossier cache", "diff", get_cfg("dossier", "cache") . "/diff");
|
||||
|
||||
/* Mise en cache */
|
||||
cfg("cache", "source compilee", TRUE);
|
||||
cfg("cache", "page", TRUE);
|
||||
cfg("cache", "historique", FALSE);
|
||||
cfg("cache", "diff", FALSE);
|
||||
|
||||
/* URLs */
|
||||
cfg("url", "base", "http://www.example.com/site/");
|
||||
cfg("url", "accueil", "ne:" . get_cfg("url", "base") . "page/Accueil.html");
|
||||
cfg("url", "licence", "ne:" . get_cfg("url", "base") . "page/Licence.html");
|
||||
cfg("url", "editer", "ue:" . get_cfg("url", "base") . "editer/?page={nom}");
|
||||
cfg("url", "page", "ne:" . get_cfg("url", "base") . "page/{nom}.html");
|
||||
cfg("url", "style", "ne:" . get_cfg("url", "base") . "style/{nom}");
|
||||
cfg("url", "image", "ne:" . get_cfg("url", "base") . "image/{nom}");
|
||||
?>
|
41
fastiki/php/configuration.php
Normal file
41
fastiki/php/configuration.php
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
$CONFIG = array();
|
||||
|
||||
function cfg($cat, $var, $val) {
|
||||
global $CONFIG;
|
||||
|
||||
if (! has_cfg_cat($cat))
|
||||
$CONFIG[$cat] = array();
|
||||
|
||||
if (! has_cfg($cat, $var))
|
||||
$CONFIG[$cat][$var] = $val;
|
||||
}
|
||||
|
||||
function get_cfg($cat, $var, $alt = NULL) {
|
||||
global $CONFIG;
|
||||
|
||||
if (has_cfg($cat, $var))
|
||||
return $CONFIG[$cat][$var];
|
||||
else if (!is_null($alt))
|
||||
return $alt;
|
||||
else
|
||||
die("La variable de configuration n'est pas définie : $cat : $var");
|
||||
}
|
||||
|
||||
function has_cfg($cat, $var) {
|
||||
global $CONFIG;
|
||||
|
||||
return has_cfg_cat($cat) && isset($CONFIG[$cat][$var]);
|
||||
}
|
||||
|
||||
function has_cfg_cat($cat) {
|
||||
global $CONFIG;
|
||||
|
||||
return isset($CONFIG[$cat]);
|
||||
}
|
||||
|
||||
function charger_config() {
|
||||
include_once("../../config.php");
|
||||
require_once("config_defaut.php");
|
||||
}
|
||||
?>
|
56
fastiki/php/editer.php
Normal file
56
fastiki/php/editer.php
Normal file
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
require_once("require.php");
|
||||
|
||||
function generer_formulaire_edition($nom_page, $nouveau_nom_page, $source, $nom_resultat) {
|
||||
$tags_source = array(
|
||||
"utilisateur" => auth_get_user(),
|
||||
"date" => date("r"),
|
||||
"datenbsp" => preg_replace("| |", " ", date("r")), // space -> no-break space
|
||||
"logo" => "editer.png",
|
||||
"source" => $source,
|
||||
"nom page" => $nom_page,
|
||||
"nouveau nom page" => $nouveau_nom_page
|
||||
);
|
||||
|
||||
return compiler_page_modele("formulaire_edition.htmlf", $tags_source, $nom_resultat);
|
||||
}
|
||||
|
||||
function editer($nom_page, $nouveau_nom_page) {
|
||||
$nom_page = desecuriser_chaine($nom_page);
|
||||
$nouveau_nom_page = desecuriser_chaine($nouveau_nom_page);
|
||||
|
||||
if (post_has("appliquer")) {
|
||||
$source = dos2unix($_POST["source"]);
|
||||
|
||||
$tags_contenu = compiler_source($nouveau_nom_page, $source, "contenu");
|
||||
$tags_site = compiler_page_modele("site.html", $tags_contenu, "contenu");
|
||||
|
||||
// TODO : Homogénéiser les noms.
|
||||
// mettre_a_jour_cache("source compilee", $nom_page, $nouveau_nom_page, $tags_contenu);
|
||||
mettre_a_jour_cache("page", $nom_page, $nouveau_nom_page, $tags_site);
|
||||
historique_modifier_source(auth_get_user(), $nom_page, $nouveau_nom_page, $source);
|
||||
|
||||
header("HTTP/1.0 302 Redirect");
|
||||
header("Location: " . url("page", $nouveau_nom_page));
|
||||
|
||||
return "";
|
||||
} else if (post_has("appercu")) {
|
||||
$source = dos2unix($_POST["source"]);
|
||||
|
||||
$tags_formulaire_edition = generer_formulaire_edition($nom_page, $nouveau_nom_page, $source, "formulaire_edition");
|
||||
$tags_contenu = compiler_source($nouveau_nom_page, $source, "contenu");
|
||||
$tags_appercu = compiler_page_modele("appercu.htmlf", array_merge($tags_contenu, $tags_formulaire_edition), "contenu");
|
||||
$tags_site = compiler_page_modele("site.html", $tags_appercu, "contenu");
|
||||
|
||||
return $tags_site["contenu"];
|
||||
} else {
|
||||
$source = lire_source($nom_page, "page\n\n= $nom_page =");
|
||||
|
||||
$tags_formulaire_edition = generer_formulaire_edition($nom_page, $nom_page, $source, "formulaire_edition");
|
||||
$tags_editer = compiler_page_modele("editer.htmlf", $tags_formulaire_edition, "contenu");
|
||||
$tags_site = compiler_page_modele("site.html", $tags_editer, "contenu");
|
||||
|
||||
return $tags_site["contenu"];
|
||||
}
|
||||
}
|
||||
?>
|
35
fastiki/php/fichiers.php
Normal file
35
fastiki/php/fichiers.php
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
function lire_source($nom_page, $si_absent = NULL, $version = NULL) {
|
||||
return dos2unix(lire_fichier(get_nom_fichier_source($nom_page, $version), $si_absent));
|
||||
}
|
||||
|
||||
function lire_fichier($nom_fichier, $si_absent = NULL) {
|
||||
if (! file_exists($nom_fichier) && !is_null($si_absent))
|
||||
return $si_absent;
|
||||
|
||||
if (! $fichier = @fopen($nom_fichier, "r"))
|
||||
die ("N'a pas pu ouvrir '$nom_fichier' en lecture.");
|
||||
|
||||
$donnees = fread ($fichier, filesize($nom_fichier));
|
||||
fclose($fichier);
|
||||
|
||||
return $donnees;
|
||||
}
|
||||
|
||||
function ecrire_fichier($nom_fichier, $donnees) {
|
||||
if (! $fichier = @fopen($nom_fichier, "w"))
|
||||
die ("N'a pas pu ouvrir '$nom_fichier' en écriture.");
|
||||
|
||||
if ($donnees != "")
|
||||
if (fwrite($fichier, $donnees) == FALSE)
|
||||
die ("N'a pas pu écrire dans '$nom_fichier'.");
|
||||
|
||||
fclose($fichier);
|
||||
}
|
||||
|
||||
function mkdir_if_not_exists($nom_dossier) {
|
||||
if (! file_exists($nom_dossier))
|
||||
if (! mkdir($nom_dossier, 0777, true))
|
||||
die ("N'a pas pu créer le dossier '$nom_dossier'.");
|
||||
}
|
||||
?>
|
65
fastiki/php/fonctions.php
Normal file
65
fastiki/php/fonctions.php
Normal file
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
function isset_in($tab, $var, $alt = NULL, $callback = NULL, $callback_arg = NULL) {
|
||||
if (isset($tab[$var])) {
|
||||
if (function_exists($callback)) {
|
||||
return $callback($tab[$var], $callback_arg);
|
||||
} else {
|
||||
return $tab[$var];
|
||||
}
|
||||
} else {
|
||||
if (is_null($alt)) {
|
||||
return "<NON TROUVÉ : $var>";
|
||||
} else {
|
||||
return $alt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function post_has($champ) {
|
||||
return array_key_exists($champ, $_POST);
|
||||
}
|
||||
|
||||
function dos2unix($donnees) {
|
||||
$donnees = preg_replace("/\\015\\012/", "\012", $donnees);
|
||||
$donnees = preg_replace("/\\015/", "\012", $donnees);
|
||||
return $donnees;
|
||||
}
|
||||
|
||||
function unquote($donnees) {
|
||||
return preg_replace('/\\\\"/', '"', $donnees);
|
||||
}
|
||||
|
||||
function __replacevars($val) {
|
||||
return htmlentities($val, ENT_QUOTES, "UTF-8");
|
||||
}
|
||||
|
||||
function _replacevars($var, $vars) {
|
||||
if (preg_match("|^he:|", $var))
|
||||
return isset_in($vars, preg_replace("|^he:|", "", $var), NULL, "__replacevars");
|
||||
else
|
||||
return isset_in($vars, $var);
|
||||
}
|
||||
|
||||
function replacevars($donnees, $vars) {
|
||||
return preg_replace("/\\\${([^{}]+)}/e",
|
||||
"_replacevars(unquote('\\1'), \$vars)",
|
||||
$donnees);
|
||||
}
|
||||
|
||||
function subarrays($a, $index) {
|
||||
foreach ($a as $k => $v)
|
||||
$a[$k] = $a[$k][$index];
|
||||
return $a;
|
||||
}
|
||||
|
||||
function preg_find_delete($regexp, &$donnees, $match = NULL, $submatch = NULL, $limit = -1) {
|
||||
preg_match_all($regexp, $donnees, $matches);
|
||||
if (!is_null($match))
|
||||
$matches = subarrays($matches, $match);
|
||||
if (!is_null($submatch))
|
||||
$matches = $matches[$submatch];
|
||||
|
||||
$donnees = preg_replace($regexp, "", $donnees, $limit);
|
||||
return $matches;
|
||||
}
|
||||
?>
|
153
fastiki/php/historique.php
Normal file
153
fastiki/php/historique.php
Normal file
|
@ -0,0 +1,153 @@
|
|||
<?php
|
||||
function historique_get_current_version($nom_page) {
|
||||
$nom_fichier_version = get_nom_fichier_version($nom_page);
|
||||
|
||||
if (! file_exists($nom_fichier_version))
|
||||
return -1;
|
||||
|
||||
if (! $fichier_version = @fopen($nom_fichier_version, "r"))
|
||||
die ("N'a pas pu ouvrir '$nom_fichier_version' en lecture.");
|
||||
if (! flock($fichier_version, LOCK_SH))
|
||||
die ("N'a pas pu vérouiller '$nom_fichier_version'.");
|
||||
|
||||
$version = fread($fichier_version, filesize($nom_fichier_version));
|
||||
flock($fichier_version, LOCK_UN);
|
||||
|
||||
$version = explode("\n", $version);
|
||||
$version = $version[0];
|
||||
if (is_numeric($version)) {
|
||||
$version = intval($version);
|
||||
} else {
|
||||
$version = -1;
|
||||
}
|
||||
|
||||
return $version;
|
||||
}
|
||||
|
||||
function historique_nouvelle_version($nom_page) {
|
||||
$dossier_hist = get_dossier_hist($nom_page);
|
||||
mkdir_if_not_exists($dossier_hist);
|
||||
|
||||
/* Ouverture et verrouillage du compteur de versions */
|
||||
$nom_fichier_version = get_nom_fichier_version($nom_page);
|
||||
touch($nom_fichier_version); // Pour être sûr que le fichier existe déjà.
|
||||
if (! $fichier_version = @fopen($nom_fichier_version, "r+"))
|
||||
die ("N'a pas pu ouvrir '$nom_fichier_version' en ajout/écriture.");
|
||||
if (! flock($fichier_version, LOCK_EX))
|
||||
die ("N'a pas pu vérouiller '$nom_fichier_version'.");
|
||||
|
||||
/* Lecture et incrémentation du compteur de versions */
|
||||
$version = "";
|
||||
if (($filesz = filesize($nom_fichier_version)) != 0)
|
||||
$version = fread($fichier_version, $filesz);
|
||||
$version = explode("\n", $version);
|
||||
$version = $version[0];
|
||||
if (is_numeric($version)) {
|
||||
$version = intval($version) + 1;
|
||||
} else {
|
||||
$version = 0;
|
||||
}
|
||||
|
||||
/* Écriture du compteur de versions */
|
||||
if (! ftruncate($fichier_version, 0))
|
||||
die ("N'a pas pu tronquer '$nom_fichier_version'.");
|
||||
if (! rewind($fichier_version))
|
||||
die ("N'a pas pu rembobiner '$nom_fichier_version'.");
|
||||
if (! fwrite($fichier_version, $version))
|
||||
die ("N'a pas pu écrire dans '$nom_fichier_version'.");
|
||||
|
||||
/* Déverrouillage et fermeture */
|
||||
flock($fichier_version, LOCK_UN);
|
||||
fclose($fichier_version);
|
||||
|
||||
mkdir(get_dossier_hist_version($nom_page, $version), 0777, true);
|
||||
|
||||
return $version;
|
||||
}
|
||||
|
||||
function get_dossier_hist($nom_page) {
|
||||
return get_cfg("dossier", "historique") . "/page/" . securiser_chaine_slashes($nom_page);
|
||||
}
|
||||
|
||||
function get_dossier_hist_version($nom_page, $version = NULL) {
|
||||
if (is_null($version))
|
||||
$version = historique_get_current_version($nom_page);
|
||||
return get_dossier_hist($nom_page) . "/" . $version;
|
||||
}
|
||||
|
||||
function get_nom_fichier_version($nom_page) {
|
||||
return get_dossier_hist($nom_page) . "/version.txt";
|
||||
}
|
||||
|
||||
function get_nom_fichier_source($nom_page, $version = NULL) {
|
||||
return get_dossier_hist_version($nom_page, $version) . "/source.txt";
|
||||
}
|
||||
|
||||
function get_nom_fichier_log($nom_page, $version = NULL) {
|
||||
return get_dossier_hist_version($nom_page, $version) . "/log.txt";
|
||||
}
|
||||
|
||||
function page_existe($nom_page, $version = NULL) {
|
||||
return file_exists(get_nom_fichier_source);
|
||||
}
|
||||
|
||||
|
||||
function ecrire_log($temps, $nom_utilisateur, $action, $nom_page, $version, $depuis_page, $depuis_version) {
|
||||
$donnees = securiser_chaine_espaces($temps)
|
||||
. " " . securiser_chaine_espaces($nom_utilisateur)
|
||||
. " " . securiser_chaine_espaces($action)
|
||||
. " " . securiser_chaine_espaces($nom_page)
|
||||
. " " . securiser_chaine_espaces($version)
|
||||
. " " . securiser_chaine_espaces($depuis_page)
|
||||
. " " . securiser_chaine_espaces($depuis_version)
|
||||
. "\n";
|
||||
|
||||
if (! file_put_contents(get_nom_fichier_log($nom_page, $version), $donnees, FILE_APPEND | LOCK_EX))
|
||||
die("Impossible de mettre à jour le log");
|
||||
|
||||
if (! file_put_contents(get_cfg("fichier", "log"), $donnees, FILE_APPEND | LOCK_EX))
|
||||
die("Impossible de mettre à jour le log général");
|
||||
}
|
||||
|
||||
|
||||
|
||||
function historique_modifier_source($nom_utilisateur, $nom_page, $nouveau_nom_page, $source) {
|
||||
if ($nom_page != $nouveau_nom_page) {
|
||||
historique_renommer_page($nom_utilisateur, $nom_page, $nouveau_nom_page, $source);
|
||||
} else if (! page_existe($nom_page)) {
|
||||
historique_creer_page($nom_utilisateur, $nom_page, $source);
|
||||
} else {
|
||||
$version = historique_nouvelle_version($nom_page);
|
||||
ecrire_fichier(get_nom_fichier_source($nom_page, $version), $source);
|
||||
ecrire_log(time(), $nom_utilisateur, "Modifier", $nom_page, $version, "", "");
|
||||
}
|
||||
}
|
||||
|
||||
function historique_renommer_page($nom_utilisateur, $depuis_page, $nom_page, $source = NULL) {
|
||||
$version_depuis = historique_nouvelle_version($depuis_page);
|
||||
$version = historique_nouvelle_version($nom_page);
|
||||
|
||||
if (is_null($source))
|
||||
$source = lire_source($depuis_page, "", $depuis_version);
|
||||
|
||||
ecrire_fichier(get_nom_fichier_source($nom_page, $version), $source);
|
||||
|
||||
$t = time();
|
||||
ecrire_log($t, $nom_utilisateur, "RenomerDepuis", $nom_page, $version, $depuis_page, $version_depuis - 1);
|
||||
ecrire_log($t, $nom_utilisateur, "RenomerVers", $depuis_page, $version_depuis, $nom_page, $version);
|
||||
|
||||
return $version;
|
||||
}
|
||||
|
||||
function historique_creer_page($nom_utilisateur, $nom_page, $source = "") {
|
||||
$version = historique_nouvelle_version($nom_page);
|
||||
|
||||
ecrire_fichier(get_nom_fichier_source($nom_page, $version), $source);
|
||||
ecrire_log(time(), $nom_utilisateur, "Creer", $nom_page, $version, "", "");
|
||||
|
||||
return $version;
|
||||
}
|
||||
|
||||
function historique_supprimer_page($nom_utilisateur, $nom_page) {
|
||||
}
|
||||
?>
|
48
fastiki/php/langues.php
Normal file
48
fastiki/php/langues.php
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?php
|
||||
$LANGUES = array();
|
||||
|
||||
function nouvelle_langue($langue, $langue_base = NULL) {
|
||||
global $LANGUES;
|
||||
|
||||
if (isset($LANGUES[$langue])) {
|
||||
die ("Langue déjà définie : $langue");
|
||||
} else {
|
||||
if (is_null($langue_base)) {
|
||||
$LANGUES[$langue] = array();
|
||||
} else {
|
||||
/* TODO : Il faut cloner le tableau, là on fait une référence seulement */
|
||||
$LANGUES[$langue] = $LANGUES[$langue_base];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function traduction($langue, $orig, $trad) {
|
||||
global $LANGUES;
|
||||
|
||||
if (! isset($LANGUES[$langue]))
|
||||
die ("Langue inexistante : $langue");
|
||||
else if (! isset($LANGUES[$langue][$orig]))
|
||||
$LANGUES[$langue][$orig] = $trad;
|
||||
}
|
||||
|
||||
function traduire($orig, $langue = NULL) {
|
||||
global $LANGUES;
|
||||
|
||||
if (is_null($langue))
|
||||
$langue = get_cfg("localisation", "langue");
|
||||
|
||||
if (! isset($LANGUES[$langue]))
|
||||
die ("Langue inexistante : $langue");
|
||||
|
||||
return isset_in($LANGUES[$langue], $orig, $orig);
|
||||
}
|
||||
|
||||
function charger_langues() {
|
||||
if (! $dossier = @opendir(get_cfg("dossier", "langues")))
|
||||
die ("N'a pas pu ouvrir '" . get_cfg("dossier", "langues") . "'.");
|
||||
|
||||
while ($fichier = readdir($dossier))
|
||||
if (preg_match("/\.php$/", $fichier) != 0)
|
||||
include_once(get_cfg("dossier", "langues") . "/" . $fichier);
|
||||
}
|
||||
?>
|
20
fastiki/php/modele.php
Normal file
20
fastiki/php/modele.php
Normal file
|
@ -0,0 +1,20 @@
|
|||
<?php
|
||||
require_once("require.php");
|
||||
|
||||
function compiler_page_modele($nom_modele, $tags, $nom_resultat) {
|
||||
$donnees = lire_fichier(get_cfg("dossier", "modeles") . "/" . securiser_chaine($nom_modele));
|
||||
$tags_modele = $tags;
|
||||
$tags_modele[$nom_resultat] = $donnees;
|
||||
|
||||
//echo $donnees;
|
||||
$tags_modele = appliquer_plugins("pre_modele", $tags_modele, $nom_resultat);
|
||||
|
||||
//echo $tags_modele[$nom_resultat];
|
||||
$donnees = replacevars($tags_modele[$nom_resultat], $tags);
|
||||
$tags_modele[$nom_resultat] = $donnees;
|
||||
|
||||
appliquer_plugins("post_modele", $tags_modele, $nom_resultat);
|
||||
|
||||
return $tags_modele;
|
||||
}
|
||||
?>
|
51
fastiki/php/plugin.php
Normal file
51
fastiki/php/plugin.php
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
$PLUGIN = array();
|
||||
|
||||
function enregisterPlugin($nom) {
|
||||
global $PLUGIN;
|
||||
$PLUGIN[] = $nom;
|
||||
}
|
||||
|
||||
function appliquer_plugins($methode, $tags, $nom_resultat) {
|
||||
global $PLUGIN;
|
||||
|
||||
foreach ($PLUGIN as $plg) {
|
||||
$nom_fn = $plg . "_" . $methode;
|
||||
if (function_exists($nom_fn))
|
||||
$tags = $nom_fn($tags, $nom_resultat);
|
||||
}
|
||||
|
||||
return $tags;
|
||||
}
|
||||
|
||||
function compiler_source($nom_page, $source, $nom_resultat) {
|
||||
preg_match("|^(.*?)\n\n(.*)$|s", $source, $matches);
|
||||
$typedoc = ($matches[1] == "") ? "page" : $matches[1];
|
||||
|
||||
$tags = array(
|
||||
"utilisateur" => auth_get_user(),
|
||||
"date" => date("r"),
|
||||
"datenbsp" => preg_replace("| |", " ", date("r")), // space -> no-break space
|
||||
"logo" => "logo.png",
|
||||
"source" => $source,
|
||||
"nom page" => $nom_page,
|
||||
"typedoc" => $typedoc,
|
||||
$nom_resultat => $matches[2]
|
||||
);
|
||||
|
||||
$tags = appliquer_plugins("typedoc_".$tags["typedoc"], $tags, $nom_resultat);
|
||||
$tags = appliquer_plugins("base", $tags, $nom_resultat);
|
||||
$tags = compiler_page_modele("typedoc/".$tags["typedoc"].".htmlf", $tags, $nom_resultat);
|
||||
|
||||
return $tags;
|
||||
}
|
||||
|
||||
function charger_plugins() {
|
||||
if (! $dossier = @opendir(get_cfg("dossier", "plugins")))
|
||||
die ("N'a pas pu ouvrir '" . get_cfg("dossier", "plugins") . "'.");
|
||||
|
||||
while ($fichier = readdir($dossier))
|
||||
if (preg_match("/\.php$/", $fichier) != 0)
|
||||
include_once(get_cfg("dossier", "plugins") . "/" . $fichier);
|
||||
}
|
||||
?>
|
16
fastiki/php/require.php
Normal file
16
fastiki/php/require.php
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
require_once("securite.php");
|
||||
require_once("configuration.php");
|
||||
require_once("fonctions.php");
|
||||
require_once("fichiers.php");
|
||||
require_once("cache.php");
|
||||
require_once("modele.php");
|
||||
require_once("plugin.php");
|
||||
require_once("historique.php");
|
||||
require_once("authentification.php");
|
||||
require_once("langues.php");
|
||||
|
||||
charger_config();
|
||||
charger_plugins();
|
||||
charger_langues();
|
||||
?>
|
51
fastiki/php/securite.php
Normal file
51
fastiki/php/securite.php
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?php
|
||||
/* SECURITE */
|
||||
function securiser_chaine($chaine) {
|
||||
/* Ce serait plus simple d'utiliser urlencode, mais les / seraient échappés (pas pratique pour taches/...). */
|
||||
$chaine = preg_replace("|-|", "-2d", $chaine);
|
||||
$chaine = preg_replace("|^/*|e", "str_repeat('-2f', strlen('\\0'))", $chaine);
|
||||
$chaine = preg_replace("|\.\./|", "-2e-2e/", $chaine);
|
||||
$chaine = preg_replace("|~|", "-7e", $chaine);
|
||||
$chaine = preg_replace("|\\000|", "-00", $chaine);
|
||||
$chaine = preg_replace("|\n|", "-0a", $chaine); // TODO : Verifier !!!
|
||||
$chaine = preg_replace("|^$|", "-vide", $chaine);
|
||||
|
||||
return $chaine;
|
||||
}
|
||||
|
||||
function securiser_chaine_espaces($chaine) {
|
||||
$chaine = securiser_chaine($chaine);
|
||||
$chaine = preg_replace("| |", "-20", $chaine);
|
||||
return $chaine;
|
||||
}
|
||||
|
||||
function desecuriser_chaine_espaces($chaine) {
|
||||
$chaine = preg_replace("|-20|", " ", $chaine);
|
||||
$chaine = securiser_chaine($chaine);
|
||||
return $chaine;
|
||||
}
|
||||
|
||||
function securiser_chaine_slashes($chaine) {
|
||||
$chaine = securiser_chaine($chaine);
|
||||
$chaine = preg_replace("|/|", "-2f", $chaine);
|
||||
return $chaine;
|
||||
}
|
||||
|
||||
function desecuriser_chaine_slashes($chaine) {
|
||||
$chaine = preg_replace("|-2f|", "/", $chaine);
|
||||
$chaine = securiser_chaine($chaine);
|
||||
return $chaine;
|
||||
}
|
||||
|
||||
/* SECURITE */
|
||||
function desecuriser_chaine($chaine) {
|
||||
$chaine = preg_replace("|^-vide$|", "", $chaine);
|
||||
$chaine = preg_replace("|-0a|", "\n", $chaine); // TODO : Verifier !!!
|
||||
$chaine = preg_replace("|-00|", "\\000", $chaine);
|
||||
$chaine = preg_replace("|-7e|", "~", $chaine);
|
||||
$chaine = preg_replace("|-2e-2e/|", "../", $chaine);
|
||||
$chaine = preg_replace("|-2f|", "/", $chaine);
|
||||
$chaine = preg_replace("|-2d|", "-", $chaine);
|
||||
return $chaine;
|
||||
}
|
||||
?>
|
18
fastiki/plugins/langue.php
Normal file
18
fastiki/plugins/langue.php
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
function langue_base($tags, $nom_resultat) {
|
||||
$donnees = $tags[$nom_resultat];
|
||||
|
||||
$donnees = preg_replace("/{{{lang:(.+)}}}/Ue",
|
||||
"traduire('\\1')",
|
||||
$donnees);
|
||||
|
||||
$tags[$nom_resultat] = $donnees;
|
||||
return $tags;
|
||||
}
|
||||
|
||||
function langue_pre_modele($tags, $nom_resultat) {
|
||||
return langue_base($tags, $nom_resultat);
|
||||
}
|
||||
|
||||
enregisterPlugin("langue");
|
||||
?>
|
44
fastiki/plugins/tache.php
Normal file
44
fastiki/plugins/tache.php
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
function tache_formater_tache_inline($donnees) {
|
||||
return '</p><div class="tache">'
|
||||
. '<img alt="tâche" src="{{{url:image:tache.png:}}}" class="logo-tache" />'
|
||||
. '<p>'
|
||||
. $donnees
|
||||
. '</p></div><p>';
|
||||
}
|
||||
|
||||
function tache_base($tags, $nom_resultat) {
|
||||
$donnees = $tags[$nom_resultat];
|
||||
|
||||
$donnees = preg_replace('/{{{TACHE:(.*)}}}/Ume',
|
||||
"'<a href=\"' . url_page(unquote('taches/\\1')) . unquote('\">$1</a>')",
|
||||
$donnees);
|
||||
|
||||
$donnees = preg_replace('/<tache>(.*)<\/tache>/Use',
|
||||
"taches_formater_tache_inline(unquote('$1'))",
|
||||
$donnees);
|
||||
|
||||
$donnees = preg_replace('/<p>\s*<\/p>/m', '', $donnees);
|
||||
|
||||
$tags[$nom_resultat] = $donnees;
|
||||
return $tags;
|
||||
}
|
||||
|
||||
function tache_typedoc_tache($tags, $nom_resultat) {
|
||||
$donnees = $tags[$nom_resultat];
|
||||
|
||||
$tags["logo"] = "tache.png";
|
||||
$tags["niveau entetes"] = 1;
|
||||
|
||||
$tags["titre"] = preg_find_delete("|^=\s*(.*?)\s*=$|m", $donnees, 0, 1, 1);
|
||||
|
||||
$dependances = preg_find_delete("|^<depends>(.*?)</depends>$|m", $donnees, NULL, 1);
|
||||
$dependances = preg_replace("|^.*$|e", "'<a href=\"' . url('page', unquote('$0')) . unquote('\">$0</a>')", $dependances);
|
||||
$tags["dependances"] = implode(", ", $dependances);
|
||||
|
||||
$tags[$nom_resultat] = $donnees;
|
||||
return $tags;
|
||||
}
|
||||
|
||||
enregisterPlugin("tache");
|
||||
?>
|
28
fastiki/plugins/url.php
Normal file
28
fastiki/plugins/url.php
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
function url($type, $nom) {
|
||||
preg_match("|^([^:]*):(.*)$|", get_cfg("url", $type), $modele);
|
||||
|
||||
$nom = securiser_chaine($nom);
|
||||
if ($modele[1] == "ue")
|
||||
$nom = urlencode($nom);
|
||||
|
||||
return htmlentities(preg_replace("/{nom}/", $nom, $modele[2]), ENT_QUOTES, "UTF-8");
|
||||
}
|
||||
|
||||
function url_base($tags, $nom_resultat) {
|
||||
$donnees = $tags[$nom_resultat];
|
||||
|
||||
$donnees = preg_replace("/{{{url:(.+):(.*):}}}/Ue",
|
||||
"url('\\1', replacevars('\\2', \$tags))",
|
||||
$donnees);
|
||||
|
||||
$tags[$nom_resultat] = $donnees;
|
||||
return $tags;
|
||||
}
|
||||
|
||||
function url_pre_modele($tags, $nom_resultat) {
|
||||
return url_base($tags, $nom_resultat);
|
||||
}
|
||||
|
||||
enregisterPlugin("url");
|
||||
?>
|
98
fastiki/plugins/wiki.php
Normal file
98
fastiki/plugins/wiki.php
Normal file
|
@ -0,0 +1,98 @@
|
|||
<?php
|
||||
function wiki_formater_liste($donnees) {
|
||||
$donnees = preg_split('/\n/', $donnees);
|
||||
$resultat = '';
|
||||
$niveau_precedent = 0;
|
||||
|
||||
foreach ($donnees as $ligne) {
|
||||
$matches = array();
|
||||
preg_match('/^(\s*\*\s*)+/', $ligne, $matches);
|
||||
$niveau = count(explode("*", $matches[0])) - 1;
|
||||
$ligne = preg_replace('/^(\s*\*\s*)+/', "", $ligne);
|
||||
|
||||
if ($niveau > $niveau_precedent) {
|
||||
$resultat .= str_repeat("<ul>\n<li>\n", $niveau - $niveau_precedent);
|
||||
$resultat .= $ligne . "\n";
|
||||
} else {
|
||||
$resultat .= str_repeat("</li>\n</ul>\n", $niveau_precedent - $niveau);
|
||||
if ($niveau > 0 && $ligne != "")
|
||||
$resultat .= "</li>\n<li>\n$ligne\n";
|
||||
}
|
||||
|
||||
$niveau_precedent = $niveau;
|
||||
}
|
||||
|
||||
$resultat .= str_repeat("</li>\n</ul>\n", $niveau_precedent);
|
||||
return $resultat;
|
||||
}
|
||||
|
||||
function wiki_formater_lien($lien_externe, $lien) {
|
||||
preg_match("/^([^#|]*)#?([^|]*)\|?(.*)$/", $lien, $matches);
|
||||
$nom_page = $matches[1];
|
||||
$nom_ancre = $matches[2];
|
||||
$texte_lien = $matches[3];
|
||||
|
||||
if ($nom_page == "" && $nom_ancre == "")
|
||||
return $texte_lien;
|
||||
|
||||
if ($texte_lien == "") {
|
||||
if ($nom_page != "")
|
||||
$texte_lien = $nom_page;
|
||||
else
|
||||
$texte_lien = $nom_ancre;
|
||||
}
|
||||
|
||||
if ($nom_page != "") {
|
||||
if ($lien_externe == "") {
|
||||
$url_lien = url("page", $nom_page);
|
||||
} else {
|
||||
$url_lien = htmlentities($nom_page, ENT_QUOTES, "UTF-8");
|
||||
}
|
||||
}
|
||||
|
||||
if ($nom_ancre != "")
|
||||
$url_lien .= "#" . htmlentities(urlencode($nom_ancre), ENT_QUOTES, "UTF-8");
|
||||
|
||||
return "<a href=\"" . $url_lien . "\">" . $texte_lien . "</a>";
|
||||
}
|
||||
|
||||
function wiki_base($tags, $nom_resultat) {
|
||||
$donnees = $tags[$nom_resultat];
|
||||
$tags["niveau entetes"] = ($tags["niveau entetes"] != "") ? $tags["niveau entetes"] : 0;
|
||||
$niveau_entetes = $tags["niveau entetes"];
|
||||
|
||||
/* === Titres === */
|
||||
$donnees = preg_replace('/^(={1,6})\s*(.*?)\s*\1$/me',
|
||||
'"\n</p>\n<h" . min(6, $niveau_entetes + strlen(\'$1\')) . \'>$2</h\' . strlen(\'$1\') . ">\n<p>"',
|
||||
$donnees);
|
||||
|
||||
/* '''Emphases''' */
|
||||
$donnees = preg_replace("/'''''(.*)'''''/Um", '<strong><em>$1</em></strong>', $donnees); /* À éviter */
|
||||
$donnees = preg_replace("/'''(.*)'''/Um", '<strong>$1</strong>', $donnees);
|
||||
$donnees = preg_replace("/''(.*)''/Um", '<em>$1</em>', $donnees);
|
||||
|
||||
/* [Liens internes] et [[liens externes]] */
|
||||
// TODO : capture : [xyz]], le 2e ] ne devrait être capturé que s'il y en a deux au début.
|
||||
$donnees = preg_replace('/\[(\[?)([^]]*?)\]\]?/me', "wiki_formater_lien('$1', unquote('$2'))", $donnees);
|
||||
|
||||
/* * Listes */
|
||||
$donnees = preg_replace('/^([ \t]*\*[ \t*]+.*\n?)+/me',
|
||||
"'\n</p>\n' . wiki_formater_liste(unquote('$0')) . '<p>\n'",
|
||||
$donnees);
|
||||
|
||||
/* Paragraphes (les lignes vides séparent les paragraphes) */
|
||||
$donnees = preg_replace('/^/', "<p>\n", $donnees);
|
||||
$donnees = preg_replace('/$/D', "\n</p>", $donnees);
|
||||
$donnees = preg_replace('/^\n/m', "\n</p>\n<p>\n", $donnees);
|
||||
$donnees = preg_replace('/<p>\s*<\/p>/m', '', $donnees);
|
||||
|
||||
/* Nettoyage du code xhtml */
|
||||
$donnees = preg_replace('/^\n/m', '', $donnees);
|
||||
$donnees = preg_replace('/(<p>)([^\n])/m', "$1\n$2", $donnees);
|
||||
|
||||
$tags[$nom_resultat] = $donnees;
|
||||
return $tags;
|
||||
}
|
||||
|
||||
enregisterPlugin("wiki");
|
||||
?>
|
81
historique/log.txt
Normal file
81
historique/log.txt
Normal file
|
@ -0,0 +1,81 @@
|
|||
1259271912 js RenomerDepuis Accueil 0 Nouvelle-20page -2d1
|
||||
1259271912 js RenomerVers Nouvelle-20page 0 Accueil 0
|
||||
1259271949 js Creer Accueil 1 -vide -vide
|
||||
1259271985 js Creer Accueil 2 -vide -vide
|
||||
1259278974 js Creer Langage 0 -vide -vide
|
||||
1259280194 js Creer Langage 1 -vide -vide
|
||||
1259299917 js Creer Langage 2 -vide -vide
|
||||
1259299944 js Creer Accueil 3 -vide -vide
|
||||
1259300616 js Creer Accueil 4 -vide -vide
|
||||
1259300699 js Creer Langage 3 -vide -vide
|
||||
1259309964 js Creer Accueil 5 -vide -vide
|
||||
1259310464 js Creer Accueil 6 -vide -vide
|
||||
1259310683 js Creer Accueil 7 -vide -vide
|
||||
1259311081 js Creer Langage 4 -vide -vide
|
||||
1259313898 js Creer Accueil 8 -vide -vide
|
||||
1259314263 js Creer Langage 5 -vide -vide
|
||||
1259314280 js Creer Langage 6 -vide -vide
|
||||
1259323247 js Creer Accueil 9 -vide -vide
|
||||
1259323264 js Creer Langage 7 -vide -vide
|
||||
1259323845 js Creer Accueil 10 -vide -vide
|
||||
1259323861 js Creer Accueil 11 -vide -vide
|
||||
1259323919 js Creer Accueil 12 -vide -vide
|
||||
1259323971 js Creer Accueil 13 -vide -vide
|
||||
1259521261 js Creer Langage 8 -vide -vide
|
||||
1259521286 js Creer Accueil 14 -vide -vide
|
||||
1259603152 js Creer Langage 9 -vide -vide
|
||||
1259755329 js Creer Accueil 15 -vide -vide
|
||||
1259755367 js Creer Langage 10 -vide -vide
|
||||
1259767145 js Creer Langage 11 -vide -vide
|
||||
1259770272 js Creer Langage 12 -vide -vide
|
||||
1259784652 js Creer Langage 13 -vide -vide
|
||||
1259784950 js Creer Langage 14 -vide -vide
|
||||
1259785546 js Creer Langage 15 -vide -vide
|
||||
1259792637 js Creer Langage 16 -vide -vide
|
||||
1259837196 js Creer Langage 17 -vide -vide
|
||||
1259839115 js Creer Langage 18 -vide -vide
|
||||
1259839143 js Creer Langage 19 -vide -vide
|
||||
1259841424 js Creer Interface-20Homme-2dMachine 0 -vide -vide
|
||||
1259841472 js Creer Accueil 16 -vide -vide
|
||||
1259841488 js Creer Interface-20Homme-2dMachine 1 -vide -vide
|
||||
1259846394 js Creer Interface-20Homme-2dMachine 2 -vide -vide
|
||||
1259846709 js Creer Interface-20Homme-2dMachine 3 -vide -vide
|
||||
1259853267 js Creer Interface-20Homme-2dMachine 4 -vide -vide
|
||||
1259853400 js Creer Accueil 17 -vide -vide
|
||||
1259853421 js Creer Accueil 18 -vide -vide
|
||||
1259863232 js Creer Systeme-20de-20fichiers.html 0 -vide -vide
|
||||
1259863251 js Creer Systeme-20de-20fichiers.html 1 -vide -vide
|
||||
1259867335 js Creer Systeme-20de-20fichiers.html 2 -vide -vide
|
||||
1259869519 js Creer Systeme-20de-20fichiers.html 3 -vide -vide
|
||||
1259869533 js RenomerDepuis Système-20de-20fichiers.html 0 Systeme-20de-20fichiers.html 3
|
||||
1259869533 js RenomerVers Systeme-20de-20fichiers.html 4 Système-20de-20fichiers.html 0
|
||||
1259869730 js RenomerDepuis Système-20de-20fichiers 0 Système-20de-20fichiers.html 0
|
||||
1259869730 js RenomerVers Système-20de-20fichiers.html 1 Système-20de-20fichiers 0
|
||||
1259869760 js Creer Système-20de-20fichiers 1 -vide -vide
|
||||
1259870498 js Creer Gestion-20des-20ressources 0 -vide -vide
|
||||
1259966078 js Creer Système-20de-20fichiers 2 -vide -vide
|
||||
1259966204 js Creer Accueil 19 -vide -vide
|
||||
1259966234 js Creer commentaires 0 -vide -vide
|
||||
1260009715 js Creer Licence 0 -vide -vide
|
||||
1260009733 js Creer Accueil 20 -vide -vide
|
||||
1260009744 js Creer Langage 20 -vide -vide
|
||||
1260009754 js Creer Interface-20Homme-2dMachine 5 -vide -vide
|
||||
1260009780 js Creer Système-20de-20fichiers 3 -vide -vide
|
||||
1260009798 js Creer Gestion-20des-20ressources 1 -vide -vide
|
||||
1260009853 js Creer commentaires 1 -vide -vide
|
||||
1260025956 js Creer Licence 1 -vide -vide
|
||||
1260026797 js Creer Licence 2 -vide -vide
|
||||
1260026929 js Creer Licence 3 -vide -vide
|
||||
1260027054 js Creer Licence 4 -vide -vide
|
||||
1260027296 js Creer Licence 5 -vide -vide
|
||||
1260466408 js Creer Accueil 21 -vide -vide
|
||||
1260466430 js Creer Langage 21 -vide -vide
|
||||
1260466435 js Creer Interface-20Homme-2dMachine 6 -vide -vide
|
||||
1260466445 js Creer Système-20de-20fichiers 4 -vide -vide
|
||||
1260466460 js Creer Gestion-20des-20ressources 2 -vide -vide
|
||||
1260466465 js Creer commentaires 2 -vide -vide
|
||||
1260637053 js Creer Système-20de-20fichiers 5 -vide -vide
|
||||
1260637302 js Creer Système-20de-20fichiers 6 -vide -vide
|
||||
1261649474 js Creer Accueil 22 -vide -vide
|
||||
1264309582 js Creer Accueil 23 -vide -vide
|
||||
1264533981 js Creer Accueil 24 -vide -vide
|
1
historique/page/Accueil/0/log.txt
Normal file
1
historique/page/Accueil/0/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259271912 js RenomerDepuis Accueil 0 Nouvelle-20page -2d1
|
5
historique/page/Accueil/0/source.txt
Normal file
5
historique/page/Accueil/0/source.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation construit (et programmable) avec un langage de programmation graphique.
|
1
historique/page/Accueil/1/log.txt
Normal file
1
historique/page/Accueil/1/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259271949 js Creer Accueil 1 -vide -vide
|
5
historique/page/Accueil/1/source.txt
Normal file
5
historique/page/Accueil/1/source.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation construit (et programmable) avec un langage de programmation graphique.
|
1
historique/page/Accueil/10/log.txt
Normal file
1
historique/page/Accueil/10/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259323845 js Creer Accueil 10 -vide -vide
|
9
historique/page/Accueil/10/source.txt
Normal file
9
historique/page/Accueil/10/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* Le modèle d'exécution est [Orienté document|orienté document], et non processus ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/11/log.txt
Normal file
1
historique/page/Accueil/11/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259323861 js Creer Accueil 11 -vide -vide
|
9
historique/page/Accueil/11/source.txt
Normal file
9
historique/page/Accueil/11/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* Le modèle d'exécution est [Orienté document|orienté document], et non processus ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/12/log.txt
Normal file
1
historique/page/Accueil/12/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259323919 js Creer Accueil 12 -vide -vide
|
9
historique/page/Accueil/12/source.txt
Normal file
9
historique/page/Accueil/12/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* Le modèle d'exécution est [Orienté document|orienté document], et non processus ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/13/log.txt
Normal file
1
historique/page/Accueil/13/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259323971 js Creer Accueil 13 -vide -vide
|
9
historique/page/Accueil/13/source.txt
Normal file
9
historique/page/Accueil/13/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* Le modèle d'exécution est [Orienté document|orienté document], et non processus ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/14/log.txt
Normal file
1
historique/page/Accueil/14/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259521286 js Creer Accueil 14 -vide -vide
|
9
historique/page/Accueil/14/source.txt
Normal file
9
historique/page/Accueil/14/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* Le modèle d'exécution est [Orienté document|orienté document], et non processus ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/15/log.txt
Normal file
1
historique/page/Accueil/15/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259755329 js Creer Accueil 15 -vide -vide
|
9
historique/page/Accueil/15/source.txt
Normal file
9
historique/page/Accueil/15/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* L'interface homme-machine [Orienté document|orientée document], et non processus, est [Génération semi-automatique d'IHM|générée semi-automatiquement] ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/16/log.txt
Normal file
1
historique/page/Accueil/16/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259841472 js Creer Accueil 16 -vide -vide
|
9
historique/page/Accueil/16/source.txt
Normal file
9
historique/page/Accueil/16/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* L'interface homme-machine [Interface Homme-Machine#Interface orientée document|orientée document], et non processus, est [Interface Homme-Machine#Génération semi-automatique|générée semi-automatiquement] ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/17/log.txt
Normal file
1
historique/page/Accueil/17/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259853400 js Creer Accueil 17 -vide -vide
|
9
historique/page/Accueil/17/source.txt
Normal file
9
historique/page/Accueil/17/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* L'interface homme-machine [Interface Homme-Machine#Interface orientée document|orientée document], et non processus, est [Interface Homme-Machine#Génération semi-automatique|générée semi-automatiquement] ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/18/log.txt
Normal file
1
historique/page/Accueil/18/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259853421 js Creer Accueil 18 -vide -vide
|
9
historique/page/Accueil/18/source.txt
Normal file
9
historique/page/Accueil/18/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* L'interface homme-machine [Interface Homme-Machine#Interface orientée document|orientée document], et non processus, est [Interface Homme-Machine#Génération semi-automatique|générée semi-automatiquement] ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/19/log.txt
Normal file
1
historique/page/Accueil/19/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259966204 js Creer Accueil 19 -vide -vide
|
11
historique/page/Accueil/19/source.txt
Normal file
11
historique/page/Accueil/19/source.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* L'interface homme-machine [Interface Homme-Machine#Interface orientée document|orientée document], et non processus, est [Interface Homme-Machine#Génération semi-automatique|générée semi-automatiquement] ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
||||
|
||||
Vous pouvez laisser des [commentaires] si vous en avez.
|
1
historique/page/Accueil/2/log.txt
Normal file
1
historique/page/Accueil/2/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259271985 js Creer Accueil 2 -vide -vide
|
5
historique/page/Accueil/2/source.txt
Normal file
5
historique/page/Accueil/2/source.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation construit (et programmable) avec un langage de programmation graphique.
|
1
historique/page/Accueil/20/log.txt
Normal file
1
historique/page/Accueil/20/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1260009733 js Creer Accueil 20 -vide -vide
|
11
historique/page/Accueil/20/source.txt
Normal file
11
historique/page/Accueil/20/source.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* L'interface homme-machine [Interface Homme-Machine#Interface orientée document|orientée document], et non processus, est [Interface Homme-Machine#Génération semi-automatique|générée semi-automatiquement] ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
||||
|
||||
Vous pouvez laisser des [commentaires] si vous en avez.
|
1
historique/page/Accueil/21/log.txt
Normal file
1
historique/page/Accueil/21/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1260466408 js Creer Accueil 21 -vide -vide
|
11
historique/page/Accueil/21/source.txt
Normal file
11
historique/page/Accueil/21/source.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* L'interface homme-machine [Interface Homme-Machine#Interface orientée document|orientée document], et non processus, est [Interface Homme-Machine#Génération semi-automatique|générée semi-automatiquement] ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
||||
|
||||
Vous pouvez laisser des [commentaires] si vous en avez.
|
1
historique/page/Accueil/22/log.txt
Normal file
1
historique/page/Accueil/22/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1261649474 js Creer Accueil 22 -vide -vide
|
11
historique/page/Accueil/22/source.txt
Normal file
11
historique/page/Accueil/22/source.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* L'interface homme-machine [Interface Homme-Machine#Interface orientée document|orientée document], et non processus, est [Interface Homme-Machine#Génération semi-automatique|générée semi-automatiquement] ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisamment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
||||
|
||||
Vous pouvez laisser des [commentaires] si vous en avez.
|
1
historique/page/Accueil/23/log.txt
Normal file
1
historique/page/Accueil/23/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1264309582 js Creer Accueil 23 -vide -vide
|
1
historique/page/Accueil/23/source.txt
Normal file
1
historique/page/Accueil/23/source.txt
Normal file
|
@ -0,0 +1 @@
|
|||
cfZXLF <a href="http://nctpsqlxetsn.com/">nctpsqlxetsn</a>, [url=http://dfzcmrhhkbee.com/]dfzcmrhhkbee[/url], [link=http://xkaqpslgpmeu.com/]xkaqpslgpmeu[/link], http://ebnlhzwdljim.com/
|
1
historique/page/Accueil/24/log.txt
Normal file
1
historique/page/Accueil/24/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1264533981 js Creer Accueil 24 -vide -vide
|
11
historique/page/Accueil/24/source.txt
Normal file
11
historique/page/Accueil/24/source.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* L'interface homme-machine [Interface Homme-Machine#Interface orientée document|orientée document], et non processus, est [Interface Homme-Machine#Génération semi-automatique|générée semi-automatiquement] ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisamment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
||||
|
||||
Vous pouvez laisser des [commentaires] si vous en avez.
|
1
historique/page/Accueil/3/log.txt
Normal file
1
historique/page/Accueil/3/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259299944 js Creer Accueil 3 -vide -vide
|
5
historique/page/Accueil/3/source.txt
Normal file
5
historique/page/Accueil/3/source.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation construit (et programmable) avec un [langage|langage de programmation graphique].
|
1
historique/page/Accueil/4/log.txt
Normal file
1
historique/page/Accueil/4/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259300616 js Creer Accueil 4 -vide -vide
|
5
historique/page/Accueil/4/source.txt
Normal file
5
historique/page/Accueil/4/source.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation construit (et programmable) avec un [Langage|langage de programmation graphique]. Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles. Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, ... De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/5/log.txt
Normal file
1
historique/page/Accueil/5/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259309964 js Creer Accueil 5 -vide -vide
|
5
historique/page/Accueil/5/source.txt
Normal file
5
historique/page/Accueil/5/source.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation construit (et programmable) avec un [Langage|langage de programmation graphique]. Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles. Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/6/log.txt
Normal file
1
historique/page/Accueil/6/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259310464 js Creer Accueil 6 -vide -vide
|
9
historique/page/Accueil/6/source.txt
Normal file
9
historique/page/Accueil/6/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* Le modèle d'exécution est [Orienté document|orienté document], et non processus ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/7/log.txt
Normal file
1
historique/page/Accueil/7/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259310683 js Creer Accueil 7 -vide -vide
|
9
historique/page/Accueil/7/source.txt
Normal file
9
historique/page/Accueil/7/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* Le modèle d'exécution est [Orienté document|orienté document], et non processus ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/8/log.txt
Normal file
1
historique/page/Accueil/8/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259313898 js Creer Accueil 8 -vide -vide
|
9
historique/page/Accueil/8/source.txt
Normal file
9
historique/page/Accueil/8/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* Le modèle d'exécution est [Orienté document|orienté document], et non processus ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/9/log.txt
Normal file
1
historique/page/Accueil/9/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259323247 js Creer Accueil 9 -vide -vide
|
9
historique/page/Accueil/9/source.txt
Normal file
9
historique/page/Accueil/9/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Gruntnetwork =
|
||||
|
||||
'''Gruntnetwork''' est un projet de système d'expoitation, avec les particularités suivantes :
|
||||
* Il est construit (et programmable) avec un [Langage|langage de programmation graphique] ;
|
||||
* Le modèle d'exécution est [Orienté document|orienté document], et non processus ;
|
||||
* Son [Système de fichiers|système de fichiers] est une base de données, et la gestion des fichiers rend des tâches telles que l'archivage ou la recherche particulièrement faciles ;
|
||||
* Sa [Gestion des ressources|gestion des ressources] matérielles est suffisemment souple pour permettre à des programmes ''en cours d'exécution'' d'être sauvegardés dans leur état courant, déplacés sur une autre machine avec des ressources matérielles différentes, … De plus la mise en veille devient triviale à implémenter, et fonctionne à tous les coups.
|
1
historique/page/Accueil/version.txt
Normal file
1
historique/page/Accueil/version.txt
Normal file
|
@ -0,0 +1 @@
|
|||
24
|
1
historique/page/Gestion des ressources/0/log.txt
Normal file
1
historique/page/Gestion des ressources/0/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259870498 js Creer Gestion-20des-20ressources 0 -vide -vide
|
14
historique/page/Gestion des ressources/0/source.txt
Normal file
14
historique/page/Gestion des ressources/0/source.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
page
|
||||
|
||||
= Gestion des ressources =
|
||||
|
||||
Les programmes fonctionnant sous le système d'exploitation gruntnetwork doivent faire une demmande d'allocation de ressource auprès du système d'exploitation lorsqu'ils ont besoin de mémoire, d'une sortie sonore, d'une portion d'affichage graphique, voire de temps de calcul.
|
||||
|
||||
Cette ressource n'est pas allouée définitivement par le système et l'accès à celle-ci peut être révoqué à tout moment. Un signal est alors envoyé à l'application qui peut traiter cette disparition de ressource.
|
||||
|
||||
La ressource peut être reprise de plusieurs manières (l'application en est informé) :
|
||||
|
||||
* Accès temporairement désactivé, lors de la mise en veille par exemple. La ressource sera ré-allouée au réveil ;
|
||||
* Accès révoqué de manière permanente, lors de l'arrêt de la machine, ou lors de la déconnexion d'un périphérique ;
|
||||
|
||||
Cette gestion des ressources permet des choses étonemment pratiques, comme la mise en hibernation d'un processus (accès temporairement désactivé), puis son réveil sur une autre machine (accès restitué, mais avec une ressource légèrement différente). Cela permet de déplacer des processus en cours d'exécution d'une machine à l'autre, ou de les enregistrer en vue de les relancer plus tard, …
|
1
historique/page/Gestion des ressources/1/log.txt
Normal file
1
historique/page/Gestion des ressources/1/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1260009798 js Creer Gestion-20des-20ressources 1 -vide -vide
|
14
historique/page/Gestion des ressources/1/source.txt
Normal file
14
historique/page/Gestion des ressources/1/source.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
page
|
||||
|
||||
= Gestion des ressources =
|
||||
|
||||
Les programmes fonctionnant sous le système d'exploitation gruntnetwork doivent faire une demmande d'allocation de ressource auprès du système d'exploitation lorsqu'ils ont besoin de mémoire, d'une sortie sonore, d'une portion d'affichage graphique, voire de temps de calcul.
|
||||
|
||||
Cette ressource n'est pas allouée définitivement par le système et l'accès à celle-ci peut être révoqué à tout moment. Un signal est alors envoyé à l'application qui peut traiter cette disparition de ressource.
|
||||
|
||||
La ressource peut être reprise de plusieurs manières (l'application en est informé) :
|
||||
|
||||
* Accès temporairement désactivé, lors de la mise en veille par exemple. La ressource sera ré-allouée au réveil ;
|
||||
* Accès révoqué de manière permanente, lors de l'arrêt de la machine, ou lors de la déconnexion d'un périphérique ;
|
||||
|
||||
Cette gestion des ressources permet des choses étonemment pratiques, comme la mise en hibernation d'un processus (accès temporairement désactivé), puis son réveil sur une autre machine (accès restitué, mais avec une ressource légèrement différente). Cela permet de déplacer des processus en cours d'exécution d'une machine à l'autre, ou de les enregistrer en vue de les relancer plus tard, …
|
1
historique/page/Gestion des ressources/2/log.txt
Normal file
1
historique/page/Gestion des ressources/2/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1260466460 js Creer Gestion-20des-20ressources 2 -vide -vide
|
14
historique/page/Gestion des ressources/2/source.txt
Normal file
14
historique/page/Gestion des ressources/2/source.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
page
|
||||
|
||||
= Gestion des ressources =
|
||||
|
||||
Les programmes fonctionnant sous le système d'exploitation gruntnetwork doivent faire une demmande d'allocation de ressource auprès du système d'exploitation lorsqu'ils ont besoin de mémoire, d'une sortie sonore, d'une portion d'affichage graphique, voire de temps de calcul.
|
||||
|
||||
Cette ressource n'est pas allouée définitivement par le système et l'accès à celle-ci peut être révoqué à tout moment. Un signal est alors envoyé à l'application qui peut traiter cette disparition de ressource.
|
||||
|
||||
La ressource peut être reprise de plusieurs manières (l'application en est informé) :
|
||||
|
||||
* Accès temporairement désactivé, lors de la mise en veille par exemple. La ressource sera ré-allouée au réveil ;
|
||||
* Accès révoqué de manière permanente, lors de l'arrêt de la machine, ou lors de la déconnexion d'un périphérique ;
|
||||
|
||||
Cette gestion des ressources permet des choses étonemment pratiques, comme la mise en hibernation d'un processus (accès temporairement désactivé), puis son réveil sur une autre machine (accès restitué, mais avec une ressource légèrement différente). Cela permet de déplacer des processus en cours d'exécution d'une machine à l'autre, ou de les enregistrer en vue de les relancer plus tard, …
|
1
historique/page/Gestion des ressources/version.txt
Normal file
1
historique/page/Gestion des ressources/version.txt
Normal file
|
@ -0,0 +1 @@
|
|||
2
|
1
historique/page/Interface Homme-2dMachine/0/log.txt
Normal file
1
historique/page/Interface Homme-2dMachine/0/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259841424 js Creer Interface-20Homme-2dMachine 0 -vide -vide
|
9
historique/page/Interface Homme-2dMachine/0/source.txt
Normal file
9
historique/page/Interface Homme-2dMachine/0/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Interface orientée document =
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est orientée document. Cela signifie que l'élément principal présenté à l'utilisateur est le document, autour duquel viennent se greffer des outils.
|
||||
|
||||
Dans la plupart des sytèmes actuels, on présente à l'utilisateur la possibilité de lancer divers processus directement (via un menu d'applications), ou bien de lancer ces mêmes processus avec une certaine donnée en entrée (l'ouverture d'un fichier via son icône passe obligatoirement par le démarrage d'un processus, qui décide que faire de ce fichier).
|
||||
|
||||
= Génération semi-automatique =
|
1
historique/page/Interface Homme-2dMachine/1/log.txt
Normal file
1
historique/page/Interface Homme-2dMachine/1/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259841488 js Creer Interface-20Homme-2dMachine 1 -vide -vide
|
9
historique/page/Interface Homme-2dMachine/1/source.txt
Normal file
9
historique/page/Interface Homme-2dMachine/1/source.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
page
|
||||
|
||||
= Interface orientée document =
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est orientée document. Cela signifie que l'élément principal présenté à l'utilisateur est le document, autour duquel viennent se greffer des outils.
|
||||
|
||||
Dans la plupart des sytèmes actuels, on présente à l'utilisateur la possibilité de lancer divers processus directement (via un menu d'applications), ou bien de lancer ces mêmes processus avec une certaine donnée en entrée (l'ouverture d'un fichier via son icône passe obligatoirement par le démarrage d'un processus, qui décide que faire de ce fichier).
|
||||
|
||||
= Génération semi-automatique =
|
1
historique/page/Interface Homme-2dMachine/2/log.txt
Normal file
1
historique/page/Interface Homme-2dMachine/2/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259846394 js Creer Interface-20Homme-2dMachine 2 -vide -vide
|
19
historique/page/Interface Homme-2dMachine/2/source.txt
Normal file
19
historique/page/Interface Homme-2dMachine/2/source.txt
Normal file
|
@ -0,0 +1,19 @@
|
|||
page
|
||||
|
||||
= Interface Homme-Machine =
|
||||
|
||||
== Interface orientée document ==
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est orientée document. Cela signifie que l'élément principal présenté à l'utilisateur est le document, autour duquel viennent se greffer des outils.
|
||||
|
||||
Dans la plupart des sytèmes actuels, on présente à l'utilisateur la possibilité de lancer divers processus directement (via un menu d'applications), ou bien de lancer ces mêmes processus avec une certaine donnée en entrée (l'ouverture d'un fichier via son icône passe obligatoirement par le démarrage d'un processus, qui décide que faire de ce fichier). Cette approche présente plusieurs défauts :
|
||||
|
||||
* Lorsque le processus plante, tous ses documents sont perdus ;
|
||||
* Intuitivement, l'utilisateur a l'impression d'avoir ouvert un document, alors qu'en réalité il vient de démarrer une application. L'utilisateur a donc une vision erronnée du système, ce qui est en général mauvais, car moins il comprend le système, moins il est efficace ;
|
||||
* Des mécanismes complexes de dialogue entre applications sont nécessaires pour l'édition de documents composite (OLE, Kpart, …) ;
|
||||
* Si l'application ne sait pas gérer un certain protocole (http, ouverture de fichiers à l'intérieur de fichiers compressés, …), elle ne pourra pas ouvrir les documents accessibles via ce protocole. L'environnement de bureau KDE apporte une solution en permettant le partage de ces protocoles via les KIOSlaves.
|
||||
|
||||
Une approche orientée document apporte des solutions à ces problèmes :
|
||||
* Lorsqu'un des outils greffés autour du document plante, il suffi
|
||||
|
||||
== Génération semi-automatique ==
|
1
historique/page/Interface Homme-2dMachine/3/log.txt
Normal file
1
historique/page/Interface Homme-2dMachine/3/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259846709 js Creer Interface-20Homme-2dMachine 3 -vide -vide
|
21
historique/page/Interface Homme-2dMachine/3/source.txt
Normal file
21
historique/page/Interface Homme-2dMachine/3/source.txt
Normal file
|
@ -0,0 +1,21 @@
|
|||
page
|
||||
|
||||
= Interface Homme-Machine =
|
||||
|
||||
== Interface orientée document ==
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est orientée document. Cela signifie que l'élément principal présenté à l'utilisateur est le document, autour duquel viennent se greffer des outils.
|
||||
|
||||
Dans la plupart des sytèmes actuels, on présente à l'utilisateur la possibilité de lancer divers processus directement (via un menu d'applications), ou bien de lancer ces mêmes processus avec une certaine donnée en entrée (l'ouverture d'un fichier via son icône passe obligatoirement par le démarrage d'un processus, qui décide que faire de ce fichier). Cette approche présente plusieurs défauts :
|
||||
|
||||
* Lorsque le processus plante, tous ses documents sont perdus ;
|
||||
* Intuitivement, l'utilisateur a l'impression d'avoir ouvert un document, alors qu'en réalité il vient de démarrer une application. L'utilisateur a donc une vision erronnée du système, ce qui est en général mauvais, car moins il comprend le système, moins il est efficace ;
|
||||
* Des mécanismes complexes de dialogue entre applications sont nécessaires pour l'édition de documents composite (OLE, Kpart, …) ;
|
||||
* Si l'application ne sait pas gérer un certain protocole (http, ouverture de fichiers à l'intérieur de fichiers compressés, …), elle ne pourra pas ouvrir les documents accessibles via ce protocole. L'environnement de bureau KDE apporte une solution en permettant le partage de ces protocoles via les KIOSlaves.
|
||||
|
||||
Une approche orientée document apporte des solutions à ces problèmes :
|
||||
* Lorsqu'un des outils greffés autour du document plante, il suffit de le redémarrer. Et quand bien même cela serait impossible, ou si c'est le programme chargé de l'affichage du document qui plante, il est toujours possible de proposer à l'utilisateur d'enregistrer son document pour éviter des pertes de données.
|
||||
* L'édition de documents composites se fait sans encombre : selon la portion du document considérée, les outils qui viennent se greffer changent.
|
||||
* Les outils ne gèrent pas l'ouverture du document, on a des blocs différents pour le chargement en mémoire, le décodage, la visualisation, la modification, l'encodage et l'enregistrement, chacun fonctionnant indépendemment des autres.
|
||||
|
||||
== Génération semi-automatique ==
|
1
historique/page/Interface Homme-2dMachine/4/log.txt
Normal file
1
historique/page/Interface Homme-2dMachine/4/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1259853267 js Creer Interface-20Homme-2dMachine 4 -vide -vide
|
27
historique/page/Interface Homme-2dMachine/4/source.txt
Normal file
27
historique/page/Interface Homme-2dMachine/4/source.txt
Normal file
|
@ -0,0 +1,27 @@
|
|||
page
|
||||
|
||||
= Interface Homme-Machine =
|
||||
|
||||
== Interface orientée document ==
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est orientée document. Cela signifie que l'élément principal présenté à l'utilisateur est le document, autour duquel viennent se greffer des outils.
|
||||
|
||||
Dans la plupart des sytèmes actuels, on présente à l'utilisateur la possibilité de lancer divers processus directement (via un menu d'applications), ou bien de lancer ces mêmes processus avec une certaine donnée en entrée (l'ouverture d'un fichier via son icône passe obligatoirement par le démarrage d'un processus, qui décide que faire de ce fichier). Cette approche présente plusieurs défauts :
|
||||
|
||||
* Lorsque le processus plante, tous ses documents sont perdus ;
|
||||
* Intuitivement, l'utilisateur a l'impression d'avoir ouvert un document, alors qu'en réalité il vient de démarrer une application. L'utilisateur a donc une vision erronnée du système, ce qui est en général mauvais, car moins il comprend le système, moins il est efficace ;
|
||||
* Des mécanismes complexes de dialogue entre applications sont nécessaires pour l'édition de documents composite (OLE, Kpart, …) ;
|
||||
* Si l'application ne sait pas gérer un certain protocole (http, ouverture de fichiers à l'intérieur de fichiers compressés, …), elle ne pourra pas ouvrir les documents accessibles via ce protocole. L'environnement de bureau KDE apporte une solution en permettant le partage de ces protocoles via les KIOSlaves.
|
||||
|
||||
Une approche orientée document apporte des solutions à ces problèmes :
|
||||
* Lorsqu'un des outils greffés autour du document plante, il suffit de le redémarrer. Et quand bien même cela serait impossible, ou si c'est le programme chargé de l'affichage du document qui plante, il est toujours possible de proposer à l'utilisateur d'enregistrer son document pour éviter des pertes de données.
|
||||
* L'édition de documents composites se fait sans encombre : selon la portion du document considérée, les outils qui viennent se greffer changent.
|
||||
* Les outils ne gèrent pas l'ouverture du document, on a des blocs différents pour le chargement en mémoire, le décodage, la visualisation, la modification, l'encodage et l'enregistrement, chacun fonctionnant indépendemment des autres.
|
||||
|
||||
== Génération semi-automatique ==
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est générée semi-automatiquement à partir d'une spécification déclarative. Cette spécification indique au système quelles sont les informations qui sont les plus importantes (et donc devraient être affichées à l'écran), quelles sont les informations secondaires (accessibles par exemple au travers d'une boîte de dialogue de propriétés), etc.
|
||||
|
||||
De même, cette spécification liste les actions qu'il est possible d'effectuer, les plus importantes s'affichant sous forme d'icône par exemple, les autres étant rangées dans des menus ou bien accessibles via des raccourcis clavier.
|
||||
|
||||
Plusieurs spécifications peuvent coexister, ce qui permet d'avoir très facilement des interfaces différentes pour les utilisateurs expérimentés et les novices. On peut aussi imaginer une spécification d'interface actualisée dynamiquement en fonction des actions les plus fréquentes de l'utilisateur.
|
1
historique/page/Interface Homme-2dMachine/5/log.txt
Normal file
1
historique/page/Interface Homme-2dMachine/5/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1260009754 js Creer Interface-20Homme-2dMachine 5 -vide -vide
|
27
historique/page/Interface Homme-2dMachine/5/source.txt
Normal file
27
historique/page/Interface Homme-2dMachine/5/source.txt
Normal file
|
@ -0,0 +1,27 @@
|
|||
page
|
||||
|
||||
= Interface Homme-Machine =
|
||||
|
||||
== Interface orientée document ==
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est orientée document. Cela signifie que l'élément principal présenté à l'utilisateur est le document, autour duquel viennent se greffer des outils.
|
||||
|
||||
Dans la plupart des sytèmes actuels, on présente à l'utilisateur la possibilité de lancer divers processus directement (via un menu d'applications), ou bien de lancer ces mêmes processus avec une certaine donnée en entrée (l'ouverture d'un fichier via son icône passe obligatoirement par le démarrage d'un processus, qui décide que faire de ce fichier). Cette approche présente plusieurs défauts :
|
||||
|
||||
* Lorsque le processus plante, tous ses documents sont perdus ;
|
||||
* Intuitivement, l'utilisateur a l'impression d'avoir ouvert un document, alors qu'en réalité il vient de démarrer une application. L'utilisateur a donc une vision erronnée du système, ce qui est en général mauvais, car moins il comprend le système, moins il est efficace ;
|
||||
* Des mécanismes complexes de dialogue entre applications sont nécessaires pour l'édition de documents composite (OLE, Kpart, …) ;
|
||||
* Si l'application ne sait pas gérer un certain protocole (http, ouverture de fichiers à l'intérieur de fichiers compressés, …), elle ne pourra pas ouvrir les documents accessibles via ce protocole. L'environnement de bureau KDE apporte une solution en permettant le partage de ces protocoles via les KIOSlaves.
|
||||
|
||||
Une approche orientée document apporte des solutions à ces problèmes :
|
||||
* Lorsqu'un des outils greffés autour du document plante, il suffit de le redémarrer. Et quand bien même cela serait impossible, ou si c'est le programme chargé de l'affichage du document qui plante, il est toujours possible de proposer à l'utilisateur d'enregistrer son document pour éviter des pertes de données.
|
||||
* L'édition de documents composites se fait sans encombre : selon la portion du document considérée, les outils qui viennent se greffer changent.
|
||||
* Les outils ne gèrent pas l'ouverture du document, on a des blocs différents pour le chargement en mémoire, le décodage, la visualisation, la modification, l'encodage et l'enregistrement, chacun fonctionnant indépendemment des autres.
|
||||
|
||||
== Génération semi-automatique ==
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est générée semi-automatiquement à partir d'une spécification déclarative. Cette spécification indique au système quelles sont les informations qui sont les plus importantes (et donc devraient être affichées à l'écran), quelles sont les informations secondaires (accessibles par exemple au travers d'une boîte de dialogue de propriétés), etc.
|
||||
|
||||
De même, cette spécification liste les actions qu'il est possible d'effectuer, les plus importantes s'affichant sous forme d'icône par exemple, les autres étant rangées dans des menus ou bien accessibles via des raccourcis clavier.
|
||||
|
||||
Plusieurs spécifications peuvent coexister, ce qui permet d'avoir très facilement des interfaces différentes pour les utilisateurs expérimentés et les novices. On peut aussi imaginer une spécification d'interface actualisée dynamiquement en fonction des actions les plus fréquentes de l'utilisateur.
|
1
historique/page/Interface Homme-2dMachine/6/log.txt
Normal file
1
historique/page/Interface Homme-2dMachine/6/log.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1260466435 js Creer Interface-20Homme-2dMachine 6 -vide -vide
|
27
historique/page/Interface Homme-2dMachine/6/source.txt
Normal file
27
historique/page/Interface Homme-2dMachine/6/source.txt
Normal file
|
@ -0,0 +1,27 @@
|
|||
page
|
||||
|
||||
= Interface Homme-Machine =
|
||||
|
||||
== Interface orientée document ==
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est orientée document. Cela signifie que l'élément principal présenté à l'utilisateur est le document, autour duquel viennent se greffer des outils.
|
||||
|
||||
Dans la plupart des sytèmes actuels, on présente à l'utilisateur la possibilité de lancer divers processus directement (via un menu d'applications), ou bien de lancer ces mêmes processus avec une certaine donnée en entrée (l'ouverture d'un fichier via son icône passe obligatoirement par le démarrage d'un processus, qui décide que faire de ce fichier). Cette approche présente plusieurs défauts :
|
||||
|
||||
* Lorsque le processus plante, tous ses documents sont perdus ;
|
||||
* Intuitivement, l'utilisateur a l'impression d'avoir ouvert un document, alors qu'en réalité il vient de démarrer une application. L'utilisateur a donc une vision erronnée du système, ce qui est en général mauvais, car moins il comprend le système, moins il est efficace ;
|
||||
* Des mécanismes complexes de dialogue entre applications sont nécessaires pour l'édition de documents composite (OLE, Kpart, …) ;
|
||||
* Si l'application ne sait pas gérer un certain protocole (http, ouverture de fichiers à l'intérieur de fichiers compressés, …), elle ne pourra pas ouvrir les documents accessibles via ce protocole. L'environnement de bureau KDE apporte une solution en permettant le partage de ces protocoles via les KIOSlaves.
|
||||
|
||||
Une approche orientée document apporte des solutions à ces problèmes :
|
||||
* Lorsqu'un des outils greffés autour du document plante, il suffit de le redémarrer. Et quand bien même cela serait impossible, ou si c'est le programme chargé de l'affichage du document qui plante, il est toujours possible de proposer à l'utilisateur d'enregistrer son document pour éviter des pertes de données.
|
||||
* L'édition de documents composites se fait sans encombre : selon la portion du document considérée, les outils qui viennent se greffer changent.
|
||||
* Les outils ne gèrent pas l'ouverture du document, on a des blocs différents pour le chargement en mémoire, le décodage, la visualisation, la modification, l'encodage et l'enregistrement, chacun fonctionnant indépendemment des autres.
|
||||
|
||||
== Génération semi-automatique ==
|
||||
|
||||
L'Interface Homme-Machine (IHM) de gruntnetwork est générée semi-automatiquement à partir d'une spécification déclarative. Cette spécification indique au système quelles sont les informations qui sont les plus importantes (et donc devraient être affichées à l'écran), quelles sont les informations secondaires (accessibles par exemple au travers d'une boîte de dialogue de propriétés), etc.
|
||||
|
||||
De même, cette spécification liste les actions qu'il est possible d'effectuer, les plus importantes s'affichant sous forme d'icône par exemple, les autres étant rangées dans des menus ou bien accessibles via des raccourcis clavier.
|
||||
|
||||
Plusieurs spécifications peuvent coexister, ce qui permet d'avoir très facilement des interfaces différentes pour les utilisateurs expérimentés et les novices. On peut aussi imaginer une spécification d'interface actualisée dynamiquement en fonction des actions les plus fréquentes de l'utilisateur.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user