Browse Source

#216 Improve layout of knowledgebase section

merge-requests/2/head
Mike Koch 7 years ago
parent
commit
b103a39b90
  1. 8
      css/hesk_newStyle.php
  2. 12
      css/hesk_newStyleRTL.php
  3. 24
      inc/knowledgebase_functions.inc.php
  4. 266
      knowledgebase.php
  5. 5
      language/en/text.php

8
css/hesk_newStyle.php

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

12
css/hesk_newStyleRTL.php

@ -383,4 +383,16 @@ vertical-align: middle;
max-height: 80px;
max-width: 80px;
cursor: pointer;
}
.plaintext-editor {
font-family: monospace;
}
.table-fixed {
table-layout: fixed;
}
.indent-15 {
margin-right: 15px;
}

24
inc/knowledgebase_functions.inc.php

@ -94,10 +94,10 @@ function hesk_kbTopArticles($how_many, $index = 1)
<div class="panel-heading">
<h4 class="text-left"><?php echo $hesklang['popart_no_colon']; ?></h4>
</div>
<table border="0" width="100%" class="table table-striped">
<table border="0" width="100%" class="table table-striped table-fixed">
<thead>
<tr>
<th>&nbsp;</th>
<th class="col-xs-8 col-sm-9">&nbsp;</th>
<?php
/* 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`
@ -108,7 +108,7 @@ function hesk_kbTopArticles($how_many, $index = 1)
/* Show number of views? */
if ($hesk_settings['kb_views'] && hesk_dbNumRows($res) != 0)
{
echo '<th><i>' . $hesklang['views'] . '</i></th>';
echo '<th class="col-xs-4 col-sm-3"><i>' . $hesklang['views'] . '</i></th>';
}
?>
</tr>
@ -141,12 +141,12 @@ function hesk_kbTopArticles($how_many, $index = 1)
{
echo '
<tr>
<td '.$colspan.'>
<i class="fa fa-file"></i> <a href="knowledgebase.php?article="'.$article['id'].'">'.$article['subject'].'</a>
<td class="col-xs-8 col-sm-9" '.$colspan.'>
<i class="fa fa-file"></i> <a href="knowledgebase.php?article='.$article['id'].'">'.$article['subject'].'</a>
</td>
';
if ($hesk_settings['kb_views']) {
echo '<td>'.$article['views'].'</td>';
echo '<td class="col-xs-4 col-sm-3">'.$article['views'].'</td>';
}
echo '</tr>';
}
@ -197,7 +197,7 @@ function hesk_kbLatestArticles($how_many, $index = 1)
<div class="panel-heading">
<h4 class="text-left"><?php echo $hesklang['latart_no_colon']; ?></h4>
</div>
<table class="table table-striped">
<table class="table table-striped table-fixed">
<thead>
<tr>
<?php
@ -214,10 +214,10 @@ function hesk_kbLatestArticles($how_many, $index = 1)
/* Show number of views? */
if (hesk_dbNumRows($res) != 0)
{
echo '<th '.$colspan.'>&nbsp;</th>';
echo '<th class="col-xs-9" '.$colspan.'>&nbsp;</th>';
if ($hesk_settings['kb_date'])
{
echo '<th><i>' . $hesklang['dta'] . '</i></th>';
echo '<th class="col-xs-3"><i>' . $hesklang['dta'] . '</i></th>';
}
}
?>
@ -248,14 +248,16 @@ function hesk_kbLatestArticles($how_many, $index = 1)
{
echo '
<tr>
<td '.$colspan.'>
<td class="col-xs-9" '.$colspan.'>
<i class="fa fa-file"></i> <a href="knowledgebase.php?article='.$article['id'].'">'.$article['subject'].'</a>
</td>';
if ($hesk_settings['kb_date']) {
echo '<td>' . hesk_date($article['dt'], true) . '</td>';
echo '<td class="col-xs-3">' . hesk_date($article['dt'], true) . '</td>';
}
echo '</tr>';
} ?>
</tbody>
</table>
</div>
<?php

266
knowledgebase.php

@ -139,7 +139,7 @@ else
{
hesk_show_kb_category($catid);
}
echo '</div>';
require_once(HESK_PATH . 'inc/footer.inc.php');
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");
}
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>
<h4 class="text-left">'.$hesklang['as'].'</h4>
<div class="kbContent">'
@ -409,22 +416,7 @@ function hesk_show_kb_article($artid)
</div>
<?php } ?>
</div>
<?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
}
<?php
} // END hesk_show_kb_article()
@ -456,8 +448,7 @@ function hesk_show_kb_category($catid, $is_search = 0) {
if ($thiscat['parent'])
{
$link = ($thiscat['parent'] == 1) ? 'knowledgebase.php' : 'knowledgebase.php?category='.$thiscat['parent'];
echo '<h3 class="text-left">'.$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>
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>
<div class="footerWithBorder 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="footerWithBorder blankSpace"></div>
<table border="0" cellspacing="1" cellpadding="3" width="100%">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="text-left"><?php echo $hesklang['kb_cat_sub']; ?></h4>
</div>
<table class="table table-striped">
<?php
$per_col = $hesk_settings['kb_cols'];
$i = 1;
<?php
$per_col = $hesk_settings['kb_cols'];
$i = 1;
while ($cat = hesk_dbFetchAssoc($result))
{
while ($cat = hesk_dbFetchAssoc($result))
{
if ($i == 1)
{
echo '<tr>';
}
if ($i == 1)
{
echo '<tr>';
}
echo '
<td width="50%" valign="top">
<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>
';
echo '
<td width="50%" valign="top">
<table border="0">
<tr><td><i class="fa fa-folder"></i>&nbsp;<a href="knowledgebase.php?category='.$cat['id'].'">'.$cat['name'].'</a></td></tr>
';
/* Print most popular/sticky articles */
if ($hesk_settings['kb_numshow'] && $cat['articles'])
{
$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 '
/* Print most popular/sticky articles */
if ($hesk_settings['kb_numshow'] && $cat['articles'])
{
$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>
<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>
</tr>';
if ($num == $hesk_settings['kb_numshow'])
{
break;
}
else
{
$num++;
}
}
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 '
if ($num == $hesk_settings['kb_numshow'])
{
break;
}
else
{
$num++;
}
}
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 '
</table>
</td>
';
if ($i == $per_col)
{
echo '</tr>';
$i = 0;
}
$i++;
}
/* Finish the table if needed */
if ($i != 1)
{
for ($j=1;$j<=$per_col;$j++)
{
echo '<td width="50%">&nbsp;</td>';
if ($i == $per_col)
{
echo '</tr>';
break;
}
$i++;
}
}
?>
</table>
if ($i == $per_col)
{
echo '</tr>';
$i = 0;
}
$i++;
}
/* Finish the table if needed */
if ($i != 1)
{
for ($j=1;$j<=$per_col;$j++)
{
echo '<td width="50%">&nbsp;</td>';
if ($i == $per_col)
{
echo '</tr>';
break;
}
$i++;
}
}
</td>
<td class="roundcornersright">&nbsp;</td>
</tr>
</table>
?>
</table>
</div>
<?php
} // END if NumRows > 0
?>
<h4 class="text-left"><?php echo $hesklang['ac']; ?></h4>
<div class="footerWithBorder blankSpace"></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<?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 '<p><i>'.$hesklang['noac'].'</i></p>';
}
else
{
echo '<div align="center"><table border="0" cellspacing="1" cellpadding="3" width="100%">';
while ($article = hesk_dbFetchAssoc($res))
{
$txt = hesk_kbArticleContentPreview($article['content']);
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 = '';
}
<div class="panel panel-default">
<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']);
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>';
}
?>
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 = '';
}
</td>
</tr>
</table>
echo '
<tr>
<td>
<i class="fa fa-file"></i>
<a href="knowledgebase.php?article='.$article['id'].'">'.$article['subject'].'</a>
<br>
<span class="indent-15">'.$txt.'</span>
</td>
'.$rat.'
</tr>';
}
}
?>
</tbody>
</table>
</div>
<?php
/* 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 */
hesk_kbLatestArticles($hesk_settings['kb_latest'], 0);
}
} // END hesk_show_kb_category()
?>

5
language/en/text.php

@ -22,8 +22,9 @@ $hesklang['_COLLATE']='utf8_unicode_ci';
$hesklang['EMAIL_HR']='------ Reply above this line ------';
// ADDED OR MODIFIED IN Mods for HESK 2.2.1
$hesklang['popart_no_colon']='Top Knowledgebase Articles';
$hesklang['latart_no_colon']='Latest Knowledgebase Articles';
$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
$hesklang['email_templates'] = 'Email templates';

Loading…
Cancel
Save