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

  [Opened] doctype pour les frames

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 ? smile

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

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 wink

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


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

  [Opened] doctype pour les frames

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 wink

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 wink


Mindiell

  [Opened] doctype pour les frames

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

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

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

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

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 wink


Mindiell

  [Opened] doctype pour les frames

Lien corrigé merci smile

 
Page
  1. doctype pour les frames