master #6
							
								
								
									
										46
									
								
								assets/HypertextPages/chatSettings.nytl.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								assets/HypertextPages/chatSettings.nytl.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					{% ELDEF main JSON pres JSON userinfo %}
 | 
				
			||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="en">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
				
			||||||
 | 
					    <link rel="stylesheet" href="/assets/css/chatSettings.css">
 | 
				
			||||||
 | 
					    <title>Настройки комнаты</title>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					<div class="chat-settings-container">
 | 
				
			||||||
 | 
					    <div class="chat-settings-container-header">
 | 
				
			||||||
 | 
					        <input class="room-name" id="room-name" placeholder="Введите название комнаты..." value="Название комнаты">
 | 
				
			||||||
 | 
					        <button class="changeName" onclick="handleChangeName()">Изменить название</button>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="chat-settings-container-body">
 | 
				
			||||||
 | 
					        <ul id="chat-settings-container-body">
 | 
				
			||||||
 | 
					            <!-- Пример списка участников -->
 | 
				
			||||||
 | 
					            <li id="member-1">Участник 1<button class="remove-member-button" onclick="handleRemoveMember(1)">Удалить</button></li>
 | 
				
			||||||
 | 
					            <li id="member-2">Участник 2<button class="remove-member-button" onclick="handleRemoveMember(2)">Удалить</button></li>
 | 
				
			||||||
 | 
					            <li id="member-3">Участник 3<button class="remove-member-button" onclick="handleRemoveMember(3)">Удалить</button></li>
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="chat-settings-container-invite">
 | 
				
			||||||
 | 
					        <button class="invite-member" onclick="openInvite()">Добавить участника</button>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="overlay" id="add_members">
 | 
				
			||||||
 | 
					    <div class="add-members">
 | 
				
			||||||
 | 
					        <div class="add-members-header">
 | 
				
			||||||
 | 
					            <span class="close" onclick="closeAdd()">×</span>
 | 
				
			||||||
 | 
					            <h2>Добавить участников</h2>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="add-members-body">
 | 
				
			||||||
 | 
					            <input type="text" id="newMemberLogin" placeholder="Логин пользователя">
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="add-members-footer">
 | 
				
			||||||
 | 
					            <button class="add-member-button" onclick="handleAddMember()">Добавить</button>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					<script src="/assets/js/chatSettings.js"></script>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
 | 
					{% ENDELDEF%}
 | 
				
			||||||
							
								
								
									
										163
									
								
								assets/css/chatSettings.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								assets/css/chatSettings.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,163 @@
 | 
				
			|||||||
 | 
					body {
 | 
				
			||||||
 | 
					    font-family: Arial, sans-serif;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    justify-content: center;
 | 
				
			||||||
 | 
					    align-items: center;
 | 
				
			||||||
 | 
					    height: 100vh;
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    background-color: #e5e5e5;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.chat-settings-container {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    max-width: 800px;
 | 
				
			||||||
 | 
					    background-color: white;
 | 
				
			||||||
 | 
					    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    flex-direction: column;
 | 
				
			||||||
 | 
					    border-radius: 8px;
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.chat-settings-container-header {
 | 
				
			||||||
 | 
					    background-color: #007bb5;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    padding: 25px;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    justify-content: center;
 | 
				
			||||||
 | 
					    align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.room-name {
 | 
				
			||||||
 | 
					    font-size: 24px;
 | 
				
			||||||
 | 
					    width: 80%;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					    border-radius: 10px;
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.changeName {
 | 
				
			||||||
 | 
					    padding: 8px 10px;
 | 
				
			||||||
 | 
					    background-color: #28a745;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    border-radius: 20px;
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.changeName:hover {
 | 
				
			||||||
 | 
					    background-color: #005f8c;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.chat-settings-container-body {
 | 
				
			||||||
 | 
					    padding: 15px;
 | 
				
			||||||
 | 
					    background-color: #f7f7f7;
 | 
				
			||||||
 | 
					    flex: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#chat-settings-container-body {
 | 
				
			||||||
 | 
					    list-style-type: none;
 | 
				
			||||||
 | 
					    padding: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#chat-settings-container-body li {
 | 
				
			||||||
 | 
					    margin-bottom: 10px;
 | 
				
			||||||
 | 
					    background-color: white;
 | 
				
			||||||
 | 
					    padding: 10px;
 | 
				
			||||||
 | 
					    border-radius: 8px;
 | 
				
			||||||
 | 
					    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.remove-member-button {
 | 
				
			||||||
 | 
					    background-color: red;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					    padding: 5px 10px;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					    margin-left: 10px;
 | 
				
			||||||
 | 
					    border-radius: 4px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.remove-member-button:hover {
 | 
				
			||||||
 | 
					    background-color: darkred;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.chat-settings-container-invite {
 | 
				
			||||||
 | 
					    padding: 15px;
 | 
				
			||||||
 | 
					    background-color: white;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.invite-member {
 | 
				
			||||||
 | 
					    padding: 10px 20px;
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					    background-color: #28a745;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    border-radius: 20px;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					    transition: background-color 0.3s ease;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.invite-member:hover {
 | 
				
			||||||
 | 
					    background-color: #218838;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.overlay {
 | 
				
			||||||
 | 
					    display: none;
 | 
				
			||||||
 | 
					    position: fixed;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    left: 0;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    height: 100%;
 | 
				
			||||||
 | 
					    background-color: rgba(0, 0, 0, 0.5);
 | 
				
			||||||
 | 
					    justify-content: center;
 | 
				
			||||||
 | 
					    align-items: center;
 | 
				
			||||||
 | 
					    z-index: 1000;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.add-members {
 | 
				
			||||||
 | 
					    background-color: white;
 | 
				
			||||||
 | 
					    padding: 30px;
 | 
				
			||||||
 | 
					    border-radius: 8px;
 | 
				
			||||||
 | 
					    box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    max-width: 400px;
 | 
				
			||||||
 | 
					    text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.add-members-header {
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    margin-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.add-members-header h2 {
 | 
				
			||||||
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.close {
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    right: 10px;
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    font-size: 24px;
 | 
				
			||||||
 | 
					    font-weight: bold;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.add-members-body input {
 | 
				
			||||||
 | 
					    width: 95%;
 | 
				
			||||||
 | 
					    padding: 10px;
 | 
				
			||||||
 | 
					    margin-bottom: 20px;
 | 
				
			||||||
 | 
					    border: 1px solid #ddd;
 | 
				
			||||||
 | 
					    border-radius: 4px;
 | 
				
			||||||
 | 
					    margin-right: 15%;
 | 
				
			||||||
 | 
					    outline: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.add-member-button {
 | 
				
			||||||
 | 
					    padding: 10px 20px;
 | 
				
			||||||
 | 
					    border: none;
 | 
				
			||||||
 | 
					    background-color: #007bb5;
 | 
				
			||||||
 | 
					    color: white;
 | 
				
			||||||
 | 
					    border-radius: 20px;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					    outline: none;
 | 
				
			||||||
 | 
					    transition: background-color 0.3s ease;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.add-member-button:hover {
 | 
				
			||||||
 | 
					    background-color: #005f8c;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										146
									
								
								assets/js/chatSettings.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								assets/js/chatSettings.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,146 @@
 | 
				
			|||||||
 | 
					const chatId = 123;
 | 
				
			||||||
 | 
					let localHistoryId = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function handleChangeName() {
 | 
				
			||||||
 | 
					    const newName = document.getElementById('room-name').value;
 | 
				
			||||||
 | 
					    changeChatName(chatId, localHistoryId, newName).then(() => {
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					function handleAddMember() {
 | 
				
			||||||
 | 
					    const login = document.getElementById('newMemberLogin').value;
 | 
				
			||||||
 | 
					    if (login) {
 | 
				
			||||||
 | 
					        addMemberToChat(chatId, localHistoryId, login).then(() => {
 | 
				
			||||||
 | 
					            const list = document.getElementById("chat-settings-container-body");
 | 
				
			||||||
 | 
					            const listItem = document.createElement("li");
 | 
				
			||||||
 | 
					            listItem.textContent = login;
 | 
				
			||||||
 | 
					            list.appendChild(listItem);
 | 
				
			||||||
 | 
					            closeAdd();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					function handleRemoveMember(userId) {
 | 
				
			||||||
 | 
					    removeMemberFromChat(chatId, localHistoryId, userId).then(() => {
 | 
				
			||||||
 | 
					        const listItem = document.getElementById(`member-${userId}`);
 | 
				
			||||||
 | 
					        if (listItem) {
 | 
				
			||||||
 | 
					            listItem.remove();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					function openInvite() {
 | 
				
			||||||
 | 
					    document.getElementById("add_members").style.display = "flex";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function closeAdd() {
 | 
				
			||||||
 | 
					    document.getElementById("add_members").style.display = "none";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function updateChat() {
 | 
				
			||||||
 | 
					    pollChatEvents(chatId, localHistoryId).then(() => {
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					document.addEventListener('DOMContentLoaded', () => {
 | 
				
			||||||
 | 
					    updateChat();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					async function changeChatName(chatId, localHistoryId, newName) {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const response = await fetch('/api/changeChatName', {
 | 
				
			||||||
 | 
					            method: 'POST',
 | 
				
			||||||
 | 
					            headers: {
 | 
				
			||||||
 | 
					                'Content-Type': 'application/json',
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            body: JSON.stringify({
 | 
				
			||||||
 | 
					                chatUpdReq: {
 | 
				
			||||||
 | 
					                    chatId: chatId,
 | 
				
			||||||
 | 
					                    LocalHistoryId: localHistoryId
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                content: {
 | 
				
			||||||
 | 
					                    name: newName
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        const data = await response.json();
 | 
				
			||||||
 | 
					        if (data.status === 0) {
 | 
				
			||||||
 | 
					            console.log('Название комнаты успешно изменено');
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            console.error('Ошибка при изменении названия комнаты:', data.error);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        console.error('Ошибка сети при изменении названия комнаты:', error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					async function addMemberToChat(chatId, localHistoryId, nickname) {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const response = await fetch('/api/addMemberToChat', {
 | 
				
			||||||
 | 
					            method: 'POST',
 | 
				
			||||||
 | 
					            headers: {
 | 
				
			||||||
 | 
					                'Content-Type': 'application/json',
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            body: JSON.stringify({
 | 
				
			||||||
 | 
					                chatUpdReq: {
 | 
				
			||||||
 | 
					                    chatId: chatId,
 | 
				
			||||||
 | 
					                    LocalHistoryId: localHistoryId
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                nickname: nickname
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        const data = await response.json();
 | 
				
			||||||
 | 
					        if (data.status === 0) {
 | 
				
			||||||
 | 
					            console.log('Участник успешно добавлен');
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            console.error('Ошибка при добавлении участника:', data.error);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        console.error('Ошибка сети при добавлении участника:', error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function removeMemberFromChat(chatId, localHistoryId, userId) {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const response = await fetch('/api/removeMemberFromChat', {
 | 
				
			||||||
 | 
					            method: 'POST',
 | 
				
			||||||
 | 
					            headers: {
 | 
				
			||||||
 | 
					                'Content-Type': 'application/json',
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            body: JSON.stringify({
 | 
				
			||||||
 | 
					                chatUpdReq: {
 | 
				
			||||||
 | 
					                    chatId: chatId,
 | 
				
			||||||
 | 
					                    LocalHistoryId: localHistoryId
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                userId: userId
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        const data = await response.json();
 | 
				
			||||||
 | 
					        if (data.status === 0) {
 | 
				
			||||||
 | 
					            console.log('Участник успешно удален');
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            console.error('Ошибка при удалении участника:', data.error);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        console.error('Ошибка сети при удалении участника:', error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					async function pollChatEvents(chatId, localHistoryId) {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const response = await fetch('/api/chatPollEvents', {
 | 
				
			||||||
 | 
					            method: 'POST',
 | 
				
			||||||
 | 
					            headers: {
 | 
				
			||||||
 | 
					                'Content-Type': 'application/json',
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            body: JSON.stringify({
 | 
				
			||||||
 | 
					                chatUpdReq: {
 | 
				
			||||||
 | 
					                    chatId: chatId,
 | 
				
			||||||
 | 
					                    LocalHistoryId: localHistoryId
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        const data = await response.json();
 | 
				
			||||||
 | 
					        if (data.status === 0) {
 | 
				
			||||||
 | 
					            console.log('События чата успешно обновлены');
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            console.error('Ошибка при обновлении событий чата:', data.error);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        console.error('Ошибка сети при обновлении событий чата:', error);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user