Merge pull request #219 from mkoch227/fix-knowledgebase

Fix knowledgebase
This commit is contained in:
Mike Koch 2015-04-17 22:11:01 -04:00
commit 6c92977f4a
5 changed files with 261 additions and 275 deletions

View File

@ -394,3 +394,11 @@ button.dropdown-submit {
.plaintext-editor { .plaintext-editor {
font-family: monospace; font-family: monospace;
} }
.table-fixed {
table-layout: fixed;
}
.indent-15 {
margin-left: 15px;
}

View File

@ -384,3 +384,15 @@ max-height: 80px;
max-width: 80px; max-width: 80px;
cursor: pointer; cursor: pointer;
} }
.plaintext-editor {
font-family: monospace;
}
.table-fixed {
table-layout: fixed;
}
.indent-15 {
margin-right: 15px;
}

View File

@ -90,78 +90,70 @@ function hesk_kbTopArticles($how_many, $index = 1)
} }
?> ?>
<div class="panel panel-default">
<h4 class="text-left"><?php echo $hesklang['popart']; ?></h4> <div class="panel-heading">
<div class="footerWithBorder blankSpace"></div> <h4 class="text-left"><?php echo $hesklang['popart_no_colon']; ?></h4>
</div>
<table border="0" width="100%"> <table border="0" width="100%" class="table table-striped table-fixed">
<tr> <thead>
<tr>
<?php <th class="col-xs-8 col-sm-9">&nbsp;</th>
/* Get list of articles from the database */ <?php
$res = hesk_dbQuery("SELECT `t1`.`id`,`t1`.`subject`,`t1`.`views` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1` /* Get list of articles from the database */
$res = hesk_dbQuery("SELECT `t1`.`id`,`t1`.`subject`,`t1`.`views` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1`
LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id` LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id`
WHERE `t1`.`type`='0' AND `t2`.`type`='0' WHERE `t1`.`type`='0' AND `t2`.`type`='0'
ORDER BY `t1`.`sticky` DESC, `t1`.`views` DESC, `t1`.`art_order` ASC LIMIT ".intval($how_many)); ORDER BY `t1`.`sticky` DESC, `t1`.`views` DESC, `t1`.`art_order` ASC LIMIT ".intval($how_many));
/* Show number of views? */ /* Show number of views? */
if ($hesk_settings['kb_views'] && hesk_dbNumRows($res) != 0) if ($hesk_settings['kb_views'] && hesk_dbNumRows($res) != 0)
{ {
echo '<td class="text-right"><i>' . $hesklang['views'] . '</i></td>'; echo '<th class="col-xs-4 col-sm-3"><i>' . $hesklang['views'] . '</i></th>';
} }
?> ?>
</tr>
</thead>
<tbody>
<?php
/* Get list of articles from the database */
$res = hesk_dbQuery("SELECT `t1`.`id`,`t1`.`subject`,`t1`.`dt`, `t1`.`views` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1`
LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id`
WHERE `t1`.`type`='0' AND `t2`.`type`='0'
ORDER BY `t1`.`sticky` DESC, `t1`.`views` DESC, `t1`.`art_order` ASC LIMIT ".intval($how_many));
</tr> /* If no results found end here */
</table> if (hesk_dbNumRows($res) == 0)
{
$colspan = '';
if (!$hesk_settings['kb_views']) {
$colspan = 'colspan="2"';
}
echo '<tr><td '.$colspan.'><i>'.$hesklang['noa'].'</i></td></tr>';
return true;
}
<?php /* We have some results, print them out */
/* Get list of articles from the database */ $colspan = '';
$res = hesk_dbQuery("SELECT `t1`.`id`,`t1`.`subject`,`t1`.`dt` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1` if (!$hesk_settings['kb_views']) {
LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id` $colspan = 'colspan="2"';
WHERE `t1`.`type`='0' AND `t2`.`type`='0' }
ORDER BY `t1`.`sticky` DESC, `t1`.`views` DESC, `t1`.`art_order` ASC LIMIT ".intval($how_many)); while ($article = hesk_dbFetchAssoc($res))
{
/* If no results found end here */ echo '
if (hesk_dbNumRows($res) == 0) <tr>
{ <td class="col-xs-8 col-sm-9" '.$colspan.'>
echo '<p class="text-left"><i>'.$hesklang['noa'].'</i><br />&nbsp;</p>'; <i class="fa fa-file"></i> <a href="knowledgebase.php?article='.$article['id'].'">'.$article['subject'].'</a>
return true; </td>
} ';
if ($hesk_settings['kb_views']) {
/* We have some results, print them out */ echo '<td class="col-xs-4 col-sm-3">'.$article['views'].'</td>';
?> }
<div align="left"> echo '</tr>';
<table border="0" cellspacing="1" cellpadding="3" width="100%"> }
<?php ?>
</tbody>
while ($article = hesk_dbFetchAssoc($res)) </table>
{
echo '
<tr>
<td>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="1" valign="top"><span class="glyphicon glyphicon-file"></span></td>
<td valign="top">&nbsp;<a href="knowledgebase.php?article=' . $article['id'] . '">' . $article['subject'] . '</a></td>
';
if ($hesk_settings['kb_views'])
{
echo '<td valign="top" class="text-right" width="200">' . $article['views'] . '</td>';
}
echo '
</tr>
</table>
</td>
</tr>
';
}
?>
</table>
</div> </div>
<br/>
<?php <?php
} // END hesk_kbTopArticles() } // END hesk_kbTopArticles()
@ -201,78 +193,73 @@ function hesk_kbLatestArticles($how_many, $index = 1)
} }
?> ?>
<h4 class="text-left"><?php echo $hesklang['latart']; ?></h4> <div class="panel panel-default">
<div class="footerWithBorder blankSpace"></div> <div class="panel-heading">
<h4 class="text-left"><?php echo $hesklang['latart_no_colon']; ?></h4>
</div>
<table class="table table-striped table-fixed">
<thead>
<tr>
<?php
$colspan = '';
if (!$hesk_settings['kb_date']) {
$colspan = 'colspan="2"';
}
/* Get list of articles from the database */
$res = hesk_dbQuery("SELECT `t1`.* FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1`
LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id`
WHERE `t1`.`type`='0' AND `t2`.`type`='0'
ORDER BY `t1`.`dt` DESC LIMIT ".intval($how_many));
<table border="0" width="100%"> /* Show number of views? */
<tr> if (hesk_dbNumRows($res) != 0)
<?php {
/* Get list of articles from the database */ echo '<th class="col-xs-9" '.$colspan.'>&nbsp;</th>';
$res = hesk_dbQuery("SELECT `t1`.* FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1` if ($hesk_settings['kb_date'])
{
echo '<th class="col-xs-3"><i>' . $hesklang['dta'] . '</i></th>';
}
}
?>
</tr>
</thead>
<tbody>
<?php
/* Get list of articles from the database */
$res = hesk_dbQuery("SELECT `t1`.* FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1`
LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id` LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id`
WHERE `t1`.`type`='0' AND `t2`.`type`='0' WHERE `t1`.`type`='0' AND `t2`.`type`='0'
ORDER BY `t1`.`dt` DESC LIMIT ".intval($how_many)); ORDER BY `t1`.`dt` DESC LIMIT ".intval($how_many));
/* Show number of views? */ /* If no results found end here */
if ($hesk_settings['kb_date'] && hesk_dbNumRows($res) != 0) if (hesk_dbNumRows($res) == 0)
{ {
echo '<td class="text-right"><i>' . $hesklang['dta'] . '</i></td>'; $colspan = '';
} if ($hesk_settings['kb_date']) {
?> $colspan = 'colspan="2"';
}
echo '<td '.$colspan.'><i>'.$hesklang['noa'].'</i></td>';
return true;
}
</tr> /* We have some results, print them out */
</table> $colspan = $hesk_settings['kb_date'] ? '' : 'colspan="2"';
while ($article = hesk_dbFetchAssoc($res))
<?php {
/* Get list of articles from the database */ echo '
$res = hesk_dbQuery("SELECT `t1`.* FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` AS `t1` <tr>
LEFT JOIN `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_categories` AS `t2` ON `t1`.`catid` = `t2`.`id` <td class="col-xs-9" '.$colspan.'>
WHERE `t1`.`type`='0' AND `t2`.`type`='0' <i class="fa fa-file"></i> <a href="knowledgebase.php?article='.$article['id'].'">'.$article['subject'].'</a>
ORDER BY `t1`.`dt` DESC LIMIT ".intval($how_many)); </td>';
if ($hesk_settings['kb_date']) {
/* If no results found end here */ echo '<td class="col-xs-3">' . hesk_date($article['dt'], true) . '</td>';
if (hesk_dbNumRows($res) == 0) }
{ echo '</tr>';
echo '<p class="text-left"><i>'.$hesklang['noa'].'</i><br />&nbsp;</p>'; } ?>
return true; </tbody>
} </table>
/* We have some results, print them out */
?>
<div align="center">
<table border="0" cellspacing="1" cellpadding="3" width="100%">
<?php
while ($article = hesk_dbFetchAssoc($res))
{
echo '
<tr>
<td>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="1" valign="top"><span class="glyphicon glyphicon-file"></span></td>
<td valign="top">&nbsp;<a href="knowledgebase.php?article=' . $article['id'] . '">' . $article['subject'] . '</a></td>
';
if ($hesk_settings['kb_date'])
{
echo '<td valign="top" class="text-right" width="200">' . hesk_date($article['dt'], true) . '</td>';
}
echo '
</tr>
</table>
</td>
</tr>
';
}
?>
</table>
</div> </div>
&nbsp;
<?php <?php
} // END hesk_kbLatestArticles() } // END hesk_kbLatestArticles()

View File

@ -139,7 +139,7 @@ else
{ {
hesk_show_kb_category($catid); hesk_show_kb_category($catid);
} }
echo '</div>';
require_once(HESK_PATH . 'inc/footer.inc.php'); require_once(HESK_PATH . 'inc/footer.inc.php');
exit(); exit();
@ -276,8 +276,15 @@ function hesk_show_kb_article($artid)
{ {
hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` SET `views`=`views`+1 WHERE `id`={$artid} LIMIT 1"); hesk_dbQuery("UPDATE `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` SET `views`=`views`+1 WHERE `id`={$artid} LIMIT 1");
} }
if (!isset($_GET['suggest'])) {
$historyNumber = isset($_GET['rated']) ? '-2' : '-1';
$goBackText = '<a href="javascript:history.go('.$historyNumber.')">
<i class="fa fa-arrow-circle-left" data-toggle="tooltip" data-placement="top" title="'.$hesklang['back'].'"></i></a>';
} else {
$goBackText = '';
}
echo '<h3 class="text-left">'.$article['subject'].'</h3> echo '<h3 class="text-left">'.$goBackText.'&nbsp;'.$article['subject'].'</h3>
<div class="footerWithBorder blankSpace"></div> <div class="footerWithBorder blankSpace"></div>
<h4 class="text-left">'.$hesklang['as'].'</h4> <h4 class="text-left">'.$hesklang['as'].'</h4>
<div class="kbContent">' <div class="kbContent">'
@ -409,22 +416,7 @@ function hesk_show_kb_article($artid)
</div> </div>
<?php } ?> <?php } ?>
</div> </div>
<?php
<?php
if (!isset($_GET['suggest']))
{
?>
<p><a href="javascript:history.go(<?php echo isset($_GET['rated']) ? '-2' : '-1'; ?>)"><span class="glyphicon glyphicon-circle-arrow-left"></span> <?php echo $hesklang['back']; ?></a></p>
<?php
}
else
{
?>
<p>&nbsp;</p>
<?php
}
} // END hesk_show_kb_article() } // END hesk_show_kb_article()
@ -456,8 +448,7 @@ function hesk_show_kb_category($catid, $is_search = 0) {
if ($thiscat['parent']) if ($thiscat['parent'])
{ {
$link = ($thiscat['parent'] == 1) ? 'knowledgebase.php' : 'knowledgebase.php?category='.$thiscat['parent']; $link = ($thiscat['parent'] == 1) ? 'knowledgebase.php' : 'knowledgebase.php?category='.$thiscat['parent'];
echo '<h3 class="text-left">'.$hesklang['kb_cat'].': '.$thiscat['name'].' </h3> echo '<h3 class="text-left"><a href="javascript:history.go(-1)"><i class="fa fa-arrow-circle-left" data-toggle="tooltip" data-placement="top" title="'.$hesklang['back'].'"></i></a>&nbsp;'.$hesklang['kb_cat'].': '.$thiscat['name'].' </h3>
<p class="text-left"><a href="javascript:history.go(-1)" title="'.$hesklang['back'].'"><span class="glyphicon glyphicon-circle-arrow-left"></span>'.$hesklang['back'].'</a></p>
<div class="footerWithBorder blankSpace"></div> <div class="footerWithBorder blankSpace"></div>
<div class="blankSpace"></div> <div class="blankSpace"></div>
'; ';
@ -468,153 +459,137 @@ function hesk_show_kb_category($catid, $is_search = 0) {
{ {
?> ?>
<h4 class="text-left"><?php echo $hesklang['kb_cat_sub']; ?></h4> <div class="panel panel-default">
<div class="footerWithBorder blankSpace"></div> <div class="panel-heading">
<h4 class="text-left"><?php echo $hesklang['kb_cat_sub']; ?></h4>
</div>
<table class="table table-striped">
<table border="0" cellspacing="1" cellpadding="3" width="100%"> <?php
$per_col = $hesk_settings['kb_cols'];
$i = 1;
<?php while ($cat = hesk_dbFetchAssoc($result))
$per_col = $hesk_settings['kb_cols']; {
$i = 1;
while ($cat = hesk_dbFetchAssoc($result)) if ($i == 1)
{ {
echo '<tr>';
}
if ($i == 1) echo '
{ <td width="50%" valign="top">
echo '<tr>'; <table border="0">
} <tr><td><i class="fa fa-folder"></i>&nbsp;<a href="knowledgebase.php?category='.$cat['id'].'">'.$cat['name'].'</a></td></tr>
';
echo ' /* Print most popular/sticky articles */
<td width="50%" valign="top"> if ($hesk_settings['kb_numshow'] && $cat['articles'])
<table border="0"> {
<tr><td><span class="glyphicon glyphicon-folder-close"></span>&nbsp;<a href="knowledgebase.php?category='.$cat['id'].'">'.$cat['name'].'</a></td></tr> $res = hesk_dbQuery("SELECT `id`,`subject` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` WHERE `catid`='{$cat['id']}' AND `type`='0' ORDER BY `sticky` DESC, `views` DESC, `art_order` ASC LIMIT " . (intval($hesk_settings['kb_numshow']) + 1) );
'; $num = 1;
while ($art = hesk_dbFetchAssoc($res))
/* Print most popular/sticky articles */ {
if ($hesk_settings['kb_numshow'] && $cat['articles']) echo '
{
$res = hesk_dbQuery("SELECT `id`,`subject` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` WHERE `catid`='{$cat['id']}' AND `type`='0' ORDER BY `sticky` DESC, `views` DESC, `art_order` ASC LIMIT " . (intval($hesk_settings['kb_numshow']) + 1) );
$num = 1;
while ($art = hesk_dbFetchAssoc($res))
{
echo '
<tr> <tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="glyphicon glyphicon-file"></span> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="glyphicon glyphicon-file"></span>
<a href="knowledgebase.php?article='.$art['id'].'" class="article">'.$art['subject'].'</a></td> <a href="knowledgebase.php?article='.$art['id'].'" class="article">'.$art['subject'].'</a></td>
</tr>'; </tr>';
if ($num == $hesk_settings['kb_numshow']) if ($num == $hesk_settings['kb_numshow'])
{ {
break; break;
} }
else else
{ {
$num++; $num++;
} }
} }
if (hesk_dbNumRows($res) > $hesk_settings['kb_numshow']) if (hesk_dbNumRows($res) > $hesk_settings['kb_numshow'])
{ {
echo '<tr><td>&raquo; <a href="knowledgebase.php?category='.$cat['id'].'"><i>'.$hesklang['m'].'</i></a></td></tr>'; echo '<tr><td>&raquo; <a href="knowledgebase.php?category='.$cat['id'].'"><i>'.$hesklang['m'].'</i></a></td></tr>';
} }
} }
echo ' echo '
</table> </table>
</td> </td>
'; ';
if ($i == $per_col) if ($i == $per_col)
{ {
echo '</tr>'; echo '</tr>';
$i = 0; $i = 0;
} }
$i++; $i++;
} }
/* Finish the table if needed */ /* Finish the table if needed */
if ($i != 1) if ($i != 1)
{ {
for ($j=1;$j<=$per_col;$j++) for ($j=1;$j<=$per_col;$j++)
{ {
echo '<td width="50%">&nbsp;</td>'; echo '<td width="50%">&nbsp;</td>';
if ($i == $per_col) if ($i == $per_col)
{ {
echo '</tr>'; echo '</tr>';
break; break;
} }
$i++; $i++;
} }
} }
?> ?>
</table> </table>
</div>
</td>
<td class="roundcornersright">&nbsp;</td>
</tr>
</table>
<?php <?php
} // END if NumRows > 0 } // END if NumRows > 0
?> ?>
<h4 class="text-left"><?php echo $hesklang['ac']; ?></h4> <div class="panel panel-default">
<div class="footerWithBorder blankSpace"></div> <div class="panel-heading">
<h4 class="text-left"><?php echo $hesklang['ac_no_colon']; ?></h4>
</div>
<table class="table table-striped">
<tbody>
<?php
$res = hesk_dbQuery("SELECT `id`, `subject`, LEFT(`content`, ".max(200, $hesk_settings['kb_substrart'] * 2).") AS `content`, `rating` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` WHERE `catid`='{$catid}' AND `type`='0' ORDER BY `sticky` DESC, `art_order` ASC");
if (hesk_dbNumRows($res) == 0)
{
echo '<tr><td><i>'.$hesklang['noac'].'</i></td></tr>';
}
else
{
while ($article = hesk_dbFetchAssoc($res))
{
$txt = hesk_kbArticleContentPreview($article['content']);
<table width="100%" border="0" cellspacing="0" cellpadding="0"> if ($hesk_settings['kb_rating'])
{
$alt = $article['rating'] ? sprintf($hesklang['kb_rated'], sprintf("%01.1f", $article['rating'])) : $hesklang['kb_not_rated'];
$rat = '<td><img src="img/star_'.(hesk_round_to_half($article['rating'])*10).'.png" width="85" height="16" alt="'.$alt.'" title="'.$alt.'" border="0" style="vertical-align:text-bottom" /></td>';
}
else
{
$rat = '';
}
<tr> echo '
<td> <tr>
<td>
<?php <i class="fa fa-file"></i>
$res = hesk_dbQuery("SELECT `id`, `subject`, LEFT(`content`, ".max(200, $hesk_settings['kb_substrart'] * 2).") AS `content`, `rating` FROM `".hesk_dbEscape($hesk_settings['db_pfix'])."kb_articles` WHERE `catid`='{$catid}' AND `type`='0' ORDER BY `sticky` DESC, `art_order` ASC"); <a href="knowledgebase.php?article='.$article['id'].'">'.$article['subject'].'</a>
if (hesk_dbNumRows($res) == 0) <br>
{ <span class="indent-15">'.$txt.'</span>
echo '<p><i>'.$hesklang['noac'].'</i></p>'; </td>
} '.$rat.'
else </tr>';
{ }
echo '<div align="center"><table border="0" cellspacing="1" cellpadding="3" width="100%">'; }
while ($article = hesk_dbFetchAssoc($res)) ?>
{ </tbody>
$txt = hesk_kbArticleContentPreview($article['content']); </table>
</div>
if ($hesk_settings['kb_rating'])
{
$alt = $article['rating'] ? sprintf($hesklang['kb_rated'], sprintf("%01.1f", $article['rating'])) : $hesklang['kb_not_rated'];
$rat = '<td width="1" valign="top"><img src="img/star_'.(hesk_round_to_half($article['rating'])*10).'.png" width="85" height="16" alt="'.$alt.'" title="'.$alt.'" border="0" style="vertical-align:text-bottom" /></td>';
}
else
{
$rat = '';
}
echo '
<tr>
<td>
<table border="0" width="100%" cellspacing="0" cellpadding="1">
<tr>
<td width="1" valign="top"><span class="glyphicon glyphicon-file"></span></td>
<td valign="top"><a href="knowledgebase.php?article='.$article['id'].'">'.$article['subject'].'</a></td>
'.$rat.'
</tr>
</table>
<table border="0" width="100%" cellspacing="0" cellpadding="1">
<tr>
<td width="1" valign="top"><img src="img/blank.gif" width="16" height="10" style="vertical-align:middle" alt="" /></td>
<td><span class="article_list">'.$txt.'</span></td>
</tr>
</table>
</td>
</tr>';
}
echo '</table></div>';
}
?>
</td>
</tr>
</table>
<?php <?php
/* On the main KB page print out top and latest articles if needed */ /* On the main KB page print out top and latest articles if needed */
@ -626,6 +601,5 @@ function hesk_show_kb_category($catid, $is_search = 0) {
/* Get list of latest articles */ /* Get list of latest articles */
hesk_kbLatestArticles($hesk_settings['kb_latest'], 0); hesk_kbLatestArticles($hesk_settings['kb_latest'], 0);
} }
} // END hesk_show_kb_category() } // END hesk_show_kb_category()
?> ?>

View File

@ -21,6 +21,11 @@ $hesklang['_COLLATE']='utf8_unicode_ci';
// This is the email break line that will be used in email piping // This is the email break line that will be used in email piping
$hesklang['EMAIL_HR']='------ Reply above this line ------'; $hesklang['EMAIL_HR']='------ Reply above this line ------';
// ADDED OR MODIFIED IN Mods for HESK 2.2.1
$hesklang['popart_no_colon']='Top Knowledgebase Articles'; // same as $hesklang['popart'] but without a colon (:)
$hesklang['latart_no_colon']='Latest Knowledgebase Articles'; // same as $hesklang['latart'] but without a colon (:)
$hesklang['ac_no_colon']='Articles in this Category'; // same as $hesklang['ac'] but without a colon (:)
// ADDED OR MODIFIED IN Mods for HESK 2.2.0 // ADDED OR MODIFIED IN Mods for HESK 2.2.0
$hesklang['email_templates'] = 'Email templates'; $hesklang['email_templates'] = 'Email templates';
$hesklang['email_templates_intro'] = 'You can edit your plaintext and HTML email templates here.'; $hesklang['email_templates_intro'] = 'You can edit your plaintext and HTML email templates here.';