PK
œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Notice: ob_end_clean(): Failed to delete buffer. No buffer to delete in /home/qpfajntr/ekhaya.265thami.com/y77.php on line 8
| Dir : /home/qpfajntr/ |
| Server: Linux premium288.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64 IP: 162.254.39.137 |
| Dir : /home/qpfajntr/test (1).html |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Banking Systems Dashboard</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
<style>
:root {
--primary: #2563eb;
--primary-light: #dbeafe;
--secondary: #f59e0b;
--dark: #1e293b;
--light: #f8fafc;
--gray: #64748b;
--light-gray: #e2e8f0;
--white: #ffffff;
--shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
--shadow-hover: 0 6px 12px -2px rgba(0, 0, 0, 0.08);
--radius: 0.75rem;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', sans-serif;
background-color: var(--light);
color: var(--dark);
padding: 2rem;
line-height: 1.5;
}
header {
max-width: 1200px;
margin: 0 auto 2rem;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 1rem;
}
.logo {
display: flex;
align-items: center;
gap: 1rem;
}
.logo-icon {
background: var(--primary);
color: white;
width: 50px;
height: 50px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
font-weight: bold;
}
.logo-text {
font-weight: 700;
font-size: 1.5rem;
}
.logo-text span {
color: var(--primary);
}
.search-container {
display: flex;
align-items: center;
gap: 1rem;
flex-wrap: nowrap; /* prevents wrapping to next line */
}
.favorite-filter {
display: flex;
gap: 0.75rem;
background: var(--white);
padding: 0.5rem;
border-radius: var(--radius);
box-shadow: var(--shadow);
border: 1px solid var(--light-gray);
}
.filter-button {
background: var(--white);
border: 1px solid var(--light-gray);
border-radius: 0.625rem;
padding: 0.625rem 1.25rem;
cursor: pointer;
font-weight: 600;
color: var(--gray);
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
font-size: 0.875rem;
}
.filter-button:hover {
transform: translateY(-1px);
border-color: var(--light-gray);
box-shadow: var(--shadow-hover);
}
.filter-button.active {
background: var(--primary);
color: var(--white);
border-color: var(--primary);
box-shadow: 0 4px 6px -1px rgba(59, 130, 246, 0.2);
}
#gridSearch {
padding: 0.75rem 1rem;
width: 250px;
flex-shrink: 0; /* prevents shrinking */
border: 1px solid var(--light-gray);
border-radius: var(--radius);
font-size: 1rem;
background: var(--white);
transition: all 0.2s ease;
box-shadow: var(--shadow);
}
#gridSearch:focus {
border-color: var(--primary);
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
outline: none;
}
.ll-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 2rem;
max-width: 1200px;
margin: 0 auto;
padding: 1rem;
}
.ll-grid-item {
background: var(--white);
border-radius: var(--radius);
box-shadow: var(--shadow);
padding: 1.5rem;
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
border: 1px solid var(--light-gray);
display: flex;
flex-direction: column;
position: relative;
}
.ll-grid-item:hover {
transform: translateY(-5px);
box-shadow: var(--shadow-hover);
border-color: var(--light-gray);
}
.system-logo {
width: 108px;
height: 55px;
object-fit: contain;
margin: 0 auto 1.5rem;
display: block;
}
.favorite-star {
position: absolute;
top: 1rem;
right: 1rem;
color: var(--light-gray);
cursor: pointer;
transition: all 0.2s ease;
font-size: 1.25rem;
z-index: 10;
}
.favorite-star.favorited {
color: var(--secondary);
filter: drop-shadow(0 2px 4px rgba(245, 158, 11, 0.15));
}
.favorite-star:hover {
transform: scale(1.15);
}
.linklistcatname {
color: var(--dark);
font-size: 1.125rem;
font-weight: 700;
margin-bottom: 0.5rem;
text-align: center;
line-height: 1.3;
}
.link-description {
font-size: 0.875rem;
color: var(--gray);
margin-bottom: 1rem;
text-align: center;
}
.track_this_link {
color: var(--primary);
text-decoration: none;
font-weight: 600;
font-size: 0.875rem;
margin-top: auto;
transition: color 0.2s ease;
display: inline-flex;
align-items: center;
gap: 0.5rem;
justify-content: center;
padding: 0.75rem;
border-radius: 0.5rem;
background: var(--primary-light);
}
.track_this_link:hover {
color: var(--primary);
text-decoration: underline;
background: #e0f2fe;
}
.hidden {
display: none !important;
}
#noResults {
display: none;
text-align: center;
grid-column: 1 / -1;
padding: 2rem;
font-size: 1.25rem;
color: var(--gray);
}
#scrollTopBtn {
position: fixed;
bottom: 2rem;
right: 2rem;
z-index: 1000;
background-color: var(--primary);
color: var(--white);
border: none;
border-radius: 50%;
padding: 1rem;
font-size: 1.25rem;
cursor: pointer;
box-shadow: var(--shadow-hover);
opacity: 0;
visibility: hidden;
transition: all 0.3s ease;
display: flex;
align-items: center;
justify-content: center;
width: 50px;
height: 50px;
}
#scrollTopBtn.show {
opacity: 1;
visibility: visible;
}
.system-info {
margin-top: 1rem;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.system-info div {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.85rem;
}
.system-info i {
color: var(--primary);
}
.favorites-divider {
grid-column: 1 / -1;
text-align: center;
margin: 1rem 0;
position: relative;
}
.favorites-divider::before {
content: "";
position: absolute;
top: 50%;
left: 0;
right: 0;
height: 1px;
background: var(--light-gray);
z-index: 1;
}
.favorites-divider span {
position: relative;
display: inline-block;
background: var(--light);
padding: 0 1rem;
z-index: 2;
color: var(--gray);
font-size: 0.875rem;
}
@media (max-width: 768px) {
body {
padding: 1.5rem;
}
header {
flex-direction: column;
align-items: flex-start;
}
.search-container {
width: 100%;
}
.ll-grid {
grid-template-columns: 1fr;
margin: 0;
padding: 0;
}
#scrollTopBtn {
bottom: 1rem;
right: 1rem;
width: 40px;
height: 40px;
font-size: 1rem;
}
}
.typewriter-container {
text-align: center;
padding: 30px 10px;
font-family: 'Inter', sans-serif;
}
.typewriter-text {
display: inline-block;
overflow: hidden;
white-space: nowrap;
border-right: 2px solid #6366f1;
font-size: 1rem;
color: #1e293b;
max-width: 0;
animation: typing 12s steps(98, end) infinite;
}
@keyframes typing {
0% {
max-width: 0;
}
58.33% {
max-width: 98ch;
}
100% {
max-width: 98ch;
}
}
.typewriter-content a {
color: #3b82f6;
font-weight: 600;
text-decoration: underline;
}
.typewriter-content a {
color: red !important;
font-weight: 600;
text-decoration: underline;
transition: color 0.3s ease;
}
.typewriter-content a:hover {
color: darkred !important;
text-decoration: underline;
}
.typewriter-text::after {
content: '|';
animation: blink-caret 0.75s step-end infinite;
color: #6366f1;
}
@keyframes blink-caret {
0%, 100% { opacity: 0; }
50% { opacity: 1; }
}
.logo-img {
width: 60px;
height: auto;
object-fit: contain;
display: block;
}
</style>
</head>
<body>
<header>
<div class="logo">
<img src="logos/nbm.png" alt="NBM Logo" class="logo-img">
<div class="logo-text"><span>NBM Systems Dashboard</span></div>
</div>
<div class="search-container">
<div class="favorite-filter">
<button class="filter-button active" data-filter="all">All Systems</button>
<button class="filter-button" data-filter="favorites">Favorites ★</button>
</div>
<input type="text" id="gridSearch" placeholder="Search systems...">
</div>
</header>
<div class="ll-grid" id="gridContainer">
<!-- Systems will be inserted here by JavaScript -->
</div>
<div id="noResults">No matching systems found.</div>
<button id="scrollTopBtn" title="Back to top">↑</button>
<div class="typewriter-container">
<p class="typewriter-text">
<span class="typewriter-content">If you have any issues with any of the systems please <a href="https://servicedesk.natbankmw.com/HomePage.do?view_type=my_view" target="_blank">click here</a> to access the Manage Engine.</span>
</p>
</div>
<script>
// System data with logos
const systems = [
{
name: "T24",
url: "http://192.168.250.100/NBMPROD2/servlet/BrowserServlet?",
logo: "logos/Temenos-T24.png",
description: "Core banking system"
},
{
name: "BUSINESS POINT",
url: "https://192.168.1.22/bp/LoginPage?ReturnUrl=%2Fbp",
logo: "logos/businesspoint.png",
description: "Business banking portal"
},
{
name: "BRIMS",
url: "http://192.168.1.42:1991/WEB/GENERAL/frmLoginWebDesktop.aspx",
logo: "https://cdn-icons-png.flaticon.com/512/2942/2942789.png",
description: "Branch information management"
},
{
name: "CASH PASSPORT",
url: "https://mw.prepaid.branchportal.com/#/",
logo: "logos/CASHPASSPORT.png",
description: "Prepaid card management"
},
{
name: "CERBERUS",
url: "https://192.168.1.90/login?r=%2Ffile",
logo: "logos/CERBERUS.png",
description: "File management system"
},
{
name: "CIMS",
url: "https://192.168.1.228:8181/cims/#/auth/login",
logo: "logos/mis.png",
description: "Customer information system"
},
{
name: "CHATBOT",
url: "https://sso.natbank.co.mw/",
logo: "logos/CHATBOT.webp",
description: "AI customer support"
},
{
name: "COGNOS",
url: "https://dwca.natbank.co.mw/ibmcognos/bi/",
logo: "logos/IBM.png",
description: "Business intelligence"
},
{
name: "CORTEX",
url: "https://192.168.240.203:7002/CortexOnline-NBM/logon.jsp",
logo: "logos/CORTEX.jpg",
description: "Data analytics platform"
},
{
name: "C-REG",
url: "https://192.168.1.186/NBMCReg/loginsystem.aspx",
logo: "logos/c-reg.png",
description: "Compliance registration"
},
{
name: "EFT",
url: "https://192.168.1.38/processEft/login.seam",
logo: "logos/eft.png",
description: "Electronic funds transfer"
},
{
name: "FORMS",
url: "https://192.168.1.229/forms/#/login",
logo: "logos/form.png",
description: "Digital forms platform"
},
{
name: "FX APP",
url: "https://webratessvr.natbank.co.mw:8383/FXManager/login.xhtml?jfwid=0391bff19db9625f18d12cafa1e4%3A0",
logo: "logos/forex.png",
description: "Foreign exchange management"
},
{
name: "GIEOM",
url: "https://192.168.1.109/Account/Login",
logo: "logos/GIEOM.jpg",
description: "Financial management system"
},
{
name: "HELLO PAISA",
url: "https://ppi.daytonacap.com/",
logo: "logos/HELLOPAISA.jpg",
description: "Mobile payment solution"
},
{
name: "IDU",
url: "https://192.168.1.125/iduConcept_Client/Login.aspx",
logo: "logos/IDU.jpg",
description: "Budgeting system",
extra: "BUDGETING SYSTEM"
},
{
name: "LEASEPAC",
url: "http://192.168.1.161:8083/Login.aspx",
logo: "logos/lease.png",
description: "Lease management"
},
{
name: "LOAN ORIGINATING SYSTEM",
url: "https://rlos.natbank.co.mw/ARXSSO/oauth/doLogin",
logo: "logos/loan.png",
description: "Loan application processing"
},
{
name: "MANAGE ENGINE",
url: "https://servicedesk.natbankmw.com/HomePage.do?logout=true",
logo: "logos/it support.png",
description: "IT service management"
},
{
name: "MO626 ADMIN PORTAL",
url: "https://192.168.150.86:5000/",
logo: "logos/Mo626-2.png",
description: "Mobile banking admin"
},
{
name: "MODEFIN",
url: "https://banknet360admin.natbankmw.com/mfmbs/loginc.jsp#b",
logo: "logos/MODEFIN.jpg",
description: "Core banking network"
},
{
name: "MONEY EXPRESS",
url: "https://192.168.1.168:8282/moneyXpress/#/auth/logout",
logo: "logos/transfer.png",
description: "Money transfer service",
extra: "UNDER MAINTENANCE"
},
{
name: "MONEYGRAM",
url: "https://login.moneygram.com/auth/UI/Login/?logout=true",
logo: "logos/moneygram.jpeg",
description: "International money transfer"
},
{
name: "MYFUEL CARD",
url: "https://admin.nbmyfuel.com/login",
logo: "logos/puma.png",
description: "Fuel card management"
},
{
name: "MYFUEL CARD 2",
url: "https://192.168.1.173/",
logo: "logos/puma.png",
description: "Alternative fuel card portal"
},
{
name: "PERSONAL PROPERTY SECURITY REGISTRY",
url: "https://ppsr.registrargeneral.gov.mw/",
logo: "logos/emblem.png",
description: "Property security registry"
},
{
name: "POSTILION",
url: "https://192.168.240.65:8080/portal/BoxOwnerLogin.faces",
logo: "logos/cardpay.png",
description: "Transaction processing"
},
{
name: "QUANTUM",
url: "https://tsmapp.natbank.co.mw/account/logon?ReturnUrl=%2Fquantum%2Faccount%2Flogon%3FReturnUrl%3D%252Fquantum%252F",
logo: "logos/treasure.png",
description: "Treasury management"
},
{
name: "SAGE 300 PEOPLE",
url: "https://sage300.natbank.co.mw/WebSelfService#/signin",
logo: "logos/Sage People.png",
description: "HR management system"
},
{
name: "SIGCAP",
url: "https://192.168.1.123/WebClient_NBM/Pages/MainScreen.html",
logo: "logos/Signature.png",
description: "Signature capture"
},
{
name: "TRANSUNION",
url: "https://secure.transunionafrica.com/mw/Common/login.action",
logo: "logos/TransUnion.png",
description: ""
},
{
name: "VOICE LOGGER",
url: "http://192.168.15.177/login.htm",
logo: "logos/record.png",
description: "Call recording system"
},
{
name: "WEB RETRIEVE",
url: "https://192.168.1.123/WebClient_NBM/Pages/MainScreen.html",
logo: "logos/documentation.png",
description: "Document retrieval"
},
{
name: "WESTERN UNION",
url: "https://wuagentportal.westernunion.com/ap/login.do",
logo: "logos/western Union.png",
description: "Money transfer service"
}
];
document.addEventListener('DOMContentLoaded', function () {
const gridContainer = document.getElementById('gridContainer');
const searchInput = document.getElementById('gridSearch');
const filterButtons = document.querySelectorAll('.filter-button');
const noResults = document.getElementById('noResults');
const scrollTopBtn = document.getElementById('scrollTopBtn');
let currentFilter = 'all';
let favorites = JSON.parse(localStorage.getItem('systemFavorites')) || [];
// Render systems
function renderSystems() {
gridContainer.innerHTML = '';
systems.forEach(system => {
const systemName = system.name.toLowerCase();
const isFavorite = favorites.includes(systemName);
const item = document.createElement('div');
item.className = 'll-grid-item';
item.dataset.name = systemName;
item.innerHTML = `
<i class="favorite-star ${isFavorite ? 'fas favorited' : 'far'} fa-star"></i>
<img src="${system.logo}" alt="${system.name} logo" class="system-logo">
<div class="linklistcatname">${system.name}</div>
${system.extra ? `<div class="link-description">${system.extra}</div>` : ''}
<div class="link-description">${system.description}</div>
<a class="track_this_link" href="${system.url}" target="_blank">
Visit Site <i class="fas fa-external-link-alt" style="font-size:0.8em;"></i>
</a>
<div class="system-info">
<div><i class="fas fa-globe"></i> ${new URL(system.url).hostname}</div>
</div>
`;
gridContainer.appendChild(item);
});
// Attach favorite event listeners
document.querySelectorAll('.favorite-star').forEach(star => {
star.addEventListener('click', function() {
const systemName = this.closest('.ll-grid-item').dataset.name;
const isFavorited = this.classList.contains('favorited');
if (isFavorited) {
favorites = favorites.filter(name => name !== systemName);
this.classList.replace('fas', 'far');
} else {
favorites.push(systemName);
this.classList.replace('far', 'fas');
}
this.classList.toggle('favorited');
localStorage.setItem('systemFavorites', JSON.stringify(favorites));
applyFilters();
});
});
}
// Apply filters
function applyFilters() {
const searchQuery = searchInput.value.toLowerCase();
const items = document.querySelectorAll('.ll-grid-item');
let visibleItems = 0;
items.forEach(item => {
const name = item.dataset.name;
const description = item.querySelector('.link-description')?.textContent.toLowerCase() || '';
const matchesSearch = name.includes(searchQuery) || description.includes(searchQuery);
const isFavorite = favorites.includes(name);
const shouldShow =
matchesSearch &&
(currentFilter === 'all' || (currentFilter === 'favorites' && isFavorite));
item.classList.toggle('hidden', !shouldShow);
if (shouldShow) visibleItems++;
});
// Show/hide no results message
noResults.style.display = visibleItems === 0 ? 'block' : 'none';
// For all view, reorder with favorites first and add divider
if (currentFilter === 'all') {
// Get all visible items
const visibleItems = Array.from(items).filter(item => !item.classList.contains('hidden'));
// Separate favorites and non-favorites
const favoriteItems = visibleItems.filter(item => favorites.includes(item.dataset.name));
const nonFavoriteItems = visibleItems.filter(item => !favorites.includes(item.dataset.name));
// Clear the container
gridContainer.innerHTML = '';
// Append favorite items
favoriteItems.forEach(item => gridContainer.appendChild(item));
// Add divider if we have both types of items
if (favoriteItems.length > 0 && nonFavoriteItems.length > 0) {
const divider = document.createElement('div');
divider.className = 'favorites-divider';
divider.innerHTML = '<span>Other Systems</span>';
gridContainer.appendChild(divider);
}
// Append non-favorite items
nonFavoriteItems.forEach(item => gridContainer.appendChild(item));
}
}
// Initialize
renderSystems();
applyFilters();
// Filter button handler
filterButtons.forEach(button => {
button.addEventListener('click', function() {
filterButtons.forEach(btn => btn.classList.remove('active'));
this.classList.add('active');
currentFilter = this.dataset.filter;
applyFilters();
});
});
// Search input handler
searchInput.addEventListener('input', applyFilters);
// Scroll to top handler
window.addEventListener('scroll', () => {
if (window.scrollY > 300) {
scrollTopBtn.classList.add('show');
} else {
scrollTopBtn.classList.remove('show');
}
});
scrollTopBtn.addEventListener('click', () => {
window.scrollTo({ top: 0, behavior: 'smooth' });
});
});
</script>
</body>
</html>