Hoje o amigo +Márcio Machado postou uma dica no grupo do GLPI muito boa e de grande valia a quem tem interesse em dar uma organizada nas notificações do GLPI.
Quem usa sabe que as vezes as notificações são um pouco confusas de entender o que exatamente foi feito e qual a necessidade de cada chamado. Com isso acabamos acessando o sistema mesmo para verificar o que está acontecendo. Porém os usuários não gostam de ter de acessar o sistema sempre para verificar o que aconteceu.
O grupo Siprosii mantem diversas customizações, plugins e dicas sobre o GLPI e FusionInventory que podem ajudar muitos de nós administradores que não possuem grande conhecimento ou até nenhum em programação CSS, HTML e afins. Em um post de Novembro o Siprosii mostrou uma forma bem legal de como personalizar as notificações de chamados e mostro abaixo como fazer o procedimento e posterior ativação do novo modelo.
Existem os modelos nas cores padrão:
E também na cor azul
Vou explanar aqui apenas na cor padrão. Caso a cor azul atenda a alguma necessidade vocês podem ter acesso a mesma através deste link. (NÃO MAIS ATIVO ATUALIZADO EM 18/08/2021)
O processo de criação e cadastro dos modelos é simples porém um pouco trabalhoso.
1- Navegue pelos menus do GLPI através de Configurar > Notificações > Modelos de Notificações
2- Adicione um novo modelo
- Selecione tipo: Chamado (Ticket)
- Selecione o campo CSS
- Coloque o código abaixo.
body {
font-family: ‘Bitstream Vera Sans’, arial, Tahoma, ‘Sans serif’;
font-size: 12px;
margin: 0;
padding: 0;
background: #dfdfdf repeat-x;
}
ul, li, dt, dl, dd, form, img, input {
margin: 0;
padding: 0;
}
ul {
list-style-type: none;
}
small {
font-family: verdana;
font-size: 10px;
}
.b {
font-weight: bold;
}
.center {
text-align:center;
}
.left {
text-align:left;
}
.right {
text-align:right;
}
.center-h {
margin:auto;
}
.middle {
vertical-align:middle;
}
.bottom {
vertical-align:bottom;
}
.top {
vertical-align:top;
}
.relative {
position: relative;
}
.red {
color:red;
}
.blue {
color:blue;
}
.green {
color:green;
}
a, a:link {
font-weight: bold;
text-decoration: none;
color : #659900;
font-size : 12px;
}
a:hover {
color: black;
}
table {
font-size: 11px;
border:0;
}
th { }
td { }
.tab_glpi {
margin: 0 auto;
}
.tab_cadre {
margin: 0 auto;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-o-border-radius: 4px;
border: 1px solid #cccccc;
z-index:1;
text-align: left;
font-size: 11px;
background-color: #ffffff;
}
.tab_cadre_fixe, .tab_cadre_fixehov {
margin: 0 auto 10px auto;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-o-border-radius: 4px;
background: #f2f2f2;
z-index:1;
text-align: left;
font-size: 11px;
width:950px;
}
.tab_cadre_fixe img {
vertical-align: middle;
}
.tab_cadrehov, .tab_cadrehov_pointer {
margin: 0 auto;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-o-border-radius: 4px;
border: 1px solid #cccccc;
text-align: left;
font-size: 11px;
width: 80%;
background-color: #ffffff;
-moz-box-shadow: 0px 2px 5px #666;
-webkit-box-shadow: 0px 2px 5px #666;
box-shadow: 0px 2px 5px #666;
}
.tab_cadre th, .tab_cadre_fixe th, .tab_cadre_fixehov th, .tab_cadrehov th, .tab_cadrehov_pointer th, .tab_cadre_report th {
font-size: 12px;
font-weight: bold;
background-color: #e1cc7b;
text-align: center;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
-o-border-radius: 4px;
padding: 2px;
border-bottom:1px solid #cccccc;
padding: 2px;
}
.tab_cadre td, .tab_cadre_fixe td, .tab_cadre_fixehov td, .tab_cadrehov td, .tab_cadrehov_pointer td, .tab_cadre_report td {
padding: 3px 5px;
}
.tab_cadrehov tr:hover, .tab_cadre_fixehov tr:hover {
background-color: #FFF4DF;
}
.tab_cadrehov_pointer tr:hover {
cursor: pointer;
background-color: #FFF4DF;
}
.tab_check {
text-align:center;
margin: 20px;
margin-left: auto;
margin-right: auto;
width: 90%;
border: 1px solid #aaaaaa;
padding:10px;
}
.tab_check th {
font-size: 12px;
font-weight: bold;
color: #fccc6f;
vertical-align:bottom;
}
.tab_check td {
font-size:11px;
border-bottom:1px solid #bbbbbb;
}
.tab_cadrehov_pointer tr {
cursor: pointer;
}
.tab_bg_1 {
background-color: #f2f2f2;
}
.tab_bg_1_2 {
background-color: #cf9b9b;
}
.tab_bg_2 {
background-color: #f2f2f2;
}
.tab_bg_2_2 {
background-color: #cf9b9b;
}
.tab_bg_3 {
background-color: #e7e7e2;
}
.tab_bg_4 {
background-color: #e4e4e2;
}
.tab_bg_5 {
background-color: #f2f2f2;
}
.tab_find {
background-color: #ccccc7;
}
.tab_find:hover {
background-color:#FFF2C2;
cursor:pointer;
}
3- Clique em adicionar
4- Clique para editar este template e adicione uma nova tradução
5- Clique no campo Corpo do e-mail HTML e clique no HTML.
6- Adicione o código abaixo.
##IFticket.storestatus=solved##
<table class=”tab_cadre” width=”700″>
<tbody>
<tr>
<th colspan=”2″><a href=”##ticket.urlapprove##”>##lang.ticket.solution.description##</a></th>
</tr>
<tr class=”tab_bg_1″>
<td colspan=”2″><strong>##lang.ticket.autoclosewarning##</strong></td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.solvedate## :</td>
<td>##ticket.solvedate##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.solution.type## :</td>
<td>##ticket.solution.type##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.solution.description## :</td>
<td>##ticket.solution.description##</td>
</tr>
</tbody>
</table>
##ENDIFticket.storestatus##
<br />
<table class=”tab_cadre” width=”700″>
<tbody>
<tr>
<th colspan=”2″><a href=”##ticket.url##”>##ticket.title##</a></th>
<th>
##IFticket.numberoffollowups##
<a href=”#followups”>##lang.ticket.numberoffollowups## : ##ticket.numberoffollowups##</a>
##ENDIFticket.numberoffollowups##
</th>
<th>
##IFticket.numberoftasks##
<a href=”#tasks”>##lang.ticket.numberoftasks## : ##ticket.numberoftasks##</a>
##ENDIFticket.numberoftasks##
</th>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.authors## :</td>
<td>
##IFticket.authors##
##ticket.authors##
##ENDIFticket.authors##
##ELSEticket.authors##
—
##ENDELSEticket.authors##</td>
<td colspan=”2″></td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.creationdate## :</td>
<td>##ticket.creationdate##</td>
<td colspan=”2″></td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.closedate## :</td>
<td>##ticket.closedate##</td>
<td colspan=”2″></td>
</tr>
##IFticket.requesttype##
<tr class=”tab_bg_1″>
<td>##lang.ticket.requesttype## :</td>
<td>##ticket.requesttype##</td>
<td colspan=”2″></td>
</tr>
##ENDIFticket.requesttype##
##IFticket.itemtype##
<tr class=”tab_bg_1″>
<td>##lang.ticket.item.name## :</td>
<td>##ticket.itemtype## — ##ticket.item.name##
##IFticket.item.model## — ##ticket.item.model## ##ENDIFticket.item.model##
##IFticket.item.serial## — ##ticket.item.serial## ##ENDIFticket.item.serial##
##IFticket.item.otherserial## — ##ticket.item.otherserial## ##ENDIFticket.item.otherserial##</td>
<td colspan=”2″></td>
</tr>
##ENDIFticket.itemtype##
##IFticket.assigntousers##
<tr class=”tab_bg_1″>
<td>##lang.ticket.assigntousers## : </td>
<td>##ticket.assigntousers##</td>
<td colspan=”2″></td>
</tr>
##ENDIFticket.assigntousers##
<tr class=”tab_bg_1″>
<td>##lang.ticket.status## : </td>
<td>##ticket.status##</td>
<td colspan=”2″></td>
</tr>
##IFticket.assigntogroups##
<tr class=”tab_bg_1″>
<td>##lang.ticket.assigntogroups## : </td>
<td>##ticket.assigntogroups##</td>
<td colspan=”2″></td>
</tr>
##ENDIFticket.assigntogroups##
<tr class=”tab_bg_1″>
<td>##lang.ticket.urgency## : </td>
<td>##ticket.urgency##</td>
<td colspan=”2″></td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.impact## : </td>
<td>##ticket.impact##</td>
<td colspan=”2″></td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.priority## : </td>
<td>##ticket.priority##</td>
<td colspan=”2″></td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.category## : </td>
<td>##IFticket.category##
##ticket.category##
##ENDIFticket.category##
##ELSEticket.category##
##lang.ticket.nocategoryassigned##
##ENDELSEticket.category##</td>
<td colspan=”2″></td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.content## : </td>
<td colspan=”3″>##ticket.content##</td>
</tr>
##IFticket.storestatus=closed##
<tr class=”tab_bg_1″>
<td>##lang.ticket.solvedate## : </td>
<td colspan=”3″>##ticket.solvedate##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.solution.type## : </td>
<td colspan=”3″>##ticket.solution.type##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.ticket.solution.description## : </td>
<td colspan=”3″>##ticket.solution.description##</td>
</tr>
##ENDIFticket.storestatus##</p>
<tr class=”tab_bg_1″>
<td>##lang.ticket.numberoffollowups## : </td>
<td colspan=”3″>##ticket.numberoffollowups##</td>
</tr>
##IFticket.numberoffollowups##
<tr>
<th colspan=”4″ id=”followups”>##lang.ticket.numberoffollowups## : ##ticket.numberoffollowups##</th>
</tr>
##ENDIFticket.numberoffollowups##
<tr>
<td colspan=’4′>
##FOREACHfollowups##
<table class=”tab_cadre” width=”700″>
<tr class=”tab_bg_3″>
<td colspan=”4″ align=”center”><strong>[##followup.date##]</strong></td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.followup.isprivate## :</td>
<td colspan=”3″>##followup.isprivate##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.followup.author## :</td>
<td colspan=”3″>##followup.author##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.followup.description## :</td>
<td colspan=”3″>##followup.description##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.followup.date## :</td>
<td colspan=”3″>##followup.date##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.followup.requesttype## :</td>
<td colspan=”3″>##followup.requesttype##</td>
</tr>
</table>
##ENDFOREACHfollowups##
</td>
</tr>
##IFticket.numberoftasks##
<tr>
<th colspan=”4″ id=”tasks”>##lang.ticket.numberoftasks## : ##ticket.numberoftasks##</th>
</tr>
##ENDIFticket.numberoftasks##
<tr>
<td colspan=’4′>
##FOREACHtasks##
<table class=”tab_cadre” width=”700″>
<tr class=”tab_bg_3″>
<td colspan=”4″ align=”center”><strong>[##task.date##]</strong></td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.task.isprivate## :</td>
<td colspan=”3″>##task.isprivate##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.task.author## :</td>
<td colspan=”3″>##task.author##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.task.description## :</td>
<td colspan=”3″>##task.description##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.task.time## :</td>
<td colspan=”3″>##task.time##</td>
</tr>
<tr class=”tab_bg_1″>
<td>##lang.task.category## :</td>
<td colspan=”3″>##task.category##</td>
</tr>
</table>
##ENDFOREACHtasks##
</td>
</tr>
</tbody>
</table>
7- Após adicionar a nova tradução Navegue até Configurar > Notificações > Notificações e selecione este novo template para todos os chamados que utilizam o modelo de chamados Tickets.
O post original estava disponível em http://www.siprossii.com/en/GLPI-notification-template-mail (NÃO MAIS ATIVO ATUALIZADO EM 18/08/2021)
Deixe um comentário