Point d'extension de substitution de modèle de balise meta

Cet exemple présente une extension personnalisée au processus de substitution des balises meta.
sub EMP_SubstituteCustomMetaTag {
    my $metaTagParts_ref  = shift; # a reference to an array
    my $entityDefObj      = shift;
    my $isHTMLContent     = shift;
    my $isTest            = shift;
    
    # Cette routine fournit une extension personnalisée du processus de substitution des balises meta.
    # Si aucune des balise meta intégrée n'est suffisante pour les administrateurs ClearQuest,
    # cette extension permet aux administrateurs d'ajouter leurs propres balises meta. Découvrez
    # la balise meta EXPRESSION avant, car elle vous permettra de répondre à de nombreux
    # besoins.  Souvenez-vous que vous pouvez appeler des fonctions définies dans ce schéma 
    # également. Ce point de personnalisation a été conçu pour une utilisation là où 
    # vous planifiez de tester la fonction ou de passer d'une sortie HTML à du texte brut
    # 
    # Paramètres :
    # metaTagParts_ref - Il s'agit d'une référence à une grappe des parties décodée de la balise meta telle que lue depuis le
    #                    modèle fourni.  L'élément 0 est le nom de la balise meta tandis que tous les autres
    #                    éléments qui peuvent être présents voient leurs paramètres décodés à partir de l'entrée d'origine.
    #                    L'entrée d'origine est fractionnée en "::" limites.  La balise complète d'origine peut
    #                    être reconstituée avec cette instruction 
    #                    $origMetaTag = join("::", @{$metaTagParts_ref});
    #  entityDefObj    - Il s'agit de l'objet ClearQuest Entity Def pour le type d'enregistrement auquel appartient le modèle
    #  isHTMLContent   - Il s'agit d'un indicateur booléen qui, lorsqu'il est défini sur 1, signifie que vous pouvez obtenir le résultat
    #                    tel que formaté auparavant en HTML si vous le souhaitez. Dans le cas contraire, ce que vous renvoyez sera traité comme du texte brut.
    #  isTest	       - Il s'agit d'un indicateur booléen qui, lorsqu'il est défini sur 1, indique que vous devez renvoyer toute erreur que la balise développée peut 
    #                    générer MAIS PAS la valeur. Renvoyer une chaîne nulle en mode isTest signifie qu'il n'y a pas d'erreur.
    #                    Cette fonction permet de valider l'utilisation d'une balise.
    
    EMP_DebugOut("START - Add custom meta tags");
    my $errorTags = "";     # Inclut tout texte d'erreur dans cette variable. Elle s'affichera dans la fenêtre de débogage de EmailPlusTemplate
    my $fieldValue = "";    # Inclut le résultat de l'expansion MetaTag dans cette variable. Cette valeur sera comprise dans la notification EmailPlus
    
    # Traitez les balises personnalisées
    
    my $customTag = lc($metaTagParts_ref->[0]);

    # Ajouter votre traitement ici
    # ========================
    # Remarquez que la balise meta est convertie en minuscules. Par ailleurs, toutes les valeurs littérales doivent apparaître en minuscules.
    # Cela régit la situation lorsque le rédacteur de règles du modèle utilise des minuscules et des majuscules dans le nom des balises.
    
    if ($customTag eq "nameoftemplate") {
        # Voici un exemple de balise meta renvoyant le nom unique du modèle EmailPlusTemplate
        # Dans le modèle EmailPlusTemplate, vous utiliseriez la balise meta #@NAMEOFTEMPLATE@#, qui n'est pas sensible à la casse		
			if ($session->HasValue("EMP::CONTEXT")) {
	    	my $context = $session->GetNameValue("EMP::CONTEXT");
			my($ruleName,$templateName) = split(/\|\|/,$context);
			$fieldValue = $templateName;
			# Le TemplateName unique comporte trois parties : RecordType TemplateKind TemplateName
		}
		else {
		    # Si la variable de session EMP::CONTEXT n'est pas définie, renvoie à un message d'erreur comme résultat
		    my $errmsg = 'TemplateName could not be established using the MetaTag: '.$metaTagParts_ref->[0];

            # Utilisez la fonction EMP_MakeEmbeddedErrorMessage pour formater l'erreur si le format du corps du message est HTML
			$fieldValue = EMP_MakeEmbeddedErrorMessage($errmsg,$isHTMLContent);
		}
    }
    # ================================================
    # Cette simulation est uniquement destinée à un test et peut-être effacée-> 
    elsif ($customTag eq "dummy") {
        $fieldValue = "Customized test tag ".localtime();
    }
    # <- END Cette simulation est uniquement destinée à un test et peut-être effacée 
    # ================================================
    else {
        # Catches Undefined tags
        $errorTags .= "ERROR: Undefined MetaTag: ".$metaTagParts_ref->[0]."\n";
    }
    
    # Renvoie la valeur ou la chaîne d'erreur selon le mode
    my $result = "";    # La valeur de retour
    if ($isTest) {
        # Toute erreur s'affichera dans la fenêtre de débogage de l'enregistrement EmailPlusTemplate
        $result = $errorTags;
    }
    else {
        # Voici ce qui sera inséré dans le message de notification EmailPlus
        $result = $fieldValue;
    }
    
    EMP_DebugOut("END - result \= \<$result\>");
    return $result;
}

Commentaires