New changes.

main
nataly 1 year ago
parent 77a22ef73d
commit 9e430f7bdf

@ -6,5 +6,5 @@ urlpatterns = [
path('product', views.add_product, name='addproduct'),
path('service', views.add_service, name='addservice'),
path('order', views.add_order, name='addorder'),
path('invoice/<int:order_id>/', views.add_invoice_pdf, name='addinvoice'),
]

@ -5,7 +5,7 @@ from django.http import JsonResponse, HttpResponse
from django.template.loader import get_template
from django.conf import settings
import os
from weasyprint import HTML
def add_product (request, *args, **kwargs):
@ -102,36 +102,7 @@ def add_order (request, *args, **kwargs):
def add_invoice_pdf(request, order_id):
order = get_object_or_404(Order, id=order_id)
template = get_template('details_templates/invoice-details.html')
context = {'order': order}
html_string = template.render(context)
# Generate PDF
pdf = HTML(string=html_string).write_pdf()
invoice = Invoice.objects.create(
invoice_number='111',
order=order,
date_created=datetime.now(),
)
# Save PDF to a file
pdf_file_path = os.path.join(settings.MEDIA_ROOT, f'invoice_{invoice.id}.pdf')
with open(pdf_file_path, 'wb') as pdf_file:
pdf_file.write(pdf)
# Associate PDF file path with the Invoice object
invoice.pdf = pdf_file_path
invoice.save()
# Return PDF
response = HttpResponse(pdf, content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="my_pdf.pdf"'
return response

@ -31,6 +31,24 @@
</select>
</div>
<div class="w-full">
<label class="text-gray-500">Items:</label>
<select name="items" id="itemsSelectTag"
class="border border-gray-300 p-3 rounded-md outline-none w-full text-gray-500 mt-1" multiple
required>
<option selected disabled>Select Customer First</option>
</select>
</div>
<div class="w-full">
<label class="text-gray-500">Business:</label>
<select name="business" id="businessSelectTag"
class="w-full h-[50px] py-1 px-3 border border-gray-300 outline-none rounded-md text-gray-500 mt-1"
required>
<option selected disabled>Business</option>
</select>
</div>
<div class="w-full">
<label class="text-gray-500">Status:</label>
<select name="status" id=""
@ -43,17 +61,6 @@
</select>
</div>
<div class="w-full">
<label class="text-gray-500">Items:</label>
<select name="items" id="itemsSelectTag"
class="border border-gray-300 p-3 rounded-md outline-none w-full text-gray-500 mt-1" multiple
required>
<option selected disabled>Select Customer First</option>
</select>
</div>
<div class="w-full flex justify-center items-center mt-3">
<button type="submit"
class="w-fit py-1 px-5 bg-osiblue rounded-md outline-none text-white border border-osiblue text-xl cursor-pointer hover:bg-white hover:text-osiblue duration-300">Save</button>
@ -62,7 +69,6 @@
</form>
</div>
</div>
<!---------------------- JS SCRIPTS -------------------->
<script src="{% static 'js/billing/add-order.js' %}"></script>

@ -86,7 +86,7 @@
{% if order.status == 'Completed' and not order.invoice %}
<a href="{% url 'addinvoice' order.id %}">
<a >
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-[18px] text-blue-500">
<path fill-rule="evenodd" d="M5.625 1.5H9a3.75 3.75 0 0 1 3.75 3.75v1.875c0 1.036.84 1.875 1.875 1.875H16.5a3.75 3.75 0 0 1 3.75 3.75v7.875c0 1.035-.84 1.875-1.875 1.875H5.625a1.875 1.875 0 0 1-1.875-1.875V3.375c0-1.036.84-1.875 1.875-1.875ZM12.75 12a.75.75 0 0 0-1.5 0v2.25H9a.75.75 0 0 0 0 1.5h2.25V18a.75.75 0 0 0 1.5 0v-2.25H15a.75.75 0 0 0 0-1.5h-2.25V12Z" clip-rule="evenodd" />
<path d="M14.25 5.25a5.23 5.23 0 0 0-1.279-3.434 9.768 9.768 0 0 1 6.963 6.963A5.23 5.23 0 0 0 16.5 7.5h-1.875a.375.375 0 0 1-.375-.375V5.25Z" />

@ -16,5 +16,5 @@ urlpatterns = [
path('fetch-customer-items/<int:customer_id>/', views.fetch_customer_items, name='fetch_customer_items'),
path('fetch-customer-businesses/<int:customer_id>/', views.fetch_customer_businesses, name='fetch_customer_businesses'),
]

@ -64,3 +64,24 @@ def fetch_customer_items(request, customer_id):
}
return JsonResponse(data)
def fetch_customer_businesses(request, customer_id):
try:
customer_profile = CustomerProfile.objects.get(id=customer_id)
except CustomerProfile.DoesNotExist:
customer_profile = None
if customer_profile and customer_profile.business:
# Retrieve the associated business
business = customer_profile.business
# Create a dictionary representation of the business
business_data = {
'id': business.id,
'name': business.name,
# Include other fields if needed
}
else:
business_data = None
return JsonResponse({'business': business_data})

@ -8,7 +8,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 flex flex-col gap-5 mt-5">
<div class="w-full px-5 s:px-9 flex flex-col gap-5 mt-5 mb-5">
<div class="w-full h-fit bg-white rounded-md shadow-md px-5 py-9 flex flex-col justify-center items-center">
<p class="text-osiblue uppercase text-xl s:text-3xl font-poppinsBold text-center">Cloud VPS Hosting</p>

@ -0,0 +1,519 @@
{% extends "customer_main.html" %}
{%load static%}
{% block modules_section %}
<!-- This block is intentionally left empty to exclude the modules section -->
{% endblock modules_section %}
{% block content %}
<div class="w-full px-5 s:px-9 flex flex-col gap-5 mt-5 mb-5">
<div class="w-full h-fit bg-white rounded-md shadow-md px-5 py-9 flex flex-col justify-center items-center">
<p class="text-osiblue uppercase text-xl s:text-3xl font-poppinsBold text-center">Dedicated CPU Servers</p>
<!-- PRICING ON DESKTOP -->
<div class="w-full hidden xlg:grid grid-cols-2 xll:grid-cols-4 mt-24">
<div class="w-full h-full border border-gray-200 border-r-transparent p-9 flex flex-col gap-5 items-center">
<p class="text-secondosiblue uppercase font-poppinsBold text-2xl text-center">DEDICATED 1</p>
<div class="w-full flex flex-col justify-center items-center">
<p class="text-osiblue font-poppinsLight text-xl font-semibold">30%</p>
<p class="text-osiblue font-poppinsLight text-xl font-semibold">$103.06/month
</p>
<p class="text-gray-500">Regular Price: $143.95/month</p>
</div>
<a href="">
<button
class="w-fit px-9 py-2 bg-secondosiblue border border-secondosiblue text-white uppercase hover:bg-white hover:text-secondosiblue duration-300">Get
Started
</button>
</a>
<div class="w-full flex flex-col gap-2 mt-5">
<h1 class="text-gray-500 text-xl font-light">Server Resources:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>2x AMD EPYC Cores</p>
<p>4 GB RAM</p>
<p>80 GB SSD Space</p>
<p>4 TB Bandwidth</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Essential Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>Unlimited Websites</p>
<p>Dedicated IP Address</p>
<p>cPanel/WHM</p>
<p>Imunify360 Security</p>
<p>WordPress Toolkit</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Important Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>DDos Protection</p>
<p>Free SSL Certificate</p>
<p>NVMe Storage</p>
<p>Daily Backup</p>
<p>SSH Root Access</p>
<p>Free Website Transfer</p>
</div>
</div>
</div>
<div class="relative">
<div
class="w-full bg-osiblue text-white text-center px-3 py-3 text-xl absolute -top-[54px] rounded-t-md border border-osiblue font-poppinsBold">
<p>Best Value</p>
</div>
<div class="border h-full border-osiblue w-full p-9 flex flex-col gap-5 items-center">
<p class="text-secondosiblue uppercase font-poppinsBold text-2xl text-center">DEDICATED 2</p>
<div class="w-full flex flex-col justify-center items-center">
<p class="text-osiblue font-poppinsLight text-xl font-semibold">30%</p>
<p class="text-osiblue font-poppinsLight text-xl font-semibold">
$127.16/month</p>
<p class="text-gray-500">Regular Price: $184.95/month</p>
</div>
<a href="">
<button
class="w-fit px-9 py-2 bg-secondosiblue border border-secondosiblue text-white uppercase hover:bg-white hover:text-secondosiblue duration-300">Get
Started
</button>
</a>
<div class="w-full flex flex-col gap-2 mt-5">
<h1 class="text-gray-500 text-xl font-light">Server Resources:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>4x AMD EPYC Cores</p>
<p>8 GB RAM</p>
<p>160 GB SSD Space</p>
<p>5 TB Bandwidth</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Essential Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>Unlimited Websites</p>
<p>Dedicated IP Address</p>
<p>cPanel/WHM</p>
<p>Imunify360 Security</p>
<p>WordPress Toolkit</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Important Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>DDos Protection</p>
<p>Free SSL Certificate</p>
<p>NVMe Storage</p>
<p>Daily Backup</p>
<p>SSH Root Access</p>
<p>Free Website Transfer</p>
</div>
</div>
</div>
</div>
<div class="w-full h-full border border-gray-200 p-9 flex flex-col gap-5 items-center">
<p class="text-secondosiblue uppercase font-poppinsBold text-2xl text-center">DEDICATED 3</p>
<div class="w-full flex flex-col justify-center items-center">
<p class="text-osiblue font-poppinsLight text-xl font-semibold">30%</p>
<p class="text-osiblue font-poppinsLight text-xl font-semibold">$173.63/month</p>
<p class="text-gray-500">Regular Price: $252.95/month</p>
</div>
<a href="">
<button
class="w-fit px-9 py-2 bg-secondosiblue border border-secondosiblue text-white uppercase hover:bg-white hover:text-secondosiblue duration-300">Get
Started
</button>
</a>
<div class="w-full flex flex-col gap-2 mt-5">
<h1 class="text-gray-500 text-xl font-light">Server Resources:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>8x AMD EPYC Cores</p>
<p>16 GB ECC RAM</p>
<p>320 GB SSD Space</p>
<p>6 TB Bandwidth</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Essential Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>Unlimited Websites</p>
<p>Dedicated IP Address</p>
<p>cPanel/WHM</p>
<p>Imunify360 Security</p>
<p>WordPress Toolkit</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Important Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>DDos Protection</p>
<p>Free SSL Certificate</p>
<p>NVMe Storage</p>
<p>Daily Backup</p>
<p>SSH Root Access</p>
<p>Free Website Transfer</p>
</div>
</div>
</div>
<div class="w-full h-full border border-gray-200 p-9 flex flex-col gap-5 items-center">
<p class="text-secondosiblue uppercase font-poppinsBold text-2xl text-center">DEDICATED 4</p>
<div class="w-full flex flex-col justify-center items-center">
<p class="text-osiblue font-poppinsLight text-base s:text-xl font-semibold">30%</p>
<p class="text-osiblue font-poppinsLight text-base s:text-xl font-semibold">$265.76/month</p>
<p class="text-gray-500">Regular Price: $374.95/month</p>
</div>
<a href="">
<button
class="w-fit px-9 py-2 bg-secondosiblue border border-secondosiblue text-white uppercase hover:bg-white hover:text-secondosiblue duration-300">Get
Started
</button>
</a>
<div class="w-full flex flex-col gap-2 mt-5">
<h1 class="text-gray-500 text-xl font-light">Server Resources:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>16x AMD EPYC Cores</p>
<p>32 GB ECC RAM</p>
<p>640 GB SSD Space</p>
<p>7 TB Bandwidth</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Essential Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>Unlimited Websites</p>
<p>Dedicated IP Address</p>
<p>cPanel/WHM</p>
<p>Imunify360 Security</p>
<p>WordPress Toolkit</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Important Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>DDos Protection</p>
<p>Free SSL Certificate</p>
<p>NVMe Storage</p>
<p>Daily Backup</p>
<p>SSH Root Access</p>
<p>Free Website Transfer</p>
</div>
</div>
</div>
</div>
<!-- PRICING ON MOBILE -->
<div class="w-full flex xlg:hidden flex-col gap-10 mt-10">
<div>
<div class="w-full p-9 border border-gray-200 flex flex-col items-center gap-5 rounded-t-md">
<p class="text-secondosiblue uppercase font-poppinsBold text-xl text-center">DEDICATED 1</p>
<div class="w-full flex flex-col justify-center items-center">
<p class="text-osiblue font-poppinsLight text-xl font-semibold">30%</p>
<p class="text-osiblue font-poppinsLight text-xl font-semibold">$103.06/month</p>
<p class="text-gray-500">Regular Price: $143.95/month</p>
</div>
<a href="">
<button
class="w-fit px-9 py-2 bg-secondosiblue border border-secondosiblue text-white uppercase hover:bg-white hover:text-secondosiblue duration-300">Get
Started
</button>
</a>
</div>
<div
class="w-full bg-secondosiblue text-white py-3 px-5 text-center flex justify-center items-center gap-2 border border-secondosiblue hover:bg-white hover:text-secondosiblue duration-300 openFeaturesDropdown">
<p>View Features</p>
<i class="fas fa-angle-down"></i>
</div>
<div class="w-full flex flex-col gap-5 p-5 border border-gray-200 featuresContainer hidden">
<div class="w-full flex flex-col gap-2 mt-5">
<h1 class="text-gray-500 text-xl font-light">Server Resources:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>2x AMD EPYC Cores</p>
<p>4 GB RAM</p>
<p>80 GB SSD Space</p>
<p>4 TB Bandwidth</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Essential Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>Unlimited Websites</p>
<p>Dedicated IP Address</p>
<p>cPanel/WHM</p>
<p>Imunify360 Security</p>
<p>WordPress Toolkit</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Important Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>DDos Protection</p>
<p>Free SSL Certificate</p>
<p>NVMe Storage</p>
<p>Daily Backup</p>
<p>SSH Root Access</p>
<p>Free Website Transfer</p>
</div>
</div>
</div>
</div>
<div>
<div class="w-full px-5 py-3 text-white text-center font-semibold text-xl bg-osiblue rounded-t-md">
<p>Best Value</p>
</div>
<div class="w-full p-9 border border-gray-200 flex flex-col items-center gap-5 rounded-t-md">
<p class="text-secondosiblue uppercase font-poppinsBold text-2xl text-center">DEDICATED 2</p>
<div class="w-full flex flex-col justify-center items-center">
<p class="text-osiblue font-poppinsLight text-xl font-semibold">30%</p>
<p class="text-osiblue font-poppinsLight text-xl font-semibold"> $127.16/month</p>
<p class="text-gray-500">Regular Price: $184.95/month</p>
</div>
<a href="">
<button
class="w-fit px-9 py-2 bg-secondosiblue border border-secondosiblue text-white uppercase hover:bg-white hover:text-secondosiblue duration-300">Get
Started
</button>
</a>
</div>
<div
class="w-full bg-osiblue text-white py-3 px-5 text-center flex justify-center items-center gap-2 border border-osiblue hover:bg-white hover:text-osiblue duration-300 openFeaturesDropdown">
<p>View Features</p>
<i class="fas fa-angle-down"></i>
</div>
<div class="w-full flex flex-col gap-5 p-5 border border-gray-200 featuresContainer hidden">
<div class="w-full flex flex-col gap-2 mt-5">
<h1 class="text-gray-500 text-xl font-light">Server Resources:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>4x AMD EPYC Cores</p>
<p>8 GB RAM</p>
<p>160 GB SSD Space</p>
<p>5 TB Bandwidth</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Essential Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>Unlimited Websites</p>
<p>Dedicated IP Address</p>
<p>cPanel/WHM</p>
<p>Imunify360 Security</p>
<p>WordPress Toolkit</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Important Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>DDos Protection</p>
<p>Free SSL Certificate</p>
<p>NVMe Storage</p>
<p>Daily Backup</p>
<p>SSH Root Access</p>
<p>Free Website Transfer</p>
</div>
</div>
</div>
</div>
<div>
<div class="w-full p-9 border border-gray-200 flex flex-col items-center gap-5 rounded-t-md">
<p class="text-secondosiblue uppercase font-poppinsBold text-2xl text-center">DEDICATED 3</p>
<div class="w-full flex flex-col justify-center items-center">
<p class="text-osiblue font-poppinsLight text-xl font-semibold">30%</p>
<p class="text-osiblue font-poppinsLight text-xl font-semibold">$173.63/month</p>
<p class="text-gray-500">Regular Price: $252.95/month</p>
</div>
<a href="">
<button
class="w-fit px-9 py-2 bg-secondosiblue border border-secondosiblue text-white uppercase hover:bg-white hover:text-secondosiblue duration-300">Get
Started
</button>
</a>
</div>
<div
class="w-full bg-secondosiblue text-white py-3 px-5 text-center flex justify-center items-center gap-2 border border-secondosiblue hover:bg-white hover:text-secondosiblue duration-300 openFeaturesDropdown">
<p>View Features</p>
<i class="fas fa-angle-down"></i>
</div>
<div class="w-full flex flex-col p-5 border border-gray-200 featuresContainer hidden">
<div class="w-full flex flex-col gap-2 mt-5">
<h1 class="text-gray-500 text-xl font-light">Server Resources:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>8x AMD EPYC Cores</p>
<p>16 GB ECC RAM</p>
<p>320 GB SSD Space</p>
<p>6 TB Bandwidth</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Essential Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>Unlimited Websites</p>
<p>Dedicated IP Address</p>
<p>cPanel/WHM</p>
<p>Imunify360 Security</p>
<p>WordPress Toolkit</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Important Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>DDos Protection</p>
<p>Free SSL Certificate</p>
<p>NVMe Storage</p>
<p>Daily Backup</p>
<p>SSH Root Access</p>
<p>Free Website Transfer</p>
</div>
</div>
</div>
</div>
<div>
<div class="w-full p-9 border border-gray-200 flex flex-col items-center gap-5 rounded-t-md">
<p class="text-secondosiblue uppercase font-poppinsBold text-2xl text-center">DEDICATED 4</p>
<div class="w-full flex flex-col justify-center items-center">
<p class="text-osiblue font-poppinsLight text-base s:text-xl font-semibold">30%</p>
<p class="text-osiblue font-poppinsLight text-base s:text-xl font-semibold">$265.76/month</p>
<p class="text-gray-500">Regular Price: $374.95/month</p>
</div>
<a href="">
<button
class="w-fit px-9 py-2 bg-secondosiblue border border-secondosiblue text-white uppercase hover:bg-white hover:text-secondosiblue duration-300">Get
Started
</button>
</a>
</div>
<div
class="w-full bg-secondosiblue text-white py-3 px-5 text-center flex justify-center items-center gap-2 border border-secondosiblue hover:bg-white hover:text-secondosiblue duration-300 openFeaturesDropdown">
<p>View Features</p>
<i class="fas fa-angle-down"></i>
</div>
<div class="w-full flex flex-col p-5 border border-gray-200 featuresContainer hidden">
<div class="w-full flex flex-col gap-2 mt-5">
<h1 class="text-gray-500 text-xl font-light">Server Resources:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>16x AMD EPYC Cores</p>
<p>32 GB ECC RAM</p>
<p>640 GB SSD Space</p>
<p>7 TB Bandwidth</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Essential Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>Unlimited Websites</p>
<p>Dedicated IP Address</p>
<p>cPanel/WHM</p>
<p>Imunify360 Security</p>
<p>WordPress Toolkit</p>
</div>
</div>
<div class="w-full flex flex-col gap-2">
<h1 class="text-gray-500 text-xl font-light">Important Features:</h1>
<div class="w-full flex flex-col gap-1 text-secondosiblue">
<p>DDos Protection</p>
<p>Free SSL Certificate</p>
<p>Daily Backup</p>
<p>SSH Root Access</p>
<p>Free Website Transfer</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!---------------------- JS SCRIPTS -------------------->
<script type="text/javascript" src='{% static "js/customer_dashboard/pricing-dropdown.js" %}'></script>
{% endblock %}

@ -7,9 +7,9 @@
{% block content %}
<div class="w-full px-5 s:px-9 flex flex-col gap-5 mt-5">
<div class="w-full px-5 s:px-9 flex flex-col gap-5 mt-5 mb-5">
<div class="w-full h-fit bg-white rounded-md shadow-md px-5 py-9 flex flex-col justify-center items-center">
<img src="{% static 'images/ositcom_logos/osimenublue.png' %}" class="w-[250px]">
<img src="{% static 'images/ositcom_logos/osimenublue.png' %}" class="w-[180px] s:w-[250px]">
<!-- PRICING ON DESKTOP -->
<div class="w-full hidden l:grid grid-cols-3 mt-24">

@ -8,7 +8,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 flex flex-col gap-5 mt-5">
<div class="w-full px-5 s:px-9 flex flex-col gap-5 mt-5 mb-5">
<div class="w-full h-fit bg-white rounded-md shadow-md px-5 py-9 flex flex-col justify-center items-center">
<p class="text-osiblue uppercase text-xl s:text-3xl font-poppinsBold text-center">Shared Hosting</p>

@ -13,14 +13,10 @@ urlpatterns = [
path("osimenu-plans/", views.osimenu_plans, name="osimenuplans"),
path("shared-hosting-plans/", views.shared_hosting_plans, name="sharedhostingplans"),
path("cloud-vps-hosting-plans/", views.cloud_vps_hosting_plans, name="cloudvpshostingplans"),
path("dedicated-servers-plans/", views.dedicated_servers_plans, name="dedicatedserversplans"),
# PAYMENT
path("payment/<int:item_id>/", views.payment, name="payment"),
path("initiate_checkout/", views.initiate_checkout, name="initiatecheckout"),
path(
"check-order-status/<str:merchant_id>/<str:order_id>/",
views.check_order_status,
name="check_order_status",
),
path("check-order-status/<str:merchant_id>/<str:order_id>/", views.check_order_status, name="check_order_status",),
]

@ -82,6 +82,14 @@ def cloud_vps_hosting_plans(request, *args, **kwargs):
return render(request, 'products/cloud-vps-hosting-plans.html', context)
@customer_login_required
def dedicated_servers_plans(request, *args, **kwargs):
context = {
}
return render(request, 'products/dedicated-servers-plans.html', context)

Binary file not shown.

@ -16,6 +16,17 @@
}
/* SCROLL BAR OF REACTION DETAILS POPUP */
.reactionDetails::-webkit-scrollbar {
width: 3px;
}
.reactionDetails::-webkit-scrollbar-thumb {
background: #b9bfc58b;
}
/* Website's font */
@font-face {
font-family: 'Poppins';

@ -102,6 +102,13 @@
<p class="text-white">Cloud VPS Hosting</p>
</div>
</a>
<a href="{% url 'dedicatedserversplans' %}">
<div
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
<p class="text-white">Dedicated CPU Servers</p>
</div>
</a>
</div>
</div>
@ -244,6 +251,13 @@
<p class="text-white">Cloud VPS Hosting</p>
</div>
</a>
<a href="{% url 'dedicatedserversplans' %}">
<div
class="w-full flex justify-start items-center gap-3 text-white border-b border-slate-600 py-2 cursor-pointer">
<p class="text-white">Dedicated CPU Servers</p>
</div>
</a>
</div>
</div>

@ -20,7 +20,7 @@
Business</button>
<a href="{% url 'editbusiness' business.business_id %}" class="w-full s:w-fit">
<button
class="w-full s:w-fit text-base px-3 py-2 bg-secondosiblue text-white outline-none border border-secondosiblue rounded-md cursor-pointer hover:bg-white hover:text-secondosiblue duration-300">Edit
class="w-full s:w-fit text-base px-3 py-2 bg-fifthosiblue text-white outline-none border border-fifthosiblue rounded-md cursor-pointer hover:bg-white hover:text-fifthosiblue duration-300">Edit
Business</button>
</a>
</div>

@ -32,7 +32,7 @@
Customer</button>
<a href="{% url 'editcustomer' customer.customer_id %}" class="w-full s:w-fit">
<button
class="w-full s:w-fit text-base px-3 py-2 bg-secondosiblue text-white outline-none border border-secondosiblue rounded-md cursor-pointer hover:bg-white hover:text-secondosiblue duration-300">Edit
class="w-full s:w-fit text-base px-3 py-2 bg-fifthosiblue text-white outline-none border border-fifthosiblue rounded-md cursor-pointer hover:bg-white hover:text-fifthosiblue duration-300">Edit
Customer</button>
</a>
</div>

@ -37,7 +37,7 @@
Project</button>
<a href="{% url 'editproject' project.project_id %}" class="w-[50%]">
<button
class="w-full text-base px-3 py-2 bg-secondosiblue text-white outline-none border border-secondosiblue rounded-br-md cursor-pointer hover:bg-white hover:text-secondosiblue duration-300">Edit
class="w-full text-base px-3 py-2 bg-fifthosiblue text-white outline-none border border-fifthosiblue rounded-br-md cursor-pointer hover:bg-white hover:text-fifthosiblue duration-300">Edit
Project</button>
</a>
</div>
@ -426,7 +426,7 @@
{% for note in project_notes %}
<tr style="background-color: {{note.color}}">
<td class="px-6 py-4 text-center text-sm border-r border-gray-300">
<p class="text-gray-500">{{ note.text }}</p>
<p class="text-gray-500 break-all whitespace-pre-wrap">{{ note.text }}</p>
</td>
<td class="px-6 py-4 text-center text-sm border-r border-gray-300">

@ -0,0 +1,59 @@
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Osina</title>
<link rel="stylesheet" type="text/css" href='{% static "dist/output.css" %}'>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
</head>
<body class="font-poppinsLight">
<p class="text-xl text-secondosiblue text-center mt-3"><span class="font-poppinsBold">10</span> Reactions</p>
<!-- ALL REACTIONS CONTAINER -->
<div class="w-full flex flex-col gap-5 mt-5">
<!-- Reaction 1 -->
<div class="w-full flex items-center gap-3">
<div class="flex gap-1 items-center">
<p class="text-xs text-secondosiblue">8</p>
<p>&#x1F604;</p>
</div>
<div class="flex flex-col text-sm max-h-[50px] overflow-y-auto text-secondosiblue reactionDetails px-3">
<p>Salim Elliye</p>
<p>Nataly Abi Wajeh</p>
<p>Diana Abi Wajeh</p>
<p>Roy Hawa</p>
<p>Salim Elliye</p>
<p>Nataly Abi Wajeh</p>
<p>Diana Abi Wajeh</p>
<p>Roy Hawa</p>
</div>
</div>
<!-- Reaction 2 -->
<div class="w-full flex items-center gap-3">
<div class="flex gap-1 items-center">
<p class="text-xs text-secondosiblue">2</p>
<p>&#x1F60D;</p>
</div>
<div class="flex flex-col text-sm max-h-[50px] overflow-y-auto text-secondosiblue reactionDetails px-3">
<p>Salim Elliye</p>
<p>Nataly Abi Wajeh</p>
</div>
</div>
</div>
</body>
</html>

@ -19,7 +19,7 @@
User</button>
<a href="{% url 'editstaff' staff.staff_id %}" class="w-full s:w-fit">
<button
class="w-full s:w-fit text-base px-3 py-2 bg-secondosiblue text-white outline-none border border-secondosiblue rounded-md cursor-pointer hover:bg-white hover:text-secondosiblue duration-300">Edit
class="w-full s:w-fit text-base px-3 py-2 bg-fifthosiblue text-white outline-none border border-fifthosiblue rounded-md cursor-pointer hover:bg-white hover:text-fifthosiblue duration-300">Edit
User</button>
</a>
</div>

@ -11,7 +11,10 @@
<div class="w-full h-fit flex justify-between items-center bg-gray-100 shadow-md rounded-md px-3 py-3 mt-4">
<div class="flex justify-start items-center gap-2">
<img src="{% static 'images/back-in-time.png' %}" class="w-[35px]">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-secondosiblue">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z" />
</svg>
<p class="text-secondosiblue">Total Time: <span class="font-poppinsBold">{{ task.total_task_time.0 }}{% if task.total_task_time.0 == 1 %}hr{% else %}hrs{% endif %} {{ task.total_task_time.1 }}{% if task.total_task_time.1 == 1 %}min{% else %}mins{% endif %} {{ task.total_task_time.2 }}{% if task.total_task_time.2 == 1 %}sec{% else %}secs{% endif %}</span></p>
</div>
@ -23,7 +26,7 @@
Task</button>
<a href="{% url 'edittask' task.task_id %}" class="w-full s:w-fit">
<button
class="w-full s:w-fit text-base px-3 py-2 bg-secondosiblue text-white outline-none border border-secondosiblue rounded-md cursor-pointer hover:bg-white hover:text-secondosiblue duration-300">Edit
class="w-full s:w-fit text-base px-3 py-2 bg-fifthosiblue text-white outline-none border border-fifthosiblue rounded-md cursor-pointer hover:bg-white hover:text-fifthosiblue duration-300">Edit
Task</button>
</a>
</div>
@ -206,7 +209,7 @@
{% endfor %}
{% else %}
<tr>
<td colspan="3" class="px-6 py-4 text-center text-sm text-slate-800">
<td colspan="3" class="px-6 py-4 text-center text-sm text-slate-800 flex justify-center items-center">
No Available Points
</td>
</tr>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Business Type
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Business
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Customer
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-10 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Epic
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Project Type
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Project
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Reference
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Staff Position
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Staff
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Tag
</h1>

@ -3,7 +3,7 @@
{% block content %}
<div class="w-full px-5 s:px-9 mb-5">
<div class="w-full h-full shadow-md rounded-md mt-5 py-5 px-3 bg-white">
<div class="w-full h-full shadow-md rounded-md py-5 px-3 bg-white">
<h1 class="text-3xl text-secondosiblue text-center font-semibold">
Edit Task
</h1>

@ -1,20 +1,20 @@
{% load static %}
<div
class="flex justify-between items-center gap-3 bg-gray-100 border border-gray-100 text-white py-2 px-3 rounded-md shadow-md">
class="flex flex-col md:flex-row justify-between items-center gap-3 bg-gray-100 border border-gray-100 text-white py-2 px-3 rounded-md shadow-md">
<div>
<p class="text-secondosiblue">{{epic.start_date}} - {{epic.end_date}}
<p>
</div>
<div class="flex justify-end items-center gap-3">
<div class="w-full l:w-fit flex flex-col md:flex-row justify-end items-center gap-3">
<button
class="bg-transparent border border-secondosiblue text-secondosiblue rounded-md py-2 px-3 cursor-pointer hover:bg-secondosiblue hover:text-white duration-300">Edit
class="w-full md:w-fit bg-transparent border border-secondosiblue text-secondosiblue rounded-md py-2 px-3 cursor-pointer hover:bg-secondosiblue hover:text-white duration-300">Edit
Epic</button>
<button
class="bg-transparent border border-secondosiblue text-secondosiblue rounded-md py-2 px-3 cursor-pointer hover:bg-secondosiblue hover:text-white duration-300">Delete
class="w-full md:w-fit bg-transparent border border-secondosiblue text-secondosiblue rounded-md py-2 px-3 cursor-pointer hover:bg-secondosiblue hover:text-white duration-300">Delete
Epic</button>
<button
class="bg-transparent border border-secondosiblue text-secondosiblue rounded-md py-2 px-3 cursor-pointer hover:bg-secondosiblue hover:text-white duration-300">View
class="w-full md:w-fit bg-transparent border border-secondosiblue text-secondosiblue rounded-md py-2 px-3 cursor-pointer hover:bg-secondosiblue hover:text-white duration-300">View
Epic</button>
</div>
</div>
@ -29,7 +29,7 @@
<!-- TABLE HEADER -->
<div class="w-full h-[70px] rounded-t-md grid grid-cols-2">
<div
class="flex justify-center items-center border-r border-b border-gray-200 {% if task.status == 'Open' %}bg-secondosiblue{% endif %} {% if task.status == 'Working On' %}bg-yellow-500{% endif %} {% if task.status == 'Closed' %}bg-green-700{% endif %} rounded-tl-md text-[17px] text-white text-center">
class="flex justify-center items-center border-r border-b border-gray-200 {% if task.status == 'Open' %}bg-secondosiblue{% endif %} {% if task.status == 'Working On' %}bg-yellow-500{% endif %} {% if task.status == 'Closed' %}bg-green-700{% endif %} rounded-tl-md text-[17px] text-white text-center px-3">
<p>{{task.name}}</p>
</div>
@ -139,7 +139,7 @@
<!-- TASKS ON MOBILE -->
<div class="block md:hidden mt-5">
{% for task in my_tasks %}
{% for task in related_tasks %}
<div class="w-full h-fit bg-white p-3 rounded-md shadow-md mb-5">
<div class="border border-gray-200 rounded-t-md">
<div class="w-full rounded-t-md">
@ -237,3 +237,17 @@
</div>
{% endfor %}
</div>
<!-- POPUP MODAL -->
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden inset-0" id="popUpModal">
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
id="closeModalButton">
<i class="fa fa-close"></i>
</button>
<iframe id="popupModalFrame" frameborder="0"></iframe>
</div>
</div>
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>

@ -32,7 +32,7 @@
<!-- TABLE HEADER -->
<div class="w-full h-[70px] rounded-t-md grid grid-cols-2">
<div
class="flex justify-center items-center border-r border-b border-gray-200 {% if task.status == 'Open' %}bg-secondosiblue{% endif %} {% if task.status == 'Working On' %}bg-yellow-500{% endif %} {% if task.status == 'Closed' %}bg-green-700{% endif %} rounded-tl-md text-[17px] text-white text-center">
class="flex justify-center items-center border-r border-b border-gray-200 px-3 {% if task.status == 'Open' %}bg-secondosiblue{% endif %} {% if task.status == 'Working On' %}bg-yellow-500{% endif %} {% if task.status == 'Closed' %}bg-green-700{% endif %} rounded-tl-md text-[17px] text-white text-center">
<p>{{task.name}}</p>
</div>

@ -61,7 +61,7 @@
<!-- Progress Bar -->
<div class="w-full h-[8px] bg-gray-100 mainBar">
<div class="h-full rounded-r-md progressBar">
<div class="h-full progressBar">
</div>
</div>
@ -69,9 +69,9 @@
<div class="w-full grid grid-cols-1 l:grid-cols-2">
<!-- Left Section -->
<div>
<div class="flex flex-col justify-between">
<!-- Details -->
<div class="w-full flex flex-col gap-3 p-5 border-r-none l:border-r border-gray-200">
<div class="w-full flex flex-col gap-3 p-5">
<div class="w-full flex justify-start items-center gap-2">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" class="w-6 h-6 text-secondosiblue">
@ -108,17 +108,17 @@
class="p-3 text-base bg-gray-50 border-b s:border-b-0 border-r-0 s:border-r border-gray-200 text-secondosiblue flex justify-center items-center">Edit</a>
<button
class="p-3 border-r-0 l:border-r border-gray-200 text-base bg-gray-50 text-secondosiblue deleteProjectButton"
class="p-3 text-base bg-gray-50 text-secondosiblue deleteProjectButton"
data-modal-url="{% url 'deleteprojectmodal' project.id %}">Delete</button>
</div>
</div>
<!-- Right Section - Recent Notes -->
<div class="w-full h-full">
<div class="w-full border-l-none l:border-l border-gray-200">
{% if project.note_set.exists %}
{% with last_note=project.note_set.last %}
<div class="w-full h-full flex flex-col gap-3 justify-center items-center p-3">
<p class="text-secondosiblue">{{ last_note.text }}</p>
<p class="text-secondosiblue break-all whitespace-pre-wrap">{{ last_note.text }}</p>
<div
class="w-[30px] h-[30px] rounded-full shadow-md p-1 flex justify-center items-center bg-gray-100 cursor-pointer hover:scale-105 duration-300 addProjectNoteButton" data-modal-url="{% url 'addprojectnotemodal' project.project_id %}">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="3"

@ -55,7 +55,7 @@
<!-- TABLE HEADER -->
<div class="w-full h-[70px] rounded-t-md grid grid-cols-2">
<div
class="flex justify-center items-center border-r border-b border-gray-200 {% if task.status == 'Open' %}bg-secondosiblue{% endif %} {% if task.status == 'Working On' %}bg-yellow-500{% endif %} {% if task.status == 'Closed' %}bg-green-700{% endif %} rounded-tl-md text-[17px] text-white text-center">
class="flex justify-center items-center border-r border-b border-gray-200 px-3 {% if task.status == 'Open' %}bg-secondosiblue{% endif %} {% if task.status == 'Working On' %}bg-yellow-500{% endif %} {% if task.status == 'Closed' %}bg-green-700{% endif %} rounded-tl-md text-[17px] text-white text-center">
<p>{{task.name}}</p>
</div>

@ -859,7 +859,7 @@
<!-- CONNECTED USERS -->
<div class="w-full hidden xxlg1:block bg-white shadow-md rounded-md p-5 cursor-pointer">
<div class="w-full hidden xxlg1:block bg-white shadow-md rounded-md p-5">
<div class="w-full h-full flex flex-col gap-3 items-center">
<div class="w-full flex justify-center items-center">
<p class="text-[20px] text-secondosiblue font-bold text-center"><span
@ -867,21 +867,17 @@
Connected Users</p>
</div>
<div class="w-full flex flex-wrap gap-2">
<div class="w-full flex flex-wrap gap-4">
{% for online in online_staff_profiles %}
<div class="relative userProfileContainer">
<div
class="w-fit py-2 px-3 bg-gray-700 bg-opacity-60 text-white absolute bottom-10 whitespace-nowrap hidden userName">
<p>{{online.user.first_name}}</p>
</div>
<div class="w-[30px] h-[30px] rounded-full userImage">
<div class="flex flex-col justify-center items-center gap-1">
<div class="w-[30px] h-[30px] rounded-full">
<img src="{{online.image.url}}" alt="User Image"
class="w-full h-full rounded-full object-cover">
</div>
<p class="text-gray-500 text-[10px] font-light">{{online.user.first_name}}</p>
</div>
{% endfor %}
</div>
</div>
</div>
@ -899,7 +895,6 @@
<p class="text-gray-200 font-light text-xs">Copyrights © 2024 All Rights Reserved</p>
</div>
</div>
</div>
</div>

@ -219,3 +219,17 @@
</div>
{% endfor %}
</div>
<!-- POPUP MODAL -->
<div class="w-full h-full bg-black bg-opacity-40 z-20 fixed justify-center items-center hidden inset-0" id="popUpModal">
<div class="w-[95%] md:w-fit h-fit bg-white rounded-md p-9 relative">
<button class="absolute top-3 right-5 text-slate-800 text-xl cursor-pointer outline-none border-none"
id="closeModalButton">
<i class="fa fa-close"></i>
</button>
<iframe id="popupModalFrame" frameborder="0"></iframe>
</div>
</div>
<script type="text/javascript" src='{% static "js/pop-modals.js" %}'></script>

@ -574,7 +574,7 @@
<!-- MOBILE FOOTER -->
<div class="w-full bg-osiblue h-fit py-2 mobileFooter absolute bottom-0">
<div class="bg-osiblue h-fit py-2 mobileFooter">
<div class="w-full flex flex-col justify-center items-center gap-1">
<div class="flex justify-center items-center gap-2">
<img src="{% static 'images/banner-logo.png' %}" alt="Ositcom Logo" class="w-[30px] h-[25px]">

@ -104,7 +104,6 @@
</div>
</div>
<!-- FOOD -->
<div class="emoji-category-container hidden" id="foodContainer">
</div>
@ -192,7 +191,7 @@
<div
class="w-fit h-[30px] text-[16px] rounded-full bg-white p-2 shadow-md absolute -bottom-4 right-2 flex justify-center items-center border gap-1 border-gray-100">
{% for reaction in latest.status.reaction_set.all %}
<p class="mt-1">{{reaction.emoji}}</p>
<p class="mt-1 cursor-pointer reactionDetailsButton" data-modal-url="{% url 'reactiondetailsmodal' %}">{{reaction.emoji}}</p>
{% endfor %}
</div>
{% endif %}
@ -206,11 +205,6 @@
</div>
<!---------------------- JS SCRIPTS -------------------->
<!-- TO RELOAD THE USERS ACTIVITY CONTAINER -->

@ -53,6 +53,8 @@ urlpatterns = [
path('tasks/<str:task_id>/', views.taskdetails, name='detailed-task'),
path('show-points/<str:task_id>/', views.show_points_modal, name='showpoints'),
path('timeline/<str:task_id>/', views.timeline_modal, name='timeline'),
path('reaction-details-modal/', views.reaction_details_modal, name='reactiondetailsmodal'),
path('add/', include('osinacore.add.urls')),

@ -439,7 +439,14 @@ def projectdetails(request, project_id):
@staff_login_required
def reaction_details_modal(request):
context = {
}
return render(request, 'details_templates/reaction-details-modal.html', context)

@ -1180,6 +1180,10 @@ video {
height: 100vh;
}
.max-h-\[50px\] {
max-height: 50px;
}
.w-1 {
width: 0.25rem;
}
@ -1630,6 +1634,10 @@ video {
white-space: pre-wrap;
}
.break-all {
word-break: break-all;
}
.rounded-full {
border-radius: 9999px;
}
@ -1724,6 +1732,10 @@ video {
border-bottom-width: 2px;
}
.border-l {
border-left-width: 1px;
}
.border-r {
border-right-width: 1px;
}
@ -1760,6 +1772,11 @@ video {
border-color: rgb(30 64 175 / var(--tw-border-opacity));
}
.border-fifthosiblue {
--tw-border-opacity: 1;
border-color: rgb(146 156 183 / var(--tw-border-opacity));
}
.border-gray-100 {
--tw-border-opacity: 1;
border-color: rgb(243 244 246 / var(--tw-border-opacity));
@ -2435,6 +2452,10 @@ video {
line-height: 2.5rem;
}
.text-\[10px\] {
font-size: 10px;
}
.text-\[12px\] {
font-size: 12px;
}
@ -2781,6 +2802,16 @@ video {
background: #5a5a5a00;
}
/* SCROLL BAR OF REACTION DETAILS POPUP */
.reactionDetails::-webkit-scrollbar {
width: 3px;
}
.reactionDetails::-webkit-scrollbar-thumb {
background: #b9bfc58b;
}
/* Website's font */
@font-face {
@ -3052,6 +3083,11 @@ video {
padding: 0.5rem;
}
.hover\:text-fifthosiblue:hover {
--tw-text-opacity: 1;
color: rgb(146 156 183 / var(--tw-text-opacity));
}
.hover\:text-gray-500:hover {
--tw-text-opacity: 1;
color: rgb(107 114 128 / var(--tw-text-opacity));
@ -3139,6 +3175,10 @@ video {
width: 180px;
}
.s\:w-\[250px\] {
width: 250px;
}
.s\:w-\[300px\] {
width: 300px;
}
@ -3345,8 +3385,8 @@ video {
border-bottom-width: 0px;
}
.l\:border-r {
border-right-width: 1px;
.l\:border-l {
border-left-width: 1px;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

@ -1,10 +1,10 @@
// WHEN SELECTING A CUSTOMER FETCH AND DISPALY ITS RELATED ITEMS AND THE ITEMS THAT ARE NOT RELATED TO A CUSTOMER
document.addEventListener('DOMContentLoaded', function () {
var itemsSelectTag = $('#itemsSelectTag').selectize()[0].selectize;
document.getElementById('customersSelectTag').addEventListener('change', function () {
var customerId = this.value;
// FETCH CUSTOMER ITEMS
fetch('/fetch-customer-items/' + customerId + '/')
.then(response => {
return response.json();
@ -18,10 +18,12 @@ document.addEventListener('DOMContentLoaded', function () {
delete itemsSelectTag.options['Select Customer First'];
}
// Add items related to the customer
data.items_related_to_customer.forEach(function (item) {
itemsSelectTag.addOption({value: item.id, text: item.title});
});
// Add items without a customer
data.items_without_customer.forEach(function (item) {
itemsSelectTag.addOption({value: item.id, text: item.title});
});
@ -29,5 +31,22 @@ document.addEventListener('DOMContentLoaded', function () {
itemsSelectTag.refreshOptions();
})
.catch(error => console.error('Error fetching customer items:', error));
// FETCH CUSTOMER BUSINESSES
$.ajax({
url: `/fetch-customer-businesses/${customerId}/`,
type: 'GET',
success: function (data) {
$('#businessSelectTag').empty();
if (data.business) {
$('#businessSelectTag').append(`<option value="${data.business.id}">${data.business.name}</option>`);
}
},
error: function (xhr, status, error) {
console.error(error);
}
});
});
});

@ -63,6 +63,7 @@ document.addEventListener("DOMContentLoaded", function () {
addButtonClickListener("addStatusButtonMobile", "500px", "80px");
addButtonClickListener("userRecentActivitiesButton", "400px", "600px");
addButtonClickListener("addUserStoryButton", "400px", "160px");
addButtonClickListener("reactionDetailsButton", "400px", "300px");

Loading…
Cancel
Save