src/StartPlatz/Bundle/AcceleratorBundle/Resources/views/AcceleratorStartup/detail.html.twig line 1

Open in your IDE?
  1. {% extends '@StartPlatzStyleBundle/Bootstrap4/base.homepage.oneColumn.html.twig' %}
  2. {% block title %}{{ startup.name }} - {{ isEnglish ? 'AI Accelerator' : 'KI-Accelerator' }}{% endblock %}
  3. {% block additionalHead %}
  4.     <link rel="stylesheet" href="{{ asset('bundles/startplatzstyle/css/startplatz.accelerator.css') }}">
  5.     <style>
  6.         .startup-detail-hero {
  7.             background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
  8.             padding: 80px 0 60px;
  9.             position: relative;
  10.             overflow: hidden;
  11.         }
  12.         .startup-detail-hero::before {
  13.             content: '';
  14.             position: absolute;
  15.             top: 0;
  16.             left: 0;
  17.             right: 0;
  18.             bottom: 0;
  19.             background: radial-gradient(circle at 20% 80%, rgba(0, 200, 150, 0.1) 0%, transparent 50%),
  20.                         radial-gradient(circle at 80% 20%, rgba(0, 150, 200, 0.1) 0%, transparent 50%);
  21.         }
  22.         .startup-detail-content {
  23.             position: relative;
  24.             z-index: 1;
  25.         }
  26.         .startup-logo-container {
  27.             width: 120px;
  28.             height: 120px;
  29.             background: white;
  30.             border-radius: 20px;
  31.             display: flex;
  32.             align-items: center;
  33.             justify-content: center;
  34.             box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
  35.             margin-bottom: 24px;
  36.         }
  37.         .startup-logo-container img {
  38.             max-width: 90px;
  39.             max-height: 90px;
  40.             object-fit: contain;
  41.         }
  42.         .startup-logo-placeholder {
  43.             width: 120px;
  44.             height: 120px;
  45.             background: linear-gradient(135deg, #00c896 0%, #00a67e 100%);
  46.             border-radius: 20px;
  47.             display: flex;
  48.             align-items: center;
  49.             justify-content: center;
  50.             font-size: 48px;
  51.             font-weight: bold;
  52.             color: white;
  53.             box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
  54.             margin-bottom: 24px;
  55.         }
  56.         .startup-detail-title {
  57.             font-size: 2.5rem;
  58.             font-weight: 700;
  59.             color: white;
  60.             margin-bottom: 8px;
  61.         }
  62.         .startup-detail-industry {
  63.             color: #00c896;
  64.             font-size: 1.1rem;
  65.             margin-bottom: 16px;
  66.         }
  67.         .startup-batch-badge {
  68.             display: inline-block;
  69.             background: rgba(0, 200, 150, 0.2);
  70.             border: 1px solid #00c896;
  71.             color: #00c896;
  72.             padding: 6px 16px;
  73.             border-radius: 20px;
  74.             font-size: 0.9rem;
  75.             font-weight: 500;
  76.         }
  77.         .startup-detail-section {
  78.             padding: 60px 0;
  79.             background: #f8f9fa;
  80.         }
  81.         .detail-card {
  82.             background: white;
  83.             border-radius: 16px;
  84.             padding: 32px;
  85.             box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  86.             height: 100%;
  87.         }
  88.         .detail-card h3 {
  89.             font-size: 1.25rem;
  90.             font-weight: 600;
  91.             color: #1a1a2e;
  92.             margin-bottom: 16px;
  93.             display: flex;
  94.             align-items: center;
  95.             gap: 10px;
  96.         }
  97.         .detail-card h3 i {
  98.             color: #00c896;
  99.         }
  100.         .detail-card p {
  101.             color: #555;
  102.             line-height: 1.7;
  103.         }
  104.         .startup-website-btn {
  105.             display: inline-flex;
  106.             align-items: center;
  107.             gap: 8px;
  108.             background: linear-gradient(135deg, #00c896 0%, #00a67e 100%);
  109.             color: white;
  110.             padding: 12px 24px;
  111.             border-radius: 8px;
  112.             text-decoration: none;
  113.             font-weight: 500;
  114.             transition: transform 0.2s, box-shadow 0.2s;
  115.         }
  116.         .startup-website-btn:hover {
  117.             transform: translateY(-2px);
  118.             box-shadow: 0 8px 20px rgba(0, 200, 150, 0.3);
  119.             color: white;
  120.             text-decoration: none;
  121.         }
  122.         .back-link {
  123.             color: rgba(255, 255, 255, 0.7);
  124.             text-decoration: none;
  125.             display: inline-flex;
  126.             align-items: center;
  127.             gap: 8px;
  128.             margin-bottom: 32px;
  129.             transition: color 0.2s;
  130.         }
  131.         .back-link:hover {
  132.             color: white;
  133.             text-decoration: none;
  134.         }
  135.         .startup-card-link {
  136.             text-decoration: none;
  137.             color: inherit;
  138.         }
  139.         .startup-card-link:hover {
  140.             text-decoration: none;
  141.             color: inherit;
  142.         }
  143.         .admin-actions {
  144.             margin-top: 20px;
  145.             padding-top: 20px;
  146.             border-top: 1px solid #eee;
  147.         }
  148.         /* Ebene 2 & 3 Section Styles */
  149.         .startup-public-details,
  150.         .startup-internal-details {
  151.             padding: 60px 0;
  152.         }
  153.         .startup-public-details {
  154.             background: white;
  155.         }
  156.         .startup-internal-details {
  157.             background: #f0f4f8;
  158.         }
  159.         .section-header {
  160.             font-size: 1.5rem;
  161.             font-weight: 600;
  162.             color: #1a1a2e;
  163.             margin-bottom: 24px;
  164.             display: flex;
  165.             align-items: center;
  166.             gap: 12px;
  167.         }
  168.         .section-header i {
  169.             color: #00c896;
  170.         }
  171.         .content-card {
  172.             background: white;
  173.             border-radius: 16px;
  174.             padding: 40px;
  175.             box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  176.         }
  177.         .content-card.internal {
  178.             border-left: 4px solid #00c896;
  179.         }
  180.         .login-wall-card {
  181.             background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
  182.             border-radius: 16px;
  183.             padding: 60px 40px;
  184.             text-center;
  185.             box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  186.             border: 2px dashed #dee2e6;
  187.         }
  188.         .login-wall-card h4 {
  189.             font-size: 1.5rem;
  190.             font-weight: 600;
  191.             color: #1a1a2e;
  192.             margin-bottom: 16px;
  193.         }
  194.         .login-wall-card .lock-icon {
  195.             font-size: 48px;
  196.             color: #00c896;
  197.             margin-bottom: 20px;
  198.         }
  199.         .login-wall-card p {
  200.             color: #6c757d;
  201.             max-width: 500px;
  202.             margin: 0 auto 24px;
  203.             line-height: 1.7;
  204.         }
  205.         .login-btn {
  206.             display: inline-flex;
  207.             align-items: center;
  208.             gap: 8px;
  209.             background: linear-gradient(135deg, #00c896 0%, #00a67e 100%);
  210.             color: white;
  211.             padding: 14px 32px;
  212.             border-radius: 8px;
  213.             text-decoration: none;
  214.             font-weight: 600;
  215.             font-size: 1.1rem;
  216.             transition: transform 0.2s, box-shadow 0.2s;
  217.         }
  218.         .login-btn:hover {
  219.             transform: translateY(-2px);
  220.             box-shadow: 0 8px 20px rgba(0, 200, 150, 0.3);
  221.             color: white;
  222.             text-decoration: none;
  223.         }
  224.         .cta-section {
  225.             margin-top: 32px;
  226.             padding-top: 32px;
  227.             border-top: 1px solid #e9ecef;
  228.         }
  229.         .cta-section h5 {
  230.             font-weight: 600;
  231.             margin-bottom: 16px;
  232.             color: #1a1a2e;
  233.         }
  234.         .cta-btn {
  235.             margin-right: 8px;
  236.             margin-bottom: 8px;
  237.         }
  238.         .member-badge {
  239.             display: inline-flex;
  240.             align-items: center;
  241.             gap: 6px;
  242.             background: rgba(0, 200, 150, 0.1);
  243.             color: #00a67e;
  244.             padding: 8px 16px;
  245.             border-radius: 20px;
  246.             font-size: 0.85rem;
  247.             font-weight: 500;
  248.             margin-bottom: 24px;
  249.         }
  250.         /* Rollenbasierte CTA-Boxen */
  251.         .role-cta {
  252.             padding: 20px;
  253.             border-radius: 12px;
  254.             margin-bottom: 16px;
  255.             background: #f8f9fa;
  256.             border-left: 4px solid #6c757d;
  257.         }
  258.         .role-cta h5 {
  259.             margin-bottom: 12px;
  260.             font-size: 1.1rem;
  261.         }
  262.         .role-cta p {
  263.             margin-bottom: 16px;
  264.             color: #555;
  265.         }
  266.         .investor-cta {
  267.             border-left-color: #28a745;
  268.             background: rgba(40, 167, 69, 0.05);
  269.         }
  270.         .mentor-cta {
  271.             border-left-color: #007bff;
  272.             background: rgba(0, 123, 255, 0.05);
  273.         }
  274.         .eir-cta {
  275.             border-left-color: #17a2b8;
  276.             background: rgba(23, 162, 184, 0.05);
  277.         }
  278.         .general-cta {
  279.             border-left-color: #6c757d;
  280.             background: rgba(108, 117, 125, 0.05);
  281.         }
  282.         .admin-actions {
  283.             margin-top: 16px;
  284.             padding-top: 16px;
  285.             border-top: 1px dashed #dee2e6;
  286.         }
  287.         /* Value Unit Boxen für Ebene 3 */
  288.         .value-unit {
  289.             padding: 16px;
  290.             border-radius: 8px;
  291.             margin-bottom: 16px;
  292.             background: #f8f9fa;
  293.         }
  294.         .value-unit h5 {
  295.             font-size: 1rem;
  296.             margin-bottom: 12px;
  297.         }
  298.         .value-unit ul {
  299.             margin-bottom: 0;
  300.             padding-left: 20px;
  301.         }
  302.         .value-unit.mentoring {
  303.             border-left: 3px solid #007bff;
  304.         }
  305.         .value-unit.corporate {
  306.             border-left: 3px solid #28a745;
  307.         }
  308.         .value-unit.investment {
  309.             border-left: 3px solid #ffc107;
  310.         }
  311.         /* Internal CTA Card (Link zur internen Seite) */
  312.         .internal-cta-card {
  313.             background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
  314.             border-radius: 20px;
  315.             padding: 50px 40px;
  316.             box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
  317.             border: 2px solid #e9ecef;
  318.             max-width: 700px;
  319.             margin: 0 auto;
  320.         }
  321.         .internal-cta-icon {
  322.             width: 80px;
  323.             height: 80px;
  324.             background: linear-gradient(135deg, #00c896 0%, #00a67e 100%);
  325.             border-radius: 50%;
  326.             display: flex;
  327.             align-items: center;
  328.             justify-content: center;
  329.             margin: 0 auto 24px;
  330.             box-shadow: 0 8px 25px rgba(0, 200, 150, 0.3);
  331.         }
  332.         .internal-cta-icon i {
  333.             font-size: 32px;
  334.             color: white;
  335.         }
  336.         .internal-cta-card h3 {
  337.             font-size: 1.75rem;
  338.             font-weight: 700;
  339.             color: #1a1a2e;
  340.             margin-bottom: 16px;
  341.         }
  342.         .internal-cta-description {
  343.             color: #555;
  344.             font-size: 1.1rem;
  345.             line-height: 1.7;
  346.             max-width: 550px;
  347.             margin: 0 auto 28px;
  348.         }
  349.         .internal-cta-features {
  350.             display: flex;
  351.             flex-wrap: wrap;
  352.             justify-content: center;
  353.             gap: 12px;
  354.             margin-bottom: 32px;
  355.         }
  356.         .feature-badge {
  357.             display: inline-flex;
  358.             align-items: center;
  359.             gap: 6px;
  360.             background: white;
  361.             border: 1px solid #dee2e6;
  362.             color: #495057;
  363.             padding: 8px 16px;
  364.             border-radius: 20px;
  365.             font-size: 0.9rem;
  366.             font-weight: 500;
  367.         }
  368.         .feature-badge i {
  369.             color: #00c896;
  370.         }
  371.         .internal-cta-btn {
  372.             display: inline-flex;
  373.             align-items: center;
  374.             gap: 10px;
  375.             background: linear-gradient(135deg, #00c896 0%, #00a67e 100%);
  376.             color: white;
  377.             padding: 16px 36px;
  378.             border-radius: 10px;
  379.             text-decoration: none;
  380.             font-weight: 600;
  381.             font-size: 1.1rem;
  382.             transition: transform 0.2s, box-shadow 0.2s;
  383.         }
  384.         .internal-cta-btn:hover {
  385.             transform: translateY(-3px);
  386.             box-shadow: 0 12px 30px rgba(0, 200, 150, 0.35);
  387.             color: white;
  388.             text-decoration: none;
  389.         }
  390.     </style>
  391. {% endblock %}
  392. {% block navigation %}
  393.     {{ menu|raw }}
  394. {% endblock %}
  395. {% block content %}
  396. {# Hero Section #}
  397. <section class="startup-detail-hero">
  398.     <div class="container startup-detail-content">
  399.         <a href="{{ backUrl }}" class="back-link">
  400.             <i class="fas fa-arrow-left"></i>
  401.             {{ isEnglish ? 'Back to all startups' : 'Zurück zur Übersicht' }}
  402.         </a>
  403.         <div class="row align-items-center">
  404.             <div class="col-md-8">
  405.                 {% if startup.logoUrl %}
  406.                     <div class="startup-logo-container">
  407.                         <img src="{{ startup.logoUrl }}" alt="{{ startup.name }}">
  408.                     </div>
  409.                 {% else %}
  410.                     <div class="startup-logo-placeholder">
  411.                         {{ startup.name|slice(0, 1)|upper }}
  412.                     </div>
  413.                 {% endif %}
  414.                 <h1 class="startup-detail-title">{{ startup.name }}</h1>
  415.                 {% if startup.industry %}
  416.                     <p class="startup-detail-industry">{{ startup.industry }}</p>
  417.                 {% endif %}
  418.                 {% if startup.kiAccelerator %}
  419.                     <span class="startup-batch-badge">
  420.                         <i class="fas fa-graduation-cap"></i>
  421.                         {{ isEnglish ? 'AI Accelerator Batch' : 'KI-Accelerator Batch' }} {{ startup.kiAccelerator }}
  422.                     </span>
  423.                 {% endif %}
  424.             </div>
  425.             <div class="col-md-4 text-md-right mt-4 mt-md-0">
  426.                 {% if startup.website %}
  427.                     <a href="{{ startup.website }}" target="_blank" rel="noopener" class="startup-website-btn">
  428.                         <i class="fas fa-external-link-alt"></i>
  429.                         {{ isEnglish ? 'Visit Website' : 'Website besuchen' }}
  430.                     </a>
  431.                 {% endif %}
  432.             </div>
  433.         </div>
  434.     </div>
  435. </section>
  436. {# Details Section #}
  437. <section class="startup-detail-section">
  438.     <div class="container">
  439.         <div class="row">
  440.             {# Pitch / Description #}
  441.             <div class="col-lg-8 mb-4">
  442.                 <div class="detail-card">
  443.                     <h3>
  444.                         <i class="fas fa-lightbulb"></i>
  445.                         {{ isEnglish ? 'About' : 'Über das Startup' }}
  446.                     </h3>
  447.                     {% set pitch = isEnglish and startup.oneSentencePitchEn ? startup.oneSentencePitchEn : startup.oneSentencePitch %}
  448.                     {% if pitch %}
  449.                         <p class="lead">{{ pitch|raw }}</p>
  450.                     {% else %}
  451.                         <p class="text-muted">
  452.                             {{ isEnglish ? 'No description available.' : 'Keine Beschreibung verfügbar.' }}
  453.                         </p>
  454.                     {% endif %}
  455.                     {# Admin Actions #}
  456.                     {% if is_granted('ROLE_ADMIN') %}
  457.                         <div class="admin-actions">
  458.                             <a href="{{ path('allmeda_startup_edit', {id: startup.id}) }}"
  459.                                class="btn btn-outline-primary btn-sm">
  460.                                 <i class="fas fa-edit"></i> Edit in Admin
  461.                             </a>
  462.                             {% if startup.teamId %}
  463.                                 <a href="{{ path('allmeda_team_edit', {id: startup.teamId}) }}"
  464.                                    class="btn btn-outline-secondary btn-sm ml-2">
  465.                                     <i class="fas fa-users"></i> Team bearbeiten
  466.                                 </a>
  467.                             {% endif %}
  468.                         </div>
  469.                     {% endif %}
  470.                 </div>
  471.             </div>
  472.             {# Quick Facts #}
  473.             <div class="col-lg-4 mb-4">
  474.                 <div class="detail-card">
  475.                     <h3>
  476.                         <i class="fas fa-info-circle"></i>
  477.                         {{ isEnglish ? 'Quick Facts' : 'Kurzinfos' }}
  478.                     </h3>
  479.                     <ul class="list-unstyled mb-0">
  480.                         {% if startup.city %}
  481.                             <li class="mb-3">
  482.                                 <strong><i class="fas fa-map-marker-alt text-muted mr-2"></i>{{ isEnglish ? 'Location' : 'Standort' }}</strong><br>
  483.                                 <span class="text-muted">{{ startup.city }}</span>
  484.                             </li>
  485.                         {% endif %}
  486.                         {% if startup.industry %}
  487.                             <li class="mb-3">
  488.                                 <strong><i class="fas fa-industry text-muted mr-2"></i>{{ isEnglish ? 'Industry' : 'Branche' }}</strong><br>
  489.                                 <span class="text-muted">{{ startup.industry }}</span>
  490.                             </li>
  491.                         {% endif %}
  492.                         {% if startup.kiAccelerator %}
  493.                             <li class="mb-3">
  494.                                 <strong><i class="fas fa-rocket text-muted mr-2"></i>{{ isEnglish ? 'Accelerator' : 'Accelerator' }}</strong><br>
  495.                                 <span class="text-muted">KI-Accelerator NRW Batch {{ startup.kiAccelerator }}</span>
  496.                             </li>
  497.                         {% endif %}
  498.                     </ul>
  499.                     {% if startup.website %}
  500.                         <hr>
  501.                         <a href="{{ startup.website }}" target="_blank" rel="noopener" class="btn btn-outline-success btn-block">
  502.                             <i class="fas fa-globe mr-2"></i>{{ startup.website|replace({'https://': '', 'http://': '', 'www.': ''})|trim('/') }}
  503.                         </a>
  504.                     {% endif %}
  505.                 </div>
  506.             </div>
  507.         </div>
  508.         {# Back to Grid Link #}
  509.         <div class="text-center mt-4">
  510.             <a href="{{ backUrl }}" class="btn btn-outline-dark">
  511.                 <i class="fas fa-th-large mr-2"></i>
  512.                 {{ isEnglish ? 'View all AI Accelerator Startups' : 'Alle KI-Accelerator Startups anzeigen' }}
  513.             </a>
  514.         </div>
  515.     </div>
  516. </section>
  517. {# Ebene 2: Öffentliche Detailseite (immer sichtbar wenn Inhalt vorhanden) #}
  518. {% set publicContent = isEnglish and startup.publicDetailHtmlEn ? startup.publicDetailHtmlEn : startup.publicDetailHtml %}
  519. {% if publicContent %}
  520. <section class="startup-public-details">
  521.     <div class="container">
  522.         <h2 class="section-header">
  523.             <i class="fas fa-info-circle"></i>
  524.             {{ isEnglish ? 'About This Startup' : 'Über dieses Startup' }}
  525.         </h2>
  526.         <div class="content-card">
  527.             {{ publicContent|raw }}
  528.         </div>
  529.     </div>
  530. </section>
  531. {% endif %}
  532. {# Ebene 3: CTA zur internen Detailseite #}
  533. {% set internalContent = isEnglish and startup.internalDetailHtmlEn ? startup.internalDetailHtmlEn : startup.internalDetailHtml %}
  534. {% if internalContent %}
  535. <section class="startup-internal-details">
  536.     <div class="container">
  537.         <div class="internal-cta-card text-center">
  538.             <div class="internal-cta-icon">
  539.                 <i class="fas fa-star"></i>
  540.             </div>
  541.             <h3>{{ isEnglish ? 'Want Deeper Insights?' : 'Tiefere Einblicke gewünscht?' }}</h3>
  542.             <p class="internal-cta-description">
  543.                 {{ isEnglish
  544.                     ? 'Access exclusive member content: detailed team information, mentoring needs, corporate pilot opportunities, and investment signals.'
  545.                     : 'Erhalte exklusive Mitglieder-Inhalte: detaillierte Team-Informationen, Mentoring-Bedarfe, Corporate-Pilot-Möglichkeiten und Investment-Signale.'
  546.                 }}
  547.             </p>
  548.             <div class="internal-cta-features">
  549.                 <span class="feature-badge"><i class="fas fa-users"></i> {{ isEnglish ? 'Team Details' : 'Team-Details' }}</span>
  550.                 <span class="feature-badge"><i class="fas fa-user-tie"></i> {{ isEnglish ? 'Mentoring Needs' : 'Mentoring-Bedarfe' }}</span>
  551.                 <span class="feature-badge"><i class="fas fa-building"></i> {{ isEnglish ? 'Pilot Opportunities' : 'Pilot-Möglichkeiten' }}</span>
  552.                 <span class="feature-badge"><i class="fas fa-chart-line"></i> {{ isEnglish ? 'Investment Signals' : 'Investment-Signale' }}</span>
  553.             </div>
  554.             {% if app.user %}
  555.                 {# Eingeloggt: Direkter Link zur internen Seite #}
  556.                 <a href="{{ internalPageUrl }}" class="internal-cta-btn">
  557.                     <i class="fas fa-lock-open"></i>
  558.                     {{ isEnglish ? 'View Detailed Insights' : 'Detaillierte Einblicke ansehen' }}
  559.                 </a>
  560.             {% else %}
  561.                 {# Nicht eingeloggt: Login zuerst #}
  562.                 <a href="{{ path('login', {targetPath: internalPageUrl}) }}" class="internal-cta-btn">
  563.                     <i class="fas fa-sign-in-alt"></i>
  564.                     {{ isEnglish ? 'Login to Access' : 'Einloggen für Zugang' }}
  565.                 </a>
  566.                 <p class="mt-3 small text-muted">
  567.                     {{ isEnglish ? 'Not a member yet?' : 'Noch kein Mitglied?' }}
  568.                     <a href="{{ path('apply_program_home', {programSlug: 'membership'}) }}">
  569.                         {{ isEnglish ? 'Join STARTPLATZ' : 'Werde Mitglied' }}
  570.                     </a>
  571.                 </p>
  572.             {% endif %}
  573.         </div>
  574.     </div>
  575. </section>
  576. {% endif %}
  577. {% endblock %}
  578. {# Footer - use simple version without menuLinksAndPhrases dependency #}
  579. {% block footer %}
  580.     <footer class="bg-dark text-white py-4 mt-5">
  581.         <div class="container text-center">
  582.             <p class="mb-2">
  583.                 <a href="https://www.startplatz.de" class="text-white" target="_blank">STARTPLATZ</a> |
  584.                 <a href="https://www.startplatz.de/impressum/" class="text-white" target="_blank">Impressum</a> |
  585.                 <a href="https://www.startplatz.de/datenschutz/" class="text-white" target="_blank">Datenschutz</a>
  586.             </p>
  587.             <p class="text-muted mb-0">&copy; {{ "now"|date("Y") }} STARTPLATZ</p>
  588.         </div>
  589.     </footer>
  590. {% endblock %}
  591. {% block javascripts %}
  592.     {{ parent() }}
  593.     <script src="{{ asset('bundles/startplatzstyle/js/startplatz.accelerator.js') }}"></script>
  594. {% endblock %}