Как внедрить форму настроек внешнего вида сайта
Что хочется
Чтобы пользователь (администратор системы) мог сам настраивать внешний вид отдельных элементов.
По умолчанию исходим из того, что человек не владеет CSS для изменения дизайна (эта возможность и раньше была в системе у editor).
Необходимо реализовать интерфейс, который позволит изменять внешний вид системы. Например, такой:
Как это сделать
Мы задествуем особенность формирования CSS стилей платформы. Пользовательский файл берется из настройки globalCSS. Мы можем добавить к ней настройку autoGlogalCSS и генерировать CSS для данной настройки исходя из файлы настроек дизайна.
Таким образом, форма будет сохранять настройки интерфейса, а также генерировать CSS для указанных пользователем настроек дизайна.
Реализация системы настроек дизайна сайта
Создаем таблицу для хранения настроек
CREATE TABLE [dbo].[as_designSettings](
[id] [int] IDENTITY(1,1) NOT NULL,
[code] [nvarchar](64) NULL,
[value] [nvarchar](128) NULL,
CONSTRAINT [PK_as_designSettings] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Создаем специальные процедуры/функции для хранения, выдачи настроек, а также форму designSettings.
Функция получения настройки дизайна:
CREATE OR ALTER FUNCTION [dbo].as_design_getSetting
(
@code nvarchar(128),
@value nvarchar(max)
)
RETURNS nvarchar(max) as
BEGIN
declare @s nvarchar(max) = isnull((select value from as_designSettings where code= @code), @value)
return @s
END
Процедура сохранения отдельной настройки дизайна:
CREATE OR ALTER PROCEDURE [dbo].[as_design_saveSetting]
@code nvarchar(64),
@value nvarchar(128)
AS
BEGIN
declare @id int =(select top 1 id from as_designSettings where code=@code)
if(@id is null)
insert into as_designSettings(code, value) values(@code, @value)
else
update as_designSettings set value = @value where id = @id
END
Форма GetItem:
CREATE PROCEDURE [dbo].[fm_designSettings_getItem]
@itemID int,
@username nvarchar(256)
AS
BEGIN
-- SELECT 1
select
dbo.as_design_getSetting('breadcrumbShadow', '') breadcrumbShadow,
dbo.as_design_getSetting('menuIconSize', '') menuIconSize,
dbo.as_design_getSetting('topBackground', '') topBackground,
dbo.as_design_getSetting('background', '') background,
dbo.as_design_getSetting('menuBackground', '') menuBackground,
dbo.as_design_getSetting('fontSize', '') fontSize,
dbo.as_design_getSetting('hideScrollTopButton', '') hideScrollTopButton,
dbo.as_design_getSetting('round', '') round,
dbo.as_design_getSetting('breadcrumbBackground', '') breadcrumbBackground,
dbo.as_design_getSetting('colorLink', '') colorLink
-- SELECT 2
select 'h3' headerTag
END
Форма SaveItem (процедура сохраняет настройки и вызывает генерацию CSS для настроек):
CREATE PROCEDURE [dbo].[fm_designSettings_saveItem]
@username nvarchar(256),
@itemID int,
@parameters ExtendedDictionaryParameter READONLY
AS
BEGIN
declare @breadcrumbShadow nvarchar(max)= (select Value2 from @parameters where [key]='breadcrumbShadow')
declare @menuIconSize nvarchar(max)= (select Value2 from @parameters where [key]='menuIconSize')
declare @topBackground nvarchar(max)= (select Value2 from @parameters where [key]='topBackground')
declare @background nvarchar(max)= (select Value2 from @parameters where [key]='background')
declare @menuBackground nvarchar(max)= (select Value2 from @parameters where [key]='menuBackground')
declare @fontSize nvarchar(max)= (select Value2 from @parameters where [key]='fontSize')
declare @hideScrollTopButton nvarchar(max)= (select Value2 from @parameters where [key]='hideScrollTopButton')
declare @round nvarchar(max)= (select Value2 from @parameters where [key]='round')
declare @breadcrumbBackground nvarchar(max)= (select Value2 from @parameters where [key]='breadcrumbBackground')
declare @colorLink nvarchar(max)= (select Value2 from @parameters where [key]='colorLink')
exec as_design_saveSetting @code= 'breadcrumbShadow', @value= @breadcrumbShadow
exec as_design_saveSetting @code= 'menuIconSize', @value= @menuIconSize
exec as_design_saveSetting @code= 'topBackground', @value= @topBackground
exec as_design_saveSetting @code= 'background', @value= @background
exec as_design_saveSetting @code= 'menuBackground', @value= @menuBackground
exec as_design_saveSetting @code= 'fontSize', @value= @fontSize
exec as_design_saveSetting @code= 'hideScrollTopButton', @value= @hideScrollTopButton
exec as_design_saveSetting @code= 'round', @value= @round
exec as_design_saveSetting @code= 'breadcrumbBackground', @value= @breadcrumbBackground
exec as_design_saveSetting @code= 'colorLink', @value= @colorLink
exec as_design_processSettings
-- SELECT 1
select 1 Result, 'OK' Msg, '' SuccessUrl, 0 HideFormAfterSubmit, '' RefreshContainer, 1 EnableSaveAlert
END
Колонки формы:
Процедура генерации CSS на основе настроек: https://pastebin.com/kAzbbHaM
И последнее - добавляем сгенерированный CSS к статичной настройке. Переходим в админке в Компоненты/Подгружаемые файлы (/rsfiletypes).
Редактируем процедуру для globalCSS:
CREATE PROCEDURE [dbo].[rs_globalCSS_getFile]
@urlParameters DictionaryParameter READONLY,
@username nvarchar(32),
@langID int = 0
AS
BEGIN
declare @s nvarchar(128)
select @s = Value from @urlParameters where [Key] = 'itemID'
declare @globalCSS nvarchar(max) = isnull(dbo.as_setting('globalCSS', ''), '')
declare @autoGlobalCSS nvarchar(max) = isnull(dbo.as_setting('autoGlobalCSS', ''), '')
select top 1 1 Result, '' Msg, @globalCSS + char(10) + char(13) + @autoGlobalCSS Text, 'text/css' MimeType
END
Форму настройки дизайна можно добавить в GetLayout в SELECT 2 для вывода у роли editor:
-- SELECT 2 GetLayout
select 'form' type,'Настройка дизайна' Title, 'designSettings' Code,
'' itemID,'fas fa-cogs' Icon, 'OK' btnText, 1 bigModal,1 slideout,
-140 Ord, 1 FloatPanel, 'info' background
Примечание:
в реализованной форме есть параметр Скругления углов - он влияет не напрямую на CSS, а на спец классы для body, поэтому его обработка идет в GetLayout:
....
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
select ....
@roundClass bodyClass,
....
Google поиск по нашей документации
- Руководства Введение в веб-платформу Falcon Space. C чего начать? Видео о создании личных кабинетов на сайте - веб-платформе Falcon Space Пример создания системы по учету Кадры (HR) на сайте Руководство по юзабилити сайтов на базе Falcon Space. Как улучшить свой сайт Как быстро создать таблицу на сайте Как создать форму на сайте Как создать дашборд в личном кабинете пользователя Установка веб-платформы Falcon Space на сервер/хостинг Как сделать локализацию сайта для нетехнического специалиста Как сделать ежедневную отправку отчета по проекту в групповой чат Telegram? Как отслеживать историю действий пользователя или историю событий по объекту системы Безопасная обработка данных и проверка доступа в хранимых процедурах SEO - Как создать виртуальные страницы с одним шаблоном, но под разные ключи Как улучшить свой код - заметки по ревизии кода на платформе Falcon Space Создание страниц с компонентом таблица/форма с автогенерацией необходимых SQL процедур Использование типовой разметки в виде сниппетов для решения различных задач Как сделать отслеживание посещений сайта конкретными людьми? Программное взаимодействие через API между 2 разными экземплярами Falcon Как улучшить производительность IIS (IIS Perfomance Boost) Как улучшить внешний вид личного кабинета на сайте - элементы стилизации в разметке страниц Falcon Space Рабочее место разработчика через терминал FAQ для системного администратора сервера Как сделать механизм отправки различных писем по шаблону с возможностью редактирования перед отправкой Системный анализ работы сайта на Falcon Space. Профилактика, диагностика работы сайта Как внедрить форму настроек внешнего вида сайта Как сделать аналитический отчет или таблицу на сайте
- Основа Falcon Space
- Основные компоненты
- Возможности Falcon Space
- Подсистемы
- Дополнительные компоненты
- Интеграции
- HOWTO
- HOWTO Таблицы
- HOWTO Формы
- Работа с SQL
- HOWTO JS
- HOWTO CSS
- HOWTO Верстка
- Решение проблем
SQL-инструмент для создания личных кабинетов на сайте

Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом
Это быстрое внесение изменений
по ходу эксплуатации программы. Как создается функционал на платформе
Это простой удобный интерфейс
адаптация под мобильные устройства. Про юзабилити платформы
Веб-приложения на MS SQL. Партнерская программа для разработчиков и веб-студий
Документация по платформе
