...

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

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

  1. vyimova

    vyimova Участник

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

    <
    style>
    .
    profile-user-info-img {
      
    background#a3a3a3;
      
    border-radius50%;
      
    width100px;
      
    height100px;
      
    font-stylenormal;
      
    font-weightnormal;
      
    font-size14px;
      
    line-height22px;
      
    color#FFFFFF;
      
    text-transformuppercase;
      
    margin-right8px;
      
    displayflex;
      
    align-itemscenter;
      
    margin-top4px;
    }
    </
    style>

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

    let userPictureImageItem|undefined undefined;
    let userFirstNamestring;
    let userProfileImgElany;

    // проверка загрузки элемента для вывода данных
    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