Список изменений
18.09.2023
- Переверстал сайт, теперь всё по последнему слову техники от смартфона до компьютера, красивые шрифты, ссылки на соцсети, кнопка поддержать, в которой пункт доступа к криптосообществу.
16.06.2023
- В функции ff.copy(o,e,v,c,t) и ff.copytext(v,c) добавлены режимы зачистки содержимого
c - отчистить текст
0 по умолчанию - отключено
1 - пробелов в начале и конце, двойных пробелов
2 - 1 + удаляет переносы строки и заменяет & на & | < и < на < | > и > на >
3 - 1 + 2 + вырезает теги
4 - 1 + 2 + 3 но не удалять переносы строк 5 - заменяет & на & | < и < на < | > и > на >
25.04.2023
- Новые функции копирования в буфер обмена (Clipboard) ff.copy(o,e,v,t) и ff.copytext(v).
- Переделан объект fo - выпадающий список [combobox]:
- Выпадающий список при установке фокуса выделяет весь тест, ранее устанавливался в конец.
- Поправлен мелкий баг, после установки фокуса при нажатии стрелки вниз фокус ставился по длине символов, теперь в конец.
- Заметил, что внутреннее значение value сбивалось при установке, поправлено.
- Добавлен стиль, чтоб поле имело привычный курсор .combo.open input[role='combobox']{cursor:auto}
- Поиск при наборе теперь вырезает теги
- Добавлены опции заполнения combobox - div class="combo ...".
Вставлять основной текст combobox:
- по умолчанию текст из option исключая содержимое тега small (в данной структуре он задуман для вспомогательных данных)
- tagout - текст из первого тега
- smallout - текст из первого тега small
- fullout - весь текст
- cutagsout - вырезать все теги с их содержимым, оставить только текст
- valueout - текст из option data-v (значение)
Можно объединять комбинации:
- div class="combo tagout smallout" - текст из 1 тега и тега small
- div class="combo tagout valueout" - текст из 1 тега и значение (option data-v)
- div class="combo cutagsout valueout" - вырежет теги и добавит option data-v
20.01.2023
- Добавил к параметру длительности t возможность указывать минус -400 = отменяет установку фокуса на первую ссылку во время открытия, см. ff.menu()
- Новая функция для установки на объекты (для touch устройств) возможности управлением пальцем (swipe) fd.bindswipe(o,f).
- Слайдер (карусель) [slide] (var fe) и слайдер лента (карусель с блоками внутри) [tape] (var ft) при добавлении класса swipe к блоку (<div class="tape swipe">...</div>), начнёт обрабатывать управление пальцем (swipe) на touch устройствах. В ff.init() внесены соответствующие корректировки.
21.12.2022
- В ff.mes() добавлены возможности:
$| оставить блок в позиции fixed
$0| установить top в 0 (или 20px...)
x| вложить кнопку закрытия внутрь блока class="fbn fbx"
x^myclass^Закрыть [Esc]|
Чтоб кнопка ездила вместе с наполнением .mes .fbn{position:absolute}
- В ff.over() переделана логика, в связи с изменениями выше.
~| в начале - оставить элемент в position:fixed
~0| установить top в 0 (или 20px...)
x| в начале - не создавать кнопку закрытия в блоке подложке overb
18.12.2022
- Заметил что при определённой ситуации бывают двойные срабатывания функций с анимациями типа ff.menu(), расставил блокировки по подобным функциям.
- hash слегка переработана и добавлена возможность задавать время анимации прокручивания к элементу.
- Поправлен вызов при автоматическом скрытии меню в случае подключения hash, теперь он кликает на подложку, тем самым вызывая точную функцию закрытия меню, ранее просто улетал направо..
15.12.2022
- PHP 8.1 подкинул сюрприз, ранее автоматическая конвертации float в int скоро исчезнет: Implicit incompatible float to int conversion is deprecated.
В итоге начались сообщения в функциях на подобии:
imagecreatetruecolor($width, $height);
imagecopyresampled($ic, $i, 0, 0, 0, 0, $width, $height, $w, $h);
Deprecated: Implicit conversion from float 43.735537190082646 to int loses precision in...
Для исправления замените 545, 546 строки в
/a/context/tinymce/plugins/filemanager/index.php
с
$width=$ratio*$w;
$height=$ratio*$h;
на
$width=floor($ratio*$w);
$height=floor($ratio*$h); - Файловый менеджер обучен в момент открытия переходить в конкретную директорию путём добавления скрытого поля:
<input type="hidden" id="filebrowserstart" value="inc/img/team/">
Если указанной директории не существует - создаст.
Соблюдайте синтаксис, слэш / в конце и отсутствие в начале - обязательны! - Были ещё пару правок по мелочам, в целом лучше заменить файловый менеджер целиком, пишите..
13.12.2022
- Немного некорректно сделал в первый раз и не сразу заметил артефакты ff.menu() задание позиции и размеров блока для параметра v при анимации движения. Переделал, теперь всё хорошо.
12.12.2022
- В текущем проекте потребовалось собирать бургер(полоса с меню появляющаяся при прокрутке) по частям из нескольких элементов на разной высоте.. js библиотека, теперь может подхватывать сразу несколько объектов и делать это через элемент на странице с динамической высотой (если позиция "гуляет" от дизйна/разещения экрана устройства), с ещё большей оптимизацией..
Переделана обработка, чтоб без лагов браузера (при прокрутке) на множество элементов, подробнее в мануале [fix]... ff.init({ ... fix:[{e:ff.g('home'), h:w, t:1},{e:o, h:w, t:1} ... }], - ff.menu() добавлена возможность учитывать отступ сверху в случае растягивания блока за счёт абсолютной/фиксированной позиции с отступами с верху и по бокам (ещё один параметр v в конце) (анимация за счёт top, left происходит) при выставлении параметров на подобии:
position:absolute;margin:auto;left:20px;right:20px;top:20px;bottom:20px
(блок растянут на весь экран с отступами) - Решил всё же облегчить до минимализма кнопки закрытия и вперёд/назад (убрал рамки) в модуле fastbox (вывод изображений), плюс побочные модули где используются кнопки закрытия (классы fbn, fbx). CSS шапка по умолчанию изменена!
27.11.2022
- В слайдере (карусели) [slide] (var fe) была поправлена ошибка, новый параметр не срабатывал в одном из случаев, не досмотрел копируя из tape. Добавлен параметр b (before) - функция до начала проигрывания анимации, потребовалось скрывать кнопку за пределами слайдера. А так же добавлен параметр в u - скрывать кнопки управления при анимации. В ff.init() внесены соответствующие изменения.. Плюс были мелкие правки по оптимизации js библиотеки.
20.10.2022
- В ff.menu переработал второй параметр u теперь он при значении 2 будет прилипать к краям игнорируя позицию элемента вызова (для попапов можно использовать).
- Добавлен параметр n (отдать результат без отступов) в функции ff.otly
- Новая функция ff.css, позволяющая изменить свойство в css.
- Новая функция ff.overb, позволяющая менять цвет фона подложки при всплытии ff.menu(), ff.over() ...
18.10.2022
- Сделал дозагрузку элементов в слайдер (карусель) [slide] (var fe), плюс кнопкам навигации можно заменить класс u:'1,leftclass,rightclass'.
Новый параметр при создании слайдера - slide: {e:function(t){newsslide(t)}} Функция выполняется в конце проигрывания.
Добавлено свойство index указывающее каким по счёту в массиве является текущий слайдер ff.slides[index].
Добавлено свойство class чтоб можно было найти необходимый элемент ff.slides[index].class.
Новые функции в объекте и пример как сделать дозагрузку:
go(x) - для быстрого перемещения к блоку без анимации.
update() - пересчитать математику..
В ff.init() внесены соответствующие изменения..
12.10.2022
- Сделал дозагрузку элементов в слайдер ленту (карусель с блоками внутри) [tape] (var ft), плюс кнопкам навигации можно заменить класс и вынести за родительский блок.
Новые параметры при создании слайдера - tape: { u: '1,leftclass,rightclass', e:function(t){ newstape(t) } } Функция выполняется в конце проигрывания.
Добавлено свойство index указывающее каким по счёту в массиве является текущая лента ff.tapes[index].
Добавлено свойство class чтоб можно было найти необходимый элемент ff.tapes[index].class .
Появились новые функции в объекте и пример как сделать дозагрузку:
isend() - конец прокручивания анимации.
update() - пересчитать математику и изменить размеры слайдера..
В ff.init() внесены соответствующие правки..
18.04.2022
- Добавил в библиотеку js объект fx занимающийся анимацией появления блоков для сайтов визиток.
10.04.2022
- Добавил на постоянную основу разметку Open Graph для взаимодействия с социальными сетями, мессенджерами итп. (добавляет картинку итп. информацию в пост)
- Вшил js объект fh (hash) в js ядро, сделал его более отзывчивым в процессе прокрутки, инициализация теперь в общей куче:
ff.onload(function(){
ff.init({
...
hash: 1,//'myclass',
...})}
24.03.2022
- Последние месяцы посвятил изучению крипты, бирж, написал и обкатал функции математики для обработки чисел с 18 знаками после запятой, пока в текущий движок(CMS) их не включал.
- Добавил в библиотеку js объект hash, который использую для одностраничных сайтов, дабы сэмулировать многостраничную структуру для поисковиков.
26.04.2021
- JS модуль fotobox (всплывающий блок показывающий галереи фотографий) обучен свойству scroll и частично переведён на объектную модель flex. При стандартном поведении картинки вмещаются в размер блока и центрируются, при class="foto scroll" вертикальное выравнивание от начала блока и фотографии выводятся во весь размер с полосами прокрутки внутри всплывающего блока.
16.03.2021
- Написал PHP библиотеку обрабатывающую IP адреса. Как банить адреса и диапазоны IPv4, IPv6. Страница для проверки распознавания вводимых диапазонов и преобразования IP адреса.
- Встроена возможность блокировать или разрешать вход в Панель Управления только с определённых IP адресов/диапазонов, задаётся в разделе ПУ Настройки.
- Изменения кода ПУ на предмет сокрытия GET, POST. Сканер безопасности Битрикса сходит с ума не понимая что все запросы проходят верификацию и невозможно пробросить данные извне.
- Небольшие изменения дизайна ПУ
09.02.2021
- В библиотеке js добавлен параметр времени жизни cookie - e (expires), в функцию установки cookie с обновлением страницы, замена параметров сдвинута правее ff.sc(n, v, r, z, s) -> ff.sc(n, v, e, r, z, s)
05.02.2021
Изменения коснулись библиотеки js
- Новая служебная функция получающая значение атрибута и вырезающая атрибут из строки ff.atrcut(s,a)
- Небольшие правки нормализующие onclick и onkeyup в функции ff.mes().
Добавлена проверка на наличие id и подстановка введённого значения без генерации по умолчанию..
|*~id=``myid`` onkeyup=``ff.kd(event, 13, function(){ ff.g(\`mysend\`).click()} )``^txt *|^kbd|
|b~onclick=``my()`` id=``mysend`` ^ txt|
|^kbd| (распознавания языка ввода) теперь можно вешать на любой элемент (ранее только на поле пароля).
Скрытый параметр теперь понимает предназначенные параметры id и name.
|h~name=``myname`` ^ txts ^ myid~value|
- В элементы по которым разрешено перемещаться добавлен combobox, поведение функций перемещения по форме изменено, дополнительно ищет элементы role="button" итп. walke: 'a, button, label, textarea, input, select, combobox'
- Новая переменная g указывающая id или класс элемента на который поставить фокус (по умолчанию - на 1 элемент)
ff.over(t,x,u,c,e,g)
ff.mes(z,t,u,c,e,g)
- ff.sel(o,s,e)
Теперь можно задавать отрицательное начало выделения, т.е. отступить от конца столько-то символов.
ff.sel(o,-1)
Если конец выделения меньше позиции начала, будет автоматически прибавлена позиция начала, таким образом можно не вычислять длину..
ff.sel(o,-1,1) - фокус на предпоследний символ и выделить последний
ff.sel(o,7,1) - фокус на 7 символ и выделить 8-й.
Если подать строку вместо цифры, то s и e возьмут длину строки поля за значение, т.е. произойдёт установка фокуса в конец.
ff.sel(o,2,'e') - каретку на 2 символ и выделить до конца
Дополнительно введена задержка 200мс перед вводом после установки фокуса, заметил бывают сбои и установка происходит в начало. - ff.lim(e,l) l - теперь не обязательный параметр и задаётся равным длине строки, чтоб ей можно было пользоваться для очистки полей без обрезания..
- Упс, накосячил, исправлено - ff.kd занято функцией проверки нажатий клавиш, ff.bind сохранял window.onkeydown по этому же имени ff.kd - переименовано на ff.kn
30.12.2020
- Собирал сайт, заодно проверил работоспособность внесённых изменений, нашёл мелкие недочёты в ПУ сайта и js библиотеке, всё поправлено, движок(CMS) с стабильном состоянии.
- Протестирован и работает на PHP8.
- Кое-какие изменения наименования в языковых пакетах в ПУ admin -> manager.
- Переименованы фалы логов /inc/tpl/inc/
__AdminsActions.log -> actions.log
__Login.log -> login.log
__LoginError.log -> loginerror.log
__tryLogin.log -> trylogin.log - В js добавлен параметр d (duration) в функцию ff.scrto(e,t,y,d), позволяющий задавать длительность анимации прокрутки.
13.11.2020
- Новая функция загрузки языковых пакетов loadl() в index.php. Изменены модули date и zones.
- Модуль date переоформлен перемещён в /deny/mods/ и "разведён" на несколько языков. Переработана функция fdate.
11.11.2020
- PHP 7.3 теперь минимальная версия (из-за глобальных изменений политики безопасности cookie в сети). Так же я начал использовать новый синтаксис.
- Новый модуль выбора часовых поясов zones, для вывода часовых поясов (русифицирован, возможен ошибочный перевод городов (автоперевод)).
Под него в js библиотеке написан новый компонент combobox (см. ниже объект fo={}), с возможностью поиска и адаптацией для слабовидящих. Пример и описание на странице модуля zones.
/index.php
- Переписана функция вывода переменных из языковых пакетов ll()
- Глобально используемая переменная $lang стала $l (подгонка под новую архитектуру в связи с вводом модулей из новой архитектуры в текшую)
- /deny/lang_(ru/en).php изменены, в будущем они уйдут в системную настройку, пока так..
/inc/_.js документация
- Вырос в размере с ~43 Кб до ~50 Кб (49,6 Кб, 50812 б)
- Проведена оптимизация экранирования переменных в регулярных выражениях.
- Удалена функция ff.istouch(), узнать о touch устройстве можно из переменной ff.touch
- И ещё по мелочи разные изменения из-за которых рекомендуется заменить библиотеку (они не критические).
- Сокращены объявленные переменные до (остальные динамически занимаются):
var ff = {
ap: 0,
at: 300,
fse: '',
w: 'walk',
walke: 'a,button,label,textarea,input,select',
...
} - Функция ff.bind(f,u) получила второй параметр u, и теперь умеет задавать window.onkeyup
- Переписана функция ff.dirname(p,l), появилась переменная l ($levels) = 1. Функция теперь ведёт себя подобно PHP-шной.
- Улучшена функция ff.get(n,s), обучена сортировке результата и отдавать массив всех переменных..
- Переделан ff.init(), понадобилось запускать несколько раз обработку одних и тех же элементов. Мудрить не стал, просто через запятую новые объекты перечисляйте.
ff.init({accordion:1},{accordion:'ac2'} - Переделана ff.isf(v) (определяет является ли тип переменной (float))
- Добавлена функция ff.isi(v) (проверяет является ли переменная целым числом (integer))
- ff.mes() - изменения внутренней логики..
- ff.mesend() корректировка - обход загрузки файлов, чтоб не появлялись как поля..
- Переписана функция ff.sc() установки куков с обновлением страницы, теперь умеет удалять/заменять переменные в адресе..
ff.sc('name','value','remove,me'); - ff.tabs() - добавлен атрибут aria-selected, был забыт при написании..
- ff.v() доработана, была выявлена некорректная обработка забора значения при некоторых условиях, приоритет теперь такой:
e.getAttribute('value'), e.value, e.innerHTML; - ff.walkto - мелкие дополнения
- Объект fb = {} под замену из-за переработки ff.init()
- fe {} переделана t.shine()
- Новый объект fo={} обслуживающий аналог стандартных элементов select - combobox с адаптацией для слабовидящих WCAG 2.0, ГОСТ Р 52872-2012.. Поддерживает ручной ввод и поиск текста, подробнее смотрите здесь.
- Объект fs = {} под замену, в процессе наработок нового, случился отвал работоспособности в связи с изменениями функции ff.ae() занимающийся перехватом событий.
25.09.2020
- Продолжается создание новой архитектуры, в рамках версионности мне понадобились функции перевода даты, что привело к написанию нового модуля.
- Константа TIME заменена на T
Список изменений c 2004 по 2020