compressImage
هذا الالتزام موجود في:
10
admin.html
10
admin.html
@@ -67,6 +67,16 @@
|
|||||||
<input type="text" id="instagramUrl" placeholder="رابط إنستغرام" class="flex-1 px-5 py-3 border rounded-2xl">
|
<input type="text" id="instagramUrl" placeholder="رابط إنستغرام" class="flex-1 px-5 py-3 border rounded-2xl">
|
||||||
<button onclick="updateInstagram()" class="bg-[#ff661c] text-white px-6 py-3 rounded-2xl font-bold w-full sm:w-auto">حفظ</button>
|
<button onclick="updateInstagram()" class="bg-[#ff661c] text-white px-6 py-3 rounded-2xl font-bold w-full sm:w-auto">حفظ</button>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- رابط مجموعة واتساب -->
|
||||||
|
<div class="flex flex-col sm:flex-row gap-3 items-stretch">
|
||||||
|
<input type="text" id="whatsappGroupUrl"
|
||||||
|
placeholder="https://chat.whatsapp.com/XXXXXXXXXX"
|
||||||
|
class="flex-1 px-5 py-3 border rounded-2xl">
|
||||||
|
<button onclick="updateWhatsAppGroup()"
|
||||||
|
class="bg-[#ff661c] text-white px-6 py-3 rounded-2xl font-bold w-full sm:w-auto">
|
||||||
|
حفظ
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- إدارة روابط التحميل -->
|
<!-- إدارة روابط التحميل -->
|
||||||
|
|||||||
179
admin.js
179
admin.js
@@ -5,77 +5,85 @@
|
|||||||
// تحديد رابط API بناءً على البيئة
|
// تحديد رابط API بناءً على البيئة
|
||||||
const API_BASE = (() => {
|
const API_BASE = (() => {
|
||||||
const host = window.location.hostname;
|
const host = window.location.hostname;
|
||||||
if (host === 'localhost' || host === '127.0.0.1' || host.startsWith('192.168.')) {
|
if (
|
||||||
return `http://${host}:3000/api`; // عدّل المنفذ حسب إعدادات السيرفر
|
host === "localhost" ||
|
||||||
|
host === "127.0.0.1" ||
|
||||||
|
host.startsWith("192.168.")
|
||||||
|
) {
|
||||||
|
return `http://147.93.123.146:3003/api`;
|
||||||
}
|
}
|
||||||
return '/api';
|
return "/api";
|
||||||
})();
|
})();
|
||||||
|
|
||||||
// --- دالة تسجيل الدخول عبر الخادم ---
|
// --- دالة تسجيل الدخول عبر الخادم ---
|
||||||
async function checkAuth() {
|
async function checkAuth() {
|
||||||
const password = document.getElementById('adminPassword').value;
|
const password = document.getElementById("adminPassword").value;
|
||||||
try {
|
try {
|
||||||
const res = await fetch(API_BASE + '/login', {
|
const res = await fetch(API_BASE + "/login", {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { "Content-Type": "application/json" },
|
||||||
body: JSON.stringify({ password })
|
body: JSON.stringify({ password }),
|
||||||
});
|
});
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
sessionStorage.setItem('adminPass', password);
|
sessionStorage.setItem("adminPass", password);
|
||||||
document.getElementById('loginSection').classList.add('hidden');
|
document.getElementById("loginSection").classList.add("hidden");
|
||||||
document.getElementById('adminContent').classList.remove('hidden');
|
document.getElementById("adminContent").classList.remove("hidden");
|
||||||
loadSettings(); // تحميل الإعدادات بعد الدخول
|
loadSettings(); // تحميل الإعدادات بعد الدخول
|
||||||
} else {
|
} else {
|
||||||
alert('❌ ' + (data.message || 'كلمة المرور غير صحيحة'));
|
alert("❌ " + (data.message || "كلمة المرور غير صحيحة"));
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
alert('❌ فشل الاتصال بالخادم. تأكد من تشغيل السيرفر.');
|
alert("❌ فشل الاتصال بالخادم. تأكد من تشغيل السيرفر.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function logout() {
|
function logout() {
|
||||||
document.getElementById('loginSection').classList.remove('hidden');
|
document.getElementById("loginSection").classList.remove("hidden");
|
||||||
document.getElementById('adminContent').classList.add('hidden');
|
document.getElementById("adminContent").classList.add("hidden");
|
||||||
document.getElementById('adminPassword').value = '';
|
document.getElementById("adminPassword").value = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- تحميل الإعدادات من الخادم ---
|
// --- تحميل الإعدادات من الخادم ---
|
||||||
async function loadSettings() {
|
async function loadSettings() {
|
||||||
try {
|
try {
|
||||||
const res = await fetch(API_BASE + '/settings');
|
const res = await fetch(API_BASE + "/settings");
|
||||||
if (!res.ok) throw new Error('فشل تحميل الإعدادات');
|
if (!res.ok) throw new Error("فشل تحميل الإعدادات");
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
|
|
||||||
document.getElementById('whatsappNumber').value = data.whatsappNumber || '';
|
document.getElementById("whatsappNumber").value = data.whatsappNumber || "";
|
||||||
document.getElementById('facebookUrl').value = data.facebookUrl || '';
|
document.getElementById("facebookUrl").value = data.facebookUrl || "";
|
||||||
document.getElementById('instagramUrl').value = data.instagramUrl || '';
|
document.getElementById("instagramUrl").value = data.instagramUrl || "";
|
||||||
document.getElementById('appStoreUrl').value = data.appStoreUrl || '';
|
document.getElementById("whatsappGroupUrl").value = data.whatsappGroupUrl || "";
|
||||||
document.getElementById('googlePlayUrl').value = data.googlePlayUrl || '';
|
document.getElementById("appStoreUrl").value = data.appStoreUrl || "";
|
||||||
document.getElementById('apkUrl').value = data.apkUrl || '';
|
document.getElementById("googlePlayUrl").value = data.googlePlayUrl || "";
|
||||||
|
document.getElementById("apkUrl").value = data.apkUrl || "";
|
||||||
|
|
||||||
if (data.telegramChatIds && Array.isArray(data.telegramChatIds)) {
|
if (data.telegramChatIds && Array.isArray(data.telegramChatIds)) {
|
||||||
document.getElementById('telegramChatIds').value = data.telegramChatIds.join('\n');
|
document.getElementById("telegramChatIds").value =
|
||||||
|
data.telegramChatIds.join("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
renderVideos(data.videos || []);
|
renderVideos(data.videos || []);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('خطأ في تحميل الإعدادات:', error);
|
console.error("خطأ في تحميل الإعدادات:", error);
|
||||||
alert('تعذر تحميل الإعدادات. تأكد من تشغيل الخادم.');
|
alert("تعذر تحميل الإعدادات. تأكد من تشغيل الخادم.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- عرض الفيديوهات ---
|
// --- عرض الفيديوهات ---
|
||||||
function renderVideos(videos) {
|
function renderVideos(videos) {
|
||||||
const container = document.getElementById('videosList');
|
const container = document.getElementById("videosList");
|
||||||
container.innerHTML = '';
|
container.innerHTML = "";
|
||||||
|
|
||||||
videos.forEach((url, index) => {
|
videos.forEach((url, index) => {
|
||||||
const videoId = extractYouTubeVideoId(url);
|
const videoId = extractYouTubeVideoId(url);
|
||||||
const thumbnail = videoId ? `https://img.youtube.com/vi/${videoId}/mqdefault.jpg` : '';
|
const thumbnail = videoId
|
||||||
|
? `https://img.youtube.com/vi/${videoId}/mqdefault.jpg`
|
||||||
|
: "";
|
||||||
|
|
||||||
const card = document.createElement('div');
|
const card = document.createElement("div");
|
||||||
card.className = 'bg-zinc-100 p-4 rounded-2xl relative';
|
card.className = "bg-zinc-100 p-4 rounded-2xl relative";
|
||||||
card.innerHTML = `
|
card.innerHTML = `
|
||||||
<img src="${thumbnail}" alt="فيديو" class="w-full h-32 object-cover rounded-xl mb-2">
|
<img src="${thumbnail}" alt="فيديو" class="w-full h-32 object-cover rounded-xl mb-2">
|
||||||
<p class="text-sm truncate" title="${url}">${url}</p>
|
<p class="text-sm truncate" title="${url}">${url}</p>
|
||||||
@@ -91,7 +99,7 @@ function extractYouTubeVideoId(url) {
|
|||||||
const patterns = [
|
const patterns = [
|
||||||
/youtube\.com\/watch\?v=([^&]+)/,
|
/youtube\.com\/watch\?v=([^&]+)/,
|
||||||
/youtu\.be\/([^?]+)/,
|
/youtu\.be\/([^?]+)/,
|
||||||
/youtube\.com\/embed\/([^?]+)/
|
/youtube\.com\/embed\/([^?]+)/,
|
||||||
];
|
];
|
||||||
for (let pattern of patterns) {
|
for (let pattern of patterns) {
|
||||||
const match = url.match(pattern);
|
const match = url.match(pattern);
|
||||||
@@ -102,127 +110,135 @@ function extractYouTubeVideoId(url) {
|
|||||||
|
|
||||||
// --- إضافة فيديو جديد ---
|
// --- إضافة فيديو جديد ---
|
||||||
async function addVideo() {
|
async function addVideo() {
|
||||||
const url = document.getElementById('newVideoUrl').value.trim();
|
const url = document.getElementById("newVideoUrl").value.trim();
|
||||||
if (!url) {
|
if (!url) {
|
||||||
alert('الرجاء إدخال رابط الفيديو');
|
alert("الرجاء إدخال رابط الفيديو");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const res = await fetch(API_BASE + '/settings');
|
const res = await fetch(API_BASE + "/settings");
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
const videos = data.videos || [];
|
const videos = data.videos || [];
|
||||||
videos.push(url);
|
videos.push(url);
|
||||||
|
|
||||||
const updateRes = await fetch(API_BASE + '/settings', {
|
const updateRes = await fetch(API_BASE + "/settings", {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
"Content-Type": "application/json",
|
||||||
'x-admin-password': sessionStorage.getItem('adminPass') || ''
|
"x-admin-password": sessionStorage.getItem("adminPass") || "",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({ videos })
|
body: JSON.stringify({ videos }),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (updateRes.ok) {
|
if (updateRes.ok) {
|
||||||
document.getElementById('newVideoUrl').value = '';
|
document.getElementById("newVideoUrl").value = "";
|
||||||
loadSettings(); // إعادة تحميل القائمة
|
loadSettings(); // إعادة تحميل القائمة
|
||||||
alert('✅ تمت إضافة الفيديو بنجاح');
|
alert("✅ تمت إضافة الفيديو بنجاح");
|
||||||
} else {
|
} else {
|
||||||
alert('❌ فشل إضافة الفيديو');
|
alert("❌ فشل إضافة الفيديو");
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
alert('❌ خطأ في الاتصال بالخادم');
|
alert("❌ خطأ في الاتصال بالخادم");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- حذف فيديو ---
|
// --- حذف فيديو ---
|
||||||
async function deleteVideo(index) {
|
async function deleteVideo(index) {
|
||||||
if (!confirm('هل أنت متأكد من حذف هذا الفيديو؟')) return;
|
if (!confirm("هل أنت متأكد من حذف هذا الفيديو؟")) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const res = await fetch(API_BASE + '/settings');
|
const res = await fetch(API_BASE + "/settings");
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
const videos = data.videos || [];
|
const videos = data.videos || [];
|
||||||
videos.splice(index, 1);
|
videos.splice(index, 1);
|
||||||
|
|
||||||
const updateRes = await fetch(API_BASE + '/settings', {
|
const updateRes = await fetch(API_BASE + "/settings", {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
"Content-Type": "application/json",
|
||||||
'x-admin-password': sessionStorage.getItem('adminPass') || ''
|
"x-admin-password": sessionStorage.getItem("adminPass") || "",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({ videos })
|
body: JSON.stringify({ videos }),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (updateRes.ok) {
|
if (updateRes.ok) {
|
||||||
loadSettings();
|
loadSettings();
|
||||||
alert('✅ تم الحذف');
|
alert("✅ تم الحذف");
|
||||||
} else {
|
} else {
|
||||||
alert('❌ فشل الحذف');
|
alert("❌ فشل الحذف");
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
alert('❌ خطأ في الاتصال');
|
alert("❌ خطأ في الاتصال");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- دوال تحديث الحقول الفردية ---
|
// --- دوال تحديث الحقول الفردية ---
|
||||||
async function updateWhatsApp() {
|
async function updateWhatsApp() {
|
||||||
const value = document.getElementById('whatsappNumber').value.trim();
|
const value = document.getElementById("whatsappNumber").value.trim();
|
||||||
await updateField('whatsappNumber', value);
|
await updateField("whatsappNumber", value);
|
||||||
}
|
}
|
||||||
async function updateFacebook() {
|
async function updateFacebook() {
|
||||||
const value = document.getElementById('facebookUrl').value.trim();
|
const value = document.getElementById("facebookUrl").value.trim();
|
||||||
await updateField('facebookUrl', value);
|
await updateField("facebookUrl", value);
|
||||||
}
|
}
|
||||||
async function updateInstagram() {
|
async function updateInstagram() {
|
||||||
const value = document.getElementById('instagramUrl').value.trim();
|
const value = document.getElementById("instagramUrl").value.trim();
|
||||||
await updateField('instagramUrl', value);
|
await updateField("instagramUrl", value);
|
||||||
|
}
|
||||||
|
async function updateWhatsAppGroup() {
|
||||||
|
const value = document.getElementById("whatsappGroupUrl").value.trim();
|
||||||
|
await updateField("whatsappGroupUrl", value);
|
||||||
}
|
}
|
||||||
async function updateAppStore() {
|
async function updateAppStore() {
|
||||||
const value = document.getElementById('appStoreUrl').value.trim();
|
const value = document.getElementById("appStoreUrl").value.trim();
|
||||||
await updateField('appStoreUrl', value);
|
await updateField("appStoreUrl", value);
|
||||||
}
|
}
|
||||||
async function updateGooglePlay() {
|
async function updateGooglePlay() {
|
||||||
const value = document.getElementById('googlePlayUrl').value.trim();
|
const value = document.getElementById("googlePlayUrl").value.trim();
|
||||||
await updateField('googlePlayUrl', value);
|
await updateField("googlePlayUrl", value);
|
||||||
}
|
}
|
||||||
async function updateApk() {
|
async function updateApk() {
|
||||||
const value = document.getElementById('apkUrl').value.trim();
|
const value = document.getElementById("apkUrl").value.trim();
|
||||||
await updateField('apkUrl', value);
|
await updateField("apkUrl", value);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateTelegramChatIds() {
|
async function updateTelegramChatIds() {
|
||||||
const text = document.getElementById('telegramChatIds').value.trim();
|
const text = document.getElementById("telegramChatIds").value.trim();
|
||||||
const ids = text.split('\n')
|
const ids = text
|
||||||
.map(line => line.trim())
|
.split("\n")
|
||||||
.filter(line => line !== '');
|
.map((line) => line.trim())
|
||||||
await updateField('telegramChatIds', ids);
|
.filter((line) => line !== "");
|
||||||
|
await updateField("telegramChatIds", ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
// دالة عامة لتحديث حقل واحد
|
// دالة عامة لتحديث حقل واحد
|
||||||
async function updateField(key, value) {
|
async function updateField(key, value) {
|
||||||
const password = document.getElementById('adminPassword').value || sessionStorage.getItem('adminPass') || '';
|
const password =
|
||||||
|
document.getElementById("adminPassword").value ||
|
||||||
|
sessionStorage.getItem("adminPass") ||
|
||||||
|
"";
|
||||||
try {
|
try {
|
||||||
const res = await fetch(API_BASE + '/settings', {
|
const res = await fetch(API_BASE + "/settings", {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
"Content-Type": "application/json",
|
||||||
'x-admin-password': password
|
"x-admin-password": password,
|
||||||
},
|
},
|
||||||
body: JSON.stringify({ [key]: value })
|
body: JSON.stringify({ [key]: value }),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res.ok) {
|
if (res.ok) {
|
||||||
alert('✅ تم الحفظ بنجاح');
|
alert("✅ تم الحفظ بنجاح");
|
||||||
} else {
|
} else {
|
||||||
const err = await res.json();
|
const err = await res.json();
|
||||||
alert('❌ فشل الحفظ: ' + (err.message || 'خطأ غير معروف'));
|
alert("❌ فشل الحفظ: " + (err.message || "خطأ غير معروف"));
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
alert('❌ خطأ في الاتصال بالخادم');
|
alert("❌ خطأ في الاتصال بالخادم");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -238,3 +254,4 @@ window.updateAppStore = updateAppStore;
|
|||||||
window.updateGooglePlay = updateGooglePlay;
|
window.updateGooglePlay = updateGooglePlay;
|
||||||
window.updateApk = updateApk;
|
window.updateApk = updateApk;
|
||||||
window.updateTelegramChatIds = updateTelegramChatIds;
|
window.updateTelegramChatIds = updateTelegramChatIds;
|
||||||
|
window.updateWhatsAppGroup = updateWhatsAppGroup;
|
||||||
|
|||||||
40
index.html
40
index.html
@@ -1,9 +1,17 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ar" dir="rtl">
|
<html lang="ar" dir="rtl">
|
||||||
<head>
|
<head>
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="icon" type="image/webp" href="/logos/logos_webp/logo_main.webp">
|
||||||
|
<link rel="apple-touch-icon" href="/logos/logos_webp/logo_main.webp">
|
||||||
|
|
||||||
|
<!-- للوغو في نتائج غوغل -->
|
||||||
|
<link rel="shortcut icon" href="/logos/logos_webp/logo_main.webp">
|
||||||
|
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>طلباتك بلس - فرصة عمل كسائق توصيل بدخل مميز</title>
|
<meta name="google-site-verification" content="43SwyQpTbcJflqz5fkcFqBkRSwJW5x3hu1Mzp9p9pFQ" />
|
||||||
|
<title>طلباتك بلس </title>
|
||||||
<meta name="description" content="انضم إلى طلباتك بلس كسائق توصيل واستمتع بمرونة في ساعات العمل ودخل يومي مرتفع. سجل الآن وابدأ رحلتك معنا في أسرع منصة توصيل بالمنطقة.">
|
<meta name="description" content="انضم إلى طلباتك بلس كسائق توصيل واستمتع بمرونة في ساعات العمل ودخل يومي مرتفع. سجل الآن وابدأ رحلتك معنا في أسرع منصة توصيل بالمنطقة.">
|
||||||
<meta name="keywords" content="توصيل طلبات, وظيفة سائق, كسب المال, عمل مرن, طلباتك بلس, سوريا">
|
<meta name="keywords" content="توصيل طلبات, وظيفة سائق, كسب المال, عمل مرن, طلباتك بلس, سوريا">
|
||||||
<script src="https://cdn.tailwindcss.com"></script>
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
@@ -11,7 +19,7 @@
|
|||||||
<link rel="stylesheet" href="index.css">
|
<link rel="stylesheet" href="index.css">
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>طلباتك بلس - فرصة عمل كسائق توصيل بدخل مميز</title>
|
<title>طلباتك بلس </title>
|
||||||
<meta name="description" content="انضم إلى طلباتك بلس كسائق توصيل واستمتع بمرونة في ساعات العمل ودخل يومي مرتفع. سجل الآن وابدأ رحلتك معنا في أسرع منصة توصيل بالمنطقة.">
|
<meta name="description" content="انضم إلى طلباتك بلس كسائق توصيل واستمتع بمرونة في ساعات العمل ودخل يومي مرتفع. سجل الآن وابدأ رحلتك معنا في أسرع منصة توصيل بالمنطقة.">
|
||||||
<meta name="keywords" content="توصيل طلبات, وظيفة سائق, كسب المال, عمل مرن, طلباتك بلس, سوريا">
|
<meta name="keywords" content="توصيل طلبات, وظيفة سائق, كسب المال, عمل مرن, طلباتك بلس, سوريا">
|
||||||
|
|
||||||
@@ -403,11 +411,39 @@
|
|||||||
document.getElementById('footerWhatsapp').href = wa;
|
document.getElementById('footerWhatsapp').href = wa;
|
||||||
document.getElementById('heroWhatsapp').href = wa;
|
document.getElementById('heroWhatsapp').href = wa;
|
||||||
}
|
}
|
||||||
|
if (s.whatsappGroupUrl) document.getElementById('whatsappGroupBtn').href = s.whatsappGroupUrl;
|
||||||
if (s.appStoreUrl) document.getElementById('appStoreLink').href = s.appStoreUrl;
|
if (s.appStoreUrl) document.getElementById('appStoreLink').href = s.appStoreUrl;
|
||||||
if (s.googlePlayUrl) document.getElementById('googlePlayLink').href = s.googlePlayUrl;
|
if (s.googlePlayUrl) document.getElementById('googlePlayLink').href = s.googlePlayUrl;
|
||||||
if (s.apkUrl) document.getElementById('apkLink').href = s.apkUrl;
|
if (s.apkUrl) document.getElementById('apkLink').href = s.apkUrl;
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
<!-- زر مجموعة واتساب -->
|
||||||
|
<a id="whatsappGroupBtn" href="#" target="_blank" rel="noopener noreferrer"
|
||||||
|
style="position:fixed; bottom:24px; left:24px; z-index:9999;
|
||||||
|
background:#25D366; color:white; border-radius:50px;
|
||||||
|
padding:14px 22px; font-weight:bold; font-size:16px;
|
||||||
|
box-shadow:0 4px 15px rgba(0,0,0,0.3); text-decoration:none;
|
||||||
|
display:flex; align-items:center; gap:8px;">
|
||||||
|
<svg width="22" height="22" fill="white" viewBox="0 0 24 24">
|
||||||
|
<path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15
|
||||||
|
-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075
|
||||||
|
-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059
|
||||||
|
-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52
|
||||||
|
.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52
|
||||||
|
-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51
|
||||||
|
-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372
|
||||||
|
-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074
|
||||||
|
.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625
|
||||||
|
.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413
|
||||||
|
.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347z"/>
|
||||||
|
<path d="M12 0C5.373 0 0 5.373 0 12c0 2.123.553 4.116 1.522 5.847L.057 23.882
|
||||||
|
a.75.75 0 00.921.921l6.035-1.465A11.945 11.945 0 0012 24c6.627 0 12-5.373
|
||||||
|
12-12S18.627 0 12 0zm0 21.9a9.877 9.877 0 01-5.031-1.378l-.36-.214
|
||||||
|
-3.733.906.922-3.595-.235-.372A9.9 9.9 0 012.1 12C2.1 6.533 6.533 2.1
|
||||||
|
12 2.1c5.467 0 9.9 4.433 9.9 9.9 0 5.467-4.433 9.9-9.9 9.9z"/>
|
||||||
|
</svg>
|
||||||
|
انضم لقناتنا
|
||||||
|
</a>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
36
index2.html
36
index2.html
@@ -1,6 +1,13 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ar" dir="rtl">
|
<html lang="ar" dir="rtl">
|
||||||
<head>
|
<head>
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="icon" type="image/webp" href="/logos/logos_webp/logo_main.webp">
|
||||||
|
<link rel="apple-touch-icon" href="/logos/logos_webp/logo_main.webp">
|
||||||
|
|
||||||
|
<!-- للوغو في نتائج غوغل -->
|
||||||
|
<link rel="shortcut icon" href="/logos/logos_webp/logo_main.webp">
|
||||||
|
|
||||||
<meta name="description" content="صفحة معلومات عن طلباتك بلس - تعرف على فرصة العمل كسائق توصيل، مميزات الانضمام وفيديوهات تعريفية.">
|
<meta name="description" content="صفحة معلومات عن طلباتك بلس - تعرف على فرصة العمل كسائق توصيل، مميزات الانضمام وفيديوهات تعريفية.">
|
||||||
<meta name="keywords" content="معلومات عن التوصيل, سائقين, طلباتك بلس, فرصة عمل">
|
<meta name="keywords" content="معلومات عن التوصيل, سائقين, طلباتك بلس, فرصة عمل">
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
@@ -112,12 +119,39 @@
|
|||||||
try {
|
try {
|
||||||
const res = await fetch('/api/settings');
|
const res = await fetch('/api/settings');
|
||||||
const s = await res.json();
|
const s = await res.json();
|
||||||
|
if (s.whatsappGroupUrl) document.getElementById('whatsappGroupBtn').href = s.whatsappGroupUrl;
|
||||||
if (s.facebookUrl) document.getElementById('footerFacebook').href = s.facebookUrl;
|
if (s.facebookUrl) document.getElementById('footerFacebook').href = s.facebookUrl;
|
||||||
if (s.instagramUrl) document.getElementById('footerInstagram').href = s.instagramUrl;
|
if (s.instagramUrl) document.getElementById('footerInstagram').href = s.instagramUrl;
|
||||||
if (s.whatsappNumber) document.getElementById('footerWhatsapp').href = 'https://wa.me/' + s.whatsappNumber;
|
if (s.whatsappNumber) document.getElementById('footerWhatsapp').href = 'https://wa.me/' + s.whatsappNumber;
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
<!-- زر مجموعة واتساب -->
|
||||||
|
<a id="whatsappGroupBtn" href="#" target="_blank" rel="noopener noreferrer"
|
||||||
|
style="position:fixed; bottom:24px; left:24px; z-index:9999;
|
||||||
|
background:#25D366; color:white; border-radius:50px;
|
||||||
|
padding:14px 22px; font-weight:bold; font-size:16px;
|
||||||
|
box-shadow:0 4px 15px rgba(0,0,0,0.3); text-decoration:none;
|
||||||
|
display:flex; align-items:center; gap:8px;">
|
||||||
|
<svg width="22" height="22" fill="white" viewBox="0 0 24 24">
|
||||||
|
<path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15
|
||||||
|
-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075
|
||||||
|
-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059
|
||||||
|
-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52
|
||||||
|
.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52
|
||||||
|
-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51
|
||||||
|
-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372
|
||||||
|
-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074
|
||||||
|
.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625
|
||||||
|
.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413
|
||||||
|
.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347z"/>
|
||||||
|
<path d="M12 0C5.373 0 0 5.373 0 12c0 2.123.553 4.116 1.522 5.847L.057 23.882
|
||||||
|
a.75.75 0 00.921.921l6.035-1.465A11.945 11.945 0 0012 24c6.627 0 12-5.373
|
||||||
|
12-12S18.627 0 12 0zm0 21.9a9.877 9.877 0 01-5.031-1.378l-.36-.214
|
||||||
|
-3.733.906.922-3.595-.235-.372A9.9 9.9 0 012.1 12C2.1 6.533 6.533 2.1
|
||||||
|
12 2.1c5.467 0 9.9 4.433 9.9 9.9 0 5.467-4.433 9.9-9.9 9.9z"/>
|
||||||
|
</svg>
|
||||||
|
انضم لقناتنا
|
||||||
|
</a>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
128
join.html
128
join.html
@@ -1,6 +1,13 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="ar" dir="rtl">
|
<html lang="ar" dir="rtl">
|
||||||
<head>
|
<head>
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="icon" type="image/webp" href="/logos/logos_webp/logo_main.webp">
|
||||||
|
<link rel="apple-touch-icon" href="/logos/logos_webp/logo_main.webp">
|
||||||
|
|
||||||
|
<!-- للوغو في نتائج غوغل -->
|
||||||
|
<link rel="shortcut icon" href="/logos/logos_webp/logo_main.webp">
|
||||||
|
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>تسجيل سائق جديد - انضم لفريق طلباتك بلس</title>
|
<title>تسجيل سائق جديد - انضم لفريق طلباتك بلس</title>
|
||||||
@@ -67,7 +74,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- العمر + نوع المركبة -->
|
||||||
<div class="grid md:grid-cols-2 gap-6">
|
<div class="grid md:grid-cols-2 gap-6">
|
||||||
|
<div class="space-y-2">
|
||||||
|
<label class="text-sm font-bold text-zinc-700 mr-2">العمر</label>
|
||||||
|
<input type="number" name="age" placeholder="مثال: 25"
|
||||||
|
min="18" max="60" required
|
||||||
|
oninput="this.value = this.value.replace(/[^0-9]/g, '')"
|
||||||
|
class="w-full px-5 py-4 bg-zinc-50 border border-zinc-200 rounded-2xl transition-all text-left" dir="ltr">
|
||||||
|
</div>
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<label class="text-sm font-bold text-zinc-700 mr-2">نوع المركبة</label>
|
<label class="text-sm font-bold text-zinc-700 mr-2">نوع المركبة</label>
|
||||||
<select name="vehicleType" required class="w-full px-5 py-4 bg-zinc-50 border border-zinc-200 rounded-2xl appearance-none transition-all cursor-pointer">
|
<select name="vehicleType" required class="w-full px-5 py-4 bg-zinc-50 border border-zinc-200 rounded-2xl appearance-none transition-all cursor-pointer">
|
||||||
@@ -77,6 +92,9 @@
|
|||||||
<option value="دراجة كهربائية">دراجة كهربائية</option>
|
<option value="دراجة كهربائية">دراجة كهربائية</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid md:grid-cols-2 gap-6">
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<label class="text-sm font-bold text-zinc-700 mr-2">هل المركبة منمرة؟</label>
|
<label class="text-sm font-bold text-zinc-700 mr-2">هل المركبة منمرة؟</label>
|
||||||
<select name="isNumbered" required class="w-full px-5 py-4 bg-zinc-50 border border-zinc-200 rounded-2xl appearance-none transition-all cursor-pointer">
|
<select name="isNumbered" required class="w-full px-5 py-4 bg-zinc-50 border border-zinc-200 rounded-2xl appearance-none transition-all cursor-pointer">
|
||||||
@@ -84,14 +102,13 @@
|
|||||||
<option value="لا">لا</option>
|
<option value="لا">لا</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid md:grid-cols-2 gap-6">
|
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<label class="text-sm font-bold text-zinc-700 mr-2">رقم اللوحة (إن وجد)</label>
|
<label class="text-sm font-bold text-zinc-700 mr-2">رقم اللوحة (إن وجد)</label>
|
||||||
<input type="text" name="plateNumber" placeholder="رقم اللوحة..."
|
<input type="text" name="plateNumber" placeholder="رقم اللوحة..."
|
||||||
class="w-full px-5 py-4 bg-zinc-50 border border-zinc-200 rounded-2xl transition-all">
|
class="w-full px-5 py-4 bg-zinc-50 border border-zinc-200 rounded-2xl transition-all">
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<label class="text-sm font-bold text-zinc-700 mr-2">هل عملت سابقاً في التوصيل؟</label>
|
<label class="text-sm font-bold text-zinc-700 mr-2">هل عملت سابقاً في التوصيل؟</label>
|
||||||
<select name="previousExperience" required class="w-full px-5 py-4 bg-zinc-50 border border-zinc-200 rounded-2xl appearance-none transition-all cursor-pointer">
|
<select name="previousExperience" required class="w-full px-5 py-4 bg-zinc-50 border border-zinc-200 rounded-2xl appearance-none transition-all cursor-pointer">
|
||||||
@@ -99,7 +116,6 @@
|
|||||||
<option value="لا">لا</option>
|
<option value="لا">لا</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- هل لديك خبرة بمناطق حلب؟ -->
|
<!-- هل لديك خبرة بمناطق حلب؟ -->
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
@@ -116,7 +132,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- رفع الصورة -->
|
<!-- رفع الصورة الشخصية -->
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<label class="text-sm font-bold text-zinc-700 mr-2">الصورة الشخصية</label>
|
<label class="text-sm font-bold text-zinc-700 mr-2">الصورة الشخصية</label>
|
||||||
<div class="relative group">
|
<div class="relative group">
|
||||||
@@ -136,6 +152,52 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- صور الهوية -->
|
||||||
|
<div class="space-y-3">
|
||||||
|
<label class="text-sm font-bold text-zinc-700 mr-2">صور الهوية الشخصية</label>
|
||||||
|
<div class="grid md:grid-cols-2 gap-4">
|
||||||
|
|
||||||
|
<!-- الوجه الأمامي -->
|
||||||
|
<div class="space-y-2">
|
||||||
|
<p class="text-xs text-zinc-500 font-medium mr-1">الوجه الأمامي</p>
|
||||||
|
<div class="relative group">
|
||||||
|
<input type="file" name="idFront" id="idFrontInput" accept="image/*" required
|
||||||
|
class="absolute inset-0 w-full h-full opacity-0 cursor-pointer z-10">
|
||||||
|
<div class="w-full px-4 py-6 border-2 border-dashed border-zinc-200 rounded-2xl bg-zinc-50 text-center group-hover:border-[#ff661c] transition-all">
|
||||||
|
<svg class="mx-auto h-8 w-8 text-zinc-400 mb-2 group-hover:text-[#ff661c]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H5a2 2 0 00-2 2v9a2 2 0 002 2h14a2 2 0 002-2V8a2 2 0 00-2-2h-5m-4 0V5a2 2 0 114 0v1m-4 0a2 2 0 104 0m-5 8a2 2 0 100-4 2 2 0 000 4zm0 0c1.306 0 2.417.835 2.83 2M9 14a3.001 3.001 0 00-2.83 2" />
|
||||||
|
</svg>
|
||||||
|
<p class="text-zinc-500 text-sm">الوجه الأمامي للهوية</p>
|
||||||
|
<div id="idFrontPreviewContainer" class="mt-3 hidden">
|
||||||
|
<img id="idFrontPreview" src="" alt="معاينة" class="mx-auto h-24 w-full object-cover rounded-xl border-2 border-[#ff661c] shadow-sm">
|
||||||
|
<p id="idFrontFileName" class="text-[#ff661c] mt-1 font-bold text-xs truncate"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- الوجه الخلفي -->
|
||||||
|
<div class="space-y-2">
|
||||||
|
<p class="text-xs text-zinc-500 font-medium mr-1">الوجه الخلفي</p>
|
||||||
|
<div class="relative group">
|
||||||
|
<input type="file" name="idBack" id="idBackInput" accept="image/*" required
|
||||||
|
class="absolute inset-0 w-full h-full opacity-0 cursor-pointer z-10">
|
||||||
|
<div class="w-full px-4 py-6 border-2 border-dashed border-zinc-200 rounded-2xl bg-zinc-50 text-center group-hover:border-[#ff661c] transition-all">
|
||||||
|
<svg class="mx-auto h-8 w-8 text-zinc-400 mb-2 group-hover:text-[#ff661c]" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H5a2 2 0 00-2 2v9a2 2 0 002 2h14a2 2 0 002-2V8a2 2 0 00-2-2h-5m-4 0V5a2 2 0 114 0v1m-4 0a2 2 0 104 0m-5 8a2 2 0 100-4 2 2 0 000 4zm0 0c1.306 0 2.417.835 2.83 2M9 14a3.001 3.001 0 00-2.83 2" />
|
||||||
|
</svg>
|
||||||
|
<p class="text-zinc-500 text-sm">الوجه الخلفي للهوية</p>
|
||||||
|
<div id="idBackPreviewContainer" class="mt-3 hidden">
|
||||||
|
<img id="idBackPreview" src="" alt="معاينة" class="mx-auto h-24 w-full object-cover rounded-xl border-2 border-[#ff661c] shadow-sm">
|
||||||
|
<p id="idBackFileName" class="text-[#ff661c] mt-1 font-bold text-xs truncate"></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- تأكيد التأمين -->
|
<!-- تأكيد التأمين -->
|
||||||
<label class="flex items-start gap-3 cursor-pointer group">
|
<label class="flex items-start gap-3 cursor-pointer group">
|
||||||
<div class="relative mt-1">
|
<div class="relative mt-1">
|
||||||
@@ -190,15 +252,71 @@
|
|||||||
<!-- JavaScript خارجي -->
|
<!-- JavaScript خارجي -->
|
||||||
<script src="join.js"></script>
|
<script src="join.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
// معاينة صورة الهوية الأمامية
|
||||||
|
document.getElementById('idFrontInput').addEventListener('change', function() {
|
||||||
|
const file = this.files[0];
|
||||||
|
if (file) {
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.onload = (e) => {
|
||||||
|
document.getElementById('idFrontPreview').src = e.target.result;
|
||||||
|
document.getElementById('idFrontPreviewContainer').classList.remove('hidden');
|
||||||
|
document.getElementById('idFrontFileName').textContent = file.name;
|
||||||
|
};
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// معاينة صورة الهوية الخلفية
|
||||||
|
document.getElementById('idBackInput').addEventListener('change', function() {
|
||||||
|
const file = this.files[0];
|
||||||
|
if (file) {
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.onload = (e) => {
|
||||||
|
document.getElementById('idBackPreview').src = e.target.result;
|
||||||
|
document.getElementById('idBackPreviewContainer').classList.remove('hidden');
|
||||||
|
document.getElementById('idBackFileName').textContent = file.name;
|
||||||
|
};
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
const res = await fetch('/api/settings');
|
const res = await fetch('/api/settings');
|
||||||
const s = await res.json();
|
const s = await res.json();
|
||||||
|
if (s.whatsappGroupUrl) document.getElementById('whatsappGroupBtn').href = s.whatsappGroupUrl;
|
||||||
if (s.facebookUrl) document.getElementById('joinFacebook').href = s.facebookUrl;
|
if (s.facebookUrl) document.getElementById('joinFacebook').href = s.facebookUrl;
|
||||||
if (s.instagramUrl) document.getElementById('joinInstagram').href = s.instagramUrl;
|
if (s.instagramUrl) document.getElementById('joinInstagram').href = s.instagramUrl;
|
||||||
if (s.whatsappNumber) document.getElementById('joinWhatsapp').href = 'https://wa.me/' + s.whatsappNumber;
|
if (s.whatsappNumber) document.getElementById('joinWhatsapp').href = 'https://wa.me/' + s.whatsappNumber;
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
<!-- زر مجموعة واتساب -->
|
||||||
|
<a id="whatsappGroupBtn" href="#" target="_blank" rel="noopener noreferrer"
|
||||||
|
style="position:fixed; bottom:24px; left:24px; z-index:9999;
|
||||||
|
background:#25D366; color:white; border-radius:50px;
|
||||||
|
padding:14px 22px; font-weight:bold; font-size:16px;
|
||||||
|
box-shadow:0 4px 15px rgba(0,0,0,0.3); text-decoration:none;
|
||||||
|
display:flex; align-items:center; gap:8px;">
|
||||||
|
<svg width="22" height="22" fill="white" viewBox="0 0 24 24">
|
||||||
|
<path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15
|
||||||
|
-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075
|
||||||
|
-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059
|
||||||
|
-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52
|
||||||
|
.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52
|
||||||
|
-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51
|
||||||
|
-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372
|
||||||
|
-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074
|
||||||
|
.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625
|
||||||
|
.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413
|
||||||
|
.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347z"/>
|
||||||
|
<path d="M12 0C5.373 0 0 5.373 0 12c0 2.123.553 4.116 1.522 5.847L.057 23.882
|
||||||
|
a.75.75 0 00.921.921l6.035-1.465A11.945 11.945 0 0012 24c6.627 0 12-5.373
|
||||||
|
12-12S18.627 0 12 0zm0 21.9a9.877 9.877 0 01-5.031-1.378l-.36-.214
|
||||||
|
-3.733.906.922-3.595-.235-.372A9.9 9.9 0 012.1 12C2.1 6.533 6.533 2.1
|
||||||
|
12 2.1c5.467 0 9.9 4.433 9.9 9.9 0 5.467-4.433 9.9-9.9 9.9z"/>
|
||||||
|
</svg>
|
||||||
|
انضم لقناتنا
|
||||||
|
</a>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
14
join.js
14
join.js
@@ -2,16 +2,13 @@
|
|||||||
join.js - طلباتك بلس - صفحة تسجيل السائق
|
join.js - طلباتك بلس - صفحة تسجيل السائق
|
||||||
============================================ */
|
============================================ */
|
||||||
|
|
||||||
// --- إعدادات الـ Backend (تعمل محلياً وعلى الاستضافة) ---
|
const API_URL = `/api/join`;
|
||||||
const _host = window.location.hostname;
|
|
||||||
const _isLocal = _host === 'localhost' || _host === '127.0.0.1' || _host.startsWith('192.168.');
|
|
||||||
const API_URL = _isLocal ? `http://${_host}:3000/api/join` : '/api/join';
|
|
||||||
|
|
||||||
const form = document.getElementById('driverForm');
|
const form = document.getElementById('driverForm');
|
||||||
const btn = document.getElementById('submitBtn');
|
const btn = document.getElementById('submitBtn');
|
||||||
const photoInput = document.getElementById('photoInput');
|
const photoInput = document.getElementById('photoInput');
|
||||||
|
|
||||||
// --- عرض معاينة الصورة عند اختيارها ---
|
// --- عرض معاينة الصورة الشخصية عند اختيارها ---
|
||||||
photoInput.addEventListener('change', () => {
|
photoInput.addEventListener('change', () => {
|
||||||
const preview = document.getElementById('fileNamePreview');
|
const preview = document.getElementById('fileNamePreview');
|
||||||
const previewContainer = document.getElementById('imagePreviewContainer');
|
const previewContainer = document.getElementById('imagePreviewContainer');
|
||||||
@@ -32,7 +29,7 @@ photoInput.addEventListener('change', () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// --- إرسال النموذج عبر Telegram Bot ---
|
// --- إرسال النموذج ---
|
||||||
form.addEventListener('submit', async (e) => {
|
form.addEventListener('submit', async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
btn.disabled = true;
|
btn.disabled = true;
|
||||||
@@ -40,11 +37,14 @@ form.addEventListener('submit', async (e) => {
|
|||||||
|
|
||||||
const formData = new FormData(form);
|
const formData = new FormData(form);
|
||||||
const photoFile = photoInput.files[0];
|
const photoFile = photoInput.files[0];
|
||||||
|
const idFrontFile = document.getElementById('idFrontInput').files[0];
|
||||||
|
const idBackFile = document.getElementById('idBackInput').files[0];
|
||||||
|
|
||||||
const message =
|
const message =
|
||||||
`🚀 *طلب انضمام جديد (طلباتك بلس)* \n\n` +
|
`🚀 *طلب انضمام جديد (طلباتك بلس)* \n\n` +
|
||||||
`👤 *الاسم:* ${formData.get('name')}\n` +
|
`👤 *الاسم:* ${formData.get('name')}\n` +
|
||||||
`📱 *الجوال:* ${formData.get('phone')}\n` +
|
`📱 *الجوال:* ${formData.get('phone')}\n` +
|
||||||
|
`🎂 *العمر:* ${formData.get('age')}\n` +
|
||||||
`🆔 *الرقم الوطني:* ${formData.get('nationalId')}\n` +
|
`🆔 *الرقم الوطني:* ${formData.get('nationalId')}\n` +
|
||||||
`📍 *العنوان:* ${formData.get('address')}\n` +
|
`📍 *العنوان:* ${formData.get('address')}\n` +
|
||||||
`🛵 *نوع المركبة:* ${formData.get('vehicleType')}\n` +
|
`🛵 *نوع المركبة:* ${formData.get('vehicleType')}\n` +
|
||||||
@@ -57,6 +57,8 @@ form.addEventListener('submit', async (e) => {
|
|||||||
try {
|
try {
|
||||||
const backendFormData = new FormData();
|
const backendFormData = new FormData();
|
||||||
backendFormData.append('photo', photoFile);
|
backendFormData.append('photo', photoFile);
|
||||||
|
backendFormData.append('idFront', idFrontFile);
|
||||||
|
backendFormData.append('idBack', idBackFile);
|
||||||
backendFormData.append('message', message);
|
backendFormData.append('message', message);
|
||||||
|
|
||||||
const response = await fetch(API_URL, {
|
const response = await fetch(API_URL, {
|
||||||
|
|||||||
@@ -2,16 +2,19 @@
|
|||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
<url>
|
<url>
|
||||||
<loc>https://drivers.talabatukplus.com/</loc>
|
<loc>https://drivers.talabatukplus.com/</loc>
|
||||||
|
<lastmod>2026-03-16</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>1.0</priority>
|
<priority>1.0</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://drivers.talabatukplus.com/info</loc>
|
<loc>https://drivers.talabatukplus.com/info</loc>
|
||||||
|
<lastmod>2026-03-16</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.8</priority>
|
<priority>0.8</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://drivers.talabatukplus.com/join</loc>
|
<loc>https://drivers.talabatukplus.com/join</loc>
|
||||||
|
<lastmod>2026-03-16</lastmod>
|
||||||
<changefreq>monthly</changefreq>
|
<changefreq>monthly</changefreq>
|
||||||
<priority>0.9</priority>
|
<priority>0.9</priority>
|
||||||
</url>
|
</url>
|
||||||
|
|||||||
المرجع في مشكلة جديدة
حظر مستخدم