OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
cream
/
groupchat
/
backup
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
05/19/2025 10:07:13 AM
rwxrwxr-x
📄
b_group.php
13.6 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
b_index.php
25.62 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📁
backup
-
05/19/2025 10:07:13 AM
rwxrwxr-x
📄
broadcast.php
13.62 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
create_broadcast.php
9.83 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📄
create_group.php
8.11 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📁
dump
-
05/19/2025 10:07:13 AM
rwxrwxr-x
📄
group.php
12.96 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📁
inc
-
05/19/2025 10:07:13 AM
rwxrwxr-x
📄
index.php
4.38 KB
05/19/2025 10:07:13 AM
rw-rw-r--
📁
trash
-
05/19/2025 10:07:13 AM
rwxrwxr-x
Editing: b_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> <link rel="icon" type="image/x-icon" href="/img/logo.ico"> <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 { padding: 5px 20px; 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: 100%; */ 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; } .a .button .group-link { padding: 5px 10px; } .delete-button { position: absolute; top: 5px; right: 5px; } .context-menu { display: none; position: absolute; z-index: 1000; background-color: #f9f9f9; border-radius: 3px; color: #212529; border: 1px solid #ccc; padding: 5px 0; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1); } .context-menu a { color: #212529; text-decoration: none; font-family: 'Work Sans', sans-serif; font-size: 14px; } .context-menu li { list-style: none; padding: 5px 15px; cursor: pointer; } .context-menu li:hover { background-color: #f0f0f0; } </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) : ?> <div class="group-item" id="group_<?php echo $group['group_id']; ?>"> <a id="group-btn-<?php echo $group['group_id']; ?>" 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> </div> <?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> <!-- Context menu template --> <ul id="context-menu" class="context-menu"> <li class="delete-group"><a href="#">Delete Group</a></li> <li class="exit-group"><a href="#">Exit Group</a></li> </ul> <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 current_utc_timestamp = new Date(); current_utc_timestamp.setHours(current_utc_timestamp.getHours() + 5); current_utc_timestamp.setMinutes(current_utc_timestamp.getMinutes() + 30); // Convert to ISO string in the format YYYY-MM-DD HH:mm:ss var posted_on = current_utc_timestamp.toISOString().replace('T', ' ').replace(/\.\d+Z$/, ''); console.log(posted_on); 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> <script> $(document).ready(function() { // Initialize context menu on .group-link anchors $('.group-item .group-link').contextmenu(function(e) { // Prevent default right-click context menu e.preventDefault(); // Hide any previous context menus $('.context-menu').hide(); // Show context menu at mouse position var contextMenu = $('#context-menu'); contextMenu.css({ display: 'block', left: e.pageX, top: e.pageY }); // Store the group item ID contextMenu.data('group-id', $(this).parent().attr('id')); }); // Click handler for context menu items $('#context-menu').on('click', '.delete-group', function(e) { e.preventDefault(); // Prevent the default link behavior var groupId = $('#context-menu').data('group-id').replace('group_', ''); deleteGroup(groupId); }); $('#context-menu').on('click', '.exit-group', function(e) { e.preventDefault(); // Prevent the default link behavior var userid = <?php echo $user_id ?>; var groupId = $('#context-menu').data('group-id').replace('group_', ''); exitgroup(userid, groupId); // Handle exit group action (if needed) // alert('Exit Group clicked'); }); // Click handler to hide context menu on document click $(document).on('click', function() { $('.context-menu').hide(); }); }); function deleteGroup(groupId) { if (confirm("Are you sure you want to delete this group?")) { $.ajax({ url: 'delete_group.php', type: 'POST', data: { group_id: groupId }, success: function(data) { console.log(data); }, error: function(xhr, status, error, ) { console.error('Error deleting group:', error); } }); } } function exitgroup(userid, groupId) { if (confirm("Are you sure you want to exit the group?")) { $.ajax({ url: 'exit_group.php', type: 'POST', data: { user_id : userid, group_id: groupId }, success: function(data) { console.log(data); }, error: function(xhr, status, error, ) { console.error('Error exiting group:', error); } }); } } </script> </body> </html>