Ver Fonte

1000 vé free

student há 1 mês atrás
pai
commit
fbab2ac2fa

+ 66 - 0
website/Areas/Millions/Views/Home/PopupFreeTickit.cshtml

@@ -109,6 +109,36 @@
 	</section>
 </div>
 
+<div class="free-ticket-error-45" id="freeTicketError45Modal" role="dialog" aria-modal="true"
+	 aria-label="Free Tickets Are Sold Out" hidden>
+	<div class="free-ticket-error-45__backdrop" data-free-ticket-error-45-close></div>
+	<section class="free-ticket-error-45__panel">
+		<img class="free-ticket-error-45__image"
+			 src="~/Millions/assets/images/free-ticket-error-45-no-text.png"
+			 alt="" aria-hidden="true" />
+		<strong class="free-ticket-error-45__copy free-ticket-error-45__copy--ticket-free">@Lang.free_ticket_error_45_ticket_free</strong>
+		<strong class="free-ticket-error-45__copy free-ticket-error-45__copy--ticket-tickets">@Lang.free_ticket_error_45_ticket_tickets</strong>
+		<strong class="free-ticket-error-45__copy free-ticket-error-45__copy--ticket-sold-out">@Lang.free_ticket_error_45_ticket_sold_out</strong>
+		<h2 class="free-ticket-error-45__copy free-ticket-error-45__copy--title">
+			@Lang.free_ticket_error_45_title <span>@Lang.free_ticket_error_45_title_emphasis</span>
+		</h2>
+		<p class="free-ticket-error-45__copy free-ticket-error-45__copy--description">@Lang.free_ticket_error_45_description</p>
+		<strong class="free-ticket-error-45__copy free-ticket-error-45__copy--next-title">@Lang.free_ticket_error_45_next_title</strong>
+		<p class="free-ticket-error-45__copy free-ticket-error-45__copy--next-primary">@Lang.free_ticket_error_45_next_primary</p>
+		<p class="free-ticket-error-45__copy free-ticket-error-45__copy--next-secondary">@Lang.free_ticket_error_45_next_secondary</p>
+		<span class="free-ticket-error-45__copy free-ticket-error-45__copy--buy">@Lang.millions_buy_ticket_label</span>
+		<span class="free-ticket-error-45__copy free-ticket-error-45__copy--close">@Lang.millions_close</span>
+		<p class="free-ticket-error-45__copy free-ticket-error-45__copy--footer">@Lang.free_ticket_error_45_footer</p>
+		<button type="button" class="free-ticket-error-45__action free-ticket-error-45__action--dismiss-icon"
+				data-free-ticket-error-45-close aria-label="@Lang.millions_close"></button>
+		<a class="free-ticket-error-45__action free-ticket-error-45__action--buy"
+		   href="@Url.Action("BuyTicket", "Home", new { area = "Millions" })"
+		   aria-label="@Lang.millions_buy_ticket_label"></a>
+		<button type="button" class="free-ticket-error-45__action free-ticket-error-45__action--close"
+				data-free-ticket-error-45-close aria-label="@Lang.millions_close"></button>
+	</section>
+</div>
+
 <script>
 	(function () {
 		var popup = document.querySelector('.free-ticket-popup');
@@ -116,8 +146,10 @@
 		var resultModal = document.getElementById('freeTicketResultModal');
 		var error43Modal = document.getElementById('freeTicketError43Modal');
 		var error44Modal = document.getElementById('freeTicketError44Modal');
+		var error45Modal = document.getElementById('freeTicketError45Modal');
 		var error43ReturnFocus = null;
 		var error44ReturnFocus = null;
+		var error45ReturnFocus = null;
 		if (!popup) return;
 
 		function showFreeTicketResult(result) {
@@ -192,6 +224,37 @@
 			});
 		}
 
+		function showFreeTicketError45() {
+			if (!error45Modal) return false;
+
+			error45ReturnFocus = document.activeElement;
+			error45Modal.hidden = false;
+			document.body.classList.add('free-ticket-result-open');
+			var closeButton = error45Modal.querySelector('[data-free-ticket-error-45-close]');
+			if (closeButton) closeButton.focus();
+			return true;
+		}
+
+		function closeFreeTicketError45() {
+			if (!error45Modal) return;
+
+			error45Modal.hidden = true;
+			document.body.classList.remove('free-ticket-result-open');
+			if (error45ReturnFocus && typeof error45ReturnFocus.focus === 'function') {
+				error45ReturnFocus.focus();
+			}
+		}
+
+		if (error45Modal) {
+			error45Modal.querySelectorAll('[data-free-ticket-error-45-close]').forEach(function (closeButton) {
+				closeButton.addEventListener('click', closeFreeTicketError45);
+			});
+
+			error45Modal.addEventListener('keydown', function (event) {
+				if (event.key === 'Escape') closeFreeTicketError45();
+			});
+		}
+
 		if (resultModal) {
 			resultModal.querySelectorAll('[data-free-ticket-close]').forEach(function (closeButton) {
 				closeButton.addEventListener('click', function () {
@@ -259,6 +322,9 @@
 						if (responseCode === '44' && showFreeTicketError44(result)) {
 							return;
 						}
+						if (responseCode === '45' && showFreeTicketError45()) {
+							return;
+						}
 						var responseMessage = freeTicketMessages[responseCode]
 							|| (result && result.responseMessage)
 							|| 'Unable to get free ticket.';

+ 60 - 0
website/Languages/Lang.Designer.cs

@@ -1277,6 +1277,66 @@ namespace LotteryWebApp.Languages {
                 return ResourceManager.GetString("free_ticket_error_43_title", resourceCulture);
             }
         }
+
+        public static string free_ticket_error_45_description {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_description", resourceCulture);
+            }
+        }
+
+        public static string free_ticket_error_45_footer {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_footer", resourceCulture);
+            }
+        }
+
+        public static string free_ticket_error_45_next_primary {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_next_primary", resourceCulture);
+            }
+        }
+
+        public static string free_ticket_error_45_next_secondary {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_next_secondary", resourceCulture);
+            }
+        }
+
+        public static string free_ticket_error_45_next_title {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_next_title", resourceCulture);
+            }
+        }
+
+        public static string free_ticket_error_45_ticket_free {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_ticket_free", resourceCulture);
+            }
+        }
+
+        public static string free_ticket_error_45_ticket_sold_out {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_ticket_sold_out", resourceCulture);
+            }
+        }
+
+        public static string free_ticket_error_45_ticket_tickets {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_ticket_tickets", resourceCulture);
+            }
+        }
+
+        public static string free_ticket_error_45_title {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_title", resourceCulture);
+            }
+        }
+
+        public static string free_ticket_error_45_title_emphasis {
+            get {
+                return ResourceManager.GetString("free_ticket_error_45_title_emphasis", resourceCulture);
+            }
+        }
         
         /// <summary>
         ///   Looks up a localized string similar to TIKÈ GRATIS.

+ 11 - 1
website/Languages/Lang.fr.resx

@@ -2137,4 +2137,14 @@ We’ll help you create an account in a few easy steps.</value>
   <data name="free_ticket_waiting_validity" xml:space="preserve">
     <value>Free ticket is valid for today's draw only. Don't forget to use it!</value>
   </data>
-</root>
+  <data name="free_ticket_error_45_ticket_free" xml:space="preserve"><value>FREE</value></data>
+  <data name="free_ticket_error_45_ticket_tickets" xml:space="preserve"><value>TICKETS</value></data>
+  <data name="free_ticket_error_45_ticket_sold_out" xml:space="preserve"><value>SOLD OUT</value></data>
+  <data name="free_ticket_error_45_title" xml:space="preserve"><value>Free Tickets</value></data>
+  <data name="free_ticket_error_45_title_emphasis" xml:space="preserve"><value>Are Sold Out</value></data>
+  <data name="free_ticket_error_45_description" xml:space="preserve"><value>All free tickets for today have been claimed. Please come back tomorrow and try your luck again!</value></data>
+  <data name="free_ticket_error_45_next_title" xml:space="preserve"><value>Next chance:</value></data>
+  <data name="free_ticket_error_45_next_primary" xml:space="preserve"><value>Come back tomorrow</value></data>
+  <data name="free_ticket_error_45_next_secondary" xml:space="preserve"><value>and try your luck again!</value></data>
+  <data name="free_ticket_error_45_footer" xml:space="preserve"><value>Don't miss your chance to win up to 30,000,000 HTG!</value></data>
+</root>

+ 11 - 1
website/Languages/Lang.resx

@@ -2138,4 +2138,14 @@ Apre yo fin tire 20 nimewo, sistem nan konte konbyen nimewo ki enpe oswa pe: &lt
   <data name="free_ticket_waiting_validity" xml:space="preserve">
     <value>Tikè gratis la valab sèlman pou tiraj jodi a. Pa bliye sèvi avè l!</value>
   </data>
-</root>
+  <data name="free_ticket_error_45_ticket_free" xml:space="preserve"><value>GRATIS</value></data>
+  <data name="free_ticket_error_45_ticket_tickets" xml:space="preserve"><value>TIKÈ</value></data>
+  <data name="free_ticket_error_45_ticket_sold_out" xml:space="preserve"><value>FINI</value></data>
+  <data name="free_ticket_error_45_title" xml:space="preserve"><value>Tikè gratis yo</value></data>
+  <data name="free_ticket_error_45_title_emphasis" xml:space="preserve"><value>fini</value></data>
+  <data name="free_ticket_error_45_description" xml:space="preserve"><value>Tout tikè gratis pou jodi a deja reklame. Tanpri retounen demen epi eseye chans ou ankò!</value></data>
+  <data name="free_ticket_error_45_next_title" xml:space="preserve"><value>Pwochen chans:</value></data>
+  <data name="free_ticket_error_45_next_primary" xml:space="preserve"><value>Retounen demen</value></data>
+  <data name="free_ticket_error_45_next_secondary" xml:space="preserve"><value>epi eseye chans ou ankò!</value></data>
+  <data name="free_ticket_error_45_footer" xml:space="preserve"><value>Pa rate chans ou pou genyen jiska 30,000,000 HTG!</value></data>
+</root>

BIN
website/wwwroot/Millions/assets/images/free-ticket-error-45-no-text.png


+ 175 - 1
website/wwwroot/Millions/css/popup-free-ticket.css

@@ -103,10 +103,184 @@ body.free-ticket-result-open {
 }
 
 .free-ticket-error-43[hidden],
-.free-ticket-error-44[hidden] {
+.free-ticket-error-44[hidden],
+.free-ticket-error-45[hidden] {
     display: none;
 }
 
+.free-ticket-error-45 {
+    position: fixed;
+    z-index: 230;
+    inset: 0;
+    display: grid;
+    place-items: center;
+    padding: clamp(10px, 4vw, 24px);
+    font-family: Arial, Helvetica, sans-serif;
+}
+
+.free-ticket-error-45__backdrop {
+    position: absolute;
+    inset: 0;
+    background: rgba(0, 20, 72, .68);
+    backdrop-filter: blur(3px);
+}
+
+.free-ticket-error-45__panel {
+    position: relative;
+    z-index: 1;
+    width: min(380px, 100%, calc((100dvh - 32px) * 508 / 406));
+    aspect-ratio: 508 / 406;
+    overflow: hidden;
+    border-radius: clamp(12px, 3vw, 18px);
+    box-shadow: 0 22px 55px rgba(0, 15, 70, .45);
+}
+
+.free-ticket-error-45__image {
+    display: block;
+    width: 100%;
+    height: 100%;
+    object-fit: contain;
+}
+
+.free-ticket-error-45__copy {
+    position: absolute;
+    z-index: 2;
+    box-sizing: border-box;
+    margin: 0;
+    color: #082d7d;
+    font-weight: 700;
+    line-height: 1.05;
+    pointer-events: none;
+    text-align: center;
+}
+
+.free-ticket-error-45__copy--ticket-free,
+.free-ticket-error-45__copy--ticket-tickets,
+.free-ticket-error-45__copy--ticket-sold-out {
+    left: 38%;
+    width: 24%;
+    color: #fff;
+    font-size: 18px;
+    font-weight: 900;
+    text-transform: uppercase;
+    transform: rotate(-8deg);
+}
+
+.free-ticket-error-45__copy--ticket-free { top: 8.8%; }
+.free-ticket-error-45__copy--ticket-tickets { top: 17.5%; }
+.free-ticket-error-45__copy--ticket-sold-out {
+    top: 26.2%;
+    color: #0a358b;
+    font-size: 14px;
+}
+
+.free-ticket-error-45__copy--title {
+    top: 44.8%;
+    left: 18%;
+    width: 64%;
+    font-size: 16px;
+    font-weight: 900;
+    white-space: nowrap;
+}
+
+.free-ticket-error-45__copy--title span { color: #e0182d; }
+
+.free-ticket-error-45__copy--description {
+    top: 55.4%;
+    left: 20%;
+    width: 60%;
+    color: #4d5876;
+    font-size: 8px;
+    font-weight: 400;
+    line-height: 1.3;
+}
+
+.free-ticket-error-45__copy--next-title,
+.free-ticket-error-45__copy--next-primary,
+.free-ticket-error-45__copy--next-secondary {
+    left: 39%;
+    width: 40%;
+    font-size: 8px;
+    text-align: left;
+}
+
+.free-ticket-error-45__copy--next-title { top: 67.4%; }
+.free-ticket-error-45__copy--next-primary {
+    top: 71%;
+    color: #e0182d;
+}
+.free-ticket-error-45__copy--next-secondary {
+    top: 74.5%;
+    font-weight: 400;
+}
+
+.free-ticket-error-45__copy--buy,
+.free-ticket-error-45__copy--close {
+    top: 80.7%;
+    display: flex;
+    height: 7.5%;
+    align-items: center;
+    justify-content: center;
+    font-size: 10px;
+    font-weight: 900;
+}
+
+.free-ticket-error-45__copy--buy {
+    left: 12.2%;
+    width: 37.2%;
+    color: #fff;
+}
+
+.free-ticket-error-45__copy--close {
+    left: 51.2%;
+    width: 35%;
+}
+
+.free-ticket-error-45__copy--footer {
+    top: 93.1%;
+    left: 22%;
+    width: 67%;
+    font-size: 7px;
+    font-weight: 400;
+}
+
+.free-ticket-error-45__action {
+    position: absolute;
+    z-index: 2;
+    display: block;
+    border: 0;
+    border-radius: 8px;
+    background: transparent;
+    cursor: pointer;
+    color: transparent;
+}
+
+.free-ticket-error-45__action--dismiss-icon {
+    top: 2.5%;
+    right: 1.8%;
+    width: 7.5%;
+    height: 10%;
+}
+
+.free-ticket-error-45__action--buy {
+    top: 80.9%;
+    left: 12.2%;
+    width: 37.2%;
+    height: 8.1%;
+}
+
+.free-ticket-error-45__action--close {
+    top: 80.9%;
+    left: 51.2%;
+    width: 35%;
+    height: 8.1%;
+}
+
+.free-ticket-error-45__action:focus-visible {
+    outline: 3px solid #ffd447;
+    outline-offset: 2px;
+}
+
 .free-ticket-visually-hidden {
     position: absolute;
     width: 1px;