mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 15:34:12 +01:00
N°2269 Font Awesome : update iTop for new v5 icons
* remove useless css in light-grey (weren't used) * change icons class names from v4 to v5
This commit is contained in:
@@ -321,7 +321,7 @@ EOF
|
||||
}
|
||||
$sLabel = htmlentities(Dict::S('Tag:Synchronized'), ENT_QUOTES, 'UTF-8');
|
||||
$sSynchroTagId = 'synchro_icon-'.$this->GetKey();
|
||||
$aIcons[] = "<div class=\"tag\" id=\"$sSynchroTagId\"><span class=\"object-synchronized fa fa-lock fa-1x\"> </span> $sLabel</div>";
|
||||
$aIcons[] = "<div class=\"tag\" id=\"$sSynchroTagId\"><span class=\"object-synchronized fas fa-lock fa-1x\"> </span> $sLabel</div>";
|
||||
$sTip = addslashes($sTip);
|
||||
$oPage->add_ready_script("$('#$sSynchroTagId').qtip( { content: '$sTip', show: 'mouseover', hide: { fixed: true }, style: { name: 'dark', tip: 'topLeft' }, position: { corner: { target: 'bottomMiddle', tooltip: 'topLeft' }} } );");
|
||||
}
|
||||
@@ -331,13 +331,13 @@ EOF
|
||||
{
|
||||
$sLabel = htmlentities(Dict::S('Tag:Archived'), ENT_QUOTES, 'UTF-8');
|
||||
$sTitle = htmlentities(Dict::S('Tag:Archived+'), ENT_QUOTES, 'UTF-8');
|
||||
$aIcons[] = "<div class=\"tag\" title=\"$sTitle\"><span class=\"object-archived fa fa-archive fa-1x\"> </span> $sLabel</div>";
|
||||
$aIcons[] = "<div class=\"tag\" title=\"$sTitle\"><span class=\"object-archived fas fa-archive fa-1x\"> </span> $sLabel</div>";
|
||||
}
|
||||
elseif ($this->IsObsolete())
|
||||
{
|
||||
$sLabel = htmlentities(Dict::S('Tag:Obsolete'), ENT_QUOTES, 'UTF-8');
|
||||
$sTitle = htmlentities(Dict::S('Tag:Obsolete+'), ENT_QUOTES, 'UTF-8');
|
||||
$aIcons[] = "<div class=\"tag\" title=\"$sTitle\"><span class=\"object-obsolete fa fa-eye-slash fa-1x\"> </span> $sLabel</div>";
|
||||
$aIcons[] = "<div class=\"tag\" title=\"$sTitle\"><span class=\"object-obsolete fas fa-eye-slash fa-1x\"> </span> $sLabel</div>";
|
||||
}
|
||||
|
||||
$sObjectIcon = $this->GetIcon();
|
||||
|
||||
@@ -1898,7 +1898,8 @@ class MenuBlock extends DisplayBlock
|
||||
if ($this->m_sStyle == 'details')
|
||||
{
|
||||
$sSearchAction = "window.location=\"{$sRootUrl}pages/UI.php?operation=search_form&do_search=0&class=$sClass{$sContext}\"";
|
||||
$sHtml .= "<div class=\"actions_button icon_actions_button\" title=\"".htmlentities(Dict::Format('UI:SearchFor_Class', MetaModel::GetName($sClass)), ENT_QUOTES, 'UTF-8')."\"><span class=\"search-button fa fa-search\" onclick='$sSearchAction'></span></div>";
|
||||
$sHtml .= "<div class=\"actions_button icon_actions_button\" title=\"".htmlentities(Dict::Format('UI:SearchFor_Class',
|
||||
MetaModel::GetName($sClass)), ENT_QUOTES, 'UTF-8')."\"><span class=\"search-button fas fa-search\" onclick='$sSearchAction'></span></div>";
|
||||
}
|
||||
|
||||
|
||||
@@ -1909,7 +1910,8 @@ class MenuBlock extends DisplayBlock
|
||||
}
|
||||
if (!$oPage->IsPrintableVersion() && ($sRefreshAction!=''))
|
||||
{
|
||||
$sHtml .= "<div class=\"actions_button icon_actions_button\" title=\"".htmlentities(Dict::S('UI:Button:Refresh'), ENT_QUOTES, 'UTF-8')."\"><span class=\"refresh-button fa fa-refresh\" onclick=\"$sRefreshAction\"></span></div>";
|
||||
$sHtml .= "<div class=\"actions_button icon_actions_button\" title=\"".htmlentities(Dict::S('UI:Button:Refresh'),
|
||||
ENT_QUOTES, 'UTF-8')."\"><span class=\"refresh-button fas fa-sync\" onclick=\"$sRefreshAction\"></span></div>";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1203,7 +1203,7 @@ EOF;
|
||||
$oExitArchive = new JSPopupMenuItem('UI:ArchiveModeOff', Dict::S('UI:ArchiveModeOff'), 'return ArchiveMode(false);');
|
||||
$aActions[$oExitArchive->GetUID()] = $oExitArchive->GetMenuItem();
|
||||
|
||||
$sIcon = '<span class="fa fa-lock fa-1x"></span>';
|
||||
$sIcon = '<span class="fas fa-lock fa-1x"></span>';
|
||||
$this->AddApplicationMessage(Dict::S('UI:ArchiveMode:Banner'), $sIcon, Dict::S('UI:ArchiveMode:Banner+'));
|
||||
}
|
||||
elseif (UserRights::CanBrowseArchive())
|
||||
@@ -1249,8 +1249,8 @@ EOF;
|
||||
$sIcon =
|
||||
<<<EOF
|
||||
<span class="fa-stack fa-sm">
|
||||
<i class="fa fa-pencil fa-flip-horizontal fa-stack-1x"></i>
|
||||
<i class="fa fa-ban fa-stack-2x text-danger"></i>
|
||||
<i class="fas fa-pencil-alt fa-flip-horizontal fa-stack-1x"></i>
|
||||
<i class="fas fa-ban fa-stack-2x text-danger"></i>
|
||||
</span>
|
||||
EOF;
|
||||
|
||||
@@ -1568,7 +1568,7 @@ EOF;
|
||||
*/
|
||||
public function SetMessage($sHtmlMessage)
|
||||
{
|
||||
$sHtmlIcon = '<span class="fa fa-comment fa-1x"></span>';
|
||||
$sHtmlIcon = '<span class="fas fa-comment fa-1x"></span>';
|
||||
$this->AddApplicationMessage($sHtmlMessage, $sHtmlIcon);
|
||||
}
|
||||
|
||||
|
||||
@@ -813,8 +813,8 @@ class Config
|
||||
),
|
||||
'email_decoration_class' => array(
|
||||
'type' => 'string',
|
||||
'description' => 'CSS class(es) to use as decoration for the HTML rendering of the attribute. eg. "fa fa-envelope" will put a mail icon.',
|
||||
'default' => 'fa fa-envelope',
|
||||
'description' => 'CSS class(es) to use as decoration for the HTML rendering of the attribute. eg. "fas fa-envelope" will put a mail icon.',
|
||||
'default' => 'fas fa-envelope',
|
||||
'value' => '',
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
@@ -837,8 +837,8 @@ class Config
|
||||
),
|
||||
'phone_number_decoration_class' => array(
|
||||
'type' => 'string',
|
||||
'description' => 'CSS class(es) to use as decoration for the HTML rendering of the attribute. eg. "fa fa-phone" will put a phone icon.',
|
||||
'default' => 'fa fa-phone',
|
||||
'description' => 'CSS class(es) to use as decoration for the HTML rendering of the attribute. eg. "fas fa-phone" will put a phone icon.',
|
||||
'default' => 'fas fa-phone',
|
||||
'value' => '',
|
||||
'source_of_value' => '',
|
||||
'show_in_conf_sample' => false,
|
||||
|
||||
@@ -1331,11 +1331,11 @@ abstract class DBObject implements iDisplay
|
||||
{
|
||||
if ($bClickable)
|
||||
{
|
||||
$sIcon = "<span class=\"object-ref-icon fa $sFA fa-1x fa-fw\"></span>";
|
||||
$sIcon = "<span class=\"object-ref-icon fas $sFA fa-1x fa-fw\"></span>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$sIcon = "<span class=\"object-ref-icon-disabled fa $sFA fa-1x fa-fw\"></span>";
|
||||
$sIcon = "<span class=\"object-ref-icon-disabled fas $sFA fa-1x fa-fw\"></span>";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1446,7 +1446,8 @@ class DisplayableGraph extends SimpleGraph
|
||||
<<<EOF
|
||||
<div id="ds_flash" class="search_box">
|
||||
<form id="dh_flash" class="search_form_handler closed">
|
||||
<h2 class="sf_title"><span class="sft_long">$sSftShort</span><span class="sft_short">$sSftShort</span><span class="sft_toggler fa fa-caret-down pull-right" title="$sSearchToggle"></span></h2>
|
||||
<h2 class="sf_title"><span class="sft_long">$sSftShort</span><span class="sft_short">$sSftShort</span><span class="sft_toggler fas
|
||||
fa-caret-down pull-right" title="$sSearchToggle"></span></h2>
|
||||
<div id="dh_flash_criterion_outer" class="sf_criterion_area"><div class="sf_criterion_row">
|
||||
EOF
|
||||
);
|
||||
|
||||
@@ -2782,7 +2782,7 @@ span.search-button, span.refresh-button {
|
||||
cursor: pointer;
|
||||
}
|
||||
#search-model {
|
||||
width: 90%;
|
||||
width: 85%;
|
||||
}
|
||||
.mfp-figure:after {
|
||||
background-color: #dff1ff;
|
||||
@@ -2897,10 +2897,6 @@ table.listResults .originColor {
|
||||
.tooltipD3 span {
|
||||
margin: 2px;
|
||||
}
|
||||
.dataModelSchema .selfattrtxt {
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 400;
|
||||
}
|
||||
.data-model-viewer {
|
||||
background-color: #fff;
|
||||
margin-top: 7px !important;
|
||||
@@ -2908,8 +2904,6 @@ table.listResults .originColor {
|
||||
}
|
||||
#delDataModelSearch {
|
||||
color: #e87c1e;
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 400;
|
||||
display: inline-block;
|
||||
font-size: 15px;
|
||||
margin-left: 1%;
|
||||
|
||||
@@ -3194,7 +3194,7 @@ span.search-button, span.refresh-button {
|
||||
}
|
||||
|
||||
#search-model{
|
||||
width:90%;
|
||||
width:85%;
|
||||
}
|
||||
|
||||
.mfp-figure:after{
|
||||
@@ -3320,10 +3320,6 @@ table.listResults .originColor{
|
||||
.tooltipD3 span{
|
||||
margin: 2px;
|
||||
}
|
||||
.dataModelSchema .selfattrtxt {
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.data-model-viewer{
|
||||
background-color: #FFF;
|
||||
@@ -3333,8 +3329,6 @@ table.listResults .originColor{
|
||||
|
||||
#delDataModelSearch {
|
||||
color: #E87C1E;
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 400;
|
||||
display:inline-block;
|
||||
font-size:15px;
|
||||
margin-left:1%;
|
||||
|
||||
@@ -84,7 +84,7 @@ $(function()
|
||||
backup: function()
|
||||
{
|
||||
var me = this;
|
||||
$('#hub-installation-progress-text').html('<i class="fa fa-database"></i> '+this.options.labels.database_backup);
|
||||
$('#hub-installation-progress-text').html('<i class="fas fa-database"></i> '+this.options.labels.database_backup);
|
||||
$.post(this.options.self_url, {operation: 'do_backup'}, function(data) { me._on_backup(data) }, 'json');
|
||||
},
|
||||
_on_backup: function(data)
|
||||
@@ -102,7 +102,7 @@ $(function()
|
||||
},
|
||||
compile: function()
|
||||
{
|
||||
$('#hub-installation-progress-text').html('<i class="fa fa-cogs"></i> '+this.options.labels.extensions_installation);
|
||||
$('#hub-installation-progress-text').html('<i class="fas fa-cogs"></i> '+this.options.labels.extensions_installation);
|
||||
var me = this;
|
||||
var aExtensionCodes = [];
|
||||
var aExtensionDirs = [];
|
||||
@@ -124,7 +124,7 @@ $(function()
|
||||
},
|
||||
move_to_prod: function()
|
||||
{
|
||||
$('#hub-installation-progress-text').html('<i class="fa fa-cogs"></i> '+this.options.labels.extensions_installation);
|
||||
$('#hub-installation-progress-text').html('<i class="fas fa-cogs"></i> '+this.options.labels.extensions_installation);
|
||||
var me = this;
|
||||
$.post(this.options.self_url, {operation: 'move_to_production', authent: this.options.authent}, function(data) { me._on_move_to_prod(data) }, 'json');
|
||||
},
|
||||
@@ -133,7 +133,7 @@ $(function()
|
||||
if (data.code == 0)
|
||||
{
|
||||
this._reportSuccess(data.message);
|
||||
$('#hub-installation-progress-text').html('<i class="fa fa-trophy"></i> '+this.options.labels.installation_successful);
|
||||
$('#hub-installation-progress-text').html('<i class="fas fa-trophy"></i> '+this.options.labels.installation_successful);
|
||||
// Report the installation status to iTop Hub
|
||||
$('#at_the_end').append('<iframe style="border:0; width:200px; height: 20px;" src="'+this.options.iframe_url+'">Support of IFRAMES required, sorry</iframe>');
|
||||
if (this.options.redirect_after_completion_url != '')
|
||||
@@ -171,7 +171,8 @@ $(function()
|
||||
},
|
||||
_reportError: function(sMessage)
|
||||
{
|
||||
$('#hub-installation-progress-text').html('<span style="color:red; font-size:12pt; line-height:18pt;"><i class="fa fa-exclamation-triangle"></i> '+this.options.labels.rollback+'</span><br/><span style="color:#666; display:block; padding:10px;max-height:10em; overflow: auto;padding-top:0; margin-top:10px; text-align:left;">'+sMessage+'</span>');
|
||||
$('#hub-installation-progress-text').html('<span style="color:red; font-size:12pt; line-height:18pt;"><i class="fas' +
|
||||
' fa-exclamation-triangle"></i> '+this.options.labels.rollback+'</span><br/><span style="color:#666; display:block; padding:10px;max-height:10em; overflow: auto;padding-top:0; margin-top:10px; text-align:left;">'+sMessage+'</span>');
|
||||
$('#hub_start_installation').val('Go Back to iTop');
|
||||
$('#hub_start_installation').prop('disabled', false);
|
||||
$('#hub-installation-progress').hide();
|
||||
|
||||
@@ -38,8 +38,8 @@ use DOMFormatException;
|
||||
class AggregatePageBrick extends PortalBrick
|
||||
{
|
||||
// Overloaded constants
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fa fa-dashboard';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fa fa-dashboard fa-2x';
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fas fa-tachometer-alt';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fas fa-tachometer-alt fa-2x';
|
||||
const DEFAULT_PAGE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/aggregate-page/layout.html.twig';
|
||||
|
||||
// Overloaded variables
|
||||
|
||||
@@ -65,8 +65,8 @@ class BrowseBrick extends PortalBrick
|
||||
const ENUM_FACTORY_TYPE_CLASS = 'class';
|
||||
|
||||
// Overloaded constants
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fa fa-map';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fa fa-map fa-2x';
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fas fa-map';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fas fa-map fa-2x';
|
||||
const DEFAULT_DATA_LOADING = self::ENUM_DATA_LOADING_FULL;
|
||||
|
||||
/** @var string DEFAULT_LEVEL_NAME_ATT */
|
||||
|
||||
@@ -35,8 +35,8 @@ use Combodo\iTop\DesignElement;
|
||||
class CreateBrick extends PortalBrick
|
||||
{
|
||||
// Overloaded constants
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fa fa-plus';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fa fa-plus fa-2x';
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fas fa-plus';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fas fa-plus fa-2x';
|
||||
const DEFAULT_PAGE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/create/modal.html.twig';
|
||||
|
||||
/** @var string DEFAULT_CLASS */
|
||||
|
||||
@@ -37,8 +37,8 @@ class FilterBrick extends PortalBrick
|
||||
// Overloaded constants
|
||||
const DEFAULT_VISIBLE_NAVIGATION_MENU = false;
|
||||
const DEFAULT_TILE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/filter/tile.html.twig';
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fa fa-search';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fa fa-search fa-2x';
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fas fa-search';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fas fa-search fa-2x';
|
||||
|
||||
/** @var string DEFAULT_TARGET_BRICK_CLASS */
|
||||
const DEFAULT_TARGET_BRICK_CLASS = 'Combodo\\iTop\\Portal\\Brick\\BrowseBrick';
|
||||
|
||||
@@ -59,8 +59,8 @@ class ManageBrick extends PortalBrick
|
||||
const ENUM_PAGE_TEMPLATE_PATH_CHART = 'itop-portal-base/portal/templates/bricks/manage/layout-chart.html.twig';
|
||||
|
||||
// Overloaded constants
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fa fa-pencil-square';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fa fa-pencil-square fa-2x';
|
||||
const DEFAULT_DECORATION_CLASS_HOME = 'fas fa-pen-square';
|
||||
const DEFAULT_DECORATION_CLASS_NAVIGATION_MENU = 'fas fa-pen-square fa-2x';
|
||||
const DEFAULT_PAGE_TEMPLATE_PATH = self::ENUM_PAGE_TEMPLATE_PATH_TABLE;
|
||||
const DEFAULT_DATA_LOADING = self::ENUM_DATA_LOADING_LAZY;
|
||||
const DEFAULT_TILE_TEMPLATE_PATH = 'itop-portal-base/portal/templates/bricks/manage/tile-default.html.twig';
|
||||
@@ -102,35 +102,35 @@ class ManageBrick extends PortalBrick
|
||||
/** @var array $aPresentationData */
|
||||
public static $aPresentationData = array(
|
||||
self::ENUM_TILE_MODE_BADGE => array(
|
||||
'decorationCssClass' => 'fa fa-id-card-o fa-2x',
|
||||
'decorationCssClass' => 'fas fa-id-card fa-2x',
|
||||
'tileTemplate' => 'itop-portal-base/portal/templates/bricks/manage/tile-badge.html.twig',
|
||||
'layoutTemplate' => self::ENUM_PAGE_TEMPLATE_PATH_TABLE,
|
||||
'layoutDisplayMode' => self::ENUM_DISPLAY_MODE_LIST,
|
||||
'need_details' => true,
|
||||
),
|
||||
self::ENUM_TILE_MODE_TOP => array(
|
||||
'decorationCssClass' => 'fa fa-signal fa-rotate-270 fa-2x',
|
||||
'decorationCssClass' => 'fas fa-signal fa-rotate-270 fa-2x',
|
||||
'tileTemplate' => 'itop-portal-base/portal/templates/bricks/manage/tile-top-list.html.twig',
|
||||
'layoutTemplate' => self::ENUM_PAGE_TEMPLATE_PATH_TABLE,
|
||||
'layoutDisplayMode' => self::ENUM_DISPLAY_MODE_LIST,
|
||||
'need_details' => true,
|
||||
),
|
||||
self::ENUM_TILE_MODE_PIE => array(
|
||||
'decorationCssClass' => 'fa fa-pie-chart fa-2x',
|
||||
'decorationCssClass' => 'fas fa-chart-pie fa-2x',
|
||||
'tileTemplate' => 'itop-portal-base/portal/templates/bricks/manage/tile-chart.html.twig',
|
||||
'layoutTemplate' => self::ENUM_PAGE_TEMPLATE_PATH_CHART,
|
||||
'layoutDisplayMode' => self::ENUM_DISPLAY_MODE_PIE,
|
||||
'need_details' => false,
|
||||
),
|
||||
self::ENUM_TILE_MODE_BAR => array(
|
||||
'decorationCssClass' => 'fa fa-bar-chart fa-2x',
|
||||
'decorationCssClass' => 'fas fa-chart-bar fa-2x',
|
||||
'tileTemplate' => 'itop-portal-base/portal/templates/bricks/manage/tile-chart.html.twig',
|
||||
'layoutTemplate' => self::ENUM_PAGE_TEMPLATE_PATH_CHART,
|
||||
'layoutDisplayMode' => self::ENUM_DISPLAY_MODE_BAR,
|
||||
'need_details' => false,
|
||||
),
|
||||
self::ENUM_TILE_MODE_TEXT => array(
|
||||
'decorationCssClass' => 'fa fa-pencil-square fa-2x',
|
||||
'decorationCssClass' => 'fas fa-pen-square fa-2x',
|
||||
'tileTemplate' => self::DEFAULT_TILE_TEMPLATE_PATH,
|
||||
'layoutTemplate' => self::ENUM_PAGE_TEMPLATE_PATH_TABLE,
|
||||
'layoutDisplayMode' => self::ENUM_DISPLAY_MODE_LIST,
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<div id="brick_content_mosaic">
|
||||
{% block bBrowseMosaicContent %}
|
||||
<ol id="mosaic-breadcrumb" class="breadcrumb">
|
||||
<li><a href="#" data-level-id="L"><span class="fa fa-home"></span></a></li>
|
||||
<li><a href="#" data-level-id="L"><span class="fas fa-home"></span></a></li>
|
||||
</ol>
|
||||
<div class="mosaic-group" data-level-id="L">
|
||||
</div>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<a href="{{ app.url_generator.generate('p_manage_brick_excel_export_start', {'sBrickId': sBrickId, 'sGroupingTab': sGroupingTab, 'sGroupingArea': aAreaData.sId})|raw }}"
|
||||
id="btn_export_excel_for_{{ aAreaData.sId }}"
|
||||
data-toggle="modal" data-target="#modal-for-all">
|
||||
<span class="fa fa-download fa-lg" style="float: right;"
|
||||
<span class="fas fa-download fa-lg" style="float: right;"
|
||||
data-toggle="tooltip" data-delay="300" data-placement="left"
|
||||
title="{{ 'ExcelExporter:ExportMenu'|dict_s }}"></span>
|
||||
</a>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
data-brick-id="{{ oBrick.GetId }}">
|
||||
<div style="background-color:#fff;padding:0.25em;">
|
||||
<div class="tile_title">
|
||||
<span class="icon fa fa-signal fa-rotate-270"></span> {{ oBrick.GetTitle()|dict_s }}
|
||||
<span class="icon fas fa-signal fa-rotate-270"></span> {{ oBrick.GetTitle()|dict_s }}
|
||||
({{ iCount }})</span> </div>
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
{% block pMainContentHolder%}
|
||||
{% if bDemoMode %}
|
||||
<div class="alert alert-warning">
|
||||
<span class="fa fa-info fa-2x" style="margin-right: 10px; vertical-align: sub;"></span>
|
||||
<span class="fas fa-info fa-2x" style="margin-right: 10px; vertical-align: sub;"></span>
|
||||
User profile edition is not available in demo mode.
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -65,14 +65,14 @@
|
||||
</span>
|
||||
<span class="actions">
|
||||
<span type="button" class="btn btn-default btn_edit">
|
||||
<span class="fa fa-pencil fa-fw"></span>
|
||||
<span class="fas fa-pencil-alt fa-fw"></span>
|
||||
<input id="picture" type="file" name="picture" />
|
||||
</span>
|
||||
{#<button type="button" class="btn btn-default btn_undo" title="{{ 'UI:Button:ResetImage'|dict_s }}" disabled>
|
||||
<span class="fa fa-undo fa-fw"></span>
|
||||
<span class="fas fa-undo fa-fw"></span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-default btn_reset" title="{{ 'UI:Button:RemoveImage'|dict_s }}">
|
||||
<span class="fa fa-trash-o fa-fw"></span>
|
||||
<span class="fas fa-trash-o fa-fw"></span>
|
||||
</button>#}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -42,9 +42,11 @@
|
||||
<p>{{ error_message }}</p>
|
||||
<p>{{ 'Error:HTTP:GetHelp'|dict_format(constant('ITOP_APPLICATION_SHORT')) }}</p>
|
||||
<p>
|
||||
<a class="btn btn-default" href="#" onclick="history.back(); return false;"><span class="fa fa-arrow-left"></span> {{ 'Page:GoPreviousPage'|dict_s }}</a>
|
||||
<a class="btn btn-default" href=""><span class="fa fa-repeat"></span> {{ 'Page:ReloadPage'|dict_s }}</a>
|
||||
<a class="btn btn-default" href="{{ app.url_generator.generate('p_home') }}"><span class="fa fa-home"></span> {{ 'Page:GoPortalHome'|dict_s }}</a>
|
||||
<a class="btn btn-default" href="#" onclick="history.back(); return false;"><span class="fas fa-arrow-left"></span> {{
|
||||
'Page:GoPreviousPage'|dict_s }}</a>
|
||||
<a class="btn btn-default" href=""><span class="fas fa-redo"></span> {{ 'Page:ReloadPage'|dict_s }}</a>
|
||||
<a class="btn btn-default" href="{{ app.url_generator.generate('p_home') }}"><span class="fas fa-home"></span> {{
|
||||
'Page:GoPortalHome'|dict_s }}</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
{% block pNavigationTopBricks %}
|
||||
<li class="brick_menu_item {% if oBrick is not defined %}active{% endif %}">
|
||||
<a href="{{ app.url_generator.generate('p_home') }}">
|
||||
<span class="brick_icon fa fa-home fa-2x"></span>
|
||||
<span class="brick_icon fas fa-home fa-2x"></span>
|
||||
{{ 'Page:Home'|dict_s }}
|
||||
</a>
|
||||
</li>
|
||||
@@ -210,18 +210,21 @@
|
||||
{% endblock %}
|
||||
{% if bUserConnected %}
|
||||
<li role="separator" class="divider"></li>
|
||||
<li><a href="{{ app.url_generator.generate('p_user_profile_brick') }}"><span class="brick_icon fa fa-user fa-2x fa-fw"></span>{{ 'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil'|dict_s }}</a></li>
|
||||
<li><a href="{{ app.url_generator.generate('p_user_profile_brick') }}"><span class="brick_icon fas
|
||||
fa-user fa-2x fa-fw"></span>{{ 'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil'|dict_s }}</a></li>
|
||||
{% for aPortal in app['combodo.portal.instance.conf'].portals %}
|
||||
{% if aPortal.id != app['combodo.portal.instance.conf'].properties.id %}
|
||||
{% set sIconClass = (aPortal.id == 'backoffice') ? 'fa-list-alt' : 'fa-external-link' %}
|
||||
<li><a href="{{ aPortal.url }}" target="_blank"><span class="brick_icon fa {{ sIconClass }} fa-2x fa-fw"></span>{{ aPortal.label|dict_s }}</a></li>
|
||||
{% set sIconClass = (aPortal.id == 'backoffice') ? 'far fa-list-alt' : 'fas fa-external-link-alt' %}
|
||||
<li><a href="{{ aPortal.url }}" target="_blank"><span class="brick_icon {{ sIconClass }} fa-2x fa-fw"></span>{{ aPortal.label|dict_s }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{# We display the separator only if the user has more then 1 portal. Meaning default portal + console or several portal at least #}
|
||||
{% if app['combodo.portal.instance.conf'].portals|length > 1 %}
|
||||
<li role="separator" class="divider"></li>
|
||||
{% endif %}
|
||||
<li><a href="{{ app['combodo.absolute_url'] }}pages/logoff.php"><span class="brick_icon fa fa-sign-out fa-2x fa-fw"></span>{{ 'Brick:Portal:UserProfile:Navigation:Dropdown:Logout'|dict_s }}</a></li>
|
||||
<li><a href="{{ app['combodo.absolute_url'] }}pages/logoff.php"><span class="brick_icon fas
|
||||
fa-sign-out-alt fa-2x fa-fw"></span>{{ 'Brick:Portal:UserProfile:Navigation:Dropdown:Logout'|dict_s
|
||||
}}</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -249,18 +252,21 @@
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu user_options" aria-labelledby="user_options">
|
||||
<li><a href="{{ app.url_generator.generate('p_user_profile_brick') }}"><span class="brick_icon fa fa-user fa-lg fa-fw"></span>{{ 'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil'|dict_s }}</a></li>
|
||||
<li><a href="{{ app.url_generator.generate('p_user_profile_brick') }}"><span class="brick_icon fas
|
||||
fa-user fa-lg fa-fw"></span>{{ 'Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil'|dict_s }}</a></li>
|
||||
{% for aPortal in app['combodo.portal.instance.conf'].portals %}
|
||||
{% if aPortal.id != app['combodo.portal.instance.conf'].properties.id %}
|
||||
{% set sGlyphiconClass = (aPortal.id == 'backoffice') ? 'fa-list-alt' : 'fa-external-link' %}
|
||||
<li><a href="{{ aPortal.url }}" {% if app['combodo.portal.instance.conf'].properties.allowed_portals.opening_mode == 'tab' %}target="_blank"{% endif %} title="{{ aPortal.label|dict_s }}"><span class="brick_icon fa {{ sGlyphiconClass }} fa-lg fa-fw"></span>{{ aPortal.label|dict_s }}</a></li>
|
||||
{% set sGlyphiconClass = (aPortal.id == 'backoffice') ? 'far fa-list-alt' :
|
||||
'fas fa-external-link-alt' %}
|
||||
<li><a href="{{ aPortal.url }}" {% if app['combodo.portal.instance.conf'].properties.allowed_portals.opening_mode == 'tab' %}target="_blank"{% endif %} title="{{ aPortal.label|dict_s }}"><span class="brick_icon {{ sGlyphiconClass }} fa-lg fa-fw"></span>{{ aPortal.label|dict_s }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{# We display the separator only if the user has more then 1 portal. Meaning default portal + console or several portal at least #}
|
||||
{% if app['combodo.portal.instance.conf'].portals|length > 1 %}
|
||||
<li role="separator" class="divider"></li>
|
||||
{% endif %}
|
||||
<li><a href="{{ app['combodo.absolute_url'] }}pages/logoff.php"><span class="brick_icon fa fa-sign-out fa-lg fa-fw"></span>{{ 'Brick:Portal:UserProfile:Navigation:Dropdown:Logout'|dict_s }}</a></li>
|
||||
<li><a href="{{ app['combodo.absolute_url'] }}pages/logoff.php"><span class="brick_icon fas
|
||||
fa-sign-out-alt fa-lg fa-fw"></span>{{ 'Brick:Portal:UserProfile:Navigation:Dropdown:Logout'|dict_s }}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -270,7 +276,7 @@
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="brick_menu_item {% if oBrick is not defined %}active{% endif %}">
|
||||
<a href="{{ app.url_generator.generate('p_home') }}">
|
||||
<span class="brick_icon fa fa-home fa-2x"></span>
|
||||
<span class="brick_icon fas fa-home fa-2x"></span>
|
||||
{{ 'Page:Home'|dict_s }}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1081,7 +1081,7 @@
|
||||
<default>Brick:Portal:UserProfile:Navigation:Dropdown:MyProfil</default>
|
||||
</title>
|
||||
<decoration_class>
|
||||
<default>fa fa-user fa-2x</default>
|
||||
<default>fas fa-user fa-2x</default>
|
||||
</decoration_class>
|
||||
<!-- Show / hide some of the user profile forms by setting the tag value to true|false -->
|
||||
<!--<show_picture_form>true</show_picture_form>-->
|
||||
|
||||
@@ -158,7 +158,7 @@ $(function()
|
||||
var iTotalCount = aAllMessages.length;
|
||||
var iCount = 0;
|
||||
var sHtml = '<span id="newsroom_menu" class="itop_popup toolkit_menu"><ul><li><img id="newsroom_menu_icon" src="'+this.options.image_url+'"><ul>';
|
||||
sHtml += '<li class="newsroom_menu_item" id="newsroom_menu_dismiss_all"><i class="fa fa-fw fa-check"></i>'+this.options.labels.mark_all_as_read+'</li>';
|
||||
sHtml += '<li class="newsroom_menu_item" id="newsroom_menu_dismiss_all"><i class="fas fa-fw fa-check"></i>'+this.options.labels.mark_all_as_read+'</li>';
|
||||
moment.locale(GetUserLanguage());
|
||||
var aUnreadMessagesByProvider = [];
|
||||
for(var k in this.options.providers)
|
||||
|
||||
@@ -379,7 +379,8 @@ $(function()
|
||||
|
||||
// Prepare base DOM structure
|
||||
this.element
|
||||
.append('<div class="sfc_header"><div class="sfc_title"></div><span class="sfc_toggle"><a class="fa fa-caret-down" href="#"></a></span></div>')
|
||||
.append('<div class="sfc_header"><div class="sfc_title"></div><span class="sfc_toggle"><a class="fas fa-caret-down"' +
|
||||
' href="#"></a></span></div>')
|
||||
.append('<div class="sfc_form_group"><div class="sfc_fg_operators"></div><div class="sfc_fg_buttons"></div></div>');
|
||||
|
||||
// Bind events
|
||||
@@ -422,7 +423,7 @@ $(function()
|
||||
// Removable / locked decoration
|
||||
if(this.options.is_removable === true)
|
||||
{
|
||||
this.element.find('.sfc_header').append('<span class="sfc_close"><a class="fa fa-times" href="#"></a></span>');
|
||||
this.element.find('.sfc_header').append('<span class="sfc_close"><a class="fas fa-times" href="#"></a></span>');
|
||||
this.element.find('.sfc_close').on('click', function(oEvent){
|
||||
// Prevent anchor
|
||||
oEvent.preventDefault();
|
||||
@@ -433,7 +434,7 @@ $(function()
|
||||
else
|
||||
{
|
||||
this.element.addClass('locked');
|
||||
this.element.find('.sfc_header').append('<span class="sfc_locked"><span class="fa fa-lock"></span></span>');
|
||||
this.element.find('.sfc_header').append('<span class="sfc_locked"><span class="fas fa-lock"></span></span>');
|
||||
}
|
||||
|
||||
// Form group
|
||||
@@ -489,8 +490,10 @@ $(function()
|
||||
.append('<button type="button" name="search" class="sfc_fg_button sfc_fg_search">' + Dict.S('UI:Button:Search') + '</button>')
|
||||
.append('<button type="button" name="apply" class="sfc_fg_button sfc_fg_apply">' + Dict.S('UI:Button:Apply') + '</button>')
|
||||
.append('<button type="button" name="cancel" class="sfc_fg_button sfc_fg_cancel">' + Dict.S('UI:Button:Cancel') + '</button>')
|
||||
.append('<button type="button" name="more" class="sfc_fg_button sfc_fg_more">' + Dict.S('UI:Button:More') + '<span class="fa fa-angle-double-down"></span></button>')
|
||||
.append('<button type="button" name="less" class="sfc_fg_button sfc_fg_less">' + Dict.S('UI:Button:Less') + '<span class="fa fa-angle-double-up"></span></button>');
|
||||
.append('<button type="button" name="more" class="sfc_fg_button sfc_fg_more">' + Dict.S('UI:Button:More') + '<span' +
|
||||
' class="fas fa-angle-double-down"></span></button>')
|
||||
.append('<button type="button" name="less" class="sfc_fg_button sfc_fg_less">' + Dict.S('UI:Button:Less') + '<span' +
|
||||
' class="fas fa-angle-double-up"></span></button>');
|
||||
|
||||
// Events
|
||||
this.element.find('.sfc_fg_button').on('click', function(oEvent){
|
||||
|
||||
@@ -140,7 +140,7 @@ $(function()
|
||||
var sFilterPlaceholder = (this._hasAutocompleteAllowedValues()) ? Dict.S('UI:Search:Value:Search:Placeholder') : Dict.S('UI:Search:Value:Filter:Placeholder');
|
||||
var oFilterElem = $('<div></div>')
|
||||
.addClass('sf_filter')
|
||||
.append('<span class="sff_input_wrapper"><input type="text" id="' + sFilterId + '" placeholder="' + sFilterPlaceholder + '" autocomplete="off" /><span class="sff_picto sff_reset fa fa-times"></span></span>')
|
||||
.append('<span class="sff_input_wrapper"><input type="text" id="' + sFilterId + '" placeholder="' + sFilterPlaceholder + '" autocomplete="off" /><span class="sff_picto sff_reset fas fa-times"></span></span>')
|
||||
.appendTo(oOpContentElem);
|
||||
|
||||
// - Values wrapper
|
||||
@@ -217,7 +217,7 @@ $(function()
|
||||
// DOM elements
|
||||
// - Filter
|
||||
oFilterElem.find('.sff_input_wrapper')
|
||||
.append('<span class="sff_picto sff_filter fa fa-filter"></span>');
|
||||
.append('<span class="sff_picto sff_filter fas fa-filter"></span>');
|
||||
|
||||
// - Allowed values
|
||||
var aSortedValues = this._sortValuesByLabel(this._getPreloadedAllowedValues());
|
||||
@@ -304,7 +304,7 @@ $(function()
|
||||
|
||||
// - Add search dialog button
|
||||
oFilterElem
|
||||
.append('<button type="button" class="sff_search_dialog"><span class=" fa fa-search"></span></button>')
|
||||
.append('<button type="button" class="sff_search_dialog"><span class=" fas fa-search"></span></button>')
|
||||
.addClass('sf_with_buttons');
|
||||
|
||||
// - Prepare "selected" values area
|
||||
|
||||
@@ -75,7 +75,7 @@ $(function()
|
||||
{
|
||||
var oChildrenHintElem = $('<div></div>')
|
||||
.addClass('sfc_opc_mc_items_hint')
|
||||
.append('<span class="fa fa-info"></span>')
|
||||
.append('<span class="fas fa-info"></span>')
|
||||
.append(Dict.S('UI:Search:Criteria:HierarchicalKey:ChildrenIncluded:Hint'))
|
||||
.appendTo(oOpElem.find('.sfc_opc_mc_items_wrapper'));
|
||||
}
|
||||
|
||||
@@ -390,7 +390,7 @@ $(function()
|
||||
|
||||
// Header part
|
||||
var oHeaderElem = $('<div class="sfm_header"></div>')
|
||||
.append('<a class="sfm_toggler" href="#"><span class="sfm_tg_title">' + Dict.S('UI:Search:Criterion:MoreMenu:AddCriteria') + '</span><span class="sfm_tg_icon fa fa-plus"></span></a>')
|
||||
.append('<a class="sfm_toggler" href="#"><span class="sfm_tg_title">' + Dict.S('UI:Search:Criterion:MoreMenu:AddCriteria') + '</span><span class="sfm_tg_icon fas fa-plus"></span></a>')
|
||||
.appendTo(this.elements.more_criterion);
|
||||
|
||||
// Content part
|
||||
@@ -401,7 +401,7 @@ $(function()
|
||||
var oFilterElem = $('<div></div>')
|
||||
.addClass('sf_filter')
|
||||
.addClass('sfm_filter')
|
||||
.append('<span class="sff_input_wrapper"><input type="text" placeholder="' + Dict.S('UI:Search:Value:Filter:Placeholder') + '" /><span class="sff_picto sff_filter fa fa-filter"></span><span class="sff_picto sff_reset fa fa-times"></span></span>')
|
||||
.append('<span class="sff_input_wrapper"><input type="text" placeholder="' + Dict.S('UI:Search:Value:Filter:Placeholder') + '" /><span class="sff_picto sff_filter fas fa-filter"></span><span class="sff_picto sff_reset fa fa-times"></span></span>')
|
||||
.appendTo(oContentElem);
|
||||
|
||||
// - Lists container
|
||||
@@ -658,9 +658,9 @@ $(function()
|
||||
.appendTo(this.elements.criterion_area.find('.sf_criterion_row:first'));
|
||||
|
||||
var sButtonText = (this.options.auto_submit === true) ? Dict.S('UI:Button:Refresh') : Dict.S('UI:Button:Search');
|
||||
var sButtonIcon = (this.options.auto_submit === true) ? 'fa-refresh' : 'fa-search';
|
||||
var sButtonIcon = (this.options.auto_submit === true) ? 'fas fa-sync' : 'fas fa-search';
|
||||
var oButtonElem = $('<div class="sfb_header"></div>')
|
||||
.append('<a class="fa fa-fw ' + sButtonIcon + '" title="' + sButtonText + '" href="#"></a>')
|
||||
.append('<a class="fa-fw ' + sButtonIcon + '" title="' + sButtonText + '" href="#"></a>')
|
||||
.appendTo(this.elements.submit_button);
|
||||
|
||||
// Bind events
|
||||
@@ -751,7 +751,7 @@ $(function()
|
||||
// Make placeholder if nothing yet
|
||||
if(oResultAreaElem.html() === '')
|
||||
{
|
||||
oResultAreaElem.html('<div class="sf_results_placeholder"><p>' + Dict.S('UI:Search:NoAutoSubmit:ExplainText') + '</p><p><button type="button">' + Dict.S('UI:Button:Search') + '<span class="fa fa-search"></span></button></p></div>');
|
||||
oResultAreaElem.html('<div class="sf_results_placeholder"><p>' + Dict.S('UI:Search:NoAutoSubmit:ExplainText') + '</p><p><button type="button">' + Dict.S('UI:Button:Search') + '<span class="fas fa-search"></span></button></p></div>');
|
||||
oResultAreaElem.find('button').on('click', function(){
|
||||
// TODO: Bug: Open "Search for CI", change child classe in the dropdown, click the search button. It submit the search for the original child classe, not the current one; whereas a click on the upper right pictogram does. This might be due to the form reloading.
|
||||
me._onSubmitClick();
|
||||
|
||||
@@ -233,7 +233,7 @@ function DisplayClassesList($oPage, $sContext)
|
||||
$oPage->add("<h1>".Dict::S('UI:Schema:Title')."</h1>\n");
|
||||
|
||||
$oPage->add("<label for='search-model'>" . Dict::S('UI:Schema:ClassFilter') ."</label><br/><input type=\"text\" id=\"search-model\" autofocus=\"autofocus\"/>");
|
||||
$oPage->add("<div id=\"delDataModelSearch\"> <i class=\"fa fa-times-circle\"></i></div>");
|
||||
$oPage->add("<div id=\"delDataModelSearch\"> <i class=\"fas fa-times-circle\"></i></div>");
|
||||
$oPage->add("<ul id=\"ClassesList\" class=\"treeview fileview\">\n");
|
||||
$oPage->add_ready_script(
|
||||
<<<EOF
|
||||
@@ -721,9 +721,11 @@ field.filter(function(d) {
|
||||
.style("opacity","1");
|
||||
divD3.style("left", (d3.event.pageX - 7*d['tooltip_data']['class'].length/2) + "px");
|
||||
divD3.style("top", (d3.event.pageY - 65) + "px");
|
||||
divD3.html( '<div id="tooltipD3_top">' + d['tooltip_data']['class'] + '</div><span id="tooltipD3_left"> <i class="fa fa-caret-left"></i> '
|
||||
divD3.html( '<div id="tooltipD3_top">' + d['tooltip_data']['class'] + '</div><span id="tooltipD3_left"> <i class="fas
|
||||
fa-caret-left"></i> '
|
||||
+ ( (d.related_position < 0) ? d['tooltip_data']['to_remote'] : d['tooltip_data']['to_me'] ) + '</span><span id="tooltipD3_right"> <br/>'
|
||||
+ ( (d.related_position < 0) ? d['tooltip_data']['to_me'] : d['tooltip_data']['to_remote'] ) + ' <i class="fa fa-caret-right"></i></span>');
|
||||
+ ( (d.related_position < 0) ? d['tooltip_data']['to_me'] : d['tooltip_data']['to_remote'] ) + ' <i class="fas
|
||||
fa-caret-right"></i></span>');
|
||||
})
|
||||
.on('mouseout',function(d){
|
||||
divD3.transition()
|
||||
|
||||
@@ -170,7 +170,7 @@ class SearchForm
|
||||
$sStyle .= ($bAutoSubmit === true) ? '' : ' no_auto_submit';
|
||||
$sHtml .= "<form id=\"fs_{$sSearchFormId}\" action=\"{$sAction}\" class=\"{$sStyle}\">\n"; // Don't use $_SERVER['SCRIPT_NAME'] since the form may be called asynchronously (from ajax.php)
|
||||
$sHtml .= "<h2 class=\"sf_title\"><span class=\"sft_long\">" . Dict::Format('UI:SearchFor_Class_Objects', $sClassesCombo) . "</span><span class=\"sft_short\">" . Dict::S('UI:SearchToggle') . "</span>";
|
||||
$sHtml .= "<a class=\"sft_toggler fa fa-caret-down pull-right\" href=\"#\" title=\"" . Dict::S('UI:Search:Toggle') . "\"></a>";
|
||||
$sHtml .= "<a class=\"sft_toggler fas fa-caret-down pull-right\" href=\"#\" title=\"" . Dict::S('UI:Search:Toggle') . "\"></a>";
|
||||
$sHtml .= "<span class=\"sft_hint pull-right\">" . Dict::S('UI:Search:AutoSubmit:DisabledHint') . "</span>";
|
||||
$sHtml .= "</h2>\n";
|
||||
$sHtml .= "<div id=\"fs_{$sSearchFormId}_message\" class=\"sf_message header_message\"></div>\n";
|
||||
|
||||
@@ -371,7 +371,7 @@ EOF
|
||||
$sHierarchicalButtonId = 's_hi_' . $this->oField->GetGlobalId();
|
||||
$sEndpoint = str_replace('-sMode-', 'hierarchy', $this->oField->GetSearchEndpoint());
|
||||
|
||||
$oOutput->AddHtml('<div class="input-group-addon" id="' . $sHierarchicalButtonId . '"><span class="fa fa-sitemap"></span></div>');
|
||||
$oOutput->AddHtml('<div class="input-group-addon" id="' . $sHierarchicalButtonId . '"><span class="fas fa-sitemap"></span></div>');
|
||||
|
||||
$oOutput->AddJs(
|
||||
<<<EOF
|
||||
|
||||
Reference in New Issue
Block a user