From 36ec1823c8146150660d612c387ed743fd3fe95c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Cmit=20Tun=C3=A7?= Date: Mon, 1 Jun 2026 23:43:59 +0300 Subject: [PATCH] feat: implement internship application wizard with terms acceptance and multi-step form view --- lang/ar/career.php | 9 + lang/de/career.php | 9 + lang/en/career.php | 9 + lang/ru/career.php | 9 + lang/se/career.php | 9 + lang/tr/career.php | 9 + .../views/front/career/internship.blade.php | 555 ++++++++++++++---- 7 files changed, 491 insertions(+), 118 deletions(-) diff --git a/lang/ar/career.php b/lang/ar/career.php index 15291b6..b89343d 100644 --- a/lang/ar/career.php +++ b/lang/ar/career.php @@ -121,4 +121,13 @@ return [ 'mermaid_dec4' => 'هل تمت الموافقة على المهمة؟', 'mermaid_feedback' => 'طلب تصحيح وتعليقات', 'mermaid_payment' => 'يتم دفع الرسوم', + + // Internship Wizard keys + 'dear_intern' => 'عزيزي المرشح للمتدرب،', + 'intern_welcome_text_1' => 'بصفتنا Trunçgil Technology، نحن فخورون بالمساهمة في تطوير المواهب الشابة من خلال برنامج التدريب عن بعد. نحن نقيّم المتدربين لدينا في مشاريع حقيقية، ونوفر لهم تجربة فريدة من نوعها في العمل عن بعد وتنسيق الفريق.', + 'intern_welcome_text_2' => 'لكي يتم تقييم طلبك، يجب عليك أولاً مراجعة نموذج العمل وشروط التقديم لدينا، ثم ملء النموذج بالكامل عن طريق قبول شروط طلب التدريب.', + 'intern_terms_accept_label' => 'لقد قرأت نموذج عمل التدريب عن بعد وشروط التقديم وتدفق عملية الموارد البشرية وأوافق عليها.', + 'accept_intern_terms_btn' => 'قبول الشروط والانتقال إلى استمارة الطلب', + 'intern_step_1_title' => '1. الشروط والأحكام', + 'intern_step_2_title' => '2. أكمل التطبيق', ]; diff --git a/lang/de/career.php b/lang/de/career.php index 9386dda..ecad89b 100644 --- a/lang/de/career.php +++ b/lang/de/career.php @@ -130,4 +130,13 @@ return [ 'mermaid_dec4' => 'Aufgabe freigegeben?', 'mermaid_feedback' => 'Korrekturanforderung und Feedback', 'mermaid_payment' => 'Zahlung wird geleistet', + + // Internship Wizard keys + 'dear_intern' => 'Sehr geehrter Praktikantenkandidat,', + 'intern_welcome_text_1' => 'Als Trunçgil Technology sind wir stolz darauf, durch unser Remote-Praktikumsprogramm zur Entwicklung junger Talente beizutragen. Wir bewerten unsere Praktikanten in realen Projekten und bieten ihnen eine einzigartige Erfahrung in der Remote-Arbeit und Teamkoordination.', + 'intern_welcome_text_2' => 'Damit Ihre Bewerbung bewertet werden kann, müssen Sie zunächst unser Arbeitsmodell und unsere Bewerbungsbedingungen prüfen und dann das Formular durch Akzeptieren der Praktikumsbewerbungsbedingungen vollständig ausfüllen.', + 'intern_terms_accept_label' => 'Ich habe das Arbeitsmodell des Remote-Praktikums, die Bewerbungsbedingungen und den HR-Prozessablauf gelesen und akzeptiere sie.', + 'accept_intern_terms_btn' => 'Bedingungen akzeptieren und zum Bewerbungsformular fortfahren', + 'intern_step_1_title' => '1. Geschäftsbedingungen', + 'intern_step_2_title' => '2. Bewerbung abschließen', ]; diff --git a/lang/en/career.php b/lang/en/career.php index fa01416..87f104d 100644 --- a/lang/en/career.php +++ b/lang/en/career.php @@ -130,4 +130,13 @@ return [ 'mermaid_dec4' => 'Is Task Approved?', 'mermaid_feedback' => 'Revision Request and Feedback', 'mermaid_payment' => 'Fee Payment is Made', + + // Internship Wizard keys + 'dear_intern' => 'Dear Intern Candidate,', + 'intern_welcome_text_1' => 'As Trunçgil Technology, we are proud to contribute to the development of young talents through our remote internship program. We evaluate our interns in real projects, providing them with a unique remote working and team coordination experience.', + 'intern_welcome_text_2' => 'In order for your application to be evaluated, you must first review our working model and application conditions, and then fill out the form completely by accepting the internship application terms.', + 'intern_terms_accept_label' => 'I have read and accept the remote internship working model, application conditions, and the HR process flow.', + 'accept_intern_terms_btn' => 'Accept Terms and Proceed to Application Form', + 'intern_step_1_title' => '1. Terms & Conditions', + 'intern_step_2_title' => '2. Complete Application', ]; diff --git a/lang/ru/career.php b/lang/ru/career.php index 8ea7f94..a380038 100644 --- a/lang/ru/career.php +++ b/lang/ru/career.php @@ -130,4 +130,13 @@ return [ 'mermaid_dec4' => 'Задача одобрена?', 'mermaid_feedback' => 'Запрос на доработку и обратная связь', 'mermaid_payment' => 'Производится выплата вознаграждения', + + // Internship Wizard keys + 'dear_intern' => 'Уважаемый кандидат на стажировку,', + 'intern_welcome_text_1' => 'Как компания Trunçgil Technology, мы гордимся тем, что вносим вклад в развитие молодых талантов в рамках нашей программы дистанционной стажировки. Мы привлекаем стажеров к реальным проектам, давая им уникальный опыт удаленной работы и координации в команде.', + 'intern_welcome_text_2' => 'Для оценки вашей заявки вам необходимо сначала ознакомиться с нашей моделью работы и условиями стажировки, а затем полностью заполнить форму, подтвердив согласие с условиями.', + 'intern_terms_accept_label' => 'Я ознакомился с моделью дистанционной стажировки, условиями подачи заявки и этапами подбора персонала и принимаю их.', + 'accept_intern_terms_btn' => 'Принять условия и перейти к анкете', + 'intern_step_1_title' => '1. Правила и условия', + 'intern_step_2_title' => '2. Завершить подачу', ]; diff --git a/lang/se/career.php b/lang/se/career.php index 1de3c70..5863fbc 100644 --- a/lang/se/career.php +++ b/lang/se/career.php @@ -130,4 +130,13 @@ return [ 'mermaid_dec4' => 'Är uppdraget godkänt?', 'mermaid_feedback' => 'Begäran om korrigering och feedback', 'mermaid_payment' => 'Arvode betalas ut', + + // Internship Wizard keys + 'dear_intern' => 'Bästa praktikantkandidat,', + 'intern_welcome_text_1' => 'Som Trunçgil Technology är vi stolta över att bidra till utvecklingen av unga talanger genom vårt distanspraktikprogram. Vi utvärderar våra praktikanter i verkliga projekt och ger dem en unik erfarenhet av distansarbete och teamkoordinering.', + 'intern_welcome_text_2' => 'För att din ansökan ska kunna utvärderas måste du först granska vår arbetsmodell och ansökningsvillkor, och sedan fylla i formuläret fullständigt genom att acceptera villkoren för praktikansökan.', + 'intern_terms_accept_label' => 'Jag har läst och godkänner arbetsmodellen för distanspraktik, ansökningsvillkoren och HR-processflödet.', + 'accept_intern_terms_btn' => 'Godkänn villkoren och gå till ansökningsformuläret', + 'intern_step_1_title' => '1. Regler & Villkor', + 'intern_step_2_title' => '2. Slutför ansökan', ]; diff --git a/lang/tr/career.php b/lang/tr/career.php index a4dde6b..52246b8 100644 --- a/lang/tr/career.php +++ b/lang/tr/career.php @@ -130,4 +130,13 @@ return [ 'mermaid_dec4' => 'Görev Onaylandı mı?', 'mermaid_feedback' => 'Düzeltme Talebi ve Geri Bildirim', 'mermaid_payment' => 'Ücret Ödemesi Yapılır', + + // Internship Wizard keys + 'dear_intern' => 'Değerli Stajyer Adayı,', + 'intern_welcome_text_1' => 'Trunçgil Teknoloji olarak, uzaktan staj programımız aracılığıyla genç yeteneklerin gelişimine katkıda bulunmaktan gurur duyuyoruz. Stajyerlerimizi gerçek projelerde değerlendirerek onlara eşsiz bir uzaktan çalışma ve ekip koordinasyonu deneyimi kazandırıyoruz.', + 'intern_welcome_text_2' => 'Başvurunuzun değerlendirilebilmesi için öncelikle çalışma modelimizi ve başvuru şartlarımızı incelemeniz, ardından staj başvuru şartlarını kabul ederek formu eksiksiz doldurmanız gerekmektedir.', + 'intern_terms_accept_label' => 'Uzaktan staj çalışma modelini, başvuru şartlarını ve İK süreç akışını okudum, kabul ediyorum.', + 'accept_intern_terms_btn' => 'Şartları Kabul Et ve Başvuru Formuna Geç', + 'intern_step_1_title' => '1. Şartlar & Koşullar', + 'intern_step_2_title' => '2. Başvuruyu Tamamla', ]; diff --git a/resources/views/front/career/internship.blade.php b/resources/views/front/career/internship.blade.php index 8cb165f..02ad421 100644 --- a/resources/views/front/career/internship.blade.php +++ b/resources/views/front/career/internship.blade.php @@ -12,133 +12,245 @@
-
-

{{ __('career.remote_work_title', ['default' => 'Süreç Nasıl İşliyor?']) }}

-

{{ __('career.remote_work_title', ['default' => 'Tamamen Uzaktan Staj Deneyimi']) }}

-
- -
-
-
-
-            graph TD
-              A[İnternet Üzerinden Başvuru] --> B{Uzaktan Çalışma Koşulları}
-              B -- Uygun --> C[CV ve Evrakların İletilmesi]
-              B -- Uygun Değil --> D[Süreç Sonlandırılır]
-              C --> E[Ön Değerlendirme]
-              E --> F[Teknik Görüşme]
-              F --> G[Projelere Dahil Edilme]
-              
-              style A fill:#f8fafc,stroke:#cbd5e1,stroke-width:2px
-              style G fill:#e31e24,stroke:#fff,stroke-width:2px,color:#fff
-              style B fill:#fff1f2,stroke:#fecdd3
-          
+ +
+
+ +
+
-
-
-

{{ __('career.application_conditions_title', ['default' => 'Başvuru Şartları ve Çalışma Modeli']) }}

-
-
-
- -
-
- {{ __('career.daily_standup', ['default' => 'Günlük Standup:']) }} -

{{ __('career.daily_standup_desc', ['default' => 'Her gün düzenlenen kısa toplantılarla ekip içi iletişim ve ilerleme takibi sağlanır.']) }}

-
+ + +
+
+
-
-
- -
-
- {{ __('career.flexible_projects', ['default' => 'Esnek Projeler:']) }} -

{{ __('career.flexible_projects_desc', ['default' => 'Projelerimizde esneklik esastır. Yeteneklerinize uygun gerçek projelerde görev alırsınız.']) }}

-
-
-
-
- -
-
- {{ __('career.focus_on_development', ['default' => 'Gelişim Odaklılık:']) }} -

{{ __('career.condition_not_only_for_internship', ['default' => 'Yalnızca staj yapmak için yapmak isteyen kişiler alınmamaktadır.']) }}

-
-
-
-
- -
-
- {{ __('career.intent_letter', ['default' => 'Niyet Mektubu:']) }} -

{{ __('career.condition_intent_letter', ['default' => 'Mesaj bölümünde nasıl bir katkı sağlayacağınızın niyet mektubu iletilmelidir.']) }}

-
+ {{ __('career.intern_step_1_title') }} +
+ + +
+
+
+ {{ __('career.intern_step_2_title') }}
-
-
-
-
-

{{ __('career.internship_title') }}

-
+ +
+ @csrf + + + +
+
+ +
+

{{ __('career.dear_intern') }}

+
+

{!! __('career.intern_welcome_text_1') !!}

+

{!! __('career.intern_welcome_text_2') !!}

+
- - @csrf - - -
- -
- +
+

{{ __('career.remote_work_title', ['default' => 'Süreç Nasıl İşliyor?']) }}

+

{{ __('career.remote_work_title', ['default' => 'Tamamen Uzaktan Staj Deneyimi']) }}

+
+ +
+ +
+
+ + + {{ __('career.hr_flow_diagram') }} + +
+ graph TD + %% Styles + classDef startNode fill:#3b82f6,stroke:#1d4ed8,stroke-width:2px,color:#fff,font-weight:bold,rx:10px,ry:10px; + classDef decisionNode fill:#eab308,stroke:#ca8a04,stroke-width:2px,color:#1e293b,font-weight:bold; + classDef processNode fill:#10b981,stroke:#047857,stroke-width:2px,color:#fff,font-weight:bold,rx:5px,ry:5px; + classDef rejectNode fill:#ef4444,stroke:#b91c1c,stroke-width:2px,color:#fff,font-weight:bold,rx:5px,ry:5px; + classDef actionNode fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff,font-weight:bold,rx:5px,ry:5px; + + Start["{{ __('career.mermaid_start') }}"]:::startNode + Dec1{"{{ __('career.mermaid_dec1') }}"}:::decisionNode + Red1["{{ __('career.mermaid_red1') }}"]:::rejectNode + GitAccess["{{ __('career.mermaid_git') }}"]:::processNode + SampleTask["{{ __('career.mermaid_sample') }}"]:::processNode + Dec2{"{{ __('career.mermaid_dec2') }}"}:::decisionNode + Red2["{{ __('career.mermaid_red2') }}"]:::rejectNode + Issues["{{ __('career.mermaid_issues') }}"]:::processNode + Dec3{"{{ __('career.mermaid_dec3') }}"}:::decisionNode + WaitTask["{{ __('career.mermaid_wait') }}"]:::actionNode + Assign["{{ __('career.mermaid_assign') }}"]:::processNode + WorkStart["{{ __('career.mermaid_work') }}"]:::processNode + Review["{{ __('career.mermaid_review') }}"]:::processNode + Dec4{"{{ __('career.mermaid_dec4') }}"}:::decisionNode + Feedback["{{ __('career.mermaid_feedback') }}"]:::actionNode + Payment["{{ __('career.mermaid_payment') }}"]:::processNode + + Start --> Dec1 + Dec1 -- "Hayır" --> Red1 + Dec1 -- "Evet" --> GitAccess + GitAccess --> SampleTask + SampleTask --> Dec2 + Dec2 -- "Hayır" --> Red2 + Dec2 -- "Evet" --> Issues + Issues --> Dec3 + Dec3 -- "Hayır" --> WaitTask + Dec3 -- "Evet" --> Assign + Assign --> WorkStart + WorkStart --> Review + Review --> Dec4 + Dec4 -- "Hayır" --> Feedback + Feedback --> WorkStart + Dec4 -- "Evet" --> Payment + Payment --> Issues +
-
- -
- + +
+

{{ __('career.application_conditions_title', ['default' => 'Başvuru Şartları ve Çalışma Modeli']) }}

+
+
+
+ +
+
+ {{ __('career.daily_standup', ['default' => 'Günlük Standup:']) }} +

{{ __('career.daily_standup_desc', ['default' => 'Her gün düzenlenen kısa toplantılarla ekip içi iletişim ve ilerleme takibi sağlanır.']) }}

+
+
+
+
+ +
+
+ {{ __('career.flexible_projects', ['default' => 'Esnek Projeler:']) }} +

{{ __('career.flexible_projects_desc', ['default' => 'Projelerimizde esneklik esastır. Yeteneklerinize uygun gerçek projelerde görev alırsınız.']) }}

+
+
+
+
+ +
+
+ {{ __('career.focus_on_development', ['default' => 'Gelişim Odaklılık:']) }} +

{{ __('career.condition_not_only_for_internship', ['default' => 'Yalnızca staj yapmak için yapmak isteyen kişiler alınmamaktadır.']) }}

+
+
+
+
+ +
+
+ {{ __('career.intent_letter', ['default' => 'Niyet Mektubu:']) }} +

{{ __('career.condition_intent_letter', ['default' => 'Mesaj bölümünde nasıl bir katkı sağlayacağınızın niyet mektubu iletilmelidir.']) }}

+
+
-
-
- -
- -
-
- -
- -
- -

PDF, DOC, DOCX (Maks. 5MB)

-
-
- -
- -
- -
-
- -
-
-
- +
-
+ + + +
@@ -200,6 +312,16 @@ outline: none; } + input[type="checkbox"] { + -webkit-appearance: checkbox !important; + appearance: checkbox !important; + width: 1.25rem !important; + height: 1.25rem !important; + accent-color: var(--citrus-red); + cursor: pointer; + margin-top: 0; + } + .bg-soft-primary { background: linear-gradient(135deg, #f0f7ff 0%, #e8f1ff 100%) !important; } @@ -238,22 +360,210 @@ padding-left: 2rem; position: relative; } + + /* Mermaid diagram readability and aesthetics */ + .mermaid .nodeLabel, + .mermaid .node text, + .mermaid text, + .mermaid .node .label { + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4), 0 0 1px rgba(0, 0, 0, 0.2) !important; + padding: 2px 8px !important; + } + + .mermaid .node.decisionNode .nodeLabel, + .mermaid .node.decisionNode text, + .mermaid .node.decisionNode .label { + text-shadow: none !important; + color: #1e293b !important; + } + + .mermaid svg { + filter: drop-shadow(0px 10px 20px rgba(15, 23, 42, 0.05)); + } + + /* Fullscreen styles for card container */ + #mermaid-card:fullscreen, + #mermaid-card:-webkit-full-screen, + #mermaid-card:-ms-fullscreen { + background-color: #ffffff !important; + padding: 3rem 2rem !important; + display: flex !important; + flex-direction: column !important; + align-items: center !important; + justify-content: center !important; + overflow: auto !important; + border-radius: 0px !important; + width: 100% !important; + height: 100% !important; + } @endpush @push('scripts') - + +