diff --git a/modules/overview/_includes.php b/modules/overview/_includes.php index fde288bd6..20316d7c9 100644 --- a/modules/overview/_includes.php +++ b/modules/overview/_includes.php @@ -26,6 +26,8 @@ include($includePath . './screens/Overview/components/AdminAlerts/AdminAlerts.component.php'); include($includePath . './screens/Overview/components/EmailChangeInfo/EmailChangeInfo.component.php'); + include($includePath . './screens/Overview/components/Morale/Morale.component.php'); + include($includePath . './screens/Overview/components/Morale/Morale.utils.php'); include($includePath . './screens/Overview/components/NewMessagesInfo/NewMessagesInfo.component.php'); include($includePath . './screens/Overview/components/NewSurveysInfo/NewSurveysInfo.component.php'); include($includePath . './screens/Overview/components/PlanetsListElement/PlanetsListElement.component.php'); diff --git a/modules/overview/screens/Overview/components/Morale/Morale.component.php b/modules/overview/screens/Overview/components/Morale/Morale.component.php new file mode 100644 index 000000000..735d14e42 --- /dev/null +++ b/modules/overview/screens/Overview/components/Morale/Morale.component.php @@ -0,0 +1,66 @@ + '', + 'globalJS' => '', + ]; + } + + $user = &$props['user']; + $currentTimestamp = $props['currentTimestamp']; + + $localTemplateLoader = createLocalTemplateLoader(__DIR__); + + $moraleLevelColor = null; + + if ($user['morale_level'] > 0) { + $moraleLevelColor = 'lime'; + } else if ($user['morale_level'] == 0) { + $moraleLevelColor = ''; + } else if ($user['morale_level'] > -50) { + $moraleLevelColor = 'orange'; + } else { + $moraleLevelColor = 'red'; + } + + $moraleStatusData = Morale\Utils\getMoraleStatusData([ + 'user' => &$user, + 'currentTimestamp' => $currentTimestamp, + ]); + + $tplBodyParams = [ + 'Insert_Morale_Level' => $user['morale_level'], + 'Insert_Morale_Color' => $moraleLevelColor, + 'Insert_Morale_Status' => $moraleStatusData['text'], + 'Insert_Morale_Points' => sprintf( + $_Lang['Box_Morale_Points'], + prettyNumber($user['morale_points']) + ), + ]; + $tplBodyParams = array_merge($_Lang, $tplBodyParams); + + $componentHTML = parsetemplate( + $localTemplateLoader('body'), + $tplBodyParams + ); + + return [ + 'componentHTML' => $componentHTML, + 'globalJS' => $moraleStatusData['globalJS'], + ]; +} + +?> diff --git a/modules/overview/screens/Overview/components/Morale/Morale.utils.php b/modules/overview/screens/Overview/components/Morale/Morale.utils.php new file mode 100644 index 000000000..c35a31a22 --- /dev/null +++ b/modules/overview/screens/Overview/components/Morale/Morale.utils.php @@ -0,0 +1,80 @@ + $_Lang['Box_Morale_NoChanges'], + 'globalJS' => null, + ]; + } + + $moraleSentiment = ( + $userMoraleLevel > 0 ? + 'Pos' : + 'Neg' + ); + $moraleDroptimeRemaining = $user['morale_droptime'] - $currentTimestamp; + + if ($moraleDroptimeRemaining > 0) { + return [ + 'text' => sprintf( + $_Lang["Box_Morale_DropStartIn_{$moraleSentiment}"], + pretty_time( + $moraleDroptimeRemaining, + true, + 'D' + ) + ), + 'globalJS' => InsertJavaScriptChronoApplet( + 'morale', + '', + $user['morale_droptime'], + true + ), + ]; + } + + $moraleDropInterval = ( + $userMoraleLevel > 0 ? + MORALE_DROPINTERVAL_POSITIVE : + MORALE_DROPINTERVAL_NEGATIVE + ); + $moraleDropNextTimepoint = ( + ($user['morale_lastupdate'] == 0) ? + ($user['morale_droptime'] + $moraleDropInterval) : + ($user['morale_lastupdate'] + $moraleDropInterval) + ); + + return [ + 'text' => sprintf( + $_Lang["Box_Morale_Dropping_{$moraleSentiment}"], + pretty_time( + $moraleDropNextTimepoint - $currentTimestamp, + true, + 'D' + ) + ), + 'globalJS' => InsertJavaScriptChronoApplet( + 'morale', + '', + $moraleDropNextTimepoint, + true + ), + ]; +} + +?> diff --git a/modules/overview/screens/Overview/components/Morale/body.tpl b/modules/overview/screens/Overview/components/Morale/body.tpl new file mode 100644 index 000000000..214173922 --- /dev/null +++ b/modules/overview/screens/Overview/components/Morale/body.tpl @@ -0,0 +1,18 @@ + + + + + + + + + + +
+ {Box_Morale_Header} + (?) +
+ {Insert_Morale_Level}%
+ {Insert_Morale_Status} +
{Insert_Morale_Points}
+
diff --git a/modules/overview/screens/Overview/components/Morale/index.php b/modules/overview/screens/Overview/components/Morale/index.php new file mode 100644 index 000000000..bc99142d1 --- /dev/null +++ b/modules/overview/screens/Overview/components/Morale/index.php @@ -0,0 +1,5 @@ + diff --git a/overview.php b/overview.php index f7f3382b0..f212c3285 100644 --- a/overview.php +++ b/overview.php @@ -171,72 +171,19 @@ $parse['LastStatsRecount'] = date('d.m.Y H:i:s', $_GameConfig['last_update']); // --- MoraleSystem Box --- - if(MORALE_ENABLED) - { + if (MORALE_ENABLED) { Morale_ReCalculate($_User); - $UserMoraleLevel = $_User['morale_level']; - $parse['Insert_Morale_Level'] = $UserMoraleLevel; - if($UserMoraleLevel > 0) - { - $parse['Insert_Morale_Color'] = 'lime'; - } - else if($UserMoraleLevel < 0) - { - if($UserMoraleLevel <= -50) - { - $parse['Insert_Morale_Color'] = 'red'; - } - else - { - $parse['Insert_Morale_Color'] = 'orange'; - } - } + $moraleComponent = Overview\Screens\Overview\Components\Morale\render([ + 'user' => &$_User, + 'currentTimestamp' => $Now, + ]); - if($UserMoraleLevel == 0) - { - $parse['Insert_Morale_Status'] = $_Lang['Box_Morale_NoChanges']; - } - else - { - if($UserMoraleLevel > 0) - { - $Temp_MoraleStatus = 'Pos'; - } - else - { - $Temp_MoraleStatus = 'Neg'; - } - if($_User['morale_droptime'] > $Now) - { - GlobalTemplate_AppendToAfterBody(InsertJavaScriptChronoApplet('morale', '', $_User['morale_droptime'], true)); - $parse['Insert_Morale_Status'] = sprintf($_Lang['Box_Morale_DropStartIn_'.$Temp_MoraleStatus], pretty_time($_User['morale_droptime'] - $Now, true, 'D')); - } - else - { - if($UserMoraleLevel > 0) - { - $Temp_MoraleDropInterval = MORALE_DROPINTERVAL_POSITIVE; - } - else - { - $Temp_MoraleDropInterval = MORALE_DROPINTERVAL_NEGATIVE; - } - if($_User['morale_lastupdate'] == 0) - { - $Temp_MoraleNextDrop = $_User['morale_droptime'] + $Temp_MoraleDropInterval; - } - else - { - $Temp_MoraleNextDrop = $_User['morale_lastupdate'] + $Temp_MoraleDropInterval; - } - GlobalTemplate_AppendToAfterBody(InsertJavaScriptChronoApplet('morale', '', $Temp_MoraleNextDrop, true)); - $parse['Insert_Morale_Status'] = sprintf($_Lang['Box_Morale_Dropping_'.$Temp_MoraleStatus], pretty_time($Temp_MoraleNextDrop - $Now, true, 'D')); - } - } - $_Lang['Box_Morale_Points'] = sprintf($_Lang['Box_Morale_Points'], prettyNumber($_User['morale_points'])); + $parse['Insert_MoraleBox'] = $moraleComponent['componentHTML']; - $parse['Insert_MoraleBox'] = parsetemplate(gettemplate('overview_body_morale'), $parse); + if (!empty($moraleComponent['globalJS'])) { + GlobalTemplate_AppendToAfterBody($moraleComponent['globalJS']); + } } // --- Get Register Date - diff --git a/templates/default_template/overview_body_morale.tpl b/templates/default_template/overview_body_morale.tpl deleted file mode 100644 index b0180f6be..000000000 --- a/templates/default_template/overview_body_morale.tpl +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - -
{Box_Morale_Header}(?)
{Insert_Morale_Level}%
{Insert_Morale_Status}
{Box_Morale_Points}
-