<?php

abstract class CommentaireSignature
{

    const fichier_xml = 'application/xsl/suivis/commentaire_signature.xsl';

    const idBtnRetour = 'btnRetour';

    const idBtnEnregistrer = 'btnEnregistrer';

    const idBtnAnnuler = 'btnAnnuler';

    const idCommentaire = 'commentaire';

    const idMotDePasse = 'motdepasse';

    protected $type_suivi;

    protected $no_doc;

    protected $titre;

    protected $id_div_ancrage;

    protected $id_div_ppal;

    protected $btnRetourTitre;

    protected $btnRetourAction;

    protected $btnEnregistrerAction;

    protected $btnAnnulerAction;

    function __construct($type_suivi, $no_doc, & $ancrage, & $div_ppal)
    {
        $this->type_suivi = $type_suivi;
        $this->no_doc = $no_doc;
        $this->id_div_ancrage = $ancrage;
        $this->id_div_ppal = $div_ppal;
        $this->titre = Trad('Approbation pour ...');
        $this->btnRetourTitre = Trad('Titre retour');
        $this->btnRetourAction = 'alert("Action retour")';
        $this->btnEnregistrerAction = 'alert("Action Enregistrer")';
        $this->btnAnnulerAction = 'alert("Action Annuler")';
    }

    /**
     * Cette méthode à pour but de pourvoir les champs suivants pour chaque type de signature:
     * titre, btnRetourTitre, btnRetourAction, btnEnregistrerAction, btnAnnulerAction
     */
    abstract function buildValeurs();

    function &buildXml()
    {
        $this->buildValeurs();
        $true = true;
        $false = false;
        
        $array = array();
        $array['infos'] = array();
        
        // Titre
        $array['infos']['!titre'] = $this->titre;
        
        // Bouton retour liste
        $idBtnRetour = CommentaireSignature::idBtnRetour;
        $compRetour = new ComposantXslAction($id);
        $compRetour->setLibelle($this->btnRetourTitre);
        $compRetour->setAction($this->btnRetourAction);
        $compRetour->setEstPrimaire(true);
        $compRetour->setEstFlecheGauche();
        $array['infos'][$idBtnRetour] = $compRetour->buildXml();
        
        // Zone Commentaire signature
        // rows = 10, cols = 20
        $idZoneCommentaire = CommentaireSignature::idCommentaire;
        $libelle = Trad('Commentaire signature');
        $compCommentaire = new ComposantXslTexte($idZoneCommentaire);
        $compCommentaire->setLibelle($libelle);
        $compCommentaire->setLibelleVisible($true);
        $compCommentaire->setRowsCols(10, 60);
        $array['infos'][$idZoneCommentaire] = $compCommentaire->buildXml();
        
        // Zone mot de passe
        $idZoneMotDePasse = CommentaireSignature::idMotDePasse;
        $libelle = Trad('Votre mot de passe');
        $compMotDePasse = new ComposantXslTexte($idZoneMotDePasse);
        $compMotDePasse->setLibelle($libelle);
        $compMotDePasse->setLibelleVisible($true);
        $compMotDePasse->setEstPassword();
        $array['infos'][$idZoneMotDePasse] = $compMotDePasse->buildXml();
        
        // Bouton enregistrer
        $idBtnEnregistrer = CommentaireSignature::idBtnEnregistrer;
        $libelle = Trad('Enregistrer');
        $compBtnEnregistrer = new ComposantXslAction($id);
        $compBtnEnregistrer->setLibelle($libelle);
        $compBtnEnregistrer->setAction($this->btnEnregistrerAction);
        $compBtnEnregistrer->setEstPrimaire($true);
        $array['infos'][$idBtnEnregistrer] = $compBtnEnregistrer->buildXml();
        
        // Bouton annuler
        $idBtnAnnuler = CommentaireSignature::idBtnAnnuler;
        $libelle = Trad('Annuler');
        $compBtnAnnuler = new ComposantXslAction($id);
        $compBtnAnnuler->setLibelle($libelle);
        $compBtnAnnuler->setAction($this->btnAnnulerAction);
        $compBtnAnnuler->setEstPrimaire($false);
        $array['infos'][$idBtnAnnuler] = $compBtnAnnuler->buildXml();
        
        $array['action'] = 'Affiche';
        return $array;
    }

    public static function &getObjet(& $type_suivi, & $no_doc, & $ancrage, & $div_ppal)
    {
        $ecran = null;
        
        switch ($type_suivi) {
            case TypeSuivi::GESTFOURNISS_Dem_four:
                $ecran = new CommentaireSignatureDemandeFou($type_suivi, $no_doc, $ancrage, $div_ppal);
                break;
            default:
                break;
        }
        return $ecran;
    }
}