В системе есть различный уровень настроек:
Находится в меню "Система" -> "Системный SQL". Основные характеристики:
Находится в меню "Настройки". Основные характеристики:
Для этого необходимо изменить процедуру falcon_getLayoutInfo в разделе Системные элементы/Системный SQL.
Параметры процедуры:
Общий вид процедуры:
CREATE PROCEDURE [dbo].[falcon_getLayoutInfo]
@url nvarchar(256),
@username nvarchar(128),
@langID int = 0, -- 111,
@parameters ExtendedDictionaryParameter READONLY
AS
BEGIN
declare @userGuid uniqueidentifier = (select top 1 try_cast(Value as uniqueidentifier)
from @parameters where [Key] = 'falconGuid')
declare @disableSlideoutMenu bit = 0
declare @isAdmin bit = dbo.sec_isUserInRole(@username, 'admin')
declare @lang nvarchar(20) = ''
declare @footer nvarchar(max) = [dbo].as_htmlBlockLang ('footer', @langID)
declare @mobileFooter nvarchar(max) = [dbo].as_htmlBlockLang ('mobileFooter', @langID)
declare @topNavbarText nvarchar(max) = [dbo].as_htmlBlockLang ('topNavbarText', @langID)
declare @topPageText nvarchar(max) = [dbo].as_htmlBlockLang ('topPageText', @langID)
declare @customHeader nvarchar(max) = [dbo].as_htmlBlockLang ('customHeader', @langID)
declare @topSubMenuText nvarchar(max) = [dbo].as_htmlBlockLang ('topSubMenuText', @langID)
declare @topSubMenuTitle nvarchar(max) = [dbo].as_htmlBlockLang ('topSubMenuTitle', @langID)
declare @topMakeup nvarchar(max) = [dbo].as_htmlBlockLang ('topMakeup', @langID)
declare @topMobileMakeup nvarchar(max) = [dbo].as_htmlBlockLang ('topMobileMakeup', @langID)
declare @customMetaTags nvarchar(max) = [dbo].as_htmlBlockLang ('customMetaTags', @langID)
declare @enableLang bit = iif(dbo.as_setting('enableLang', '')='True',1, 0)
declare @enablePWA bit = iif(dbo.as_setting('enablePwa', '')='True',1, 0)
declare @enableGeolocation bit = iif(dbo.as_setting('enableGeolocation', '')='True',1, 0)
declare @geolocationKey nvarchar(128) = dbo.as_setting('geolocationKey', '')
declare @saveGeoposition bit = iif(dbo.as_setting('saveGeoposition', '')='True',1, 0)
declare @helpChatKey nvarchar(128) = dbo.as_setting('helpChatKey', '')
declare @fixWidth bit = iif(dbo.as_setting('fixWidth', '')='True',1, 0)
declare @dateFormat nvarchar(128) = dbo.as_setting('dateFormat', 'dd.mm.yyyy')
declare @phoneFormat nvarchar(128) = dbo.as_setting('phoneFormat', '+7 (ddd) ddd-dddd')
declare @linkPrefix nvarchar(128) = dbo.as_setting('linkPrefix', '5')
declare @userPicLabel nvarchar(128) = iif(dbo.as_setting('showLogin', '')='True', @username, '')
declare @enableAnimation bit = try_cast(dbo.as_design_getSetting('enableAnimation', '0') as bit),
@horizontalMainMenu bit = try_cast(dbo.as_design_getSetting('horizontalMainMenu', '0') as bit),
@theme nvarchar(128) = dbo.as_design_getSetting('theme', '')
declare @round nvarchar(32) = dbo.as_design_getSetting('round', '')
declare @roundClass nvarchar(32) = iif(@round='round', 'as-round', iif(@round='unround', 'as-unround', ''))
-- SELECT 1 - LAYOUT SETTINGS
select
@theme theme, --@theme
isnull((select top 1 Value from as_settings where Code = 'Brand'), 'Falcon Auction') brand,
isnull(dbo.rs_resourceLink('siteLogo','0',1),'') LogoIcon,
isnull(dbo.rs_resourceLink('favIcon','0',1),'/content/images/favicon.ico') favicon,
@topNavbarText TopNavbarText,
@topPageText topPageText,
@topMakeup topMakeup,
@topMobileMakeup topMobileMakeup,
@customMetaTags customMetaTags,
@roundClass + ' ' + iif(@horizontalMainMenu=1, 'as-horizontalMainMenu', '') +
iif(@disableSlideoutMenu=1, ' as-disableSlideoutMenu ', '' ) bodyClass, -- as-disableSlideoutMenu
'' leftFooterText,
'' rightFooterText,
@footer Footer,
@mobileFooter mobileFooter,
@customHeader customHeader,
@topSubMenuText topSubMenuText,
@topSubMenuTitle topSubMenuTitle,
'/user' userProfileLink,
@enableLang enableLang,
@lang defaultLang,
@enableAnimation enableAnimation,
@enablePWA enablePWA,
1 enablePWANotifications,
@enableGeolocation EnableGeolocation,
@geolocationKey GeolocationKey,
@saveGeoposition saveGeoposition,
iif(@isAdmin=1, '0cebbe5e-7884-4c41-b09a-4c1dcbabeff7', @helpChatKey) HelpChatKey,
@fixWidth fixWidth,
'' leftSidebar,
iif(@username='',1,0) HideLeftCol, --
1 MainMenuInRightSidebar,
'' BalanceSum,
'' BalanceIcon, -- fa-money-bill-alt
'' BalanceLink,
'' BalanceText,
0 HorizontalMenuOnTop,
0 BreadcrumbOnTop,
iif(@isAdmin=1,1,0) showSearch,
@dateFormat dateFormat,
@phoneFormat phoneFormat,
1 DisableCart,
'http://schema.org/WebPage' SchemaTypeBody,
'2x' alertIcon,
@linkPrefix linkPrefix,
@userPicLabel userPicLabel
--SELECT 2 - TOP HORIZONTAL MENU
select 1 -- id Id, '' Name, '' Title, '' Url, 'fa fa-cogs' CssClass, 0 isActive, 0 ParentID
declare @select3 table (type nvarchar(max), title nvarchar(max), code nvarchar(max), itemID nvarchar(max), icon nvarchar(max),
btnText nvarchar(max), bigModal bit, FloatPanel bit, background nvarchar(max), ord int)
insert into @select3
select type, title, code, itemID, icon, btnText, bigModal, FloatPanel, background, ord
from as_layout_fastLinks
where dbo.sec_hasAccessByUsersRoles(@username, '', roles)=1
--SELECT 3 FAST ADD LINKS
select * from @select3
order by ord
declare @select4 table (class nvarchar(max), title nvarchar(max), icon nvarchar(max), url nvarchar(max), ord int)
insert into @select4
select class, title, icon, url, ord
from as_layout_stuffMenu
where @username <>'' and dbo.sec_hasAccessByUsersRoles(@username, '', roles)=1
or @username = '' and onlyNotAuth = 1
-- SELECT 4 STUFF MENU
select * from @select4
order by ord
-- SELECT 5 MENU Labels
/*
select '/tickets' Url, 'fa fa-edit' Icon, '12' Value, 'light' Type, '123' Title
union
select '/forms' Url, 'fa fa-edit' Icon, '' Value, 'success' Type, '123' Title
*/
if(@username<> '') begin
update as_users set lastVisitDate = getdate()
where username = @username
end
END
Выходной первый select (SELECT 1) имеет следующие параметры:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="author" content="FalconSpace.ru">
<meta name="theme-color" content="#cccccc">
<ul class="list-inline mt-2 text-center">
<li class="list-inline-item px-3"><a href="#" title=""><i class="fa fa-2x fa-cube"></i></a></li>
<li class="list-inline-item px-3"><a href="#" title=""><i class="fa fa-2x fa-star"></i></a></li>
<li class="list-inline-item px-3"><a href="#" title=""><i class="fa fa-2x fa-bars"></i></a></li>
<li class="list-inline-item px-3"><a href="#" title=""><i class="fa fa-2x fa-fire"></i></a></li>
</ul>
Второй запрос в GetLayout (SELECT 2) - это горизонтальное меню.
Модель SELECT 2:
--SELECT 2 - TOP HORIZONTAL MENU
select 1
/*
select id Id,
name Name,
'' Title, подсказка к элементу
code Url,
'fa fa-cogs' CssClass, класс иконки
0 isActive,
parentID ParentID родительский элемент(для вложенного меню)
from as_cat_categories
*/
Если не указан 2 запрос, то меню не выводится (это меню может никак не пересекаться с as_menu и pg_pages и строиться полностью динамически).
Третий запрос GetLayout (SELECT 3) дает список форм быстрого добавления, которые можно открыть с любой страницы в модальном окне.
Для этого используем следующую модель в SELECT 3:
select * from
(select 'form' type,'Создать страницу' Title, 'newPage' Code, '' itemID, 'fa-plus'
Icon, 'Создать страницу' btnText, 0 bigModal, 0 Ord
union
select 'sp' type, 'Процедура GetLayout' Title, 'falcon' Code,'getLayoutInfo'
itemID, 'fa-cube' Icon, '' btnText, 1 bigModal, 6 Ord
union
select 'link' type,'Очистка кеша' Title, '/controls/stuff/clearcache' Code,''
itemID, 'fa-trash' Icon, '' btnText, 0 bigModal, 500 Ord) t
union
select 'formcont' type,'' Title, 'newPage' Code,'123'
itemID, '' Icon, '' btnText, 0 bigModal, 500 Ord) t
Order by ord
При Type = form вызывается модальная форма
При Type = formcont прямо в панели показывается форма (для малых форм)
При Type = table вызывается таблица в модальном окне
При Type = link кнопка будет работать как ссылка и переходить по адресу, указанному в поле Code.
При Type = sp кнопка будет работать как компонент изменения хранимой процедуры (компонент as-sp-link).
При этом в Code указывается первая часть (data-control), в itemID указывается вторая часть (data-entity) и в btnText указывается 3 часть наименования хранимой процедуры (data-operation).
Примечание:
1. если при этом не нужен SELECT 2, то вместо него можно просто поставить Select '1'
2. Если нужно скрыть определенную ссылку, то можно установить type = ''
3. Можно задать фон элемента через параметр background (bootstrap цвета - info, danger, warning и т.д.)
4. floatPanel =1 у ссылки помещает ее в плавающую панель иконок справа
Четвертый запрос GetLayout (SELECT 4) определяет что будет выводиться пользователю в служебном меню справа (при нажатии на иконку пользователя).
-- SELECT 4 STUFF MENU
if(@username='admin') begin
select * from
(select '' Class,'Мой профиль' Title, 'fa-user' Icon, '/user' Url, 0 Ord
union
select '' Class,'Сменить пароль' Title, 'fa-key' Icon,
'/admin/account/changepassword' Url, 1 Ord
union
select '' Class,'Выход' Title, 'fa-sign-out-alt' Icon,
'/account/logoff' Url, 2 Ord) t
Order by ord
end else begin
select * from
(select '' Class,'Войти' Title, 'fa-user' Icon, '/account/login' Url, 0 Ord) t
Order by ord
end
Примечание. Быстрые ссылки из SELECT 4 доступны через горячие клавиши Ctrl + Alt + [Num]
Пятый запрос GetLayout (SELECT 5) определяет лейблы, которые выводятся у пунктов меню.
select '/tickets' Url, 'fa fa-edit' Icon, '12' Value, 'light' Type, '123' Title
union
select '/forms' Url, 'fa fa-edit' Icon, '' Value, 'success' Type, '123' Title
По Url мы находим пункт меню и добавляем в него элемент с иконкой Icon, справа от иконки значение Value. Стиль подложки задает Type (secondary, light, success и т.д.)
Шестой запрос GetLayout (SELECT 6) содержит вызов внешних действий (отправка почты, телеграм и т.д.)
Это специальные системные настройки, которые хранятся в конфигурационном файле веб-проекта в разделе appSettings. В core версии платформы, эти настройки хранятся в файле appsettings.json
HotLinkRegexFilter": [
"/uploads/(.*)"
],
"HotLinkRegexFilterDomain": "localhost"
В системе некоторые объекты кешируются на уровне сервера:
Корневой префикс всех ключей кеша - as_
Вручную очистить кеш можно в разделе Настройки.
Если необходимо чистить кеш после некоего действия в форме - используйте внешнее действие clearcache
select 'clearcache' type, 'as_' prefix
В GetLayout вы можете установить класс для тега body. Он может иметь некоторые значения для настроек:
Некоторые настройки вынесены в файл /uploads/as.systemOptions.js. Они управляют отдельными деталями работы frontend.
var as = as || {};
as.systemOptions = {
"alert.alwaysHidePrev": false, // если true, то при появлении нового алерт будут скрываться все предыдущие
"alert.disableProgress": false, // скрывать в alert окне progress bar элемент
"alert.defaultDelay": 7000, // длительность по умолчанию для alert
"alert.placement": "center", // расположение окна алерт (center, leftBottom, leftTop, rightBottom). По умолчанию - справа наверху.
"alert.defaultDelay": 7000, // задержка окна alert по умолчанию
"alert.disableTimestamp":false, // настройка в as.systemOption.js - если true, то отключает показ метки времени в окошках alert
"alert.headerIcon": "/uploads/1.png", // путь к иконке для вывода в заголовке окна alert
"copy.enableSourceAdding": true, // если true - то при копироовании текста с сайта будет идти добавка в текст.
"copy.container": "", // указывает селектор контейнера, в рамках которого добавляется прибавка текста при копировании
"copy.disableCopy": false, // если true - то при копировании текста через Ctrl + C не будет ничего скопировано в буфер обмена
"form.disableMaxlengthInput": false, // отключить для полей с maxlength отображение остатка
"form.spinnerIcon": "fa-spinner fa-spin", // иконка загрузки формы
"form.progressDelay": 1000, // delay for progress trigger field change
"form.checkFieldDelay": 1500, // delay перед отправкой запроса по изменению поля.
"form.updateDependentColsDelay": 200, // озадержка в мс перед срабатыванием триггера Зависимых колонок
"form.resultContClasses": "p-3 my-3 text-muted shadow-sm border d-flex justify-content-between", // классы окна результата при сохранении форм
"form.ctrlEnterForm": "founderror", // форма которая будет показываться при ctrl enter (с обработкой выделенного текста)
"entity.statusColorStyle": "border: solid 1px {0}", // задает стиль статуса Сущности {0} - #color
"entity.actionColorStyle": "background-color: {0}", // задает стиль кнопки дейсвтия {0} - #color
"disableDebugMode": false, // возможность отключить показ отладочных сообщений в консоли браузера
"doubleRequests.disableCheck": false, // отключить контроль количества одинаковых запросов на странице
"doubleRequests.count": 3, // порог по количеству запросов, после которого будет идти уведомление в trace с кодом dblreq
"doubleRequests.countLimit": 4, // после превышения данного порога запрос будет отбрасываться и выводиться сообщение юзеру
"doubleRequests.duration": 2000, // длительность в течение которого учитывается количество запросов (в миллисекундах)
"imageCheckboxDefaultImage": "https://demo.web-automation.ru/uploads/fire.gif", // поле формы imageCheckbox - картинка по дефолту
"imageCheckboxDefaultWidth": "50px", // поле формы imageCheckbox - ширина по дефолту
"imageCheckboxDefaultHeight": "50px", // поле формы imageCheckbox - высота по дефолту
"menu.animateIcon": "faa-tada", // установить формат анимации иконок меню при наведении (варианты - https://l-lin.github.io/font-awesome-animation/)
"menu.side": "right", // где выводится меню на мобильных устройствах - left.right
"menu.disableSlideout": false, // если true, то не будет работать swipe для меню.
"modal.headerBack": "danger", // цвет верхней полоски в модальном окне
"modal.bodyBack": "warning", // цвет тела модального окна
"modal.footerBack": "success", // цвет нижней части модального окна.
"modal.enablePrevNextModal": false, // если true, то в модальном окне будут показаны кнопки перехода назад/вперед (переключение по истории показа модальных окон)
"modal.changePageTitleWithModal": true, // если true то при открытии окна будет меняться title страницы (при закрытии возвращать начальное значение)
"online.disableCheck": false, // если true - то не будет проверяться статус онлайн юзер или нет (as-online)
"online.period": 30000, // через сколько миллисекунд опрашивать сервер о статусе юзера (онлайн или нет)
"table.removeIcon": "far fa-trash-alt",// иконка удаления в таблице
"table.commentIcon": "fa-comment", // иконка коммента в таблице
"table.defaultTheme": "light", // тема для таблиц по умолчанию
"table.instantFilterDelay": 1500, // задержка в мс при срабатывании InstantFilter
"table.subPlus": "fa-caret-right", // иконка для свернутого состояния sub
"table.subMinus": "fa-caret-down",// иконка для развернутого состояния sub
"timestamp.secNow":10, // кол-во секунд, в течениие которых временная метка выводится как "только что"
"table.mobCardsHorizontal": true, // если true то строки таблицы в моб будут идти как карточки со скроллингом вправо.
"search.delay": 3000, // через сколько мс начнет запускаться глобальный поиск
"search.minLength": 5, // кол-во символов в поиске с которого запускается поиск
"switch.defaultWidth": "150px", // ширина переключателя по умолчанию
"system.excludeExceptions": /Client Closed Request|1111/g, // какие JS ошибки не логировать
"system.slowRequestLimitMs": 700, // если больше этого порога в мс, то Ajax запрос будет логироваться в trace с кодом slow
"system.disableSignalR": false, // если true то будет отключен механизм signalR (уведомления с сервера на клиент о некоторых событиях)
"system.disableScrollEvent": false, // если true то событие onscroll будет отключено (для отладки ситуаций, когда зависает страница при скрролле).
"system.persistGeoPosition": false, // если true, то в куки geoLat, geoLng будут писаться координаты lat lon при каждой загрузке страницы и обновляться каждые 10 сек.
"system.persistGeoPositionPeriod": 10000, // период для обновления куков по гео позиции geoLat, geoLng
"system.getIPInfoUrlFormat" : 'some url {0}', // использование внешнего API для получения данных по IP ({0} - передаваемый API). Испольуется для компонента as-ip
"system.showButtonProgressIcon": "spinner-border spinner-border-sm mx-1", // настройка спиннера у кнопки выполнения действия (напр, сохранение формы). Если непустая,то добавляется спиннер иконка с заданным классом
// настройки для signalR уведомления
"notifications.alertType": "info", // вид вид уведомления SignalR
"notifications.alertIcon": "fa fa-bell", // иконка уведомления
"notifications.alertDelay": 100000, // как долго будет висеть уведомление
"notifications.alertShowUserFrom": true, // если true - то будет показываться юзер, от которого пришло уведомление
"notifications.sound": "", // путь к звуковому файлу - будет проигрываться при новом уведомлении
"notification.processNotificationIcon": "far fa-check-circle" // иконка на кнопке обработки уведомления (в панели уведомлений).
}
Для использования настроек в JS разработке следует использовать функцию as.option(code, defValue).
Также есть механизм HotKeys - позволяет задать комбинацию клавиш и селектор элемента, на котором сработает данная комбинация.
Установка и системные требования falcon space