Advertisement
Thunder-Menu

Chat_W3.html

Nov 2nd, 2023
1,102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 14.48 KB | Source Code | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3.  
  4. <head>
  5.     <meta charset="UTF-8">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>Emoji Chat</title>
  8.     <style>
  9.         body {
  10.             font-family: Arial, sans-serif;
  11.             display: flex;
  12.             flex-direction: column;
  13.             align-items: center;
  14.             justify-content: center;
  15.             height: 100vh;
  16.             margin: 0;
  17.         }
  18.  
  19.         #chat-box {
  20.             width: 70%;
  21.             max-height: 400px;
  22.             border: 1px solid #ccc;
  23.             overflow-y: scroll;
  24.             padding: 10px;
  25.             float: left;
  26.             clear: both;
  27.         }
  28.  
  29.         #controls {
  30.             width: 30%;
  31.             padding: 10px;
  32.             box-sizing: border-box;
  33.             display: flex;
  34.             flex-direction: column;
  35.             gap: 10px;
  36.         }
  37.  
  38.         #message-controls {
  39.             display: flex;
  40.             flex-direction: column;
  41.             gap: 10px;
  42.         }
  43.  
  44.         #emoji-list {
  45.             display: none;
  46.             flex-wrap: wrap;
  47.             gap: 5px;
  48.             padding-top: 10px;
  49.             border-top: 1px solid #ccc;
  50.             position: absolute;
  51.             background-color: white;
  52.             z-index: 1;
  53.         }
  54.  
  55.         .emoji {
  56.             cursor: pointer;
  57.             width: 20px;
  58.             height: 20px;
  59.         }
  60.  
  61.         .chat-message {
  62.             margin-bottom: 5px;
  63.         }
  64.  
  65.         .username-label {
  66.             cursor: pointer;
  67.             text-decoration: underline;
  68.         }
  69.  
  70.         .user-options {
  71.             display: none;
  72.             flex-direction: column;
  73.             gap: 10px;
  74.             position: absolute;
  75.             background-color: white;
  76.             z-index: 1;
  77.             padding: 10px;
  78.         }
  79.     </style>
  80. </head>
  81.  
  82. <body>
  83.     <h1>Emoji Chat</h1>
  84.     <div id="chat-box"></div>
  85.     <div id="controls">
  86.         <div id="message-controls">
  87.             <textarea id="message-input" rows="5" cols="40" placeholder="Message"></textarea>
  88.             <button id="emoji-button">Emojis</button>
  89.             <button onclick="sendMessage()">Envoyer</button>
  90.             <textarea id="username" placeholder="Nom d'utilisateur"></textarea>
  91.             <select id="user-list" size="5"></select>
  92.             <button id="delete-button" onclick="deleteConfig()">Supprimer la configuration</button>
  93.         </div>
  94.  
  95.     <div id="emoji-list"></div>
  96.     <div id="admin-controls" style="display: none;">
  97.         <h2>Exclure un Utilisateur</h2>
  98.         <label for="usernameExclude">Nom d'utilisateur à exclure :</label>
  99.         <input type="text" id="usernameExclude">
  100.         <button id="exclude-button">Exclure</button>
  101.  
  102.         <h2>Vérifier et Supprimer les Exclusions</h2>
  103.         <label for="usernameCheck">Nom d'utilisateur :</label>
  104.         <input type="text" id="usernameCheck">
  105.         <button id="check-button">Vérifier</button>
  106.         <div id="result"></div>
  107.         <label for="excludedUsers">Utilisateurs exclus :</label>
  108.         <select id="excludedUsers"></select>
  109.         <button id="remove-button">Supprimer l'exclusion</button>
  110.     </div>
  111. </div>
  112.  
  113.     <script>
  114.         const chatBox = document.getElementById("chat-box");
  115.         const userList = document.getElementById("user-list");
  116.         const usernameInput = document.getElementById("username");
  117.         const messageInput = document.getElementById("message-input");
  118.         const emojiButton = document.getElementById("emoji-button");
  119.         const emojiList = document.getElementById("emoji-list");
  120.         const deleteButton = document.getElementById("delete-button");
  121.  
  122.         const userLabel = document.createElement("label");
  123.         userLabel.className = "username-label";
  124.         const savedUsername = localStorage.getItem("chatUsername");
  125.         userLabel.textContent = savedUsername || "Changer le nom d'utilisateur";
  126.         userLabel.addEventListener("click", openUserOptions);
  127.         document.body.insertBefore(userLabel, document.getElementById("chat-box"));
  128.  
  129.         const userOptionsContainer = document.createElement("div");
  130.         userOptionsContainer.className = "user-options";
  131.         userOptionsContainer.style.left = userLabel.offsetLeft + "px";
  132.         userOptionsContainer.style.top = userLabel.offsetTop + userLabel.offsetHeight + "px";
  133.         document.body.appendChild(userOptionsContainer);
  134.  
  135.         const emojis = ["😀", "😄", "😁", "😆", "😅", "🤣", "😂", "🙂", "🙃", "😉"];
  136.         emojis.forEach(emoji => {
  137.             const emojiElement = document.createElement("span");
  138.             emojiElement.className = "emoji";
  139.             emojiElement.textContent = emoji;
  140.             emojiElement.addEventListener("click", () => insertEmoji(emoji));
  141.             emojiList.appendChild(emojiElement);
  142.         });
  143.  
  144.         emojiButton.addEventListener("click", toggleEmojiList);
  145.  
  146.         function toggleEmojiList() {
  147.             emojiList.style.display = emojiList.style.display === "block" ? "none" : "block";
  148.         }
  149.  
  150. function sendMessage() {
  151.     const message = messageInput.value;
  152.  
  153.     if (message === "!More") {
  154.         document.getElementById("admin-controls").style.display = "block";
  155.         return;
  156.     }
  157.     if (currentUser && message) {
  158.        const newMessage = document.createElement("div");
  159.         newMessage.className = "chat-message";
  160.         newMessage.innerHTML = `<strong>${currentUser}:</strong> ${message}`;
  161.         chatBox.appendChild(newMessage);
  162.         saveMessage(currentUser, message);
  163.         messageInput.value = "";
  164.   updateUserLastActive(currentUser);
  165.     }
  166. }
  167.  
  168.  
  169.  
  170.  
  171.         function insertEmoji(emoji) {
  172.             messageInput.focus();
  173.             const startPosition = messageInput.selectionStart;
  174.             const endPosition = messageInput.selectionEnd;
  175.             const textBefore = messageInput.value.substring(0, startPosition);
  176.             const textAfter = messageInput.value.substring(endPosition);
  177.             messageInput.value = `${textBefore}${emoji}${textAfter}`;
  178.             messageInput.setSelectionRange(startPosition + emoji.length, startPosition + emoji.length);
  179.             emojiList.style.display = "none";
  180.         }
  181.  
  182.         function deleteConfig() {
  183.             localStorage.removeItem("chatUsers");
  184.             localStorage.removeItem("chatUsername");
  185.             localStorage.removeItem("chatMessages");
  186.             userList.innerHTML = "";
  187.             deleteButton.style.display = "none";
  188.             usernameInput.style.display = "block";
  189.             loadUserList();
  190.         }
  191.  
  192.         function loadUserList() {
  193.             userList.innerHTML = "";
  194.     const onlineUsers = getOnlineUsers();
  195.     onlineUsers.forEach(user => {
  196.         addUserToComboBox(user);
  197.     });
  198.             const savedUsers = JSON.parse(localStorage.getItem("chatUsers")) || [];
  199.             savedUsers.forEach(user => {
  200.                 addUserToComboBox(user);
  201.             });
  202.  
  203.             if (savedUsers.length > 0) {
  204.                 deleteButton.style.display = "block";
  205.             }
  206. if (savedUsername) {
  207.     userList.value = savedUsername;
  208. }
  209.  
  210. }
  211. let currentUser = "";
  212.  
  213. function addUserToComboBox(username) {
  214.     const optionExists = [...userList.options].some(option => option.value === username);
  215.     if (!optionExists) {
  216.         const newUserOption = new Option(username, username);
  217.         userList.appendChild(newUserOption);
  218.     }
  219.     currentUser = username;
  220. }
  221.  
  222.  
  223.  
  224.         function saveUser(user) {
  225.             const savedUsers = JSON.parse(localStorage.getItem("chatUsers")) || [];
  226.             if (!savedUsers.includes(user)) {
  227.                 savedUsers.push(user);
  228.                 localStorage.setItem("chatUsers", JSON.stringify(savedUsers));
  229.                 loadUserList();
  230.             }
  231.         }
  232.  
  233.         if (savedUsername) {
  234.             usernameInput.style.display = "none";
  235.             saveUser(savedUsername);
  236.         }
  237.  
  238.         usernameInput.addEventListener("blur", () => {
  239.             const newUsername = usernameInput.value.trim();
  240.             if (newUsername) {
  241.                 usernameInput.style.display = "none";
  242.                 saveUser(newUsername);
  243.                 localStorage.setItem("chatUsername", newUsername);
  244.                 userLabel.textContent = newUsername;
  245.             }
  246.         });
  247.  
  248.         loadMessages();
  249.  
  250. function loadMessages() {
  251.     chatBox.innerHTML = ''; // Vider la boîte de chat
  252.     const savedMessages = JSON.parse(localStorage.getItem("chatMessages")) || {};
  253.     Object.keys(savedMessages).forEach(user => {
  254.         savedMessages[user].forEach(message => {
  255.             const newMessage = document.createElement("div");
  256.             newMessage.className = "chat-message";
  257.             newMessage.innerHTML = `<strong>${user}:</strong> ${message}`;
  258.             chatBox.appendChild(newMessage);
  259.         });
  260.     });
  261. }
  262.  
  263.  
  264.         function saveMessage(user, message) {
  265.             const savedMessages = JSON.parse(localStorage.getItem("chatMessages")) || {};
  266.             if (!savedMessages[user]) {
  267.                 savedMessages[user] = [];
  268.             }
  269.             savedMessages[user].push(message);
  270.             localStorage.setItem("chatMessages", JSON.stringify(savedMessages));
  271.         }
  272.  
  273.         loadUserList();
  274.  
  275.         function openUserOptions() {
  276.             userOptionsContainer.style.display = "block";
  277.             const setUsernameOption = document.createElement("button");
  278.             setUsernameOption.textContent = "Changer le nom d'utilisateur";
  279.             setUsernameOption.addEventListener("click", changeUsername);
  280.             userOptionsContainer.appendChild(setUsernameOption);
  281.  
  282.             const deleteUserOption = document.createElement("button");
  283.             deleteUserOption.textContent = "Supprimer la configuration";
  284.             deleteUserOption.addEventListener("click", deleteConfig);
  285.             userOptionsContainer.appendChild(deleteUserOption);
  286.  
  287.             document.addEventListener("click", (e) => {
  288.                 if (!userOptionsContainer.contains(e.target) && e.target !== userLabel) {
  289.                    userOptionsContainer.style.display = "none";
  290.                     setUsernameOption.remove();
  291.                     deleteUserOption.remove();
  292.                 }
  293.             });
  294.         }
  295.  
  296.         function changeUsername() {
  297.             usernameInput.style.display = "block";
  298.             usernameInput.value = savedUsername;
  299.             userOptionsContainer.style.display = "none";
  300.         }
  301.  
  302.     let excludedUsers = JSON.parse(localStorage.getItem("excludedUsers")) || [];
  303.     const excludedUsersSelect = document.getElementById("excludedUsers");
  304.     const resultDiv = document.getElementById("result");
  305.     const excludeButton = document.getElementById("exclude-button");
  306.     const checkButton = document.getElementById("check-button");
  307.  
  308.     if (excludedUsers.includes(localStorage.getItem("chatUsername"))) {
  309.             document.body.innerHTML = '<a href="about:blank">Vous avez été exclu</a>';
  310.             throw new Error("L'utilisateur est exclu"); // Arrêter l'exécution du script
  311.     }
  312.  
  313.         function refreshExcludedUsersOptions() {
  314.             excludedUsersSelect.innerHTML = "";
  315.             excludedUsers.forEach(username => {
  316.                 const option = document.createElement("option");
  317.                 option.text = username;
  318.                 excludedUsersSelect.add(option);
  319.             });
  320.         }
  321.  
  322.         excludeButton.addEventListener("click", excludeUser);
  323.  
  324.         function excludeUser() {
  325.             const usernameInput = document.getElementById("usernameExclude");
  326.             const username = usernameInput.value.trim();
  327.             if (username) {
  328.                 excludedUsers.push(username);
  329.                 localStorage.setItem("excludedUsers", JSON.stringify(excludedUsers));
  330.                 usernameInput.value = "";
  331.                 refreshExcludedUsersOptions();
  332.                 resultDiv.innerHTML = "<h2>Utilisateur exclu avec succès !</h2>";
  333.             }
  334.         }
  335.  
  336.         checkButton.addEventListener("click", () => {
  337.             const username = document.getElementById("usernameCheck").value.trim();
  338.             if (excludedUsers.includes(username)) {
  339.                 resultDiv.innerHTML = "<h2>Utilisateur exclu</h2>";
  340.             } else {
  341.                 resultDiv.innerHTML = "<h2>Utilisateur non exclu</h2>";
  342.             }
  343.         });
  344.  
  345.         refreshExcludedUsersOptions();
  346.  
  347.         const removeButton = document.getElementById("remove-button");
  348.  
  349.         removeButton.addEventListener("click", () => {
  350.             const selectedUsername = excludedUsersSelect.value;
  351.             if (selectedUsername) {
  352.                 const index = excludedUsers.indexOf(selectedUsername);
  353.                 if (index !== -1) {
  354.                     excludedUsers.splice(index, 1);
  355.                     localStorage.setItem("excludedUsers", JSON.stringify(excludedUsers));
  356.                     refreshExcludedUsersOptions();
  357.                     resultDiv.innerHTML = "<h2>Exclusion supprimée avec succès !</h2>";
  358.                 }
  359.             }
  360.         });
  361.  
  362.  
  363. let lastMessageCount = 0; // Variable pour stocker le nombre de messages la dernière fois qu'ils ont été chargés
  364. const refreshInterval = setInterval(refreshChat, 5000); // 5000ms équivaut à 5 secondes
  365.  
  366. function refreshChat() {
  367.     // Vérifier si un nouvel utilisateur a été banni
  368.     if (excludedUsers.includes(localStorage.getItem("chatUsername"))) {
  369.         document.body.innerHTML = '<a href="about:blank">Vous avez été exclu</a>';
  370.         clearInterval(refreshInterval); // Arrêtez le rafraîchissement si l'utilisateur est exclu.
  371.         return;
  372.     }
  373.  
  374.     loadMessages(); // Charger de nouveaux messages
  375. }
  376. function updateUserLastActive(username) {
  377.     const userLastActive = JSON.parse(localStorage.getItem("userLastActive")) || {};
  378.     userLastActive[username] = Date.now(); // L'heure actuelle en millisecondes
  379.     localStorage.setItem("userLastActive", JSON.stringify(userLastActive));
  380. }
  381. function getOnlineUsers() {
  382.     const userLastActive = JSON.parse(localStorage.getItem("userLastActive")) || {};
  383.     const onlineUsers = [];
  384.     const FIVE_MINUTES = 5 * 1000; // 5 minutes en millisecondes
  385.  
  386.     for (const user in userLastActive) {
  387.         if (Date.now() - userLastActive[user] < FIVE_MINUTES) {
  388.            onlineUsers.push(user);
  389.        }
  390.    }
  391.  
  392.    return onlineUsers;
  393. }
  394.  
  395.  
  396. setInterval(refreshChat, 5000); // Rafraîchir le chat toutes les 5 secondes
  397.  
  398.    </script>
  399.  
  400. </body>
  401.  
  402. </html>
  403.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement