OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
reader
/
groupchat
/
backup
/
dump
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
08/31/2024 11:08:47 AM
rwxr-xr-x
📄
create_group.php
1006 bytes
08/31/2024 11:08:32 AM
rw-r--r--
📄
db_connect.php
580 bytes
08/31/2024 11:08:34 AM
rw-r--r--
📄
function.php
7.99 KB
08/31/2024 11:08:33 AM
rw-r--r--
📄
group.php
4.6 KB
08/31/2024 11:08:33 AM
rw-r--r--
📄
index.php
20.74 KB
08/31/2024 11:08:46 AM
rw-r--r--
📄
memberSearch.php
1.32 KB
08/31/2024 11:08:34 AM
rw-r--r--
📄
register.php
5.08 KB
08/31/2024 11:08:34 AM
rw-r--r--
📄
sendreview.php
626 bytes
08/31/2024 11:08:34 AM
rw-r--r--
📄
signin.php
5.52 KB
08/31/2024 11:08:34 AM
rw-r--r--
📄
signout.php
295 bytes
08/31/2024 11:08:34 AM
rw-r--r--
📄
test.php
2 KB
08/31/2024 11:08:35 AM
rw-r--r--
📄
validate.logged.php
580 bytes
08/31/2024 11:08:35 AM
rw-r--r--
Editing: index.php
Close
<?php include '../inc/validate.logged.php'; // include '../inc/config.php'; include 'db_connect.php'; include 'function.php'; $user_id = $gUserId; $groups = []; $chat = []; $user_name = $gUserName; // Fetching the group name from the database $groups = display_groups($conn,$user_id); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Chat Interface</title> <style> body { font-family: Arial, sans-serif; margin: 0; padding: 0; display: flex; min-height: 100vh; flex-direction: column; } .header { background-color: #343a40 !important; color: white; padding: 10px 0; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); position: fixed; top: 0; left: 0; width: 100%; z-index: 3; } .header img { width: auto; height: 40px; cursor: pointer; margin-right: 10px; padding-left: 10px; } .sidebar { height: 100%; width: 250px; overflow-y: scroll; position: fixed; top: 54px; left: 0; background-color: #212529; color: rgba(255, 255, 255, 0.5); padding-top: 20px; transition: width 0.3s ease, left 0.3s ease; z-index: 2; } .sidebar.collapsed { width: 0px; } .sidebar ul { list-style-type: none; padding: 0; } .sidebar ul li a { color: white; text-decoration: none; display: block; padding: 10px; text-align: center; } .group-name { display: block; height: 70%; overflow-y: scroll; overflow-x: hidden; } .group-name::-webkit-scrollbar { display: none; } .group-name a { color: rgba(255, 255, 255, 0.5); } .group-name a:hover { color: #fff; } .content { margin-left: 250px; flex: 1; padding: 20px; transition: margin-left 0.3s ease; margin-top: 40px; } .create-chat { background-color: #f2f2f2; padding: 20px; } .sidebar-toggle-btn { position: absolute; /* right: 0px; */ top: 0; border: none; z-index: 3; } .sidebar-toggle-btn:hover { background-color: #555; } .sidebar-toggle-btn:hover .toggle-icon { transform: scale(1.1); } .toggle-icon { font-size: 24px; transition: transform 0.3s ease; } .side-nav { width: 250px; background-color: #333; color: white; height: 100%; position: fixed; top: 40px; left: -250px; overflow-x: hidden; padding-top: 20px; transition: left 0.3s ease; z-index: 1; } .side-nav a { padding: 10px; text-decoration: none; color: white; display: block; text-align: center; } .side-nav a:hover { background-color: #555; } .main-icons { margin-left: 50px; transition: margin-left 0.3s ease; } .group-link { font-family: 'Work Sans', sans-serif; font-size: 14px; display: flex; align-items: center; padding-top: 0.75rem; padding-bottom: 0.75rem; position: relative; } .button { display: inline-block; padding: 10px 20px; color: #fff; text-decoration: none; border-radius: 5px; margin-right: 10px; } #signout-btn .group-link { text-decoration: none; } .sidebar .sidebar-link { display: block; } .sidebar.hidden .sidebar-link { display: none; } .group-name { /* Your styles for group name */ display: block; /* Ensure it's initially visible */ } .sidebar.hidden .group-name { display: none; /* Hide group-name when sidebar is hidden */ } .chat-message { background-color: #fff; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); overflow: hidden; width: 80%; max-width: 100%; height: 500px; display: flex; flex-direction: column; } .chat-box { flex: 1; padding: 10px; overflow-y: auto; display: flex; flex-direction: column; } .message-input { display: flex; align-items: center; padding: 10px; border-top: 1px solid #ccc; } textarea { flex: 1; resize: none; padding: 8px; border: 1px solid #ccc; border-radius: 4px; margin-right: 10px; } .chat-message button { padding: 8px 16px; background-color: #007bff; color: #fff; border: none; border-radius: 4px; cursor: pointer; transition: background-color 0.3s; } .chat-message button:hover { background-color: #0056b3; } .message { border-radius: 8px; padding: 8px 12px; margin-bottom: 8px; max-width: 70%; } .outgoing { background-color: #007bff; color: #fff; align-self: flex-end; text-align: left; /* Ensure text is left-aligned within outgoing message */ margin-left: auto; /* Pushes outgoing messages to the right side */ } .incoming { background-color: #f0f0f0; color: #333; align-self: flex-start; padding: 6px 14px; margin-block: 5px; border-radius: 5px; } .header-keys { display: flex; justify-content: space-between; } .user-details { display: flex; padding: 10px; font-weight: bold; font-family: sans-serif; padding-right: 30px; } form { max-width: 600px; background-color: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } label { font-weight: bold; margin-bottom: 5px; } input[type=text], textarea { width: calc(100% - 20px); padding: 10px; margin-bottom: 15px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; } .scrollable-list { max-height: 200px; overflow-y: auto; border: 1px solid #ccc; padding: 10px; border-radius: 4px; margin-bottom: 15px; } .scrollable-list-item { margin-bottom: 5px; } .selected-options { border: 1px solid #ccc; padding: 10px; border-radius: 4px; margin-bottom: 15px; } .selected-options h3 { margin-top: 0; } #selected-members-info { margin-bottom: 10px; } .member-link { text-decoration: none; color: #333; display: block; padding: 8px; background-color: #f9f9f9; border-radius: 4px; transition: background-color 0.3s ease; } .member-link:hover { background-color: #e0e0e0; } input[type=submit] { padding: 10px 20px; font-size: 18px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; transition: background-color 0.3s ease; } input[type=submit]:hover { background-color: #0069d9; } #signout-btn { position: relative; bottom: 0px; } </style> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(document).ready(function() { $('.create-chat').hide(); $('.chat-message').hide(); }); </script> </head> <body> <div class="header header-keys"> <div class=""> <img src="https://knoblycream.com/grfx/logo.png" alt="Menu Icon" onclick="toggleSidebar()"> <b>Beta</b> </div> <div class="user-details"> <?php echo $user_name; ?> </div> </div> <div class="sidebar" id="sidebar"> <button class="sidebar-toggle-btn" onclick="toggleSidebar()"> </button> <a href="#create-group" class="button sidebar-link" onclick="showCreateGroup()">✚ Create a Group </a> <a class="button sidebar-link">My Groups</a> <div class="group-name"> <?php if ($groups) { foreach ($groups as $group) : ?> <a class="button group-link" href="#group_id=<?php echo $group['group_id']; ?>" onclick="showGroupContent(<?php echo $user_id; ?>, <?php echo $group['group_id']; ?>, '<?php echo $user_name; ?>')"><?php echo htmlspecialchars($group['group_name']); ?></a> <br> <?php endforeach; } else { ?> <a class="button group-link" ><strong>No group</strong></a> <?php } ?> </div> <!-- <div id="signout-btn" style="position: fixed;width: 17%;display: flex;justify-content: center;bottom: 0; padding-bottom:10px"> <a href="signout.php"><button id="logout-button" style="font-size:large ">Logout</button></a> </div> --> <div id="signout-btn" style=" background-color: #343a40"> <a class="group-link" style="color: white; padding-left:18px" href="../dashboard.php">Back to Knobly Cream</a> </div> </div> <div class="content"> <div class="create-chat" id="create-chat"> <h2>Create a New Group</h2> <form id="create-group-form" method="post" action="create_group.php"> <label for="group_name">Group Name:</label><br> <input type="text" id="group_name" name="group_name" required><br><br> <label for="group_description">Group Description:</label><br> <textarea id="group_description" name="group_description" required></textarea><br><br> <!-- <label for="owner_id">Owner ID:</label><br> <input type="text" id="owner_id" name="owner_id" required><br><br> --> <label for="members_list">Add Members:</label><br> <!-- <input type="text" id="searchMem" name="search" placeholder="Search Member to add.."> <button id="" name="search" onclick="searchMembers()">Search</button> --> <input type="text" id="search-input" placeholder="Search by name..."> <div class="scrollable-list"> <?php // List of members (you can fetch from database dynamically if needed) $members = display_all_members($conn); foreach ($members as $member) { echo '<div class="scrollable-list-item">'; echo '<a href="#" class="member-link" data-user_id="' . htmlspecialchars($member['user_id']) . '" data-user_name="' . htmlspecialchars($member['user_name']) . '">' . htmlspecialchars($member['user_name']) . ', ' . htmlspecialchars($member['user_email']) . '</a>'; echo '</div>'; } ?> </div><br> <div></div> <div class="selected-options"> <h3>Selected Members:</h3> <div id="selected-members-info"> <p>No members selected.</p> </div> <input type="hidden" name="selected_members" id="selected-members-hidden" value=""> </div><br><br> <label for="group_image">Group Image URL:</label><br> <input type="text" id="group_image" name="group_image"><br><br> <input type="submit" value="Create Group"> </form> </div> <div class="chat-message"> </div> </div> <script> function searchMembers() { var searchItem = $('#searchMem'); $.ajax({ url: 'memberSearch.php', method: 'POST', data: { item: searchItem }, success: function(response) { $('.scrollable-list').html() = ''; $('.scrollable-list').html(response); }, error: function(xhr, status, error) { // Handle errors console.error(xhr.responseText); } }); } function toggleSidebar() { const sidebar = document.getElementById("sidebar"); const content = document.querySelector(".content"); sidebar.classList.toggle('hidden'); const toggleIcon = document.getElementById("toggle-icon"); sidebar.classList.toggle('collapsed'); if (sidebar.classList.contains('collapsed')) { content.style.marginLeft = "50px"; } else { content.style.marginLeft = "250px"; } } function toggleSideNav() { const sideNav = document.getElementById("sideNav"); if (sideNav.style.left === "-250px") { sideNav.style.left = "0"; } else { sideNav.style.left = "0px"; } } function showCreateGroup() { $('.create-chat').show(); $('.chat-message').hide(); } function showGroupContent(user_id, group_id, user_name) { $('.create-chat').hide(); $('.chat-message').show(); console.log(user_id); console.log(group_id); console.log(user_name); $.ajax({ url: 'group.php', method: 'POST', data: { group_id: group_id, user_id: user_id, user_name: user_name }, success: function(response) { // Handle the response $('.chat-message').html(response); console.log(response); }, error: function(xhr, status, error) { // Handle errors console.error(xhr.responseText); } }); } function sendMessage($group_id, $user_id, $user_name) { var messageText = $('#message-input').val().trim(); var group_id = $group_id; var user_id = $user_id; var user_name = $user_name; var posted_on = new Date().toISOString().replace('T', ' ').replace(/\.\d+Z$/, '');; // Example posted_on timestamp if (messageText === '') { return; } var $chatBox = $('#chat-box'); var $messageElement = $('<div></div>'); var messageHtml = `<div class='incoming'>${messageText}<br>${user_name}<br>${posted_on}</div>`; $chatBox.append(messageHtml); $('#message-input').val('').focus(); // Scroll to bottom of chat box $chatBox.scrollTop($chatBox.prop("scrollHeight")); $.ajax({ url: 'sendreview.php', method: 'POST', data: { group_id: group_id, userid: user_id, message: messageText, posted_on: posted_on }, success: function(response) { // Handle the response alert('Message sent successfully!'); console.log(response); // Log response to console }, error: function(xhr, status, error) { // Handle errors console.error(xhr.responseText); } }); } </script> <script> $(document).ready(function() { // Function to handle input change $('#search-input').on('input', function() { var searchText = $(this).val().trim().toLowerCase(); // Get input value and normalize // Iterate over each div with class scrollable-list-item $('div.scrollable-list-item').each(function() { var memberName = $(this).find('a.member-link').text().trim().toLowerCase(); // Get member name // Check if member name contains the search text if (memberName.includes(searchText)) { $(this).show(); // Show the div if it matches } else { $(this).hide(); // Hide the div if it does not match } }); }); // Click handler for member links $('.member-link').on('click', function(event) { event.preventDefault(); $(this).toggleClass('selected'); updateSelectedMembersInfo(); }); // Function to update selected members display function updateSelectedMembersInfo() { const selectedMemberNames = $('.member-link.selected').map(function() { return $(this).data('user_name'); }).get(); $('#selected-members-info').html(selectedMemberNames.length > 0 ? selectedMemberNames.map(member => '<p>' + member + '</p>').join('') : '<p>No members selected.</p>' ); // Update hidden input with selected member IDs const selectedMembersIds = $('.member-link.selected').map(function() { return $(this).data('user_id'); }).get(); $('#selected-members-hidden').val(selectedMembersIds.join(',')); } // Submit handler for create group form $('#create-group-form').on('submit', function(event) { var json_data = $('#selected-members-hidden').val(); event.preventDefault(); // Prevent default form submission // Submit the form programmatically this.submit(); // This refers to the form element }); // Click handler for selected members info (to remove selection) $('#selected-members-info').on('click', 'p', function(event) { event.preventDefault(); const selectedMember = $(this).text().trim(); $('.member-link').each(function() { if ($(this).data('user_name') === selectedMember) { $(this).removeClass('selected'); return false; // Exit the loop once found } }); updateSelectedMembersInfo(); // Update display and hidden input }); }); </script> </body> </html>