Merge branch 'ent-12200-huevo-de-pascua-efecto-nieve' into 'develop'

Ent 12200 huevo de pascua efecto nieve

See merge request artica/pandorafms!6675
This commit is contained in:
Rafael Ameijeiras 2023-12-19 07:56:55 +00:00
commit a4eed65758
7 changed files with 543 additions and 33 deletions

View File

@ -548,6 +548,7 @@ class Wizard
if ($return === true) {
ob_start();
}
echo '<ul class="bigbuttonlist">';
array_map('self::printBigButtonElement', $list_data);
echo '</ul>';

View File

@ -2790,4 +2790,6 @@ class ExtensionsDiscovery extends Wizard
$path = $config['homedir'].'/attachment/discovery/'.$shortName.'/discovery_definition.ini';
return file_exists($path);
}
}

View File

@ -1338,8 +1338,9 @@ if (is_ajax()) {
<tbody>
<tr>
<th style="width: 40%; border: 0px;">
<a href="https://pandorafms.com/" target="_blank">
<a href="javascript:christmas_click('.$config['eastern_eggs_disabled'].')">
<img src="'.$image_about.'" alt="logo" width="70%">
<input id="count_click" type="hidden" value="0" />
</a>
</th>
<th style="width: 60%; text-align: left; border: 0px;">

View File

@ -2565,3 +2565,15 @@ function WarningPeriodicityModal(title, message) {
hideOkButton: 1
});
}
function christmas_click(flagEasternEgg) {
let counter = $("#count_click").val();
counter++;
$("#count_click").val(counter);
if (counter == 25 && flagEasternEgg == true) {
$("#container-snow").removeClass("invisible");
setTimeout(() => {
$("#container-snow").addClass("invisible");
}, 120000);
}
}

View File

@ -174,10 +174,10 @@ class GeneralTacticalView
if (is_array($user) === true && count($user) > 0) {
$name = $user['fullname'];
} else {
$name = '';
$name = $user['firstname'];
}
// 👋
if (empty($name) === true) {
$message = __('Welcome back! 👋');
} else {
@ -225,16 +225,16 @@ class GeneralTacticalView
$latitude = $zone_location['latitude'];
$emojiOptions = [
'have_good_day' => __('Have a good day %s ✌', $name),
'welcome_back' => __('Welcome back! %s 👋', $name),
'good_morning' => __('Good morning, %s! ☕', $name),
'good_evening' => __('Good evening, %s 🌇', $name),
'good_night' => __('Good night, %s 🌕', $name),
'happy_summer' => __('Happy summer, %s 🌞', $name),
'happy_winter' => __('Happy winter, %s ⛄', $name),
'happy_autumn' => __('Happy autumn, %s 🍂', $name),
'happy_spring' => __('Happy spring, %s 🌻', $name),
'have_good_day' => __('Have a good day %s ✌', $name),
'welcome_back' => __('Welcome back! %s 👋', $name),
'merry_christmas' => __('Welcome back! %s 🎅', $name),
'good_morning' => __('Good morning, %s! ☕', $name),
'good_evening' => __('Good evening, %s 🌇', $name),
'good_night' => __('Good night, %s 🌕', $name),
'happy_summer' => __('Happy summer, %s 🌞', $name),
'happy_winter' => __('Happy winter, %s ⛄', $name),
'happy_autumn' => __('Happy autumn, %s 🍂', $name),
'happy_spring' => __('Happy spring, %s 🌻', $name),
];
// Welcome back.
@ -242,33 +242,17 @@ class GeneralTacticalView
$user_last_day = date('d', $user_last_connect);
$day = date('d', strtotime('now'));
if ($user_last_day === $day) {
if (empty($name) === true) {
$welcome[] = $emojiOptions['welcome_back'];
} else {
$welcome[] = $emojiOptions['welcome_back'];
}
$welcome[] = $emojiOptions['welcome_back'];
}
// Morning, evening, night.
$date = date('H');
if ($date < 13) {
if (empty($name) === true) {
$welcome[] = $emojiOptions['good_morning'];
} else {
$welcome[] = $emojiOptions['good_morning'];
}
$welcome[] = $emojiOptions['good_morning'];
} else if ($date < 18) {
if (empty($name) === true) {
$welcome[] = $emojiOptions['good_evening'];
} else {
$welcome[] = $emojiOptions['good_evening'];
}
$welcome[] = $emojiOptions['good_evening'];
} else {
if (empty($name) === true) {
$welcome[] = $emojiOptions['good_night'];
} else {
$welcome[] = $emojiOptions['good_night'];
}
$welcome[] = $emojiOptions['good_night'];
}
// Seasons.
@ -283,6 +267,11 @@ class GeneralTacticalView
$welcome[] = $emojiOptions['happy_winter'];
}
if ($mes === '12' && $day === '25') {
unset($welcome);
$welcome[] = $emojiOptions['merry_christmas'];
}
$length = count($welcome);
$possition = rand(0, ($length - 1));

View File

@ -12870,6 +12870,484 @@ tr.shown td.details-control {
top: -92px;
}
@-moz-keyframes nieve {
from {
top: -40px;
}
to {
top: 101%;
}
}
@-webkit-keyframes nieve {
from {
top: -40px;
}
to {
top: 2000px;
}
}
@keyframes nieve {
from {
top: -40px;
}
to {
top: 2000px;
}
}
@-moz-keyframes horiz2 {
20% {
transform: translateX(0);
}
50% {
transform: translateX(150px);
}
80% {
transform: translateX(0);
}
}
@-webkit-keyframes horiz2 {
20% {
transform: translateX(0);
}
50% {
transform: translateX(150px);
}
80% {
transform: translateX(0);
}
}
@keyframes horiz2 {
20% {
transform: translateX(0);
}
50% {
transform: translateX(-70px);
}
80% {
transform: translateX(0);
}
}
@-moz-keyframes horiz {
20% {
transform: translateX(0);
}
50% {
transform: translateX(150px);
}
80% {
transform: translateX(0);
}
}
@-webkit-keyframes horiz {
20% {
transform: translateX(0);
}
50% {
transform: translateX(150px);
}
80% {
transform: translateX(0);
}
}
@keyframes horiz {
20% {
transform: translateX(0);
}
50% {
transform: translateX(150px);
}
80% {
transform: translateX(0);
}
}
#container-snow > div {
position: fixed;
-webkit-animation: ease-in infinite normal;
-moz-animation: ease-in infinite normal;
animation: ease-in infinite normal;
}
#container-snow > div {
z-index: 9999999999999;
width: 15px;
height: 15px;
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
border-radius: 50%;
background-color: #e8ede5;
-webkit-animation-name: nieve, horiz;
-moz-animation-name: nieve, horiz;
animation-name: nieve, horiz;
}
#container-snow > div:nth-of-type(odd) {
width: 5px;
height: 5px;
-webkit-animation-name: nieve, horiz2;
-moz-animation-name: nieve, horiz2;
animation-name: nieve, horiz2;
}
#container-snow > div:nth-of-type(1) {
left: 40px;
-webkit-animation-duration: 5.5s;
-moz-animation-duration: 5.5s;
animation-duration: 5.5s;
-webkit-animation-delay: 1s;
-moz-animation-delay: 1s;
animation-delay: 1s;
}
#container-snow > div:nth-of-type(2) {
left: 120px;
-webkit-animation-duration: 7s;
-moz-animation-duration: 7s;
animation-duration: 7s;
}
#container-snow > div:nth-of-type(3) {
left: 200px;
-webkit-animation-duration: 8s;
-moz-animation-duration: 8s;
animation-duration: 8s;
}
#container-snow > div:nth-of-type(4) {
left: 20%;
-webkit-animation-duration: 6s;
-moz-animation-duration: 6s;
animation-duration: 6s;
-webkit-animation-delay: 1s;
-moz-animation-delay: 1s;
animation-delay: 1s;
}
#container-snow > div:nth-of-type(5) {
left: 30%;
-webkit-animation-duration: 9s;
-moz-animation-duration: 9s;
animation-duration: 9s;
}
#container-snow > div:nth-of-type(6) {
left: 40%;
-webkit-animation-duration: 7.2s;
-moz-animation-duration: 7.2s;
animation-duration: 7.2s;
-webkit-animation-delay: 1s;
-moz-animation-delay: 1s;
animation-delay: 1s;
}
#container-snow > div:nth-of-type(7) {
left: 50%;
-webkit-animation-duration: 10s;
-moz-animation-duration: 10s;
animation-duration: 10s;
}
#container-snow > div:nth-of-type(8) {
left: 60%;
-webkit-animation-duration: 6.4s;
-moz-animation-duration: 6.4s;
animation-duration: 6.4s;
-webkit-animation-delay: 1s;
-moz-animation-delay: 1s;
animation-delay: 1s;
}
#container-snow > div:nth-of-type(9) {
left: 70%;
-webkit-animation-duration: 10s;
-moz-animation-duration: 10s;
animation-duration: 10s;
-webkit-animation-delay: 1.4s;
-moz-animation-delay: 1.4s;
animation-delay: 1.4s;
}
#container-snow > div:nth-of-type(10) {
left: 80%;
-webkit-animation-duration: 8s;
-moz-animation-duration: 8s;
animation-duration: 8s;
}
#container-snow > div:nth-of-type(11) {
left: 90%;
-webkit-animation-duration: 7.1s;
-moz-animation-duration: 7.1s;
animation-duration: 7.1s;
-webkit-animation-delay: 2s;
-moz-animation-delay: 2s;
animation-delay: 2s;
}
#container-snow > div:nth-of-type(12) {
left: 99%;
-webkit-animation-duration: 6.6s;
-moz-animation-duration: 6.6s;
animation-duration: 6.6s;
-webkit-animation-delay: 1.6s;
-moz-animation-delay: 1.6s;
animation-delay: 1.6s;
}
#container-snow > div:nth-of-type(13) {
left: 10px;
-webkit-animation-duration: 10.2s;
-moz-animation-duration: 10.2s;
animation-duration: 10.2s;
}
#container-snow > div:nth-of-type(14) {
left: 180px;
-webkit-animation-duration: 12s;
-moz-animation-duration: 12s;
animation-duration: 12s;
}
#container-snow > div:nth-of-type(15) {
left: 213px;
-webkit-animation-duration: 7.3s;
-moz-animation-duration: 7.3s;
animation-duration: 7.3s;
-webkit-animation-delay: 0.5s;
-moz-animation-delay: 0.5s;
animation-delay: 0.5s;
}
#container-snow > div:nth-of-type(16) {
left: 23%;
-webkit-animation-duration: 9.2s;
-moz-animation-duration: 9.2s;
animation-duration: 9.2s;
}
#container-snow > div:nth-of-type(17) {
left: 38%;
-webkit-animation-duration: 5s;
-moz-animation-duration: 5s;
animation-duration: 5s;
}
#container-snow > div:nth-of-type(18) {
left: 45%;
-webkit-animation-duration: 15s;
-moz-animation-duration: 15s;
animation-duration: 15s;
}
#container-snow > div:nth-of-type(19) {
left: 58%;
-webkit-animation-duration: 5s;
-moz-animation-duration: 5s;
animation-duration: 5s;
}
#container-snow > div:nth-of-type(20) {
left: 64%;
-webkit-animation-duration: 12s;
-moz-animation-duration: 12s;
animation-duration: 12s;
}
#container-snow > div:nth-of-type(21) {
left: 76%;
-webkit-animation-duration: 5.6s;
-moz-animation-duration: 5.6s;
animation-duration: 5.6s;
-webkit-animation-delay: 1s;
-moz-animation-delay: 1s;
animation-delay: 1s;
}
#container-snow > div:nth-of-type(22) {
left: 86%;
-webkit-animation-duration: 8.5s;
-moz-animation-duration: 8.5s;
animation-duration: 8.5s;
}
#container-snow > div:nth-of-type(23) {
left: 83%;
-webkit-animation-duration: 14.4s;
-moz-animation-duration: 14.4s;
animation-duration: 14.4s;
}
#container-snow > div:nth-of-type(24) {
left: 95%;
-webkit-animation-duration: 12s;
-moz-animation-duration: 12s;
animation-duration: 12s;
}
#container-snow > div:nth-of-type(25) {
left: 55px;
-webkit-animation-duration: 8.7s;
-moz-animation-duration: 8.7s;
animation-duration: 8.7s;
-webkit-animation-delay: 1.2s;
-moz-animation-delay: 1.2s;
animation-delay: 1.2s;
}
#container-snow > div:nth-of-type(26) {
left: 133px;
-webkit-animation-duration: 5.2s;
-moz-animation-duration: 5.2s;
animation-duration: 5.2s;
}
#container-snow > div:nth-of-type(27) {
left: 215px;
-webkit-animation-duration: 10.4s;
-moz-animation-duration: 10.4s;
animation-duration: 10.4s;
-webkit-animation-delay: 1.6s;
-moz-animation-delay: 1.6s;
animation-delay: 1.6s;
}
#container-snow > div:nth-of-type(28) {
left: 26%;
-webkit-animation-duration: 9s;
-moz-animation-duration: 9s;
animation-duration: 9s;
}
#container-snow > div:nth-of-type(29) {
left: 33%;
-webkit-animation-duration: 12s;
-moz-animation-duration: 12s;
animation-duration: 12s;
}
#container-snow > div:nth-of-type(30) {
left: 49%;
-webkit-animation-duration: 9.4s;
-moz-animation-duration: 9.4s;
animation-duration: 9.4s;
-webkit-animation-delay: 1s;
-moz-animation-delay: 1s;
animation-delay: 1s;
}
#container-snow > div:nth-of-type(31) {
left: 55%;
-webkit-animation-duration: 9.1s;
-moz-animation-duration: 9.1s;
animation-duration: 9.1s;
}
#container-snow > div:nth-of-type(32) {
left: 68%;
-webkit-animation-duration: 9.6s;
-moz-animation-duration: 9.6s;
animation-duration: 9.6s;
-webkit-animation-delay: 0.5s;
-moz-animation-delay: 0.5s;
animation-delay: 0.5s;
}
#container-snow > div:nth-of-type(33) {
left: 73%;
-webkit-animation-duration: 12.4s;
-moz-animation-duration: 12.4s;
animation-duration: 12.4s;
-webkit-animation-delay: 1s;
-moz-animation-delay: 1s;
animation-delay: 1s;
}
#container-snow > div:nth-of-type(34) {
left: 85%;
-webkit-animation-duration: 9s;
-moz-animation-duration: 9s;
animation-duration: 9s;
-webkit-animation-delay: 1.5s;
-moz-animation-delay: 1.5s;
animation-delay: 1.5s;
}
#container-snow > div:nth-of-type(35) {
left: 93%;
-webkit-animation-duration: 5s;
-moz-animation-duration: 5s;
animation-duration: 5s;
}
#container-snow > div:nth-of-type(36) {
left: 99%;
-webkit-animation-duration: 10.6s;
-moz-animation-duration: 10.6s;
animation-duration: 10.6s;
}
#container-snow > div:nth-of-type(37) {
left: 15px;
-webkit-animation-duration: 9.6s;
-moz-animation-duration: 9.6s;
animation-duration: 9.6s;
}
#container-snow > div:nth-of-type(38) {
left: 99px;
-webkit-animation-duration: 7.5s;
-moz-animation-duration: 7.5s;
animation-duration: 7.5s;
}
#container-snow > div:nth-of-type(39) {
left: 260px;
-webkit-animation-duration: 11s;
-moz-animation-duration: 11s;
animation-duration: 11s;
-webkit-animation-delay: 1s;
-moz-animation-delay: 1s;
animation-delay: 1s;
}
#container-snow > div:nth-of-type(40) {
left: 28%;
-webkit-animation-duration: 19s;
-moz-animation-duration: 19s;
animation-duration: 19s;
}
#container-snow > div:nth-of-type(41) {
left: 35%;
-webkit-animation-duration: 14s;
-moz-animation-duration: 14s;
animation-duration: 14s;
}
#container-snow > div:nth-of-type(42) {
left: 43%;
-webkit-animation-duration: 5.6s;
-moz-animation-duration: 5.6s;
animation-duration: 5.6s;
}
#container-snow > div:nth-of-type(43) {
left: 53%;
-webkit-animation-duration: 8.8s;
-moz-animation-duration: 8.8s;
animation-duration: 8.8s;
-webkit-animation-delay: 1s;
-moz-animation-delay: 1s;
animation-delay: 1s;
}
#container-snow > div:nth-of-type(44) {
left: 66%;
-webkit-animation-duration: 16s;
-moz-animation-duration: 16s;
animation-duration: 16s;
}
#container-snow > div:nth-of-type(45) {
left: 78%;
-webkit-animation-duration: 6s;
-moz-animation-duration: 6s;
animation-duration: 6s;
}
#container-snow > div:nth-of-type(46) {
left: 88%;
-webkit-animation-duration: 9.5s;
-moz-animation-duration: 9.5s;
animation-duration: 9.5s;
-webkit-animation-delay: 0.5s;
-moz-animation-delay: 0.5s;
animation-delay: 0.5s;
}
#container-snow > div:nth-of-type(47) {
left: 94%;
-webkit-animation-duration: 7.6s;
-moz-animation-duration: 7.6s;
animation-duration: 7.6s;
}
#container-snow > div:nth-of-type(48) {
left: 96%;
-webkit-animation-duration: 8.2s;
-moz-animation-duration: 8.2s;
animation-duration: 8.2s;
-webkit-animation-delay: 0.3s;
-moz-animation-delay: 0.3s;
animation-delay: 0.3s;
}
@media (max-width: 600px) {
#container-snow > div:nth-of-type(24) ~ * {
display: none;
}
}
@media (max-width: 800px) {
#container-snow > div:nth-of-type(36) ~ * {
display: none;
}
}
#ncm_backups > caption > h4 {
color: black;
}

View File

@ -1199,8 +1199,18 @@ if ($config['pure'] == 0) {
// Menu container prepared to autohide menu.
$menuCollapsed = (isset($_SESSION['menu_type']) === true && $_SESSION['menu_type'] !== 'classic');
$menuTypeClass = ($menuCollapsed === true) ? 'collapsed' : 'classic';
// Snow.
$string = '<div id="container-snow" class="tpl-snow invisible">
<div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div>
<div></div><div></div><div></div><div></div><div></div>
</div>';
// Container.
echo '<div id="container">';
echo '<div id="container">'.$string;
// Notifications content wrapper
echo '<div id="notification-content" class="invisible"/></div>';
@ -1679,4 +1689,21 @@ require 'include/php_to_js_values.php';
$('#header_table_inner').find('.header_left').trigger('click');
<?php } ?>
});
// Snow animations.
$(document).ready(function() {
const date = new Date();
const today = date.toLocaleDateString();
const year = date.getFullYear();
const christmasDay = "25/12/"+year;
let flagEasternEgg = $("#flagEasternEgg").val();
if (today === christmasDay && flagEasternEgg == true) {
$("#container-snow").removeClass('invisible');
setTimeout(() => {
$("#container-snow").addClass('invisible');
}, 30000);
}
});
</script>