Gerando certificados personalizados para os selos
A criação de modelo de certificado de selos para impressão passa pela criação de um plugin que implemente o template do certificado, além da habilitação do plugin base da funcionalidade.
Plugin SealModel
O primeiro passo para criar o certificado é habilitar o plugin SealModelTab , que implementa um aba na configuração dos selos para que o administrador escolha um modelo de selo a ser utilizado para impressão dos certificados. Adicione a linha à chave plugins
do seu arquivo de configuração:
Copy 'plugins' => [
.
.
.
'SealModelTab' => ['namespace' => 'SealModelTab' ],
]
Este plugin também disponibiliza uma classe abstrata chamada SealModelTab\SealModelTemplatePlugin
para implementação de modelos de certificados.
Implementando plugin do certificado
Para implementar o certificado, crie um plugin chamado MeuCertificado
que extende a classe SealModelTab\SealModelTemplatePlugin
e implementa o método getModelData
:
Copy // arquivo MeuCertificado/Plugin.php
<?php
namespace MeuCertificado;
class Plugin extends \SealModelTab\SealModelTemplatePlugin
{
function __construct($config = []) {
$config += [
'logo-site' => 'img/marca-da-org.png'
];
parent::__construct($config);
}
function getModelData(){
return [
'label'=> 'Meu modelo de certificado',
'name' => 'MeuCertificado',
'css' => 'meu-certificado--styles.css',
'background' => 'meu-certificado--bg.jpg',
'preview' => 'meu-certificado--preview.png'
];
}
}
o template html do certificado deve estar no arquivo printsealrelation.php
na pasta do plugin:
Copy // arquivo MeuCertificado/printsealrelation.php
<?php
$plugin = $app->plugins['MeuCertificado'];
?>
<div id="certificate--meu-certificado">
<img class="cert-background" src="<?php $view->asset('img/meu-certificado--bg.jpg') ?>"/>
<p class="certificate-content"><?php echo nl2br($msg) ?></p>
<div class="footer">
<div class="entity-url">
<a href="<?= $relation->owner->singleUrl; ?>" title="<?= $relation->owner->name ?>">
<?= $relation->owner->singleUrl; ?>
</a>
</div>
<div class="footer-signatures">
<div class="certificate-seal-owner">
<p><?php echo $relation->seal->owner->name; ?><br>
<?php echo $relation->seal->owner->shortDescription; ?></p>
</div>
<?php if ($avatar = $relation->seal->avatar): ?>
<div class="footer-img certificate-seal-avatar">
<img src="<?php echo $avatar->url; ?>"
alt="<?php echo $relation->seal->name ?>">
</div>
<?php endif; ?>
<div class="footer-img certificate-logo-site">
<!-- essa imagem pode variar de acordo com o tema, por isso opção na config -->
<img src="<?php $view->asset($plugin->config['logo-site'], true, true) ?>">
</div>
</div>
</div>
</div>
crie os seguintes arquivos para completar o template do certificado:
assets/img/meu-certificado--bg.jpg
assets/img/meu-certificado--preview.png
assets/css/meu-certificado--styles.css
Copy #certificate--meu-certificado {
width : 1250 px ;
background-size : contain ;
background-repeat : no-repeat ;
height : 100 % ;
overflow : hidden ;
margin : auto ;
}
#certificate--meu-certificado img .cert-background {
position : absolute ;
z-index : -1 ;
width : 1250 px ;
}
#certificate--meu-certificado p .certificate-content {
margin : 220 px 212 px 0 90 px ;
font-size : 22 px ;
line-height : 2.2 rem ;
text-align : justify ;
height : 505 px ;
}
#certificate--meu-certificado p .certificate-content span .entity-name {
font-size : 22 px ;
font-style : italic ;
}
#certificate--meu-certificado .footer {
width : 100 % ;
}
#certificate--meu-certificado .footer .entity-url {
margin-left : 160 px ;
margin-top : 95 px ;
width : 240 px ;
font-size : 13 px ;
overflow : visible ;
}
#certificate--meu-certificado .footer .footer-signatures {
width : 730 px ;
text-align : center ;
float : right ;
position : absolute ;
margin-top : -20 px ;
}
#certificate--meu-certificado .footer .footer-signatures div {
display : inline ;
}
#certificate--meu-certificado .footer .footer-signatures div .certificate-seal-owner p {
margin-bottom : 0 px ;
height : 50 px ;
}
#certificate--meu-certificado .footer div {
position : relative ;
vertical-align : bottom ;
display : inline-block ;
}
#certificate--meu-certificado .footer div .footer-img {
margin : 0 7 px ;
}
#certificate--meu-certificado .footer div .footer-img > img {
height : 82 px ;
}
com o código do modelo pronto, habilite o plugin:
Copy 'plugins' => [
.
.
.
'SealModelTab' => ['namespace' => 'SealModelTab' ],
'MeuCertificado' => [
'namespace' => 'MeuCertificado',
'config' => [
'logo-site' => 'img/logo-secult.png'
]
],
]
Criando um selo
Para testar o certificado criado, deve-se criar um selo preenchendo todos os campos obrigatórios e escolhendo o modelo criado na aba Modelos , lembrando que somente administradores podem criar selos.