Организуем интерфейс для слабовидящих пользователей

Материал из Umicms
Версия от 12:01, 22 августа 2013; Williwaw (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 2.9.1

Задача: Организовать интерфейс для слабовидящих пользователей с возможностью увеличения и уменьшения. При перезагрузке страницы выбранный размер шрифта не должен сбрасываться.

Решение: Одним из наиболее удобных решений для этой задачи является использование JavaScript фреймворка jQuery. Поскольку он используется в UMI.CMS по-умолчанию нам остаётся написать только небольшой скрипт для управления шрифтом и подключить его к основному шаблону.
Текст скрипта:

$(document).ready(function() {

    // Оригинальный шрифт
    var originalFontSize = $('body').css('font-size');

    // Настройки cookie
    var cookieSettings = {
        expires: 7,
        path: '/',
        name: 'zoomText'    
    };
    
    // Если есть cookie - загружаем настройки шрифта
    if($.cookie != undefined && $.cookie(cookieSettings.name) != null) {
        var size = $.cookie(cookieSettings.name);
        $('body').css({fontSize: size + (size.indexOf('px') != -1 ? '' : 'px')}); // IE fix
    }
    
    // Сброс шрифта
    $('.resetFont').click(function() {
        $('body').css('font-size', originalFontSize);
        $.cookie != undefined ? $.cookie(cookieSettings.name, originalFontSize, cookieSettings) : '';
        return false;
    });
    
    // Увеличение шрифта
    $('.incFont').click(function() {
        var newFontSizeNum = (parseFloat($('body').css('font-size'), 10) * 1.2);
        var newFontSizeStr = newFontSizeNum.toString().slice(0, 4);
        $('body').css('font-size', newFontSizeStr);
        $.cookie != undefined ? $.cookie(cookieSettings.name, newFontSizeStr, cookieSettings) : '';
        return false;
    });
    
    // Уменьшение шрифта
    $('.decFont').click(function() {
        var newFontSizeNum = (parseFloat($('body').css('font-size'), 10) * 0.8);
        var newFontSizeStr = newFontSizeNum.toString().slice(0, 4);
        $('body').css('font-size', newFontSizeStr);
        $.cookie != undefined ? $.cookie(cookieSettings.name, newFontSizeStr, cookieSettings) : '';
        return false;
    });
    
});

Сохраним текст скрипта, например, в файле с названием «zoomtext.js» в папке «/js/». Далее нам нужно подключить скрипт к основному шаблону (например: «default.tpl»). Сделать это можно следующим образом:

<script src="/js/zoomtext.js" type="text/javascript" charset="utf-8"></script>

После чего остаётся только разместить в шаблоне ссылки/кнопки для управления шрифтом:

<div id="zoomText">
    <a class="incFont" href="#">Увеличить шрифт</a>
    <a class="decFont" href="#">Уменьшить шрифт</a>
    <a class="resetFont" href="#">Сбросить шрифт</a> 
</div>