이 예제에서는 메타 태그 대체 처리로 사용자 정의 확장을 제공합니다.
sub EMP_SubstituteCustomMetaTag {
my $metaTagParts_ref = shift; # a reference to an array
my $entityDefObj = shift;
my $isHTMLContent = shift;
my $isTest = shift;
# 이 루틴은 메타 태그 대체 처리로 사용자 정의 확장을 제공합니다.
# 기본 제공 메타 태그가 ClearQuest 관리자에게 충분하지 않을 경우,
# 이 확장은 관리자가 자신의 메타 태그를 추가할 수 있게 합니다. EXPRESSION 메타 태그로 대부분의 요구사항이 충족되므로
# 먼저 EXPRESSION 메타 태그를 탐색하십시오.
# 스키마에 저장된 함수도 호출할 수 있음을 기억하십시오.
# 이 사용자 정의 지점은 함수를 테스트하거나 HTML 출력과 일반 텍스트를 전환하려는 위치에
# 사용하기 위한 것입니다.
#
# 매개변수:
# metaTagParts_ref - 이는 제공된 템플리트에서 읽음으로써 메타 태그의 디코드된 파트에 대한 참조입니다.
# 0 요소는 존재하는 기타 다른 요소가 원래 입력에서 디코드된 매개변수를 보유하는 동안
# 메타 태그의 이름입니다.
# 원본 입력은 "::" 경계로 분리됩니다. 완전한 원본 태그는
# 다음 명령문에서 다시 구성될 수 있습니다.
# $origMetaTag = join("::", @{$metaTagParts_ref});
# entityDefObj - 이는 템플리트가 보유하는 레코드 유형에 대한 ClearQuest 엔티티 정의 오브젝트입니다.
# isHTMLContent - 이는 부울 플래그이며 1로 설정될 때 원하는 경우 적절히 형식화된 HTML로 결과를 렌더링할 수 있음을 의미합니다.
# 그렇지 않으면 리턴하는 모는 결과가 일반 텍스트로 처리됩니다.
# isTest - 이는 부울 플래그이며 1로 설정될 때 태그 확장이 AND NOT 값을 생성할 수 있다는 오류를 리턴해야 함을 표시합니다.
# isTest 모드에서 널 문자열을 리턴한다는 것은 오류가 없음을 의미합니다.
# 이 함수는 태그 사용을 유효성 검증하는 데 사용됩니다.
EMP_DebugOut("START - Add custom meta tags");
my $errorTags = ""; # 오류 텍스트를 이 변수에 넣습니다. 이는 EmailPlusTemplate에서 디버그 창에 표시됩니다.
my $fieldValue = ""; # MetaTag 표현식의 결과를 이 변수에 넣습니다. 이 값은 EmailPlus 알림에 포함됩니다.
# 사용자 정의 태그를 처리합니다.
my $customTag = lc($metaTagParts_ref->[0]);
# 사용자의 처리를 여기에 추가하십시오.
# ========================
# 메타 태그는 소문자로 변환됨을 주의하십시오. 또한 모든 리터럴 값은 소문자로 입력해야 합니다.
# 다음은 템플리트 규칙 작성자가 태그 이름에 대소문자 혼합을 사용할 경우를 핸들합니다.
if ($customTag eq "nameoftemplate") {
# 이는 EmailPlusTemplate 템플리트의 고유 이름을 리턴하는 사용자 정의 메타 태그의 예제입니다.
# EmailPlusTemplate 템플리트에서 대소문자를 구분하지 않는 #@NAMEOFTEMPLATE@# 메타 태그를 사용할 수 있습니다.
if ($session->HasValue("EMP::CONTEXT")) {
my $context = $session->GetNameValue("EMP::CONTEXT");
my($ruleName,$templateName) = split(/\|\|/,$context);
$fieldValue = $templateName;
# 고유한 TemplateName은 세 개의 파트로 구성됩니다. RecordType TemplateKind TemplateName
}
else {
# EMP::CONTEXT 세션 변수가 정의되지 않으면 결과로 오류 메시지를 리턴합니다.
my $errmsg = 'TemplateName could not be established using the MetaTag: '.$metaTagParts_ref->[0];
# 메시지 본문 형식이 HTML인 경우 오류를 형식화하기 위해 EMP_MakeEmbeddedErrorMessage 함수를 사용하십시오.
$fieldValue = EMP_MakeEmbeddedErrorMessage($errmsg,$isHTMLContent);
}
}
# ================================================
# 이 더미는 테스트용이며 제거될 수 있습니다. START->
elsif ($customTag eq "dummy") {
$fieldValue = "Customized test tag ".localtime();
}
# <- END 이 더미는 테스트용이며 제거될 수 있습니다.
# ================================================
else {
# Catches Undefined tags
$errorTags .= "ERROR: Undefined MetaTag: ".$metaTagParts_ref->[0]."\n";
}
# 모드에 따라 값 또는 오류 문자열을 리턴합니다
my $result = ""; # 리턴 값
if ($isTest) {
# EmailPlusTemplate 레코드의 디버그 창에 오류가 표시됩니다.
$result = $errorTags;
}
else {
# 이는 EmailPlus 알림 메시지에 삽입되는 항목입니다.
$result = $fieldValue;
}
EMP_DebugOut("END - result \= \<$result\>");
return $result;
}