1-OK. faire le forward (classe FindForward(page, parametres?)) (de create vers display)
2-Abandonné. faire la page d'erreur avec la classe DisplayError(raison) (depuis create)
3-OK. renomme. faire la page standard avec les codes à remplacer : DisplayStandard(template, {search:replace})) (depuis display)
4-OK. faire la classe qui affiche le HTML pour HtmlPrinter: print_media_in_list, print_metalib
4.1-OK afficher un media en lecture seule
    + lien vers edition
    + lien vers creation
    + lien vers suppression
    + Selection d'un media : utiliser un compteur de ligne
4.2 afficher une metalib 
    + pagination 
    +OK zoom sur media (lien vers page d'affichage) --> edition
    +OK suppression d'un media 
    +OK bouton vers creation d'un media
4.3-OK.creer un media 
    + edition si parametres presents (libelle du bouton different)
5. export XML 
5.1 affiche, puis copier-coller pour sauver
5.2 retourne un fichier au type mime "xml/text"

6. taglib :
<psp:tagname attrib="val" />  -->  conversion HTML
6.1-OK. taglib.xml: liste des prefix prefix -> defitinion
    <taglib prefix="psp" definition="/path/to/my_tags.tld">
6.2-OK. root_server_path/path/to/my_tags.tld: tagname -> classe
<taglib id="shortname">
<comment>texte libre</comment>
<tag name="tagname">
    <class package="" name="" />
    <attribute name="" required="true" />
    <attribute name="" required="false"/>
</tag>
</taglib>

6.3. classe HtmlTag:
    def __init__():
        self.attributes = {attrib: val}
        self.page_context = {bean_id : value}
        self.stream = ???
        
    def _eval_html():
        val = do_start_tag()
        while True:
            if val == SKIP_BODY:
                new_val = do_end_tag()
                if new_val == SKIP_BODY:
                    return
                else:
                    ERREUR
            # evaluer le HTML dans le tag:
            ???
            
            val = do_after_body()
            if val == SKIP_BODY:
                new_val = do_end_tag()
                if new_val == SKIP_BODY:
                    return
                else:
                    ERREUR
            elsif val == EVAL_BODY_INCLUDE:
                ERREUR
            elsif val == EVAL_BODY_AGAIN:
                # recommencer la boucle:
                pass
                
        
    def do_start_tag():
        stream.write("HTML")
        return SKIP_BODY / EVAL_BODY_INCLUDE / EVAL_BODY_AGAIN

    def do_after_body():
        stream.write("HTML")
        return SKIP_BODY / EVAL_BODY_INCLUDE / EVAL_BODY_AGAIN

    def do_end_tag():
        stream.write("HTML")
        return SKIP_BODY / EVAL_BODY_INCLUDE / EVAL_BODY_AGAIN
