Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] doctype pour les frames

Posted by Mindiell on 05/03/2012 11:54

Bonjour,

J'ai jeté un oeil dans les responses de Jelix, mais j'ai l'impression que le doctype pour les frames n'existe pas par défaut : c'est voulu ? :)

Merci,

PS: je souhaite partir sur du XHTML 1 => <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">


Mindiell

  [Opened] doctype pour les frames

Reply #1 Posted by foxmask on 05/03/2012 14:54

Heu, pour être précis, le balise frame elle même n'a pas de doctype. Mais pour l'usage de frame oui tu peux utiliser ce doctype, et s'il n'est pas prévu par jelix ce n'est pas grave ; "un coup de boule" dans la reponse et hop ;)

Pour modifier le doctype d'un projet ca donne ca, on retouche à la methode outputDoctype et on la surcharge. ;)


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] doctype pour les frames

Reply #2 Posted by Mindiell on 05/03/2012 15:18

Bah en fait, si tu regardes bien sur le W3C, il existe 3 types de doctype : transitional, strict et frameset... Le dernier étant spécifique aux frames ;)

Et le souci, c'est que frameset a des attributs spécifiques et que le tag body n'existe plus, ce n'est donc pas aussi simple...

Cependant, j'ai jeté les frames (je reprends une appli, d'où ma question) mais ça resterait intéressant pour Jelix je pense ;)


Mindiell

  [Opened] doctype pour les frames

Reply #3 Posted by laurentj on 05/04/2012 09:39

Il faut alors faire une nouvelle classe de réponse. Ou alors utiliser tout simplement la reponse basichtml, qui affiche le contenu que tu souhaites.

  [Opened] doctype pour les frames

Reply #4 Posted by Mindiell on 05/04/2012 13:38

Hmmm, je pense qu'une nouvelle classe de réponse serait plus adaptée. Voire, l'intégrer à jResponseHtml ? Parce qu'en définitive, il s'agit bien d'un troisième modèle (transactionnel, strict, ou frameset). Après il faut faire l'exception au niveau du body (le tag body n'existant pas)...

Je vais tâcher de voir si je peux proposer un "patch" dans ce cas !

Merci,


Mindiell

  [Opened] doctype pour les frames

Reply #5 Posted by laurentj on 05/04/2012 14:13

Cette classe existe déjà, c'est jResponseBasicHtml. il n'y a pas de body prédéfini, de doctype prédéfini. tu indique un fichier php à inclure, qui contiendra tout le code HTML de la page.

la doc est ici

  [Opened] doctype pour les frames

Reply #6 Posted by Mindiell on 05/04/2012 14:23

Oui mais le souci c'est que je n'utilise pas de template, si ?

Sinon, voici mes modifs :

  • Modification du type et du nom de la variable strictDoctype puisqu'on gère maintenant 3 doctype différents
    /**
     * says if the document uses a Strict, Transitional or Frameset Doctype
     * @var string
     * @since 1.1.3
     */
    protected $_doctype = 'Strict';
  • Lors de l'écriture du tag "body", on le remplace potentiellement par un tag "frameset". Cela permet de conserver le tableau des attributs qui seront alors les attributs spécifiques au tag frameset (on les remplit soi-même, non ? J'ai jamais essayé ça).
        if ($this->_Doctype=='Frameset'){
           echo '<frameset ';
        }
        else{
           echo '<body ';
        }
        foreach($this->bodyTagAttributes as $attr=>$value){
            echo $attr,'="', htmlspecialchars($value),'" ';
        }
        echo ">\n";
        echo implode("\n",$this->_bodyTop);
        echo $content;
        echo implode("\n",$this->_bodyBottom);

        foreach($this->plugins as $name=>$plugin)
            $plugin->atBottom();

        if ($this->_Doctype=='Frameset'){
           echo '</frameset></html>';
        }
        else{
           echo '</body></html>';
        }
  • Enfin la sortie du doctype lui-même.
    /**
     * generate the doctype. You can override it if you want to have your own doctype, like XHTML+MATHML.
     * @since 1.1
     */
    protected function outputDoctype (){
        $first_parameter = $this->_doctype;
        $second_parameter = strtolower($this->_doctype);
        if($this->_isXhtml){
            echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 '.$first_parameter.'//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-'.$second_parameter.'.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="',$this->_lang,'" lang="',$this->_lang,'">
';
        }else{
            if ($this->_doctype=='Transitionnal'){
               $first_parameter = '';
               $second_parameter = 'loose';
            }
            echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01'.$first_parameter.'//EN" "http://www.w3.org/TR/html4/'.$second_parameter.'.dtd">', "\n";
            echo '<html lang="',$this->_lang,'">';
        }
    }

Après, vous en faites ce que vous voulez, je n'ai même pas encore essayé de tester la modif...

;)

Mindiell

  [Opened] doctype pour les frames

Reply #7 Posted by Mindiell on 05/04/2012 14:26

PS : ton lien ne marche pas, il renvoit vers une page locale apparemment. Pour ceux (et celles) qui seraient intéressé(e)s : le lien qui marche ;)


Mindiell

  [Opened] doctype pour les frames

Reply #8 Posted by laurentj on 05/09/2012 00:36

Lien corrigé merci :-)

 
Page
  1. doctype pour les frames