Conferences Inter/Active: Button updates.

This commit is contained in:
Nate 2020-01-13 13:54:08 -07:00
parent b8a08419ad
commit dbbcefe2c7
5 changed files with 157 additions and 103 deletions

View File

@ -121,7 +121,7 @@ $text['label-yes']['ru-ru'] = "Да";
$text['label-yes']['sv-se'] = "Ja";
$text['label-yes']['uk-ua'] = "Так";
$text['label-volume']['en-us'] = "Vol";
$text['label-volume']['en-us'] = "Volume";
$text['label-volume']['ar-eg'] = "";
$text['label-volume']['de-at'] = "Lautstärke"; //copied from de-de
$text['label-volume']['de-ch'] = "Lautstärke"; //copied from de-de

View File

@ -26,7 +26,7 @@
*/
//includes
include "root.php";
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
@ -48,10 +48,13 @@
$conference_display_name = str_replace("-", " ", $conference_name);
$conference_display_name = str_replace("_", " ", $conference_display_name);
//show the header
//include the header
$document['title'] = $text['label-interactive'];
require_once "resources/header.php";
?><script type="text/javascript">
?>
<script type="text/javascript">
function loadXmlHttp(url, id) {
var f = this;
f.xmlHttp = null;
@ -84,6 +87,18 @@ loadXmlHttp.prototype.stateChanged=function () {
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
//this.el.innerHTML = this.xmlHttp.responseText;
document.getElementById('ajax_reponse').innerHTML = this.xmlHttp.responseText;
//link table rows (except the last - the list_control_icons cell) on a table with a class of 'tr_hover', according to the href attribute of the <tr> tag
$('.tr_hover tr,.list tr').each(function(i,e) {
$(e).children('td:not(.list_control_icon,.list_control_icons,.tr_link_void,.list-row > .no-link,.list-row > .checkbox,.list-row > .button,.list-row > .action-button)').on('click', function() {
var href = $(this).closest('tr').attr('href');
var target = $(this).closest('tr').attr('target');
if (href) {
if (target) { window.open(href, target); }
else { window.location = href; }
}
});
});
}
var requestTime = function() {
@ -115,22 +130,24 @@ var record_count = 0;
</script>
<?php
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td align='left'>";
echo " <b>".$text['label-interactive']."</b><br><br>\n";
echo " ".$text['description-interactive']."\n";
echo " </td>\n";
echo " </tr>\n";
echo " <tr>\n";
echo " <td align=\"left\">\n";
echo " <br>\n";
echo " <div id=\"ajax_reponse\"></div>\n";
echo " <div id=\"time_stamp\" style=\"visibility:hidden\">".date('Y-m-d-s')."</div>\n";
echo " </td>";
echo " </tr>";
echo "</table>";
//show the header
//page header
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['label-interactive']."</b></div>\n";
echo " <div class='actions'>\n";
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo $text['description-interactive']."\n";
echo "<br /><br />\n";
//show the content
echo "<div id='ajax_reponse'></div>\n";
echo "<br /><br />\n";
echo "<div id='time_stamp' style='visibility: hidden;>".date('Y-m-d-s')."</div>\n";
//include the footer
require_once "resources/footer.php";
?>
?>

View File

@ -26,7 +26,7 @@
*/
//includes
include "root.php";
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
@ -104,18 +104,10 @@
}
}
}
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<div id='cmd_reponse'></div>\n";
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo " <td>";
echo " <strong style='color: #000;'>".$text['label-members'].": ".escape($member_count)."</strong>\n";
echo " </td>\n";
echo "<td align='right'>\n";
echo "<div style='float: right;'>\n";
$recording_dir = $_SESSION['switch']['recordings']['dir'].'/'.$_SESSION['domain_name'].'/archive/'.date("Y").'/'.date("M").'/'.date("d");
$recording_name = '';
@ -129,34 +121,50 @@
echo "<img src='resources/images/".(($recording == "true") ? "recording.png" : "not_recording.png")."' style='width: 16px; height: 16px; border: none;' align='absmiddle' title=\"".$text['label-'.(($recording == "true") ? 'recording' : 'not-recording')]."\">&nbsp;&nbsp;";
if (permission_exists('conference_interactive_lock')) {
$action_locked = ($locked == "true") ? 'unlock' : 'lock';
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?cmd=conference&name=".escape($conference_name)."&data=".$action_locked."');\" value='".$text['label-'.$action_locked]."'>\n";
if ($locked == 'true') {
echo button::create(['type'=>'button','label'=>$text['label-unlock'],'icon'=>'unlock','collapse'=>'hide-xs','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=unlock');"]);
}
else {
echo button::create(['type'=>'button','label'=>$text['label-lock'],'icon'=>'lock','collapse'=>'hide-xs','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=lock');"]);
}
}
if (permission_exists('conference_interactive_mute')) {
$action_mute_all = ($mute_all == "true") ? 'unmute' : 'mute';
echo " <input type='button' class='btn' title=\"".$text['label-mute-all-alt']."\" onclick=\"send_cmd('conference_exec.php?cmd=conference&name=".escape($conference_name)."&data=".$action_mute_all."+non_moderator');\" value='".$text['label-'.$action_mute_all.'-all']."'>\n";
if ($mute_all == 'true') {
echo button::create(['type'=>'button','label'=>$text['label-unmute-all'],'icon'=>'microphone','collapse'=>'hide-xs','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=unmute+non_moderator');"]);
}
else {
echo button::create(['type'=>'button','label'=>$text['label-mute-all'],'icon'=>'microphone-slash','collapse'=>'hide-xs','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=mute+non_moderator');"]);
}
}
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?cmd=conference&name=".escape($conference_name)."&data=kick+all');\" value='".$text['label-end-conference']."'>\n";
echo button::create(['type'=>'button','label'=>$text['label-end-conference'],'icon'=>'stop','collapse'=>'hide-xs','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=kick+all');"]);
echo "</td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "<br />\n";
echo "</div>\n";
echo "<strong>".$text['label-members'].": ".escape($member_count)."</strong>\n";
echo "<br /><br />\n";
echo "<table class='tr_hover' width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo "<tr>\n";
echo "<th width='1'>&nbsp;</th>\n";
echo "<th>".$text['label-cid-name']."</th>\n";
echo "<th>".$text['label-cid-num']."</th>\n";
echo "<th>".$text['label-capabilities']."</th>\n";
echo "<th>".$text['label-joined']."</th>\n";
echo "<th>".$text['label-quiet']."</th>\n";
echo "<th>".$text['label-floor']."</th>\n";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
echo "<th width='1px'>&nbsp;</th>\n";
echo "<th class='no-wrap'>".$text['label-cid-name']."</th>\n";
echo "<th class='no-wrap'>".$text['label-cid-num']."</th>\n";
echo "<th class='hide-sm-dn'>".$text['label-joined']."</th>\n";
echo "<th class='hide-xs'>".$text['label-quiet']."</th>\n";
echo "<th class='hide-sm-dn'>".$text['label-floor']."</th>\n";
echo "<th class='center'>".$text['label-capabilities']."</th>\n";
if (permission_exists('conference_interactive_energy')) {
echo "<th class='center'>".$text['label-energy']."</th>\n";
}
if (permission_exists('conference_interactive_volume')) {
echo "<th class='center'>".$text['label-volume']."</th>\n";
}
if (permission_exists('conference_interactive_gain')) {
echo "<th class='center'>".$text['label-gain']."</th>\n";
}
echo "<th>&nbsp;</th>\n";
echo "</tr>\n";
if ($valid_xml) {
if (isset($xml->conference->members->member)) foreach ($xml->conference->members->member as $row) {
if ($valid_xml && isset($xml->conference->members->member)) {
foreach ($xml->conference->members->member as $row) {
$id = $row->id;
$record_path = $row->record_path;
$flag_can_hear = $row->flags->can_hear;
@ -179,60 +187,83 @@
if (strlen($record_path) == 0) {
if (permission_exists('conference_interactive_mute')) {
$action_mute = ($flag_can_speak == "true") ? 'mute' : 'unmute';
$td_onclick = "onclick=\"send_cmd('conference_exec.php?cmd=conference&name=".escape($conference_name)."&data=".$action_mute."&id=".escape($id)."');\"";
$td_title = "title=\"".$text['message-click_to_'.$action_mute]."\"";
$list_row_onclick = "onclick=\"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=".$action_mute."&id=".urlencode($id)."');\"";
$list_row_title = "title=\"".$text['message-click_to_'.$action_mute]."\"";
}
echo "<tr>\n";
echo "<td valign='top' class='".$row_style[$c]."' ".$td_onclick." ".$td_title." style='padding: 4px 6px;'><img src='resources/images/".(($is_moderator == "true") ? 'moderator' : 'participant').".png' style='width: 16px; height: 16px; border: none;' title=\"".$text['label-'.(($is_moderator == "true") ? 'moderator' : 'participant')]."\"></td>\n";
$talking_icon = ($flag_talking == "true") ? "<img src='resources/images/talking.png' style='width: 16px; height: 16px; border: none; margin: -2px 10px -2px 15px;' align='absmiddle' title=\"".$text['label-talking']."\">" : null;
echo "<td valign='top' class='".$row_style[$c]."' ".$td_onclick." ".$td_title.">".escape($caller_id_name).$talking_icon."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."' ".$td_onclick." ".$td_title.">".escape($caller_id_number)."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."' ".$td_onclick." ".$td_title." style='padding-top: 5px;'>";
echo ($flag_can_hear == "true") ? "<img src='resources/images/hear.png' style='width: 16px; height: 16px; border: none; margin: 0px 4px -2px 0px;' align='absmiddle' title=\"".$text['label-hear']."\">" : null;
echo ($flag_can_speak == "true") ? "<img src='resources/images/speak.png' style='width: 16px; height: 16px; border: none; margin: 0px 6px -2px 0px;' align='absmiddle' title=\"".$text['label-speak']."\">" : null;
if (permission_exists('conference_interactive_video')) {
echo ($flag_has_video == "true") ? "<img src='resources/images/video.png' style='width: 16px; height: 16px; border: none; margin: 0px 4px -2px 0px;' align='absmiddle' title=\"".$text['label-video']."\">" : null;
echo "<tr class='list-row'>\n";
echo "<td ".$list_row_onclick." ".$list_row_title.">";
if ($is_moderator == 'true') {
echo "<i class='fas fa-user-tie fa-fw' title=\"".$text['label-moderator']."\"></i>";
}
else {
echo "<i class='fas fa-user fa-fw' title=\"".$text['label-participant']."\"></i>";
}
echo "</td>\n";
$talking_icon = "<img src='resources/images/talking.png' style='width: 16px; height: 16px; border: none; margin: -2px 10px -2px 15px; visibility: ".($flag_talking == "true" ? 'visible' : 'hidden').";' align='absmiddle' title=\"".$text['label-talking']."\">";
echo "<td ".$list_row_onclick." ".$list_row_title." class='no-wrap'>".escape($caller_id_name).$talking_icon."</td>\n";
echo "<td ".$list_row_onclick." ".$list_row_title.">".escape($caller_id_number)."</td>\n";
echo "<td ".$list_row_onclick." ".$list_row_title." class='hide-sm-dn'>".escape($join_time_formatted)."</td>\n";
echo "<td ".$list_row_onclick." ".$list_row_title." class='hide-xs'>".escape($last_talking_formatted)."</td>\n";
echo "<td ".$list_row_onclick." ".$list_row_title." class='hide-sm-dn'>".$text['label-'.(($flag_has_floor == "true") ? 'yes' : 'no')]."</td>\n";
echo "<td ".$list_row_onclick." ".$list_row_title." class='center'>";
echo ($flag_can_speak == "true") ? "<i class='fas fa-microphone fa-fw' title=\"".$text['label-speak']."\"></i>" : "<i class='fas fa-microphone-slash fa-fw' title=\"".$text['label-speak']."\"></i>";
echo ($flag_can_hear == "true") ? "<i class='fas fa-headphones fa-fw' title=\"".$text['label-speak']."\" style='margin-left: 10px;'></i>" : "<i class='fas fa-deaf fa-fw' title=\"".$text['label-hear']."\" style='margin-left: 10px;'></i>";
if (permission_exists('conference_interactive_video')) {
echo ($flag_has_video == "true") ? "<i class='fas fa-video fa-fw' title=\"".$text['label-video']."\"></i>" : null;
}
echo "</td>\n";
echo "<td valign='top' class='".$row_style[$c]."' ".$td_onclick." ".$td_title.">".escape($join_time_formatted)."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."' ".$td_onclick." ".$td_title.">".escape($last_talking_formatted)."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."' ".$td_onclick." ".$td_title.">".$text['label-'.(($flag_has_floor == "true") ? 'yes' : 'no')]."</td>\n";
echo "<td valign='top' class='".$row_style[$c]."' style='text-align: right; padding: 1px 2px; white-space: nowrap;'>\n";
//energy
if (permission_exists('conference_interactive_energy')) {
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?direction=up&cmd=conference&name=".escape($conference_name)."&data=energy&id=".escape($id)."');\" value='+".$text['label-energy']."'>\n";
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?direction=down&cmd=conference&name=".escape($conference_name)."&data=energy&id=".escape($id)."');\" value='-".$text['label-energy']."'>\n";
echo "<td class='button center'>\n";
echo button::create(['type'=>'button','title'=>$text['label-energy'],'icon'=>'plus','onclick'=>"send_cmd('conference_exec.php?direction=down&cmd=conference&name=".urlencode($conference_name)."&data=energy&id=".urlencode($id)."');"]);
echo button::create(['type'=>'button','title'=>$text['label-energy'],'icon'=>'minus','onclick'=>"send_cmd('conference_exec.php?direction=up&cmd=conference&name=".urlencode($conference_name)."&data=energy&id=".urlencode($id)."');"]);
echo "</td>\n";
}
//volume
if (permission_exists('conference_interactive_volume')) {
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?direction=up&cmd=conference&name=".escape($conference_name)."&data=volume_in&id=".escape($id)."');\" value='+".$text['label-volume']."'>\n";
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?direction=down&cmd=conference&name=".escape($conference_name)."&data=volume_in&id=".escape($id)."');\" value='-".$text['label-volume']."'>\n";
echo "<td class='button center'>\n";
echo button::create(['type'=>'button','title'=>$text['label-volume'],'icon'=>'volume-down','onclick'=>"send_cmd('conference_exec.php?direction=down&cmd=conference&name=".urlencode($conference_name)."&data=volume_in&id=".urlencode($id)."');"]);
echo button::create(['type'=>'button','title'=>$text['label-volume'],'icon'=>'volume-up','onclick'=>"send_cmd('conference_exec.php?direction=up&cmd=conference&name=".urlencode($conference_name)."&data=volume_in&id=".urlencode($id)."');"]);
echo "</td>\n";
}
//gain
if (permission_exists('conference_interactive_gain')) {
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?direction=up&cmd=conference&name=".escape($conference_name)."&data=volume_out&id=".escape($id)."');\" value='+".$text['label-gain']."'>\n";
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?direction=down&cmd=conference&name=".escape($conference_name)."&data=volume_out&id=".escape($id)."');\" value='-".$text['label-gain']."'>\n";
echo "<td class='button center'>\n";
echo button::create(['type'=>'button','title'=>$text['label-volume'],'icon'=>'sort-amount-down','onclick'=>"send_cmd('conference_exec.php?direction=down&cmd=conference&name=".urlencode($conference_name)."&data=volume_out&id=".urlencode($id)."');"]);
echo button::create(['type'=>'button','title'=>$text['label-volume'],'icon'=>'sort-amount-up','onclick'=>"send_cmd('conference_exec.php?direction=up&cmd=conference&name=".urlencode($conference_name)."&data=volume_out&id=".urlencode($id)."');"]);
echo "</td>\n";
}
echo "<td class='button right' style='padding-right: 0;'>\n";
//mute and unmute
if (permission_exists('conference_interactive_mute')) {
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?cmd=conference&name=".escape($conference_name)."&data=".$action_mute."&id=".escape($id)."');\" value='".$text['label-'.$action_mute]."'>\n";
if ($action_mute == "mute") { //mute
echo button::create(['type'=>'button','label'=>$text['label-mute'],'icon'=>'microphone-slash','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=mute&id=".urlencode($id)."');"]);
}
else { //unmute
echo button::create(['type'=>'button','label'=>$text['label-unmute'],'icon'=>'microphone','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=unmute&id=".urlencode($id)."');"]);
}
}
//deaf and undeaf
if (permission_exists('conference_interactive_deaf')) {
$action_deaf = ($flag_can_hear == "true") ? 'deaf' : 'undeaf';
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?cmd=conference&name=".escape($conference_name)."&data=".$action_deaf."&id=".escape($id)."');\" value='".$text['label-'.$action_deaf]."'>\n";
if ($flag_can_hear == "true") { //deaf
echo button::create(['type'=>'button','label'=>$text['label-deaf'],'icon'=>'deaf','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=deaf&id=".urlencode($id)."');"]);
}
else { //undeaf
echo button::create(['type'=>'button','label'=>$text['label-undeaf'],'icon'=>'headphones','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=undeaf&id=".urlencode($id)."');"]);
}
}
//kick someone from the conference
if (permission_exists('conference_interactive_kick')) {
echo " <input type='button' class='btn' onclick=\"send_cmd('conference_exec.php?cmd=conference&name=".escape($conference_name)."&data=kick&id=".escape($id)."&uuid=".escape($uuid)."');\" value='".$text['label-kick']."'>\n";
echo button::create(['type'=>'button','label'=>$text['label-kick'],'icon'=>'ban','onclick'=>"send_cmd('conference_exec.php?cmd=conference&name=".urlencode($conference_name)."&data=kick&id=".urlencode($id)."&uuid=".escape($uuid)."');"]);
}
echo "</td>\n";
echo "</tr>\n";
}
$c = ($c == 0) ? 1 : 0;
}
}
echo "</table>\n";
echo "<br /><br />";
}
?>
?>

View File

@ -26,7 +26,7 @@
*/
//includes
include "root.php";
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
@ -82,6 +82,18 @@ loadXmlHttp.prototype.stateChanged=function () {
if (this.xmlHttp.readyState == 4 && (this.xmlHttp.status == 200 || !/^http/.test(window.location.href)))
//this.el.innerHTML = this.xmlHttp.responseText;
document.getElementById('ajax_response').innerHTML = this.xmlHttp.responseText;
//link table rows (except the last - the list_control_icons cell) on a table with a class of 'tr_hover', according to the href attribute of the <tr> tag
$('.tr_hover tr,.list tr').each(function(i,e) {
$(e).children('td:not(.list_control_icon,.list_control_icons,.tr_link_void,.list-row > .no-link,.list-row > .checkbox,.list-row > .button,.list-row > .action-button)').on('click', function() {
var href = $(this).closest('tr').attr('href');
var target = $(this).closest('tr').attr('target');
if (href) {
if (target) { window.open(href, target); }
else { window.location = href; }
}
});
});
}
var requestTime = function() {
@ -102,22 +114,21 @@ else if (window.attachEvent) {
<?php
//page header
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
echo " <tr>\n";
echo " <td align='left'>";
echo " <b>".$text['title-active_conferences']."</b>";
echo " <br><br>\n";
echo " ".$text['description-active']."\n";
echo " </td>\n";
echo " </tr>\n";
echo "</table>\n";
echo "<br>\n";
echo "<div class='action_bar' id='action_bar'>\n";
echo " <div class='heading'><b>".$text['title-active_conferences']."</b></div>\n";
echo " <div class='actions'>\n";
echo " </div>\n";
echo " <div style='clear: both;'></div>\n";
echo "</div>\n";
echo $text['description-active']."\n";
echo "<br /><br />\n";
//show the content
echo "<div id=\"ajax_response\"></div>";
echo "<div id='ajax_response'></div>";
echo "<br><br>";
//include the footer
require_once "resources/footer.php";
?>
?>

View File

@ -26,7 +26,7 @@
*/
//includes
include "root.php";
require_once "root.php";
require_once "resources/require.php";
require_once "resources/check_auth.php";
@ -67,15 +67,11 @@
//echo $e->getMessage();
}
$c = 0;
$row_style["0"] = "row_style0";
$row_style["1"] = "row_style1";
echo "<table class='list'>\n";
echo "<tr class='list-header'>\n";
echo " <th>".$text['label-name']."</th>\n";
echo " <th>".$text['label-participant-pin']."</th>\n";
echo " <th>".$text['label-member-count']."</th>\n";
echo " <th class='center'>".$text['label-member-count']."</th>\n";
if (permission_exists('conference_interactive_view')) {
echo " <td class='action-button'>&nbsp;</td>\n";
}
@ -130,10 +126,9 @@
if (permission_exists('conference_interactive_view')) {
$list_row_url = 'conference_interactive.php?c='.urlencode($conference_uuid);
$list_row_onclick = "onclick=\"document.location.href='".$list_row_url."';\"";
}
echo "<tr class='list-row' href='".$list_row_url."'>\n";
echo " <td ".$list_row_onclick.">";
echo " <td>";
if (permission_exists('conference_interactive_view')) {
echo " <a href='".$list_row_url."'>".escape($conference_name)."</a>";
}
@ -141,9 +136,9 @@
echo escape($conference_name);
}
echo " </td>\n";
echo " <td ".$list_row_onclick.">".escape($participant_pin)."</td>\n";
echo " <td ".$list_row_onclick.">".escape($member_count)."</td>\n";
if (permission_exists('conference_interactive_view')) {
echo " <td>".escape($participant_pin)."</td>\n";
echo " <td class='center'>".escape($member_count)."</td>\n";
if (permission_exists('conference_interactive_view') && $_SESSION['theme']['list_row_edit_button']['boolean'] == 'true') {
echo " <td class='action-button'>";
echo button::create(['type'=>'button','title'=>$text['button-view'],'icon'=>$_SESSION['theme']['button_icon_view'],'link'=>$list_row_url]);
echo " </td>\n";