Merge branch 'lua'

master
Olivier DOSSMANN 2013-06-05 17:10:47 +02:00
commit c53680befe
30 changed files with 266 additions and 711 deletions

1
.gitignore vendored
View File

@ -1,4 +1,3 @@
porteail/* porteail/*
.gitignore .gitignore
categories.html
configrc configrc

View File

@ -26,6 +26,8 @@
## VARIABLES ## ## VARIABLES ##
VERSION=0.1.2-trunk
## CONFIG PAR DEFAUT ## CONFIG PAR DEFAUT
include paconfigrc include paconfigrc
@ -35,45 +37,15 @@ include configrc
## AUTRES CONFIGS ## AUTRES CONFIGS
##--[[ adresses ]]--## ##--[[ adresses ]]--##
INTRO_ADDR = $(COMPOSANTS)/$(INTRO) INTRO_ADDR = $(COMPONENTS)/$(INTRO)
INDEX_ADDR = $(CIBLE)/$(INDEX) MENU_ADDR = $(COMPONENTS)/$(MENU)
MENU_ADDR = $(COMPOSANTS)/$(MENU)
CSS_SANS_MENU_ADDR = $(CSS)/$(CSS_SANS_MENU)
CSS_AVEC_MENU_ADDR = $(CSS)/$(CSS_AVEC_MENU)
STYLE_ADDR = $(CSS)/$(STYLE)
ENTETE_ADDR = $(COMPOSANTS)/$(ENTETE)
ENQUEUE_ADDR = $(COMPOSANTS)/$(ENQUEUE)
POST_CONTENU_ADDR = $(COMPOSANTS)/$(POST_CONTENU)
ENTETE_CAT_ADDR = $(COMPOSANTS)/$(ENTETE_CAT)
ENQUEUE_CAT_ADDR = $(COMPOSANTS)/$(ENQUEUE_CAT)
ELEMENT_ADDR = $(COMPOSANTS)/$(ELEMENT)
CONTENU_ADDR = $(COMPOSANTS)/$(CONTENU)
DEFAUT_IMG_ADDR = $(IMAGES)/$(DEFAUT_IMG)
##--[[ dépendances ]]--##
ifndef $(MENU)
CSS_DEP = $(CSS_SANS_MENU_ADDR)
else
CSS_DEP = $(CSS_AVEC_MENU_ADDR)
endif
INDEX_DEP = $(ENTETE_ADDR) $(ENQUEUE_ADDR) $(POST_CONTENU_ADDR)
CSS_TOUS = $(CIBLE)/$(STYLE) $(CIBLE)/$(CSS_NOM)
CONFIG = paconfigrc configrc
# Éléments sources
SOURCE = $(CATEGORIES)/*.$(CATEGORIES_EXT)
# programmes # programmes
PROG_ECHO = `which echo` PROG_ECHO = `which echo`
PROG_TEST = `which test` PROG_TEST = `which test`
PROG_SED = `which sed`
PROG_CAT = `which cat`
PROG_CP = `which cp`
PROG_SH = `which sh`
PROG_RM = `which rm` PROG_RM = `which rm`
PROG_FIND = `which find` PROG_LUA = `which lua`
PROG_SORT = `which sort` PROG_SH = `which sh`
PROG_WC = `which wc`
PROG_MKDIR = `which mkdir` PROG_MKDIR = `which mkdir`
# vérification des programmes # vérification des programmes
@ -83,37 +55,22 @@ endif
ifndef PROG_TEST ifndef PROG_TEST
error_test = 1 error_test = 1
endif endif
ifndef PROG_SED
error_sed = 1
endif
ifndef PROG_CAT
error_cat = 1
endif
ifndef PROG_CP
error_cp = 1
endif
ifndef PROG_SH
error_sh = 1
endif
ifndef PROG_RM ifndef PROG_RM
error_rm = 1 error_rm = 1
endif endif
ifndef PROG_FIND
error_find = 1
endif
ifndef PROG_SORT
error_sort = 1
endif
ifndef PROG_WC
error_wc = 1
endif
ifndef PROG_MKDIR ifndef PROG_MKDIR
error_mkdir = 1 error_mkdir = 1
endif endif
ifndef PROG_SH
error_sh = 1
endif
ifndef PROG_LUA
error_lua = 1
endif
## DEBUT ## DEBUT
# création de tous les fichiers # création de tous les fichiers
all: test index all: test homepage
## TEST ## TEST
# divers tests sur l'existence des dossiers/fichiers # divers tests sur l'existence des dossiers/fichiers
@ -123,21 +80,17 @@ test:
@$(PROG_ECHO) -e "Lancement des tests…" @$(PROG_ECHO) -e "Lancement des tests…"
@$(PROG_ECHO) -e "\t…existence des différents programmes" @$(PROG_ECHO) -e "\t…existence des différents programmes"
$(if $(error_test), @$(PROG_ECHO) -e "\t\ttest : MANQUANT." ; exit 1) $(if $(error_test), @$(PROG_ECHO) -e "\t\ttest : MANQUANT." ; exit 1)
$(if $(error_sed), @$(PROG_ECHO) -e "\t\tsed : MANQUANT." ; exit 1) $(if $(error_mkdir), @$(PROG_ECHO) -e "\t\tmkdir : MANQUANT." ; exit 1)
$(if $(error_cat), @$(PROG_ECHO) -e "\t\tcat : MANQUANT." ; exit 1)
$(if $(error_cp), @$(PROG_ECHO) -e "\t\tcp : MANQUANT." ; exit 1)
$(if $(error_sh), @$(PROG_ECHO) -e "\t\tsh : MANQUANT." ; exit 1) $(if $(error_sh), @$(PROG_ECHO) -e "\t\tsh : MANQUANT." ; exit 1)
$(if $(error_rm), @$(PROG_ECHO) -e "\t\trm : MANQUANT." ; exit 1) $(if $(error_rm), @$(PROG_ECHO) -e "\t\trm : MANQUANT." ; exit 1)
$(if $(error_find), @$(PROG_ECHO) -e "\t\tfind : MANQUANT." ; exit 1) $(if $(error_lua), @$(PROG_ECHO) -e "\t\tlua : MANQUANT." ; exit 1)
$(if $(error_sort), @$(PROG_ECHO) -e "\t\tsort : MANQUANT." ; exit 1)
$(if $(error_wc), @$(PROG_ECHO) -e "\t\twc : MANQUANT." ; exit 1)
@$(PROG_ECHO) -e "\t…existence des dossiers '$(IMAGES)', '$(CATEGORIES)' et '$(CSS)'" @$(PROG_ECHO) -e "\t…existence des dossiers '$(IMAGES)', '$(CATEGORIES)' et '$(CSS)'"
@for i in $(IMAGES) $(CATEGORIES) $(CSS) ; \ @for i in $(IMAGES) $(CATEGORIES) $(CSS) ; \
do \ do \
$(PROG_TEST) -d $$i || exit 1 ; \ $(PROG_TEST) -d $$i || exit 1 ; \
done ; \ done ; \
$(PROG_ECHO) -e "\t…création des dossiers cibles '$(CIBLE)' et '$(CIBLE)/$(IMAGES_CIBLE)'" $(PROG_ECHO) -e "\t…création des dossiers cibles '$(DESTINATION)' et '$(DESTINATION)/$(IMAGES_DESTINATION)'"
@for j in $(CIBLE) $(CIBLE)/$(IMAGES_CIBLE) ; \ @for j in $(DESTINATION) $(DESTINATION)/$(IMAGES_DESTINATION) ; \
do \ do \
$(PROG_TEST) -d $$j || $(PROG_MKDIR) $$j ; \ $(PROG_TEST) -d $$j || $(PROG_MKDIR) $$j ; \
done done
@ -149,82 +102,19 @@ test:
$(if $(MENU), @$(PROG_ECHO) -e "\t\t-> activée", @$(PROG_ECHO) -e "\t\t-> désactivée") $(if $(MENU), @$(PROG_ECHO) -e "\t\t-> activée", @$(PROG_ECHO) -e "\t\t-> désactivée")
@$(PROG_ECHO) -e " …terminé." @$(PROG_ECHO) -e " …terminé."
## FICHIERS CSS
# création du fichier CSS
$(CIBLE)/$(CSS_NOM): $(CONFIG) $(CSS_DEP)
@$(PROG_ECHO) -e "Création du fichier CSS…"
$(if $(MENU), @$(PROG_CP) $(CSS_AVEC_MENU_ADDR) $(CIBLE)/$(CSS_NOM), @$(PROG_CP) $(CSS_SANS_MENU_ADDR) $(CIBLE)/$(CSS_NOM))
@$(PROG_ECHO) -e " …terminée."
# création du fichier CSS de couleur
$(CIBLE)/$(STYLE): $(CONFIG) $(STYLE_ADDR)
@$(PROG_ECHO) -e "Création du fichier CSS pour les couleurs…"
@$(PROG_CP) $(STYLE_ADDR) $(CIBLE)/$(STYLE)
@$(PROG_ECHO) -e " …terminée."
## CATEGORIES ## CATEGORIES
# création du fichier $(CONTENU_ADDR) # création de la page d'accueil
$(CONTENU_ADDR): $(CONFIG) $(GEN_CATEGORIES) $(SOURCE) $(DEFAUT_IMG_ADDR) homepage:
@$(PROG_SED) -i "s/DEBUG=1/DEBUG=0/g" $(GEN_CATEGORIES) @$(PROG_ECHO) -e "Création de la page d'accueil…"
@$(PROG_ECHO) -e "Création du contenu avec les valeurs suivantes : " @VERSION=$(VERSION) $(PROG_LUA) create_homepage.lua || exit 1
@$(PROG_ECHO) -e "\t\t- Dossier catégorie : $(CATEGORIES)"
@$(PROG_ECHO) -e "\t\t- Destination temporaire du contenu : $(CONTENU_ADDR)"
@$(PROG_ECHO) -e "\t\t- Extension des fichiers à lire : $(CATEGORIES_EXT)"
@$(PROG_ECHO) -e "\t\t- Dossier ayant les composants de la page : $(COMPOSANTS)"
@$(PROG_ECHO) -e "\t\t- Entête HTML d'une catégorie : $(ENTETE_CAT_ADDR)"
@$(PROG_ECHO) -e "\t\t- Enqueue HTML d'une catégorie : $(ENQUEUE_ADDR)"
@$(PROG_ECHO) -e "\t\t- Code HTML d'un élément : $(ELEMENT_ADDR)"
@$(PROG_ECHO) -e "\t\t- Dossier contenant les images sources : $(IMAGES)"
@$(PROG_ECHO) -e "\t\t- Dossier de destination des images : $(IMAGES_CIBLE)"
@$(PROG_ECHO) -e "\t\t- Image par défaut : $(DEFAUT_IMG_ADDR)"
@$(PROG_ECHO) -e "\t\t- Dossier de destination global : $(CIBLE)"
@$(PROG_SH) $(GEN_CATEGORIES) $(CATEGORIES) $(CONTENU_ADDR) $(CATEGORIES_EXT) $(COMPOSANTS) $(ENTETE_CAT_ADDR) $(ENQUEUE_CAT_ADDR) $(ELEMENT_ADDR) $(IMAGES) $(IMAGES_CIBLE) $(DEFAUT_IMG_ADDR) $(CIBLE)
## JAVASCRIPT
# création du fichier html5.js
html5.js: $(COMPOSANTS)
@$(PROG_ECHO) -e "Création du fichier html5.js…"
@$(PROG_CP) $(COMPOSANTS)/html5.js $(CIBLE)/html5.js
@$(PROG_ECHO) -e " …terminée." @$(PROG_ECHO) -e " …terminée."
## INDEX install:
# création de la page d'index @SRCDIR=$(DESTINATION) DESTDIR=$(INSTALLDIR) $(PROG_SH) install.sh || exit 1
index: $(CONFIG) $(INDEX_ADDR) $(CSS_TOUS)
$(INDEX_ADDR): $(CONFIG) $(INDEX_DEP) $(CONTENU_ADDR) html5.js
@$(PROG_ECHO) -e "Création de la page de garde…"
# entete
@$(PROG_ECHO) -e "\t…insertion de l'entête"
@$(PROG_CAT) $(ENTETE_ADDR) > $(INDEX_ADDR)
# modification du contenu
@$(PROG_ECHO) -e "\t…modification du contenu"
@$(PROG_SED) -i \
-e "s/@@TITRE_PORTEAIL@@/$(TITRE)/g" \
-e "s/@@ACCUEIL_PORTEAIL@@/$(ACCUEIL)/g" \
-e "s#@@CSS_DEFAUT@@#./$(CSS_NOM)#g" \
-e "s#@@CSS_COULEUR@@#./$(STYLE)#g" \
-e "s/^\(.*\)@@.*@@\(.*\)$$/\1\2/g" \
$(INDEX_ADDR)
@$(PROG_ECHO) -e "\t …contenu modifié avec succès !"
# introduction (SI la variable INTRO est remplie)
$(if $(INTRO), @cat $(INTRO_ADDR) >> $(INDEX_ADDR); $(PROG_ECHO) -e "\t…insertion de l'introduction" || exit 1)
# contenu
@$(PROG_ECHO) -e "\t…insertion du contenu"
@$(PROG_CAT) $(CONTENU_ADDR) >> $(INDEX_ADDR)
# fin du contenu
@$(PROG_ECHO) -e "\t…insertion de la fin du contenu"
@$(PROG_CAT) $(POST_CONTENU_ADDR) >> $(INDEX_ADDR)
# menu
$(if $(MENU), @cat $(MENU_ADDR) >> $(INDEX_ADDR); $(PROG_ECHO) -e "\t…insertion du menu" || exit 1)
# enqueue
@$(PROG_ECHO) -e "\t…insertion de l'enqueue"
@$(PROG_CAT) $(ENQUEUE_ADDR) >> $(INDEX_ADDR)
@$(PROG_ECHO) -e " …terminée."
## NETTOYAGE ## NETTOYAGE
# nettoyage des fichiers générés # nettoyage des fichiers générés
clean: clean:
@$(PROG_ECHO) -e "Nettoyage des fichiers en cours…" @$(PROG_ECHO) -e "Nettoyage des fichiers en cours…"
@$(PROG_RM) -rf $(CIBLE) @$(PROG_RM) -rf $(DESTINATION)
@$(PROG_RM) -f $(CONTENU_ADDR)
@$(PROG_ECHO) -e " …terminé." @$(PROG_ECHO) -e " …terminé."

133
README.md
View File

@ -48,18 +48,21 @@ commande suivante :
apt-get install make apt-get install make
Mais également **Lua 5.1**, installable à l'aide de la commande suivante :
apt-get install lua5.1 luarocks
Puis de **LuaFileSystem** :
luarocks install luafilesystem
Votre système devrais aussi détenir les commandes suivantes : Votre système devrais aussi détenir les commandes suivantes :
- GNU make
- cp
- rm - rm
- GNU sed
- sh - sh
- echo - echo
- test - test
- cat - mkdir
- wc
- grep
Normalement ces éléments sont inclus de base ou disponibles dans Normalement ces éléments sont inclus de base ou disponibles dans
nimporte quel système dexploitation POSIX. nimporte quel système dexploitation POSIX.
@ -128,12 +131,12 @@ Ce fichier apparaît depuis la version 0.1.1. Il vous permettra de changer,
par exemple, le titre de votre page PorteAil. Ceci se fait via la par exemple, le titre de votre page PorteAil. Ceci se fait via la
ligne suivante : ligne suivante :
TITRE= TITLE=
Par exemple pour afficher "Mon super site" sur la page PorteAil, modifiez ceci Par exemple pour afficher "Mon super site" sur la page PorteAil, modifiez ceci
dans le fichier configrc : dans le fichier configrc :
TITRE = Mon super site TITLE = Mon super site
D'autres éléments peuvent être modifiés afin de personnaliser le résultat de D'autres éléments peuvent être modifiés afin de personnaliser le résultat de
PorteAil. Pour de plus amples renseignements à ce sujet, je vous invite à lire PorteAil. Pour de plus amples renseignements à ce sujet, je vous invite à lire
@ -250,25 +253,26 @@ par
Comme pour l'introduction, il suffit de supprimer le dièse **#** en début de Comme pour l'introduction, il suffit de supprimer le dièse **#** en début de
ligne. ligne.
### Le fichier install.sh ### Publication
**install.sh** est un script qui permet de déplacer le résultat du programme Pour publier le résultat dans un dossier web, il vous suffit d'utiliser la
PorteAil dans un dossier de son choix. commande suivante :
Pour l'utiliser il suffit de lancer la commande suivante : make install
sh install.sh Ceci permet de déplacer le résultat du programme PorteAil dans un dossier
de votre choix.
Par défaut le script essaie de copier le tout dans le dossier **public_html** Par défaut le script essaie de copier le tout dans le dossier **public_html**
du dossier personnel. Par exemple le dossier **/home/olivier/public_html** du dossier personnel. Par exemple le dossier **/home/olivier/public_html**
si votre dossier personnel se trouve dans **/home/olivier**. si votre dossier personnel se trouve dans **/home/olivier**.
Pour modifier les valeurs d'origine et de destination de la copie, éditez le Pour modifier les valeurs d'origine et de destination de la copie, éditez le
script et modifiez les valeurs suivantes : fichier de configuration *configrc* et modifiez les valeurs suivantes :
- SRCDIR : contient l'adresse relative du dossier où se situe les fichiers - DESTINATION : contient l'adresse relative du dossier où se situe les fichiers
à copier à copier (résultant d'une compilation de PorteAil)
- DESTDIR : contient l'adresse exacte où copier les fichiers (la destination). - INSTALLDIR : contient l'adresse exacte où copier les fichiers (la destination).
## Pour aller plus loin ## Pour aller plus loin
@ -321,51 +325,40 @@ plus grand sur la page de résultat.
Configuration basique : Configuration basique :
- TITRE : Cf. chapitre **Fonctionnement basique** - TITLE : Cf. chapitre **Fonctionnement basique**
- STYLE : nom de la feuille de style qui ajoutera des couleurs à PorteAil - STYLE : nom de la feuille de style qui ajoutera des couleurs à PorteAil
(seconde feuille de style en somme). Redéfinir l'ensemble des classes (seconde feuille de style en somme). Redéfinir l'ensemble des classes
CSS de ce fichier vous permettra de reconfigurer toute l'apparence de CSS de ce fichier vous permettra de reconfigurer toute l'apparence de
PorteAil. PorteAil.
- MENU : Cf. chapitre **Fonctionnement basique** - MENU : Cf. chapitre **Fonctionnement basique**
- INTRO : Cf. chapitre **Fonctionnement basique** - INTRO : Cf. chapitre **Fonctionnement basique**
- CIBLE : nom du dossier dans lequel sera généré le portail web. - DESTINATION : nom du dossier dans lequel sera généré le portail web.
Configuration avancée : Configuration avancée :
- ACCUEIL : Titre de la page tel qu'il s'affichera sur un navigateur - LANG : Langue utilisée pour les traductions de la page (enqueue
- GEN_CATEGORIES : script bash lancé au moment de la création des principalement)
catégories. C'est ce script qui génère les catégories pour la page - HOMEPAGE : Titre de la page tel qu'il s'affichera sur un navigateur
finale.
- INDEX : nom du fichier final. Par exemple *index.html*
- CATEGORIES_EXT : extension des fichiers qui seront lus pour générer - CATEGORIES_EXT : extension des fichiers qui seront lus pour générer
les catégories les catégories
- DEFAUT_IMG : nom de l'image - contenue par défaut dans le dossier img - - DEFAUT_IMG : nom de l'image - contenue par défaut dans le dossier img -
par défaut pour un élément qui n'a pas d'image ou n'en a pas trouvé. par défaut pour un élément qui n'a pas d'image ou n'en a pas trouvé.
- ELEMENT : nom du fichier contenant le code HTML d'un élément. Se trouve - TEMPLATE_ELEMENT : nom du fichier contenant le code HTML d'un élément.
par défaut dans le dossier *COMPOSANTS*. Se trouve par défaut dans le dossier *COMPONENTS*.
- CONTENU : nom du fichier contenu le résultat de la génération des - TEMPLATE_INDEX : nom du fichier contenant le code HTML de la page finale.
catégories. Se trouve par défaut dans le dossier *COMPONENTS*.
- ENTETE_CAT : nom du fichier contenant le code HTML du début d'une - TEMPLATE_CATEG : nom du fichier contenant le code HTML d'une catégorie.
catégorie. Se trouve par défaut dans le dossier *COMPOSANT*. Se trouve par défaut dans le dossier *COMPONENTS*.
- ENQUEUE_CAT : nom du fichier contenant le code HTML de la fin d'une - COMPONENTS : dossier contenant les éléments qui constitueront la page
catégorie. Se trouve par défaut dans le dossier *COMPOSANT*.
- POST_CONTENU : nom du fichier contenant le code HTML à utiliser après
le contenu des catégories. Se trouve par défaut dans le dossier *COMPOSANT*.
- ENTETE : nom du fichier contenant le code HTML à utiliser en début de la
page finale.
- ENQUEUE = nom du fichier contenant le code HTML à utiliser en fin de la
page finale
- COMPOSANTS : dossier contenant les éléments qui constitueront la page
finale finale
- CATEGORIES : dossier contenant les fichiers sources des catégories. - CATEGORIES : dossier contenant les fichiers sources des catégories.
- IMAGES : dossier par défaut contenant les images pour les éléments. - IMAGES : dossier par défaut contenant les images pour les éléments.
- CSS : dossier par défaut des feuilles de style - CSS : dossier par défaut des feuilles de style
- IMAGES_CIBLE : nom du dossier qui contiendra les images utilisées par la - INSTALLDIR : dossier utilisé lors de la commande *make install* permettant
de copier le résultat final dans un dossier web.
- IMAGES_DESTINATION : nom du dossier qui contiendra les images utilisées par la
page finale page finale
- CSS_SANS_MENU : nom du fichier CSS qui s'utilise lorsque la page n'a pas - CSS_NAME : nom du fichier CSS final
de menu
- CSS_AVEC_MENU : idem que *CSS_SANS_MENU*, mais pour une page ayant un menu
- CSS_NOM : nom du fichier CSS final
Pour plus de renseignements, veuillez vous référer au chapitre **Les Pour plus de renseignements, veuillez vous référer au chapitre **Les
composants**. composants**.
@ -376,12 +369,10 @@ Les composants sont les éléments qui permettent de composer la page HTML
finale. finale.
À cet effet la page a été scindés en plusieurs éléments : À cet effet la page a été scindés en plusieurs éléments :
- entete.html : contient le début de notre page finale - index.html : contient l'ensemble du HTML pour la page d'accueil.
- categ_deb.html : contient le début d'une catégorie
- element.html : contient l'ensemble du HTML pour UN élément donné - element.html : contient l'ensemble du HTML pour UN élément donné
- categ_fin.html : contient la fin d'une catégorie - categories.html : contient l'ensemble du HTML pour une catégorie donnée.
- contenu_fin.html : contient la fin du corps de la page (sans les éléments)
- enqueue.html : contient le pied de la page finale
- introduction.html : contient du HTML pouvant être ajouté après le titre - introduction.html : contient du HTML pouvant être ajouté après le titre
principal de la page principal de la page
- menu.html : un menu à ajouter à notre page - menu.html : un menu à ajouter à notre page
@ -389,49 +380,17 @@ principal de la page
Pour personnaliser il suffit d'éditer chacun des fichiers afin d'en Pour personnaliser il suffit d'éditer chacun des fichiers afin d'en
modifier le code source. modifier le code source.
### La création des catégorie à l'aide de creation_categ.sh
Le fichier **creation_categ.sh** permet de générer le corps de la page.
À cet effet il va parcourir un dossier, générer les catégories une à une
et les éléments associés, puis il va tout déposer dans un fichier HTML
prévu à cet effet.
Le script fonctionne avec un certain nombre de paramètres parmi :
- dossier_cat : contient la source (dossier d'entrée) dans laquelle se trouve
les fichiers décrivant les catégories et les éléments associés.
- destination.html : contient la destination. C'est à dire le fichier dans
lequel se situera le corps, temporairement évidemment.
- extension : extension des fichiers décrivant les catégories et leurs
éléments associés
- dossier_composants : ce dossier réunit l'ensemble des composants de notre
page finale. Il est utile pour récupérer le fichier **element.html**,
disponible d'ailleurs dans la variable *elem*
- entete_cat.html : contenu HTML du début d'une catégorie
- enqueue_cat.html : contenu HTML qui marque la fin d'une catégorie
- element.html : contenu HTML qui contient UN élément
- dossier_img : dossier contenant les images dites *sources*
- destination_img : nom du dossier dans lequel seront stockées les images
finales
- image.png : nom du fichier par défaut utilisé lorsque les images ne sont pas
trouvées
- dossier_porteail : nom du dossier dans lequel sera mise la page PorteAil
Normalement, avec toutes ces données vous devriez pouvoir tester par vous
même le résultat du script et améliorer le rendu de vos pages.
### Le dossier style ### Le dossier style
Le dossier **style** est prévu pour contenir l'ensemble des feuilles de style Le dossier **style** est prévu pour contenir l'ensemble des feuilles de style
disponible pour l'apparence de notre page PorteAil. disponible pour l'apparence de notre page PorteAil.
Déposez donc ici vos feuille de style et changez la variable *CSS_AVEC_MENU* Déposez donc ici vos feuille de style et changez la variable *STYLE* du
, *CSS_SANS_MENU* et *STYLE* du fichier **configrc** (Cf. Chapitre fichier **configrc** (Cf. Chapitre **configrc**).
**configrc**).
### Le dossier img ### Le dossier img
Le dossier **img** contient, dans la version 0.1, l'ensemble des images Le dossier **img** contient, depuis la version 0.1, l'ensemble des images
utilisées pour la page finale. utilisées pour la page finale.
Déposez-y les images que vous allez utiliser. Déposez-y les images que vous allez utiliser.
@ -439,10 +398,10 @@ Déposez-y les images que vous allez utiliser.
## SOURCES ## SOURCES
Les sources du programme peuvent être récupérées sur Les sources du programme peuvent être récupérées sur
[un dépôt Git de l'auteur](http://git.dossmann.net/) ou via la commande suivante (à l'aide de l'outil [le dépôt Gitorious](http://gitorious.org/porteail/) ou via la commande
git) : suivante (à l'aide de l'outil git) :
git clone http://git.dossmann.net/scripts/porteail.git git clone https://git.gitorious.org/porteail/master.git
## Contact / Bugs ## Contact / Bugs

13
TACHES
View File

@ -2,19 +2,14 @@
---------- ----------
- Valider la page à l'aide de TIDY (doit être facultatif) - Valider la page à l'aide de TIDY (doit être facultatif)
- Trouver une méthode plus fine pour trouver le nombre de catégories par fichier (autre qu'un grep par exemple)
- Vérifier la présence des /, [ et ] dans les variables avant qu'elles soient mises dans un SED. Ceci à l'aide de ${var//a/b} pour modifier les chaînes A par B dans VAR.
- Que donne une ligne vide dans le fichier de catégorie ? => à tester comme cas possible
- Choisir le nombre de colonne d'élément : - Choisir le nombre de colonne d'élément :
#corps ul.ensemble_element li { #corps ul.ensemble_element li {
width: 11em; width: 11em;
margin: auto; margin: auto;
} }
Mettre à width = auto. Si on veut 1 colonne, alors on met 11x1 + 1x1, si on veut deux colonne, alors on met 11x2 + 1x2, 3 colonnes font 11x3 + 1x3 Mettre à width = auto. Si on veut 1 colonne, alors on met 11x1 + 1x1, si on veut deux colonne, alors on met 11x2 + 1x2, 3 colonnes font 11x3 + 1x3
- Permettre d'ajouter des fichiers statiques (pour permettre par exemple de donner un lien vers une version d'un logiciel sur la page d'accueil)
>>> Pour la v0.1.3 : >>> Pour la v0.1.3 :
- aside en NAV !!!
- activer menu avec une variable du genre "MENU_ACTIVE = 1" (par exemple) - activer menu avec une variable du genre "MENU_ACTIVE = 1" (par exemple)
- favicon.ico ? - favicon.ico ?
- création du fichier configrc s'il n'existe pas (dans test) - création du fichier configrc s'il n'existe pas (dans test)
@ -26,11 +21,8 @@ Mettre à width = auto. Si on veut 1 colonne, alors on met 11x1 + 1x1, si on veu
- changer les sed -i en "sed -e 's/chaine/autrechaine/g' > file.new && mv file.new file" (avec ou sans -e, c'est selon) - changer les sed -i en "sed -e 's/chaine/autrechaine/g' > file.new && mv file.new file" (avec ou sans -e, c'est selon)
- changer les VAR= en VAR:= - changer les VAR= en VAR:=
- changer l'utilisation du shell par TXTs = $(shell ls $(dossier)/*$(ext)), par exemple. - changer l'utilisation du shell par TXTs = $(shell ls $(dossier)/*$(ext)), par exemple.
- Intégrer le script .sh dans le Makefile
- faire une section install dans le makefile permettant d'installer dans DESTDIR
>>> Pour la v0.3 : >>> Pour la v0.3 :
- Transformer variables en anglais
- Documentation en anglais - Documentation en anglais
- faire une page "print.css" - faire une page "print.css"
- mettre en noir et blanc - mettre en noir et blanc
@ -141,3 +133,8 @@ des éléments
- ajouter les fichiers générés pour chaque section du makefile (ceci de manière intelligente… si possible !) - ajouter les fichiers générés pour chaque section du makefile (ceci de manière intelligente… si possible !)
- Bug: si une URL possède plusieurs & - Bug: si une URL possède plusieurs &
- HTML 5 avec header et footer - HTML 5 avec header et footer
- Trouver une méthode plus fine pour trouver le nombre de catégories par fichier (autre qu'un grep par exemple)- Permettre d'ajouter des fichiers statiques (pour permettre par exemple de donner un lien vers une version d'un logiciel sur la page d'accueil)
- aside en NAV !!!
- faire une section install dans le makefile permettant d'installer dans DESTDIR
- Transformer variables en anglais
- Que donne une ligne vide dans le fichier de catégorie ? => à tester comme cas possible

View File

@ -1,5 +1,5 @@
# Ceci est un commentaire # This is a comment
[[Catégorie d'exemple]]Description de ma catégorie d'exemple [[Example category]]The description of my category
Vous êtes perdus ?##http://perdu.com##Se rendre sur le site perdu.com##apps/preferences-system-session-services.png Are you lost?##http://perdu.com##Go to perdu.com website##apps/preferences-system-session-services.png
Exalead##http://exalead.fr##Visiter Exalead##apps/preferences-web-browser-shortcuts.png Exalead##http://exalead.fr##Visit Exalead##apps/preferences-web-browser-shortcuts.png
Recherche Google##http://www.google.com/search?q=porteail&ie=utf-8&oe=utf-8&client=ubuntu&channel=fs##Recherche de PorteAil sur Google## Google PorteAil Search##http://www.google.com/search?q=porteail&ie=utf-8&oe=utf-8&client=ubuntu&channel=fs##Search PorteAil on Google##

View File

@ -1,5 +1,5 @@
# [[Nom de la catégorie]]Description # [[Category name]]Description
[[Éducation]]Thème sur l'éducation [[Education]]Education topic
# Titre du lien##Adresse web en HTTP##Description du lien##Nom du fichier image # Link title ## HTTP website address ## Link description ## Image filename
Seeks##http://www.seeks-project.info/search.php/websearch-hp##Méta-moteur de recherche décentralisé##apps/nepomuk.png Seeks##http://www.seeks-project.info/search.php/websearch-hp##Decentralized search meta-engine##apps/nepomuk.png
OOo4kids##http://wiki.ooo4kids.org/index.php/Main_Page/fr##Logiciel de bureautique libre pour les enfants de 7 à 12 ans##apps/okteta.png OOo4kids##http://wiki.ooo4kids.org/index.php/Main_Page/fr##Free desktop software for 7-12 year old kids##apps/okteta.png

View File

@ -1,8 +1,8 @@
# [[Nom de la catégorie]]Description # [[Category name]]Description
[[Divers]]Quelques éléments en vrac [[Miscellaneous]]Some elements
# Titre du lien##Adresse web en HTTP##Description du lien##Nom du fichier image # Link title ## HTTP website address ## Link description ## Image filename
Inkscape##http://inkscape.org/##Outil de création graphique vectorielle##apps/inkscape.png Inkscape##http://inkscape.org/##Vectorial creation software##apps/inkscape.png
Wine##http://www.winehq.org/##Utilisez des outils Windows sous Linux, BSD, Mac ou Solaris##apps/wine.png Wine##http://www.winehq.org/##Use Windows tools on Linux, BSD, Mac or Solaris##apps/wine.png
Dogmazic##http://www.dogmazic.net/##Musique libre##devices/multimedia-player.png Dogmazic##http://www.dogmazic.net/##Free music##devices/multimedia-player.png
Vim##http://www.vim.org/##Éditeur en mode console##apps/utilities-terminal.png Vim##http://www.vim.org/##Shell mode editor##apps/utilities-terminal.png
ChiliProject##https://www.chiliproject.org/##Outil de gestion de projet##status/script-error.png ChiliProject##https://www.chiliproject.org/##Project management tool##status/script-error.png

View File

@ -1,8 +0,0 @@
<!-- Catégorie ${CATEG_TITLE} -->
<h2>${CATEG_TITLE}</h2>
<p>${CATEG_DESC}</p>
<ul class="ensemble_element">
${ELEMENTS}
</ul>
<div class="espace">&nbsp;</div>

View File

@ -1,5 +0,0 @@
<!-- Catégorie @@TITRE_CATEG@@ -->
<h2>@@TITRE_CATEG@@</h2>
<p>@@DESC_CATEG@@</p>
<ul class="ensemble_element">

View File

@ -1,2 +0,0 @@
</ul>
<div class="espace">&nbsp;</div>

View File

@ -0,0 +1,9 @@
<!-- Category - ${CATEG_TITLE} -->
<h2>${CATEG_TITLE}</h2>
<p>${CATEG_DESC}</p>
<ul class="ensemble_element">
${ELEMENTS}
</ul>
<div class="espace">&nbsp;</div>

View File

@ -1 +0,0 @@
</div>

View File

@ -1,9 +1,9 @@
<li> <li>
<a class="cadre" href="@@URL_ELEMENT@@" title="@@DESC_ELEMENT@@"> <a class="cadre" href="${ELEMENT_URL}" title="${ELEMENT_DESC}">
<span class="element"> <span class="element">
@@TITRE_ELEMENT@@ <br /> ${ELEMENT_TITLE} <br />
<img src="@@URL_IMAGE@@" alt="@@DESC_IMAGE@@" title="@@TITRE_IMAGE@@" /> <img src="${IMG_URL}" alt="${IMG_DESC}" title="${ELEMENT_DESC}" />
</span> </span>
</a> </a>
</li> </li>

View File

@ -1,7 +0,0 @@
<!-- Pied de page -->
<footer>
<p>Page générée à l'aide de <a href="http://porteail.e-mergence.org/" title="Se rendre sur la page officielle du projet PorteAil">PorteAil</a></p>
</footer>
</body>
</html>

View File

@ -1,19 +0,0 @@
<!DOCTYPE html>
<html xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
<head>
<meta charset="UTF-8" />
<title>@@ACCUEIL_PORTEAIL@@</title>
<!--[if lt IE 9]>
<script src="html5.js" type="text/javascript"></script>
<![endif]-->
<link rel="stylesheet" href="@@CSS_DEFAUT@@" type="text/css" media="all" title="Défaut" />
<link rel="stylesheet" href="@@CSS_COULEUR@@" type="text/css" media="all" title="Défaut" />
</head>
<body>
<!-- Entete de page -->
<header>
<h1>@@TITRE_PORTEAIL@@</h1>
</header>
<!-- Corps de la page -->
<div id="corps">

View File

@ -9,12 +9,12 @@
<link rel="stylesheet" href="${CSS_COLOR}" type="text/css" media="all" title="${CSS_NAME}" /> <link rel="stylesheet" href="${CSS_COLOR}" type="text/css" media="all" title="${CSS_NAME}" />
</head> </head>
<body> <body>
<!-- Entete de page --> <!-- Header -->
<header> <header>
<h1>${PORTEAIL_TITLE}</h1> <h1>${PORTEAIL_TITLE}</h1>
</header> </header>
<!-- Corps de la page --> <!-- Content -->
<div id="corps"> <div id="corps">
${INTRODUCTION} ${INTRODUCTION}
${CONTENT} ${CONTENT}
@ -22,10 +22,10 @@
${MENU} ${MENU}
<!-- Pied de page --> <!-- Footer -->
<footer> <footer>
<p>Page générée à l'aide de <a href="http://porteail.e-mergence.org/" title="Se rendre sur la page officielle du projet PorteAil">PorteAil</a></p> <p>${POWERED_BY} <a href="http://porteail.e-mergence.org/" title="${POWERED_BY_DESC}">PorteAil ${VERSION}</a></p>
</footer> </footer>
</body> </body>
</html> </html>

View File

@ -1,11 +1,11 @@
<!-- Introduction de la page --> <!-- Webpage introduction -->
<p> <p>
Ce message permet d'introduire le sujet de notre page et expliquer rapidement l'existence du site, la présence des éléments, les catégories, etc.<br /> This message permit to introduce our webpage subject and quickly explain why this website exists, why all these categories, elements, etc.<br />
Il est modifiable dans le fichier <em>introduction.html</em> situé dans le dossier <em>composants</em> du répertoire principal de <a href="http://git.dossmann.net/scripts/porteail.git/" title="Se rendre sur le dépôt de fichier de PorteAil">PorteAil</a>. This one is editable in <em>introduction.html</em> file located in <em>composants</em> directory from main <a href="http://gitorious.org/porteail/" title="Go to PorteAil repositories">PorteAil</a> directory.
</p> </p>
<p> <p>
Pour de plus amples renseignements sur <a href="http://git.dossmann.net/scripts/porteail.git/" title="Se rendre sur le dépôt de fichier de PorteAil">PorteAil</a>, veuillez vous référer au fichier <em>README.md</em> contenu dans le répertoire principal du projet <a href="http://git.dossmann.net/scripts/porteail.git/" title="Se rendre sur le dépôt de fichier de PorteAil">PorteAil</a>. For more information about <a href="http://gitorious.org/porteail/" title="Go to PorteAil repositories">PorteAil</a>, please refer to <em>README.md</em> file situated in <a href="http://gitorious.org/porteail/" title="Se rendre sur le dépôt de fichier de PorteAil">PorteAil</a> main directory.
</p> </p>
<p> <p>
Les catégories sont renseignées dans le dossier <em>categ</em> dans lequel des fichiers d'exemples, normalement assez parlants, devraient vous permettre de construire votre première page <a href="http://git.dossmann.net/scripts/porteail.git/" title="Se rendre sur le dépôt de fichier de PorteAil">PorteAil</a>. Categories are filled in <em>categ</em> directory in which some example file should be talkative for you. This will allow you to generate your first <a href="http://gitorious.org/porteail/" title="Go to PorteAil repositories">PorteAil</a> homepage.
</p> </p>

View File

@ -1,11 +1,11 @@
<!-- Menu de la page --> <!-- Webpage menu -->
<nav id="cartable"> <nav id="cartable">
<div class="sacoche"> <div class="sacoche">
<h3>Menu</h3> <h3>Menu</h3>
<ul> <ul>
<li>Lien 1</li> <li>Link 1</li>
<li>Lien 2</li> <li>Link 2</li>
<li>Lien 3</li> <li>Link 3</li>
</ul> </ul>
</div> </div>
</nav> </nav>

View File

@ -1,10 +0,0 @@
<li>
<a class="cadre" href="${ELEMENT_URL}" title="${ELEMENT_DESC}">
<span class="element">
${ELEMENT_TITLE} <br />
<img src="${IMG_URL}" alt="${IMG_DESC}" title="${ELEMENT_DESC}" />
</span>
</a>
</li>

View File

@ -1,64 +1,44 @@
########################### ###########################
## Configuration basique ## ## Main configuration ##
########################### ###########################
# Titre de votre PorteAil # Homepage title
TITRE = Titre par défaut TITLE = My portal
# Feuille de style choisie # CSS color file
STYLE = noir.css STYLE = black.css
# Code HTML du menu (par défaut dans le dossier COMPOSANTS) # Menu (if needed)
#MENU = menu.html #MENU = menu.html
# Code HTML de l'introduction (par défaut dans le dossier COMPOSANTS) # Introduction (if needed)
#INTRO = introduction.html #INTRO = introduction.html
CIBLE = porteail # Destination directory
DESTINATION = porteail
########################### ###########################
## Configuration avancée ## ## Additional config ##
########################### ###########################
#
###--[[ divers ]]--## ##--[[ miscellaneous ]]--##
#
#ACCUEIL = Accueil - $(TITRE) #LANG = en
#GEN_CATEGORIES = creation_categ.sh #HOMEPAGE = Homepage - My portal
#INDEX = index.html ## File extension to be used to read categories
## Extension des fichiers à prendre en compte dans le dossier contenant les
##+ catégories
#CATEGORIES_EXT = txt #CATEGORIES_EXT = txt
## Image de base si aucune mentionnée (par défaut dans le dossier IMAGES) ## Default image
#DEFAUT_IMG = generique.png #DEFAULT_IMG = generique.png
## Contenu HTML d'un élément ## Templates
#ELEMENT = element.html #TEMPLATE_ELEMENT = element.html
## résultat de la génération des catégories #TEMPLATE_INDEX = index.html
#CONTENU = categories.html #TEMPLATE_CATEG = categories.html
## Contenu HTML à utiliser en début de catégorie
#ENTETE_CAT = categ_deb.html
## Contenu HTML à utiliser en fin de catégorie
#ENQUEUE_CAT = categ_fin.html
## Contenu HTML à utiliser après le contenu principal de la page
#POST_CONTENU = contenu_fin.html
## Contenu HTML à utiliser en début de page finale
#ENTETE = entete.html
## Contenu HTML à utiliser en fin de page finale
#ENQUEUE = enqueue.html
# #
###--[[ dossiers ]]--## ###--[[ directories ]]--##
# #
### SOURCES #COMPONENTS = composants
## Dossier contenant les éléments composants votre page
#COMPOSANTS = composants
## dossier contenant le détail des catégories
#CATEGORIES = categ #CATEGORIES = categ
## dossier contenant les images
#IMAGES = img #IMAGES = img
## dossier contenant les feuilles de style #IMAGES_DESTINATION = image
#CSS = style #CSS = style
# #INSTALLDIR = ${HOME}/public_html
### DESTINATION (cible)
## dossier de destination des images
#IMAGES_CIBLE = image
# #
###--[[ style ]]--## ###--[[ style ]]--##
# #
#CSS_SANS_MENU = sans_menu.css #CSS_NAME = defaut.css
#CSS_AVEC_MENU = avec_menu.css
#CSS_NOM = defaut.css

View File

@ -18,19 +18,24 @@ local default_dir_destination = 'porteail'
local default_dir_img_destination = 'image' local default_dir_img_destination = 'image'
local default_dir_img_source = 'img' local default_dir_img_source = 'img'
local default_dir_css_source = 'style' local default_dir_css_source = 'style'
local default_dir_lang = 'lang'
-- Default files values -- Default files values
local default_img_filename = 'generique.png' local default_img_filename = 'generique.png'
local default_index_filename = 'index.html' local default_index_filename = 'index.html'
local default_template_index_filename = 'index.html' local default_template_index_filename = 'index.html'
local default_template_categ_filename = 'categ.html' local default_template_categ_filename = 'categories.html'
local default_template_element_filename = 'one_element.html' local default_template_element_filename = 'element.html'
local default_css_filename = 'noir.css' local default_css_filename = 'black.css'
local default_css_menu_without = 'sans_menu.css' local default_css_menu_without = 'without_menu.css'
local default_css_menu_with = 'avec_menu.css' local default_css_menu_with = 'with_menu.css'
-- Other defaults values -- Other defaults values
local version = os.getenv('VERSION') or '(Unknown version)'
local default_categ_extension = 'txt' local default_categ_extension = 'txt'
local DIR_SEP = '/' local DIR_SEP = '/'
local default_css_name = 'Défaut' local default_css_name = 'Default'
local default_title = 'My portal'
local default_homepage_title = ' - Homepage'
local default_language = 'en'
--[[ Functions ]]-- --[[ Functions ]]--
@ -128,22 +133,27 @@ end
function process(filepath, template_categ, template_element, img_destination, destination, img_source, default_img) function process(filepath, template_categ, template_element, img_destination, destination, img_source, default_img)
-- parse given file -- parse given file
local categ_page = ''
local elements = {} local elements = {}
local categ_title = ''
local categ_description = ''
local categ_count = 0
-- parse category file
for line in io.lines(filepath) do for line in io.lines(filepath) do
local element = '' local element = ''
-- check if this line is a comment ("# my comment"), a category ("[[My category]]Its description") or an element ("Title##Description##URL##Image") -- check if this line is:
-- a comment ("# my comment"),
-- a category ("[[My category]]Its description")
-- or an element ("Title##Description##URL##Image")
is_comment = string.find(line, '^#+.*') is_comment = string.find(line, '^#+.*')
is_title = string.find(line, '%[%[(.*)%]%](.*)') is_title = string.find(line, '%[%[(.*)%]%](.*)')
is_element = string.find(line, '(.*)##(.*)##(.*)##(.*)') is_element = string.find(line, '(.*)##(.*)##(.*)##(.*)')
-- processing lines to fetch data
if is_comment then if is_comment then
-- do nothing because it's a comment -- do nothing because it's a comment
elseif is_title then elseif is_title then
title = '' for t in string.gmatch(line, '%[%[(.*)%]%].*') do categ_title = categ_title .. t end
for t in string.gmatch(line, '%[%[(.*)%]%].*') do title = title .. t end for d in string.gmatch(line, '%[%[.*%]%](.*)') do categ_description = categ_description .. d end
description ='' categ_count = categ_count + 1
for d in string.gmatch(line, '%[%[.*%]%](.*)') do description = description .. d end
categ_page = replace(template_categ, {CATEG_TITLE=title, CATEG_DESC=description})
elseif is_element then elseif is_element then
title = '' title = ''
description = '' description = ''
@ -154,17 +164,37 @@ function process(filepath, template_categ, template_element, img_destination, de
for u in string.gmatch(line, '.*##(.*)##.*##.*') do url = url .. u end for u in string.gmatch(line, '.*##(.*)##.*##.*') do url = url .. u end
for i in string.gmatch(line, '.*##.*##.*##(.*)') do img = img .. i end for i in string.gmatch(line, '.*##.*##.*##(.*)') do img = img .. i end
img_description = " " img_description = " "
-- copy image and fetch result
img_url = processImage(img, img_source, img_destination, destination, default_img) img_url = processImage(img, img_source, img_destination, destination, default_img)
-- replace some chars in URL to avoid HTML5 problems
url = url:gsub('%&', '%&amp;') url = url:gsub('%&', '%&amp;')
-- create element's result
element = replace(template_element, {ELEMENT_URL=url, ELEMENT_DESC=description, ELEMENT_TITLE=title, IMG_URL=img_url, IMG_DESC=img_description}) element = replace(template_element, {ELEMENT_URL=url, ELEMENT_DESC=description, ELEMENT_TITLE=title, IMG_URL=img_url, IMG_DESC=img_description})
-- add it to elements table
table.insert(elements, element) table.insert(elements, element)
end end
end end
-- check if category is ok
error_msg = ' ' .. filepath .. ' not imported: '
if categ_count > 1 then
print (error_msg .. 'too many categories.')
return ''
elseif categ_count == 0 then
print (error_msg .. 'no category found.')
return ''
end
-- check elements
if table.getn(elements) < 1 then
print (error_msg .. 'no elements found.')
return ''
end
-- parse elements to add them to result
local text_elements = '' local text_elements = ''
for k, v in pairs(elements) do for k, v in pairs(elements) do
text_elements = text_elements .. v text_elements = text_elements .. v
end end
local result = replace(categ_page, {ELEMENTS=text_elements}) -- do substitutions on result
local result = replace(template_categ, {CATEG_TITLE=categ_title, CATEG_DESC=categ_description, ELEMENTS=text_elements})
return result return result
end end
@ -175,9 +205,9 @@ config = getConfig(configFile)
-- create values for directories -- create values for directories
categ = config['CATEGORIES'] or default_dir_category categ = config['CATEGORIES'] or default_dir_category
component = config['COMPOSANTS'] or default_dir_component component = config['COMPONENTS'] or default_dir_component
destination = config['CIBLE'] or default_dir_destination destination = config['DESTINATION'] or default_dir_destination
img_destination = config['CIBLE_IMAGE'] or default_dir_img_destination img_destination = config['IMAGE_DESTINATION'] or default_dir_img_destination
img_source = config['IMAGES'] or default_dir_img_source img_source = config['IMAGES'] or default_dir_img_source
css_source = config['CSS'] or default_dir_css_source css_source = config['CSS'] or default_dir_css_source
-- create values for files -- create values for files
@ -185,7 +215,7 @@ index_filename = config['INDEX'] or default_index_filename
main_template = config['TEMPLATE_INDEX'] or default_template_index_filename main_template = config['TEMPLATE_INDEX'] or default_template_index_filename
template_categ_filename = config['TEMPLATE_CATEG'] or default_template_categ_filename template_categ_filename = config['TEMPLATE_CATEG'] or default_template_categ_filename
template_element_filename = config['TEMPLATE_ELEMENT'] or default_template_element_filename template_element_filename = config['TEMPLATE_ELEMENT'] or default_template_element_filename
default_img = config['DEFAUT_IMG'] or default_img_filename default_img = config['DEFAULT_IMG'] or default_img_filename
css_filename = config['STYLE'] or default_css_filename css_filename = config['STYLE'] or default_css_filename
css_menu = default_css_menu_without css_menu = default_css_menu_without
local menu = config['MENU'] or '' local menu = config['MENU'] or ''
@ -235,23 +265,33 @@ else
end end
-- Create index file in destination directory -- Create index file in destination directory
result = assert(io.open(destination .. '/' .. main_template, 'wb')) index_result = assert(io.open(destination .. '/' .. main_template, 'wb'))
-- create substitution table -- create substitution table
substitutions = { substitutions = {
TITLE=config['TITRE'] .. ' - Accueil', TITLE=config['HOMEPAGE'] or (config['TITLE'] and config['TITLE'] .. default_homepage_title) or (default_title .. default_homepage_title),
PORTEAIL_TITLE=config['TITRE'], PORTEAIL_TITLE=config['TITLE'] or default_title,
CONTENT=content, CONTENT=content,
INTRODUCTION=introduction_content, INTRODUCTION=introduction_content,
MENU=menu_content, MENU=menu_content,
CSS_COLOR=css_filename, CSS_COLOR=css_filename,
CSS_NAME=css_name, CSS_NAME=css_name,
DEFAULT_CSS=css_menu, DEFAULT_CSS=css_menu,
VERSION=version,
} }
-- Get language configuration
language = config['LANG'] or default_language
languagerc = getConfig(default_dir_lang .. '/' .. language)
-- Add language translation to replacements table
for k, v in pairs(languagerc) do
substitutions[k] = v
end
-- replace variables in result -- replace variables in result
homepage = replace(index, substitutions) homepage = replace(index, substitutions)
assert(result:write(homepage)) assert(index_result:write(homepage))
-- close file -- close file
assert(result:close()) assert(index_result:close())
-- Copy miscellaneous files to destination -- Copy miscellaneous files to destination
to_be_copied = { to_be_copied = {

View File

@ -1,252 +0,0 @@
#!/usr/bin/env sh
#
# creation_categ.sh
#
# Permet de naviguer dans les éléments de chaque catégorie d'un dossier suivant
#+ la syntaxe :
#+
#+ # Commentaire dans le fichier
#+ [[Titre de la catégorie]]Description de la catégorie
#+ titre de l'élément##http://domaine.tld/##description de l'élément##nom_image
###########
# LICENCE #
###########
# Copyright (C) 2011 DOSSMANN Olivier <olivier@dossmann.net> ##
# This file is part of PorteAil.
#
# PorteAil is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# PorteAil is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with PorteAil. If not, see <http://www.gnu.org/licenses/>.
######################################################################
## VARIABLES
DEBUG=0
IFS="
"
PROGRAMME=`basename $0`
## FONCTIONS
debug( )
{
if [ "$DEBUG" -eq 1 ]
then
printf "$1\n" 1>&2
fi
}
utilisation( )
{
echo "Utilisation : $PROGRAMME dossier_cat destination.html extension composants entete_cat.html enqueue_cat.html element.html dossier_img destination_img image.png dossier_porteail"
echo ""
echo "Cf. Fichier README.md pour plus d'informations."
}
## TESTS
# Test sur les paramètres
if [ $# -ne 11 ]
then
utilisation
exit 1
else
# $PROGRAMME dossier_cat destination.html extension composants entete_cat.html enqueue_cat.html element.html
dossier=$1
destination=$2 #"categories.html"
extension=$3 # Extension des fichiers à prendre en compte
dossier_composants=$4
categ_deb="$5"
categ_fin="$6"
elem="$7"
dossier_image=$8
dest_image=$9
image_defaut=${10}
destination_finale=${11}
fi
# Existence dossier
if ! test -d "$dossier"
then
echo "Dossier '$dossier' manquant."
exit 1
fi
# Existence dossier image
if ! test -d "$dossier_image"
then
echo "Dossier '$dossier_image' manquant."
exit 1
fi
# Existence de l'image par défaut
if ! test -f "$image_defaut"
then
echo "Fichier '$image_defaut' manquant."
exit 1
fi
# On supprime le fichier ${destination} s'il existe.
if test -f "$destination"
then
echo "Le fichier '${destination}' existe : Suppression de ce dernier."
rm -f "$destination"
fi
# Parcours du dossier
for fichier in `find $dossier/ -iname "*.${extension}" -print -type f|sort`
do
# On met/remet la valeur de CATEG à 0 significative de l'absence
#+ d'une Catégorie
CATEG=0
# On met/remet le tableau des elements à 0
elements_titre=""
elements_url=""
elements_desc=""
elements_image_addr=""
curseur_element=0
# Calcul du nombre de ligne du fichier
nbre_lignes=`cat "${fichier}" |wc -l`
# debug
debug "$fichier: $nbre_lignes"
# Vérification du nombre de lignes retourné
if [ "$nbre_lignes" -gt 0 ]
then
# Récupération du nom de la catégorie
nbre_categories=`grep -E "^\[\[.*\]\].*$" ${fichier} |wc -l`
# Si le nombre de catégorie est égal à 1, on a tout bon
if [ "$nbre_categories" -eq 0 ]
then
echo "Fichier '${fichier}' mal renseigné : Pas de nom de catégorie"
continue
elif [ "$nbre_categories" -gt 1 ]
then
echo "Fichier '${fichier}' mal renseigné : Trop de catégorie présentes."
continue
else
echo "Fichier '${fichier}' correct : Catégorie présente."
fi
# le fichier contient plusieurs lignes, on lit le contenu
for ligne in $(cat "${fichier}")
do
debug "Contenu ligne : $ligne"
# Vérifie les différents cas possibles :
#+ SI la chaîne débute par '#'
#+ exemple : # quelque chose
diese_comp=`echo "$ligne" |sed -e 's@^\(#\).*$@\1@g'`
debug "Comparaison dièse : $diese_comp"
if [ "$diese_comp" = '#' ]
then
debug "La ligne est un commentaire : Aucune action."
continue
fi
#+ SI la chaîne commence par '[[' et fini par ']]'
#+ exemple : [[Titre]]Description de ma catégorie
categ_comp=`echo "$ligne" |sed -e 's#^\(\[\[\).*\(\]\]\).*$#\1\2#g'`
debug "Comparaison '[[]]' : $categ_comp"
if [ "$categ_comp" = "[[]]" ]
then
debug "La ligne est une catégorie : Enregistrement."
categ_titre=`echo "$ligne" |sed -e 's#^\[\[\(.*\)\]\].*$#\1#g'`
categ_desc=`echo "$ligne" |sed -e 's#^\[\[.*\]\]\(.*\)$#\1#g'`
debug "$categ_titre : $categ_desc"
CATEG=1
fi
#+ SI la chaîne contient 3 fois '##'
#+ exemple : Vous êtes perdus ?##http://perdu.com##Se rendre sur le site perdu.com##apps/image.png
element_comp=`echo $ligne |sed -e 's@^.*\(##\).*\(##\).*\(##\).*$@\1\2\3@g'`
debug "Comparaison element : $element_comp"
if [ "$element_comp" = "######" ]
then
debug "La ligne est un élément : Enregistrement."
# Recherche des informations pour l'élément
element_titre=`echo $ligne |sed -e 's@^\(.*\)##.*##.*##.*$@\1@g'`
element_url=`echo $ligne |sed -e 's@^.*##\(.*\)##.*##.*$@\1@g'`
element_desc=`echo $ligne |sed -e 's@^.*##.*##\(.*\)##.*$@\1@g'`
element_img_addr=`echo $ligne |sed -e 's@^.*##.*##.*##\(.*\)$@\1@g'`
element_img_titre="${element_desc}"
element_img_desc=" "
debug "Élément : titre=$element_titre, url=$element_url, desc=$element_desc, adresse_image=$element_img_addr, titre_image=$element_img_titre, desc_image=$element_img_desc"
# Ajout des éléments dans les tableaux appropriés
eval "elements_titre_${curseur_element}=\"${element_titre:-""}\""
eval "elements_url_${curseur_element}=\"${element_url:-""}\""
eval "elements_desc_${curseur_element}=\"${element_desc:-""}\""
eval "elements_image_addr_${curseur_element}=\"${element_img_addr:-""}\""
eval "elements_image_titre_${curseur_element}=\"${element_img_titre:-""}\""
eval "elements_image_desc_${curseur_element}=\"${element_img_desc:-""}\""
# Incrémentation du curseur du tableau contenant les éléments
curseur_element=$(( $curseur_element + 1 ))
fi
done
else
# le fichier ne contient pas de ligne. message d'erreur
echo "Fichier '$fichier' non pris en charge : Le fichier semble vide."
fi
# On débute la création du fichier contenant la catégorie si CATEG=1
if [ "$CATEG" -eq 1 ]
then
echo "Création d'un bloc Catégorie…"
# Tests sur la valeur de la catégorie et de l'état du curseur
debug "Catégorie : $categ_titre : $categ_desc"
debug "État curseur : $curseur_element"
# Tests sur la valeur
debug "Fichier de début de catégorie : $categ_deb"
debug "Destination : $destination"
# Création du fichier pour les catégories (DÉBUT)
cat $categ_deb |sed -e "s|@@TITRE_CATEG@@|${categ_titre}|g" -e "s|@@DESC_CATEG@@|${categ_desc}|g" >> ${destination}
sed -i "s#^\(.*\)@@.*@@\(.*\)#\1\2#g" ${destination}
# Préparation du numéro d'index
i=0
# Parcours des tableaux afin de récupérer toutes les informations
#+ d'un élément
debimg=`echo $categ_titre|md5sum |cut -d " " -f 1`
while [ "$i" -lt "$curseur_element" ]
do
# Assignation des valeurs à des variables afin de l'afficher
e_titre_tmp=$(eval echo \$elements_titre_${i})
e_titre=${e_titre_tmp:-""} # titre element
e_desc_tmp=$(eval echo \$elements_desc_${i})
e_desc=${e_desc_tmp:-""} # description element
e_url_tmp=$(eval echo \$elements_url_${i})
# modification de l'URL suite au bug sur les & dans SED
e_url_tmp=$(echo $e_url_tmp |sed -e 's|\&|\\&amp;|g' |sed -e 's|\=|\\=|g')
e_url=${e_url_tmp:-""} # url element
e_img_addr_tmp=$(eval echo \$elements_image_addr_${i})
# Test de l'existence de l'image
if ! test -f "${dossier_image}/${e_img_addr_tmp}"
then
# si elle n'existe pas, on prend l'image générique
nom_img=`basename ${image_defaut}`
source_img="$image_defaut"
else
nom_img=`basename ${e_img_addr_tmp}`
source_img="${dossier_image}/${e_img_addr_tmp}"
fi
# On ne copie que si la destination n'existe pas déjà
if ! test -f "${destination_finale}/${dest_image}/${nom_img}"
then
cp "${source_img}" "${destination_finale}/${dest_image}/${nom_img}"
fi
e_img_addr="${dest_image}/${nom_img}" # adresse image
e_img_titre_tmp=$(eval echo \$elements_image_titre_${i})
e_img_titre=${e_img_titre_tmp:-""} # titre image
e_img_desc_tmp=$(eval echo \$elements_image_desc_${i})
e_img_desc=${e_img_desc_tmp:-""} # description image
# Affichage du résultat
debug "$i : ${e_titre} || ${e_desc} || ${e_url} || ${e_img_addr} || ${e_img_titre} || ${e_img_desc}"
# Ajout des informations dans le fichier de destination
printf "\t…ajout de l'élément '${e_titre}'\n"
cat $elem |sed -e "s|@@TITRE_ELEMENT@@|$e_titre|g" -e "s|@@DESC_ELEMENT@@|${e_desc}|g" -e "s|@@URL_ELEMENT@@|${e_url}|g" -e "s|@@URL_IMAGE@@|${e_img_addr}|g" -e "s|@@TITRE_IMAGE@@|${e_img_titre}|g" -e "s|@@DESC_IMAGE@@|${e_img_desc}|g" -e "s|^\(.*\)@@.*@@\(.*\)$|\1\2|g" >> ${destination}
# Incrémentation de l'index
i=`expr $i + 1` #let i++
done
# Ajout de la fin du fichier pour les catégories (FIN)
cat $categ_fin >> ${destination}
fi
done

View File

@ -4,8 +4,8 @@
# Copy porteail directory to user's public_html # Copy porteail directory to user's public_html
SRCDIR=./porteail SRCDIR=${SRCDIR:-'./porteail'}
DESTDIR=${HOME}/public_html DESTDIR=${DESTDIR:-"${HOME}/public_html"}
STATICDIR=./static STATICDIR=./static
staticdir_content=0 staticdir_content=0
@ -37,6 +37,7 @@ fi
if ! test -d ${DESTDIR} if ! test -d ${DESTDIR}
then then
echo "${DESTDIR} directory not found!" echo "${DESTDIR} directory not found!"
exit 1
fi fi
echo "This will delete ${DESTDIR} content and copy ${SRCDIR} into. Are you sure [y/n]?" echo "This will delete ${DESTDIR} content and copy ${SRCDIR} into. Are you sure [y/n]?"

2
lang/en 100644
View File

@ -0,0 +1,2 @@
POWERED_BY = Proudly powered by
POWERED_BY_DESC = Go to PorteAil project official webpage

2
lang/fr 100644
View File

@ -0,0 +1,2 @@
POWERED_BY = Fièrement propulsé par
POWERED_BY_DESC = Aller sur la page officielle du projet PorteAil

View File

@ -1,64 +1,44 @@
########################### ###########################
## Configuration basique ## ## Main configuration ##
########################### ###########################
# Titre de votre PorteAil # Homepage title
TITRE = Titre par défaut TITLE = My portal
# Feuille de style choisie # CSS color file
STYLE = noir.css STYLE = black.css
# Code HTML du menu (par défaut dans le dossier COMPOSANTS) # Menu (if needed)
#MENU = menu.html #MENU = menu.html
# Code HTML de l'introduction (par défaut dans le dossier COMPOSANTS) # Introduction (if needed)
#INTRO = introduction.html #INTRO = introduction.html
CIBLE = porteail # Destination directory
DESTINATION = porteail
########################### ###########################
## Configuration avancée ## ## Additional config ##
########################### ###########################
##--[[ divers ]]--## ##--[[ miscellaneous ]]--##
ACCUEIL = Accueil - $(TITRE) LANG = en
GEN_CATEGORIES = creation_categ.sh HOMEPAGE = Homepage
INDEX = index.html # File extension to be used to read categories
# Extension des fichiers à prendre en compte dans le dossier contenant les
#+ catégories
CATEGORIES_EXT = txt CATEGORIES_EXT = txt
# Image de base si aucune mentionnée (par défaut dans le dossier IMAGES) # Default image
DEFAUT_IMG = generique.png DEFAULT_IMG = generique.png
# Contenu HTML d'un élément # Templates
ELEMENT = element.html TEMPLATE_ELEMENT = element.html
# résultat de la génération des catégories TEMPLATE_INDEX = index.html
CONTENU = categories.html TEMPLATE_CATEG = categories.html
# Contenu HTML à utiliser en début de catégorie
ENTETE_CAT = categ_deb.html
# Contenu HTML à utiliser en fin de catégorie
ENQUEUE_CAT = categ_fin.html
# Contenu HTML à utiliser après le contenu principal de la page
POST_CONTENU = contenu_fin.html
# Contenu HTML à utiliser en début de page finale
ENTETE = entete.html
# Contenu HTML à utiliser en fin de page finale
ENQUEUE = enqueue.html
##--[[ dossiers ]]--## ##--[[ directories ]]--##
## SOURCES COMPONENTS = composants
# Dossier contenant les éléments composants votre page
COMPOSANTS = composants
# dossier contenant le détail des catégories
CATEGORIES = categ CATEGORIES = categ
# dossier contenant les images
IMAGES = img IMAGES = img
# dossier contenant les feuilles de style IMAGES_DESTINATION = image
CSS = style CSS = style
INSTALLDIR = ${HOME}/public_html
## DESTINATION (cible)
# dossier de destination des images
IMAGES_CIBLE = image
##--[[ style ]]--## ##--[[ style ]]--##
CSS_SANS_MENU = sans_menu.css CSS_NAME = defaut.css
CSS_AVEC_MENU = avec_menu.css
CSS_NOM = defaut.css

View File

@ -1,5 +1,5 @@
/* /*
Theme: PorteAil - apparence noire Theme: PorteAil - Black appearance
Version: 0.1 Version: 0.1
Author: Olivier DOSSMANN Author: Olivier DOSSMANN
Author URI: http://olivier.dossmann.net Author URI: http://olivier.dossmann.net
@ -33,14 +33,14 @@ h3 {
color: #000000; color: #000000;
} }
/* ENTÊTE DE PAGE */ /* HEADER */
header { header {
background-color: #000000; background-color: #000000;
color: #ffffff; color: #ffffff;
} }
/* CONTENU */ /* CONTENT */
/* survol d'un élément */ /* element overview */
#corps a.cadre:hover { #corps a.cadre:hover {
background-color: #000000; background-color: #000000;
color: #ffffff; color: #ffffff;
@ -70,7 +70,7 @@ background-color: #aaaabb;
color: #223355; color: #223355;
} }
/* ENQUEUE DE PAGE */ /* FOOTER */
footer { footer {
color: #000000; color: #000000;
} }

View File

@ -1,5 +1,5 @@
/* /*
Theme: PorteAil - apparence bleue Theme: PorteAil - Blue appearance
Version: 0.1 Version: 0.1
Author: Olivier DOSSMANN Author: Olivier DOSSMANN
Author URI: http://olivier.dossmann.net Author URI: http://olivier.dossmann.net
@ -33,13 +33,13 @@ h3 {
color: #555577; color: #555577;
} }
/* ENTÊTE DE PAGE */ /* HEADER */
header { header {
background-color: #223355; background-color: #223355;
color: #ffffff; color: #ffffff;
} }
/* CONTENU */ /* CONTENT */
/* survol d'un élément */ /* element overview */
#corps a.cadre:hover { #corps a.cadre:hover {
background-color: #223355; background-color: #223355;
color: #ffffff; color: #ffffff;
@ -69,7 +69,7 @@ background-color: #aaaabb;
color: #223355; color: #223355;
} }
/* ENQUEUE DE PAGE */ /* FOOTER */
footer { footer {
color: #000000; color: #000000;
} }

View File

@ -1,5 +1,5 @@
/* /*
Theme: PorteAil - avec menu Theme: PorteAil - with menu
Version: 0.1 Version: 0.1
Author: Olivier DOSSMANN Author: Olivier DOSSMANN
Author URI: http://olivier.dossmann.net Author URI: http://olivier.dossmann.net
@ -51,7 +51,7 @@ border-radius: 12px;
-webkit-border-radius: 12px; -webkit-border-radius: 12px;
} }
/* ENTÊTE DE PAGE */ /* HEADER */
header { header {
position: relative; position: relative;
margin: 0; margin: 0;
@ -78,14 +78,14 @@ height: 50px;
line-height: 50px; line-height: 50px;
} }
/* CONTENU */ /* CONTENT */
#corps { #corps {
position: relative; position: relative;
width: 78%; width: 78%;
left: 2%; left: 2%;
} }
/* CATÉGORIES */ /* CATEGORIES */
#corps ul.ensemble_element { #corps ul.ensemble_element {
min-height: 10em; min-height: 10em;
list-style-type: none; list-style-type: none;
@ -97,7 +97,7 @@ text-align: center;
display: inline-block; display: inline-block;
} }
/* ÉLÉMENT */ /* ELEMENT */
#corps a.cadre { #corps a.cadre {
height: 9em; height: 9em;
width: 11em; width: 11em;
@ -131,7 +131,7 @@ margin-left: auto;
border: 0; border: 0;
} }
/* espace en fin de catégorie */ /* WHITESPACE after category's end */
#corps .espace { #corps .espace {
clear: both; clear: both;
} }
@ -172,7 +172,7 @@ nav#cartable a:visited {
nav#cartable a:hover { nav#cartable a:hover {
} }
/* ENQUEUE DE PAGE */ /* FOOTER */
footer { footer {
position: relative; position: relative;
top: 5px; top: 5px;
@ -188,4 +188,4 @@ font-size: 10px;
text-align: center; text-align: center;
} }
/* DIVERS */ /* MISCELLANEOUS */

View File

@ -1,5 +1,5 @@
/* /*
Theme: PorteAil - sans menu Theme: PorteAil - without menu
Version: 0.1 Version: 0.1
Author: Olivier DOSSMANN Author: Olivier DOSSMANN
Author URI: http://olivier.dossmann.net Author URI: http://olivier.dossmann.net
@ -51,7 +51,7 @@ border-radius: 12px;
-webkit-border-radius: 12px; -webkit-border-radius: 12px;
} }
/* ENTÊTE DE PAGE */ /* HEADER */
header { header {
position: relative; position: relative;
margin: 0 auto; margin: 0 auto;
@ -78,14 +78,14 @@ height: 50px;
line-height: 50px; line-height: 50px;
} }
/* CONTENU */ /* CONTENT */
#corps { #corps {
position: relative; position: relative;
width: 98%; width: 98%;
left: 2%; left: 2%;
} }
/* CATÉGORIES*/ /* CATEGORIES*/
#corps ul.ensemble_element { #corps ul.ensemble_element {
min-height: 10em; min-height: 10em;
list-style-type: none; list-style-type: none;
@ -97,7 +97,7 @@ text-align: center;
display: inline-block; display: inline-block;
} }
/* ÉLÉMENT */ /* ELEMENT */
#corps a.cadre { #corps a.cadre {
height: 9em; height: 9em;
width: 11em; width: 11em;
@ -131,7 +131,7 @@ margin-left: auto;
border: 0; border: 0;
} }
/* espace en fin de catégorie */ /* WHITESPACE at category's end */
#corps .espace { #corps .espace {
clear: both; clear: both;
} }
@ -172,7 +172,7 @@ nav#cartable a:visited {
nav#cartable a:hover { nav#cartable a:hover {
} }
/* ENQUEUE DE PAGE */ /* FOOTER */
footer { footer {
position: relative; position: relative;
top: 5px; top: 5px;
@ -188,4 +188,4 @@ font-size: 10px;
text-align: center; text-align: center;
} }
/* DIVERS */ /* MISCELLANEOUS */