Настройки системы

Введение

В системе есть различный уровень настроек:

  • Системный SQL (/syssp) задает ключевые настройки, работающие через SQL ( в первую очередь это каркас страницы GetLayout)
  • Статичные настройки (/settings) - раздел неизменяемых опций, которые используются в системе
  • Системные настройки (файл web.config)
  • Настройки frontend (/uplaods/as.systemOptions.js) - для стилизации и работы в JS 

Раздел Системный SQL (/sysSP)

  • Процедура поиска (falcon_search) - процедура глобального поиска (в шапке сайта)
  • Процедура GetLayout (falcon_getLayoutInfo) - процедура извлечения для построения страницы (язык, настройки макета и т.д.). Выполняется при загрузке каждой страницы
  • Периодический запуск (falcon_sync) - хранимки, которые запускаются по периоду. Чтобы они корректно работали, необходимо настроить ежеминутный вызов адреса из внешнего сервиса (см. соответствующий раздел)
  • Генерация sitemap.xml (falcon_sitemap) - создание карты сайта в виде файла sitemap.xml

Раздел  Общие настройки /settings

  • mail…. - Настройки отправки почты
  • commonScripts - разметка перед закрывающим тегом (счетчики, скрипты, глобальные кнопки и т.д.)
  • commonStyles - добавление стилей, подключение шрифтов
  • apiType  - тип вывода АПИ. Либо XML либо JSON
  • brand - Что выводится наверху слева (название сайта)
  • logChanges - логировать или нет изменения сущностей (если не используется, то лучше не логировать, чтобы не разрасталась база)
  • robots.txt - редактирование файла индексации robots (для поисковиков)
  • sitemap.xml - редактирование sitemap.xml файла (для поисковиков). Настройка НЕАКТУАЛЬНА (данные теперь берутся из процедуры falcon_sitemap).
  • globalJS - JS, который будет доступен каждой странице
  • globalCSS - стили, которые применятся к каждой странице
  • logoIcon - FontAwesome иконка для логотипа вверху слева
  • ShowDebugInfo - если 1, то для компонентов Форма, Таблица, Дашборд и др будут выводиться JSON объекты в консоль браузера (независимо от роли)
  • logoffURL - если указан URL, то после выхода пользователь будет переходить на этот адрес, а не на главную
  • exceptionUser - указывает имя пользователя (например, admin), которому будут приходить быстрые уведомления об ошибках. Можно указать несколько пользователей через запятую
  • enableLogErrorForBot - если "1", то для ботов будут фиксироваться JS ошибки в trace (по умолчанию логирование ошибок для ботов отключено)

Как изменить элементы Layout (настройки GetLayoutInfo)

Для этого необходимо изменить процедуру falcon_getLayoutInfo в разделе Системные элементы/Системный SQL

Параметры процедуры: 

  • url - текущая страница 
  • username - текущий пользователь
  • langID - текущий язык
  • parameters ExtendedDictionaryParameter (необязательный) - содержит служебные данные (например, falconGuid - уникальный идентификатор любого посетителя, который хранится у него в куки)

Выходной первый select (SELECT 1) имеет следующие параметры: 

  • topNavbarText- разметка в верхней панели (слева от поиска)
  • topPageText - разметка, которая добавляется перед хлебными крошками на странице
  • brand - название сайта (слева вверху)
  • logoIcon - иконка бренда (слева наверху), по умолчанию fa-dove. Также можно указать путь - тогда будет выводиться указанная картинка
  • leftFooterText - разметка в подвале слева, rightFooterText - разметка в подвале справа
  • footer - разметка для подвала (если она указана, то игнорируются leftFooterText  и rightFooterText)
  • mobileFooter - разметка закрепленной полоски внизу мобильного (не заменяет footer). Типовая разметка: 
<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>
  • userProfileLink - ссылка на профиль пользователя. Если заполнена - то показывается наверху справа в выпадающем списке. 
  • enableLang - если 1, то можно менять язык справа наверху (локализация)
  • defaultLang - можно установить язык по умолчанию (например, ru-ru или en-us)
  • enableAnimation - включается анимация (появление заголовков, сообщение после сохранения формы, открытие модального окна)
  • enableGeolocation - если 1, то включает запрос разрешения на геолокацию в браузере и сохранение страны пользователя
  • geolocationKey - ключ Google GeolocationAPI для подключения скриптов геолокации
  • saveGeoposition - если 1, то в скрытом поле as-latlng будут проставлены текущие координаты в формате "lat,lng"
  • leftSidebar - HTML разметка в левом сайдбаре, выводится для всех страниц
  • hideLeftCol - если 1 то скрывается вся левая колонка с меню и лого на странице
  • favicon - путь к favicon иконке
  • BalanceSum, BalanceLink, BalanceText, BalanceIcon - вывод вверху элементов по балансу пользователя (в целом можно любую другую информацию вывести здесь о текущем пользователе).  Элемент выводится только если BalanceSum не пустая строка (выводить можно и для неавторизованных пользователей)
  • theme - название темы. ВАЖНО! Не указывайте здесь названия несуществующей темы (в этом случае вся верстка сайта поедет и необходимо будет менять данную хранимую процедуру через SQL Management Studio). Тема это файл, хранящийся в папке /uploads/themes/{themeCode}
  • horizontalMenuOnTop. Если 1 - то горизонтальное меню выводится в верхней полосе шапки. Если 0 - то под шапкой
  • TopSubMenuText, TopSubMenuTitle - задание большого подменю вверху. Выводится TopSubMenuTitle перед поиском и раскрывается в виде большой панели с разметкой TopSubMenuText
  • breadcrumbOnTop.  Если 1 - то хлебные крошки выводятся в верхней полосе шапки. Если 0 - то под шапкой
  • showSearch - Если 1 то поиск показывается пользователю
  • helpChatKey - если указать ключ для чата (пока только ключ чатов replain), то выведет внизу чат для помощи пользователю.  Указывается в формате replain:{id}. Можно давать различные чаты в зависимости от роли пользователя. Ключ чата можно получить на https://replain.cc/
  • dateFormat - установка вывода формата даты, по умолчанию dd.mm.yyyy
  • phoneFormat - установка формата для телефона , по умолчанию +1 (ddd) ddd dd-dd
  • fixWidth  - если 1 то страница имеет фиксированную ширину (container). По умолчанию макет страницы резиновый (container-fluid)
  • disableCart - если 1, то в шапке сайта не выводится элемент корзины
  • cartCode - задает код корзины для элемента в верхней полоске (data-code)
  • bodyClass - если указан, то к тегу body добавляется этот класс (необходимо для более точного CSS системных элементов (напр. хлебных крошек) для конкретных страниц)
  • schemaTypeBody - схема микроразметки Schema.org. Если указана, то у body проставляет схема (в общем случае можно использовать http://schema.org/WebPage)
  • userPic - указывает путь на картинку (выводится в правом верхнем углу как аватар пользователя). Если не указывать - то работает стандартный механизм загрузки файла getFile (грузится через отдельную хранимую процедуру).  ВАЖНО - если картинка указана, то выбор картинки пользователем в профиле не будет влиять на нее 
  • userPicLabel - метка имени пользователя выводится рядом с аватаркой пользователя сверху справа. На мобильных экранах надпись скрывается
  • alertIcon - настройки вывода иконки в сообщениях справа вверху. Значения - no,x,2x,3x. Определяет размер иконки. Если no - то иконки не будут использоваться
  • TopMakeup и TopMakeupMobile - задают кастомную разметку для верхней панели системы с использованием переменных вида {code1}. Подробнее
  • LinkPrefix - строка префикс для добавления в конец URL для загрузки CSS и JS. Требуется когда необходимо принудительно обновить у всех пользователей подгружаемые ресурсы (которые закешировались в браузере). В итоге ресурсы будут грузиться с ?v={prefix}
  • customMetaTags - кастомные настройки дополнительных тегов. По умолчанию там следующее: 
<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="Falcon Space, Web-Automation.ru">
<meta name="theme-color" content="#cccccc">


Второй запрос в 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 вызывается модальная форма 

  • Title - задает название элемента в списке и заголовок модального окна.
  • Code - код модальной формы
  • ItemID - data-itemID для формы.
  • Icon - иконка в списке
  • btnText - Кнопка сохранения в модальном окне
  • bigModal - Если 1, то делает модальное окно большим. 
  • slideout - Если 1, то форма будет в виде большого окна, выдвигающегося слева. Если 2 - то справа. Если 0 - то стандартное модальное окно по центру.

При Type = formcont прямо в панели показывается форма (для малых форм)

  • Code - код формы
  • ItemID - data-itemID для формы
  • Title, Icon, btnText, btnModal, slideout  - не используются

Работа с формами

При Type = table вызывается таблица в модальном окне 

  • Title - задает название элемента в списке и заголовок модального окна.
  • Code - код таблицы
  • Icon - иконка в списке
  • bigModal - Если 1, то делает модальное окно большим. 
  • slideout - Если 1, то таблица будет в виде большого окна, выдвигающегося слева.

Работа с таблицами

При Type = link кнопка будет работать как ссылка и переходить по адресу, указанному в поле Code. 

При Type = sp кнопка будет работать как компонент изменения хранимой процедуры (компонент as-sp-link). 

При этом в Code указывается первая часть (data-control), в itemID указывается вторая часть (data-entity) и в btnText указывается 3 часть наименования хранимой процедуры (data-operation).

Примечание: если при этом не нужен SELECT 2, то вместо него можно просто поставить Select '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) содержит вызов внешних действий (отправка почты, телеграм и т.д.)

Настройки web.config

Это специальные системные настройки, которые хранятся в конфигурационном файле веб-проекта в разделе appSettings. В core версии платформы, эти настройки хранятся в файле appsettings.json

  • autoCommentToSP - если 1, то при сохрании хранимой процедуры в нее будет записываться в конец авто комментарий с именем пользователя и временем правки. 
  • catalogCacheMinutes - время кеширования в минутах результатов выдачи каталога (если 0, то кеширование не используется)
  • Cron:PeriodSeconds и Cron:Key - настройка внутреннего планировщика периодческих событий, задают период события в секундах и ключ для проверки в хранимой процедуре
  • defaultLang (en-us, ru-ru) - установка языка по умолчанию (имеет приоритет над аналогичной установкой в Settings). Имеет смысл использовать когда 2 разных приложения используют одну базу и могут иметь разные настройки в web.config по языку. 
  • disableAntiXSSRoles - список ролей, которые могут отправлять на сервер HTML (защита от XSS атак). 
  • disableTransactions - если 1, то во всех запросах к БД отключены транзакции при выполнении запросов (режим используется для запроса к другим базам через openquery). 
  • listCacheMinutes - время кеширования в минутах результатов выдачи списка list (если 0, то кеширование не используется)
  • licenseKey - ключ лицензии экземпляра программы
  • logUserAction - если 1, то в as_trace будут логироваться все поcещения страниц с кодом (pv) и все сохранения форм (с кодом sf)
  • logChanges - если 1, то будут сохраняться все изменения хранимых процедур в базу данных
  • proxyUrl - адрес прокси для телеграма (в формате http://45.89.19.84:11498)
  • proxyUser - пользователь прокси
  • proxyPassword - пароль к прокси
  • sqlTimeout - задает в секундах таймаут на запросы sql (по умолчанию 30 секунд)
  • telegramToken - токен телеграм. Если не указан, то бот телеграма не запускается
  • telegramOnlyTextMessages - если 1, то телеграм бот будет обрабатывать только текстовые запросы
  • hugeQueriesLimit - указываем суммарное число строк, вернувшихся от запроса, при котором логируется файл кол-ва строк в as_trace с кодом huge (по умолчанию 500) используется для поиска больших массивов, загружающих процессор
  • traceTextSize - максимальный размер поля text в as_trace. (по умолчанию 2047). Если вы измените тип поля на nvarchar(max), то имеет смысл увеличить этот параметр до требуемого размера
  • jsAvailableTraceCodes  - устанавливает какие коды (строка через запятую) в trace может сохранить front сторона (из JS), по умолчанию это строка "event,dblreq" 

Настройки кеширования 

В системе некоторые объекты кешируются на уровне сервера: 

  • меню пользователя
  • выдача каталога (время кеша устанавливается в web.config. Если 0, то отключено).
  • выдача списков list (время кеша устанавливается в web.config. Если 0, то отключено).
  • работа с ролями пользователей
  • настройки

Корневой префикс всех ключей кеша - as_ 

Вручную очистить кеш можно в разделе Настройки. 

Если необходимо чистить кеш после некоего действия в форме - используйте внешнее действие clearcache

select 'clearcache' type, 'as_' prefix

Дополнительные настройки через class для body

В GetLayout вы можете установить класс для тега body. Он может иметь некоторые значения для настроек: 

  • as-poorVision - чуть увеличенный шрифт, режим для слабовидящих. 
  • as-disable-onerror - отключен обработчик ошибок (и ошибки выводятся как есть в консоли браузера)
  • as-stickyLeft - левая панель всегда на виду
  • as-stickyTop - верхняя плашка всегда привязана к верху браузера
  • as-disableSlideoutMenu - отключает на мобильных устройствах открытие меню по swipe (движение пальцем вправо).

Настройки Frontend в JS файле

Некоторые настройки вынесены в файл /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 по умолчанию
    "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, // озадержка в мс перед срабатыванием триггера Зависимых колонок
    "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, // длительность в течение которого учитывается количество запросов (в миллисекундах)

    "modal.headerBack": "danger",  // цвет верхней полоски в модальном окне
    "modal.bodyBack": "warning",   // цвет тела модального окна
    "modal.footerBack": "success", // цвет нижней части модального окна.

    "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
    "search.delay": 3000,  // через сколько мс начнет запускаться глобальный поиск
    "search.minLength": 5, // кол-во символов в поиске  с которого запускается поиск
    "system.excludeExceptions": /Client Closed Request|1111/g, // какие JS ошибки не логировать
    // настройки для signalR уведомления
    "notifications.alertType": "info",  // вид вид уведомления SignalR
    "notifications.alertIcon": "fa fa-bell", // иконка уведомления
    "notifications.alertDelay": 100000, // как долго будет висеть уведомление
    "notifications.alertShowUserFrom": true // если true  - то будет показываться юзер, от которого пришло уведомление
}

Для использования настроек в JS разработке следует использовать функцию as.option(code, defValue)

Главные горячие клавиши

  • Ctrl + Shift + S - сохранение формы или поля, вызов сохранения в модальном окне
  • Ctrl + Shift + [Num] - вызов одного из элементов меню быстрых действий (вверху) - по номеру расположения в меню
  • Ctrl + Shift + U - очистка storages в браузере (для быстрого решения проблем после обновления)
  • Ctrl + Alt + F - применение фильтра в таблице
  • Ctrl + Alt + N - вызов окна быстрого создания в таблице
  • Shift + Alt + Z - вызов окна быстрых действий
  • Ctrl + Shift + F11 - переключение диалогового окна на полноэкранный режим и обратно

Также есть механизм HotKeys - позволяет задать комбинацию клавиш и селектор элемента, на котором сработает данная комбинация.

Дополнительные элементы настройки

Запуск периодических событий

Универсальный поиск по сайту

Настройка почты

Falcon Space - функциальная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Веб-приложения на MS SQL. Партнерская программа для разработчиков и веб-студий

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space, используя только SQL и HTML.
Смотреть примеры с кодом SQL
Документация по платформе

Google поиск по нашей документации