...

Отображение аватара пользователя в виджете

Тема в разделе "Скрипты и разработка", создана пользователем vyimova, 31 авг 2023.

  1. vyimova

    vyimova Участник

    Создадим страницу в разделе. Перейдем в ее конструктор. Создадим виджет-код на странице. В нем пропишем HTML-код с классом для вывода аватара, стили для него, а также JS-код с вызовом функции loadPicture() из клиентского сценария. Стили можно задать на свое усмотрение.
    Код:
    
    <div class="profile-user-info-img"></div>

    <
    style>
    .
    profile-user-info-img {
      
    background: #a3a3a3;
      
    border-radius: 50%;
      
    width: 100px;
      
    height: 100px;
      
    font-style: normal;
      
    font-weight: normal;
      
    font-size: 14px;
      
    line-height: 22px;
      
    color: #FFFFFF;
      
    text-transform: uppercase;
      
    margin-right: 8px;
      
    display: flex;
      
    align-items: center;
      
    margin-top: 4px;
    }
    </
    style>

    <
    script>
        $(
    document).ready(function(){
            <%= 
    Scripts%>.renderPage();
        });
    </script>
    В конструкторе страницы перейдем на вкладку «Сценарии». Создадим клиентский сценарий:
    Код:
    
    // объявление необходимых констант и переменных
    declare const console: any;
    declare const 
    window: any;
    declare const 
    document: any;

    let userPicture: ImageItem|undefined = undefined;
    let userFirstName: string;
    let userProfileImgEl: any;

    // проверка загрузки элемента для вывода данных
    async function renderPage(){
        
    console.log("Рендер");
        
    let myInterval = window.setInterval(async() => {
            
    userProfileImgEl = document.querySelector('.profile-user-info-img');
            if (
    userProfileImgEl) {
                
    window.clearInterval(myInterval);
                
    await loadPicture();
            }
        }, 
    200);
    }

    // функция отображения аватара пользователя
    async function loadPicture(){
        
    // получение текущего пользователя
        
    const currentUser = await System.users.getCurrentUser();

        if (
    currentUser){
            
    // получение элемента аватара текущего пользователя
            
    userPicture = currentUser.data.avatar;
            
    // вывод аватара пользователя на странице, если он заполнен
            
    if (userPicture) {
                
    // получение ссылки на изображение и настройка отображения через стили
                
    let userAvatarLink = await userPicture.getDownloadUrl();
                
    userProfileImgEl.style.background = `url('${userAvatarLink}')`;
                
    userProfileImgEl.style.backgroundSize = 'contain';
            }
            else {
                
    // если аватар не заполнен, выводится первая буква имени
                
    userProfileImgEl.textContent = currentUser.data.fullname ? currentUser.data.fullname.firstname[0] : "";
            }
        }
    }
    В этом коде мы сперва проверяем, что все нужные элементы на странице загружены, далее находим текущего пользователя, получаем URL на его аватар и выводим его в элемент, который задали в HTML-коде.

    Если все настроено правильно, то на странице у нас отобразится аватар текущего пользователя:

    [​IMG]

    При размещении аналогичного кода на странице портала:

    [​IMG]

    Подобным же образом можно настроить отображение аватара внешнего пользователя.

    Создадим внешнего пользователя в приложении «Внешние пользователи», добавим изображение в поле «Аватар», пригласим этого пользователя на портал.

    [​IMG]

    Теперь, если он зайдет на страницу портала, где выводится аватар, то выведется изображение, которое мы добавили в настройках элемента.


    [​IMG]

    Таким образом, можно настроить отображение аватара внутреннего пользователя на странице раздела или портала или отображение аватара внешнего пользователя на портале.
    Последнее редактирование: 31 авг 2023