You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
598 lines
17 KiB
598 lines
17 KiB
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" >
|
|
|
|
<link rel="stylesheet" />
|
|
<title>Document</title>
|
|
<style>
|
|
.Messages{
|
|
|
|
.header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
border-bottom: 1px solid whitesmoke;
|
|
position:fixed;
|
|
}
|
|
|
|
.header__left {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.header__left span {
|
|
padding: 10px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.header__middle {
|
|
display: flex;
|
|
flex: 0.7;
|
|
align-items: center;
|
|
background-color: whitesmoke;
|
|
padding: 10px;
|
|
border-radius: 5px;
|
|
}
|
|
|
|
.material-icons {
|
|
color: gray;
|
|
}
|
|
|
|
.header__middle input {
|
|
border: none;
|
|
width: 100%;
|
|
padding: 10px;
|
|
outline: none;
|
|
font-size: medium;
|
|
background-color: transparent;
|
|
}
|
|
|
|
.header__right {
|
|
display: flex;
|
|
padding-right: 20px;
|
|
}
|
|
|
|
.header__right span {
|
|
padding: 10px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
|
|
.sidebarOption {
|
|
display: flex;
|
|
align-items: center;
|
|
border-top-right-radius: 20px;
|
|
border-bottom-right-radius: 20px;
|
|
cursor: pointer;
|
|
color: #818181;
|
|
margin-top:100px;
|
|
}
|
|
|
|
.sidebarOption .material-icons {
|
|
padding: 5px;
|
|
}
|
|
|
|
.sidebarOption h3 {
|
|
flex: 1;
|
|
margin-left: 10px;
|
|
font-size: 16px;
|
|
font-weight: 400;
|
|
color:#000000;
|
|
}
|
|
.sidebarOption:hover,
|
|
.sidebarOption:hover h3{
|
|
width:100px;
|
|
}
|
|
<!--.sidebarOption:hover,-->
|
|
<!--.sidebarOption:hover h3,-->
|
|
.sidebarOption:hover .material-icons,
|
|
<!--.sidebarOption__active,-->
|
|
.sidebarOption__active h3,
|
|
.sidebarOption__active .material-icons {
|
|
background-color: #fcecec;
|
|
color: #c04b37;
|
|
|
|
}
|
|
|
|
|
|
|
|
.material-icons {
|
|
color: gray;
|
|
border-radius:50%;
|
|
}
|
|
|
|
.header__middle input {
|
|
border: none;
|
|
width: 10%;
|
|
padding: 10px;
|
|
outline: none;
|
|
font-size: medium;
|
|
border-radius:50%;
|
|
background-color: transparent;
|
|
}
|
|
.compose {
|
|
margin-top: 15px;
|
|
margin-left: 10px;
|
|
margin-bottom: 15px;
|
|
text-transform: capitalize;
|
|
color: gray;
|
|
padding: 8px;
|
|
border-radius: 30px;
|
|
background-color: transparent;
|
|
display: flex;
|
|
align-items: center;
|
|
cursor: pointer;
|
|
outline: none;
|
|
border: none;
|
|
transition: background-color 0.3s, color 0.3s;
|
|
box-shadow: 0px 2px 5px -2px rgba(0, 0, 0, 0.75);
|
|
}
|
|
|
|
.compose span {
|
|
margin-right: 5px;
|
|
}
|
|
.compose.active {
|
|
background-color: #43A6C6;
|
|
color: black; /* Highlighted text color */
|
|
}
|
|
|
|
.compose:hover {
|
|
opacity: 0.9; /* Optional hover effect */
|
|
}
|
|
.emailRow__options {
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
.emailRow__options .material-icons,
|
|
input {
|
|
margin: 5px;
|
|
|
|
}
|
|
.emailRow {
|
|
display: flex;
|
|
align-items: center; /* Ensure proper spacing between elements */
|
|
height: 70px; /* Increased height for better visibility */
|
|
margin-left: -20px;
|
|
/* Add padding inside the row for spacing */
|
|
border: 2px solid whitesmoke;
|
|
background-color: white;
|
|
cursor: pointer;
|
|
margin-top: 20px; /* Adjusted margin for spacing */
|
|
margin-bottom: 10px; /* Spaced out between rows */
|
|
border-radius: 5px; /* Slight rounding for a modern look */
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Add subtle shadow for better contrast */
|
|
width: calc(100% - 40px); /* Make room for consistent padding */
|
|
transition: box-shadow 0.3s, transform 0.3s; /* Smooth hover transition */
|
|
}
|
|
|
|
/* Hover effect for the email row */
|
|
.emailRow:hover {
|
|
border: 2px solid lightgray;
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* Enhanced shadow on hover */
|
|
transform: translateY(-2px); /* Slight lift effect on hover */
|
|
}
|
|
|
|
/* Style for the button inside the row */
|
|
.emailRow__button {
|
|
border: 1px solid lightgray;
|
|
box-shadow: 0px 2px 5px -2px rgba(0, 0, 0, 0.75);
|
|
border-radius: 5px;
|
|
cursor: pointer;
|
|
background-color: #f9f9f9;
|
|
transition: background-color 0.3s, box-shadow 0.3s;
|
|
}
|
|
|
|
/* Hover effect for the button */
|
|
.emailRow__button:hover {
|
|
background-color: #e6f7ff; /* Light blue for hover */
|
|
box-shadow: 0px 4px 6px -2px rgba(0, 0, 0, 0.3); /* Stronger shadow */
|
|
border-color: #0095f6;
|
|
}
|
|
|
|
/* Additional child elements remain unaffected */
|
|
.emailRow__message {
|
|
display: flex;
|
|
flex: 0.8;
|
|
align-items: center;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.emailRow__message h4 {
|
|
width: 400px;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
padding-left: 5px;
|
|
padding-right: 5px;
|
|
}
|
|
|
|
.emailRow {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between; /* Ensure proper spacing between elements */
|
|
height: 50px;
|
|
padding: 10px 15px; /* Small padding for spacing within the row */
|
|
border: 1px solid lightgray;
|
|
background-color: white;
|
|
cursor: pointer;
|
|
margin: 0;
|
|
margin-top:30px;
|
|
}
|
|
|
|
|
|
/* Hover effect for the email row */
|
|
.emailRow:hover {
|
|
border: 1px solid lightblue; /* Subtle border change on hover */
|
|
background-color: #f9f9f9; /* Light background change */
|
|
}
|
|
|
|
/* Button inside the row */
|
|
.emailRow__button {
|
|
border: 1px solid lightgray;
|
|
border-radius: 3px; /* Subtle rounding for the button */
|
|
cursor: pointer;
|
|
padding: 5px 10px;
|
|
background-color: white;
|
|
}
|
|
|
|
/* Button hover effect */
|
|
.emailRow__button:hover {
|
|
background-color: #e6f7ff;
|
|
border-color: #0078d4;
|
|
}
|
|
|
|
/* Ensure child elements fit within the row */
|
|
.emailRow__message h4 {
|
|
width: 350px; /* Adjust as needed to fit content */
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
/* Titles and text are aligned with appropriate sizing */
|
|
.emailRow__title {
|
|
font-size: 14px;
|
|
}
|
|
|
|
.emailRow__time {
|
|
font-size: 12px;
|
|
color: gray;
|
|
}
|
|
|
|
.emailRow__description {
|
|
font-size: 13px;
|
|
color: #666;
|
|
}
|
|
|
|
/* Remove spacing between rows */
|
|
.emailRow + .emailRow {
|
|
margin-top: 0; /* No extra space between rows */
|
|
}
|
|
|
|
|
|
|
|
/* Header */
|
|
.compose-header {
|
|
background-color: #f5f5f5;
|
|
padding: 12px 16px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
cursor: grab; /* For drag-and-drop effect */
|
|
border-bottom: 1px solid #ddd;
|
|
margin-top:500px;
|
|
}
|
|
|
|
.compose-header:hover {
|
|
background-color: #eaeaea;
|
|
}
|
|
|
|
.compose-title {
|
|
font-size: 16px;
|
|
font-weight: bold;
|
|
color: #333;
|
|
margin: 0;
|
|
}
|
|
|
|
.compose-close {
|
|
font-size: 18px;
|
|
color: #666;
|
|
cursor: pointer;
|
|
transition: color 0.2s;
|
|
}
|
|
|
|
.compose-close:hover {
|
|
color: #000;
|
|
}
|
|
|
|
/* Body */
|
|
.compose-body {
|
|
padding: 12px 16px;
|
|
flex-grow: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
|
|
gap: 12px;
|
|
}
|
|
|
|
/* Input Fields */
|
|
.compose-input {
|
|
width: 100%;
|
|
border: 1px solid #ddd;
|
|
padding: 8px;
|
|
border-radius: 4px;
|
|
font-size: 14px;
|
|
color: #333;
|
|
}
|
|
|
|
.compose-input:focus {
|
|
border-color: #4285f4;
|
|
outline: none;
|
|
}
|
|
|
|
/* Buttons */
|
|
.compose-button {
|
|
padding: 8px 16px;
|
|
font-size: 14px;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
transition: background-color 0.3s;
|
|
}
|
|
|
|
.compose-button.send {
|
|
background-color: #4285f4;
|
|
|
|
}
|
|
|
|
.compose-button.send:hover {
|
|
background-color: #357ae8;
|
|
}
|
|
|
|
.compose-button.discard {
|
|
background-color: #f5f5f5;
|
|
color: #333;
|
|
}
|
|
|
|
.compose-button.discard:hover {
|
|
background-color: #eaeaea;
|
|
}
|
|
|
|
.sidebar__compose {
|
|
margin-top: 15px;
|
|
margin-left: 10px;
|
|
margin-bottom: 15px;
|
|
text-transform: capitalize;
|
|
color: gray;
|
|
padding: 15px;
|
|
border-radius: 30px;
|
|
background-color: white;
|
|
display: flex;
|
|
align-items: center;
|
|
cursor: pointer;
|
|
outline: none;
|
|
border: none;
|
|
box-shadow: 0px 2px 5px -2px rgba(0, 0, 0, 0.75);
|
|
}
|
|
.sidebar__compose span {
|
|
margin-right: 5px;
|
|
}
|
|
.sidebar__compose:hover{
|
|
background-color:#87CEFA;
|
|
transition-duration: 0.4s;}
|
|
|
|
.sidebarOption:hover {
|
|
background-color: #6699CC;
|
|
color:black;
|
|
}
|
|
|
|
.sidebarOption__active {
|
|
background-color: #6699CC;
|
|
color: black;
|
|
border-radius: 5px;
|
|
width:100px;
|
|
}
|
|
.material-icons-black span {
|
|
color: black;
|
|
}
|
|
.search {
|
|
margin-left: 100px;
|
|
margin-top: -30px;
|
|
background-color: #F1F4F8;
|
|
border-radius: 50px;
|
|
width: 400px;
|
|
padding: 5px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
|
|
|
|
}
|
|
.search input {
|
|
background-color: transparent;
|
|
outline: none;
|
|
border: none;
|
|
text-indent: 15px;
|
|
width: 85%;
|
|
}
|
|
.search button {
|
|
outline: none;
|
|
border: none;
|
|
border-radius: 50%;
|
|
background-color: #fff;
|
|
padding: 8px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
.header__right span{
|
|
padding:20px;
|
|
cursor:pointer;
|
|
}
|
|
|
|
.email-checkbox + label {
|
|
margin-right: 15px;
|
|
}
|
|
#emailCheckbox {
|
|
display: none; /* Hidden by default */
|
|
position: absolute; /* Position it relative to its container */
|
|
top: 100%; /* Position it just below the input field */
|
|
left: 0; /* Align it with the left of the input field */
|
|
z-index: 10; /* Ensure it appears above other elements */
|
|
background-color: white; /* Background color for better visibility */
|
|
border: 1px solid #ccc; /* Add a border for separation */
|
|
padding: 10px; /* Add some spacing inside the dropdown */
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Add a subtle shadow */
|
|
width: auto; /* Adjust width as needed */
|
|
height:auto;
|
|
}
|
|
|
|
#dropdownIcon {
|
|
position: relative; /* Position it relative to its container */
|
|
cursor: pointer;
|
|
}
|
|
|
|
.email-input-container {
|
|
position: relative; /* The dropdown will be positioned relative to this container */
|
|
}
|
|
|
|
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<div class="Messages ">
|
|
<form id="messageForm " style="" >
|
|
{% csrf_token %}
|
|
<input type="hidden" id="user_id" name="user_id" value="{{ user_id }}">
|
|
<input type="hidden" id="current_user_id" name="current_user_id" value="{{ current_user_id }}">
|
|
<div class="header" style="margin-top:80px;width:75.5%; margin-left:300px;">
|
|
<h2 style="margin-left:60px;">Messages</h2>
|
|
<div class="search">
|
|
<input type="text" placeholder="Search">
|
|
<button><i class="ri-search-2-line"></i></button>
|
|
</div>
|
|
<div class="header__right" style="margin-right:400px;">
|
|
<span class="material-icons">apps</span>
|
|
<span class="material-icons">notifications</span>
|
|
<span class="material-icons">account_circle</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="main__body" style="margin-left: 300px; margin-top: 120px; position: sticky; top: 0; z-index: 10; background-color: white;">
|
|
<div class="" style="margin-top:50px;">
|
|
<button class="sidebar__compose" id="compose" onclick="showCompose(event)" style="display: block; margin-bottom: 20px;">
|
|
<span class="material-icons"> add </span>Compose
|
|
</button>
|
|
|
|
<div class="sidebarOption-container" style="position: sticky; top: 0;">
|
|
<div class="sidebarOption sidebarOption__active" style="width:100px;" id="inboxButton" onclick="setActiveBox(this); renderInbox(); HideMessageDetails()">
|
|
<span class="material-icons" style="color:black;"> inbox </span>
|
|
<h3>Inbox</h3>
|
|
</div>
|
|
|
|
<div class="sidebarOption" id="sentButton" style="margin-top:-32px; margin-left:130px;" onclick="setActiveBox(this); renderSentMessages(); HideMessageDetails()">
|
|
<span class="material-icons" style="color:black"> near_me </span>
|
|
<h3>Sent</h3>
|
|
</div>
|
|
|
|
<div class="sidebarOption" style="margin-top:-37px; margin-left:250px;" onclick="setActiveBox(this)">
|
|
<span class="material-icons" style="color:black">delete</span>
|
|
<h3>Trash</h3>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div id="InboxContainer" style="display:block;margin-left: 40px; "></div>
|
|
|
|
<div id="MessageDetailsContainer" style="display: none; height:auto; padding: 20px; border: 1px solid #ddd; margin-left: 0px; margin-top:20px; border:none; width:100%; box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px; border-radius:20px;">
|
|
<button id="BackToInboxButton" onclick="backToInbox(event)" style="margin-bottom: 10px;">Back to Inbox</button>
|
|
<div id="MessageDetails" style="height: auto;"></div>
|
|
<div id="ConversationThread" style="height:auto;"></div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<div class="compose-container" id="ComposeContainer"
|
|
style="display: none; position: fixed; top:230px; bottom: 10%; right: 5%; width: 30%; height:58%; background-color: #fff; border-radius: 30px; box-shadow: 3px 3px 3px 3px rgba(0.5, 0.5, 0.5, 0.5); padding: 30px; z-index: 1000; margin-top: 50px;">
|
|
|
|
<div class="container" style="padding: 20px;width:100%">
|
|
<form id="ComposeMessage" method="post" action="{% url 'send_message' %}?user_id={{ user_id }}">
|
|
{% csrf_token %}
|
|
|
|
<div class="fixed" style="margin-buttom:10px; width:100%">
|
|
<div class="compose-header" style="display: flex; margin-left:-50px; space-between; align-items: center; background-color:#F0F8FF; width:128%; margin-top:-50px;">
|
|
|
|
<span style="font-size: 18px; font-weight: bold; margin-left:20px;" >New Message</span>
|
|
<div class="compose-close" id="Closebutton" onclick="CloseCompose(event)" style="font-size: 30px; margin-left:290px; color: red; cursor: pointer;">×</div>
|
|
</div>
|
|
|
|
|
|
<div class="compose-body" >
|
|
<div class="" style="position: relative;">
|
|
<div id="emailBarsContainer" style="margin-top: 10px; display: flex; flex-wrap: wrap;"></div>
|
|
<input type="text" id="toField" placeholder="Select Emails" readonly style="width: 128%; text-indent: 10px; border: none; border-bottom: 1px solid #d3d3d3; height:40px;margin-left:-50px; padding-right: 30px; cursor: pointer;">
|
|
<span id="dropdownIcon" class="dropdown-icon" style="position: absolute; top: 50%; left: 370px; transform: translateY(-50%); cursor: pointer;">▼</span>
|
|
|
|
</div>
|
|
|
|
<div id="emailCheckbox" style="display: none; margin-top:10px;position: absolute;width: 80%;z-index: 100; background: #ffffff; border: 1px solid #d3d3d3;border-radius: 5px;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);padding: 10px; margin-top: 5px;overflow-y: auto; max-height: 150px;
|
|
">
|
|
{% for team in teams %}
|
|
<label style="display: block; margin-bottom: 10px;">
|
|
<input type="checkbox" value="{{ team }}" class="email-checkbox"> {{ team }}
|
|
</label>
|
|
{% endfor %}
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<input type="text" id="subject" style="width: 128%; height:40px; margin-top: 0px; border: none; border-bottom: 1px solid #d3d3d3;margin-left:-50px;text-indent: 10px;" class="compose-input" placeholder="Subject">
|
|
|
|
<textarea id="Message" style="width: 128%; height: 220px; margin-top: 1px; text-indent: 10px; border: none;padding-top: 10px; border-bottom: 1px solid #d3d3d3;margin-left:-50px;border-bottom:1px solid solid black"
|
|
class="compose-input" placeholder="Message"></textarea>
|
|
|
|
|
|
<!-- Footer -->
|
|
<div class="" style="display: flex; justify-content: space-between; align-items: center; margin-top:20px; margin-right:100px;">
|
|
<button type="button" class="compose-button send" id="sendButton"
|
|
style="margin-left:-30px; border-radius: 10px; color:white; background:#1F51FF;font-size:17px; border: none; width:70px; height:30px; font-weight:bold; letter-spacing:1px;"
|
|
onclick="sendMessage(event)">Send</button>
|
|
|
|
<button class="compose-button discard" id="Discardbutton" style="margin-left:50px; border-radius: 10px; border: none; position:fixed; color:white; background:#1F51FF;font-size:17px; width:80px; height:30px; font-weight:bold; letter-spacing:1px;" onclick="CloseCompose(event)">Discard</button>
|
|
|
|
<i class="fa-solid fa-paperclip" onclick="document.getElementById('attachment').click();" style="color: #1F51FF; margin-right:90px; font-size:23px; cursor: pointer;"></i>
|
|
<input type="file" id="attachment" name="attachment" style="display: none;" accept=".pdf,.doc,.docx,.txt">
|
|
</div>
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<form id="ComposeReply" method="post" action="{% url 'send_reply' %}?user_id={{ user_id }}">
|
|
<div id="ComposeBox" style="display: none;padding: 20px; margin-top: 20px; border: 1px solid #ccc;">
|
|
<h3>Reply to: ${message.sender_id || message.recipient_id}</h3>
|
|
<input type="text" id="toField" name="toField" value="${message.sender_id || message.recipient_id}" readonly style="width: 100%; margin-bottom: 10px;" />
|
|
<textarea id="subject" name="subject" rows="2" placeholder="Subject" style="width: 100%; margin-bottom: 10px;"></textarea>
|
|
<textarea id="message" name="message" rows="4" placeholder="Message" style="width: 100%; margin-bottom: 10px;"></textarea>
|
|
<input type="file" id="attachment" name="attachment" accept=".pdf,.doc,.docx"><br>
|
|
<button type="button" onclick="sendReply(event, '${message.message_id}')">Send</button>
|
|
</div>
|
|
</form>
|
|
|
|
</body>
|
|
</html>
|