Steemnova bugfixing pack (Marketplace + wrong page)

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@dotevo·
0.000 HBD
Steemnova bugfixing pack (Marketplace + wrong page)
### Bug Fixes

####  Requested resource can be empty
Description: [Utopian](https://utopian.io/utopian-io/@thewizard.studio/error-occurs-when-purchasing-a-free-transaction-from-marketplace)

I've added additional checking:
``` php
diff --git a/includes/pages/game/ShowFleetStep3Page.class.php b/includes/pages/game/ShowFleetStep3Page.class.php
index affa8cd..60e1a46 100644
--- a/includes/pages/game/ShowFleetStep3Page.class.php
+++ b/includes/pages/game/ShowFleetStep3Page.class.php
@@ -96,6 +96,14 @@ class ShowFleetStep3Page extends AbstractGamePage
                        )));
                }
 
+               if ($targetMission == 16 && $WantedResourceAmount < 1)
+               {
+                       $this->printMessage($LNG['fl_no_noresource'], array(array(
+                               'label' => $LNG['sys_back'],
+                               'url'   => 'game.php?page=fleet2'
+                       )));
+               }
+
```

#### Wrong time for fleet return
Description: When you click the return from planet where fleet is standing the return time is equal fly time + on_hold status. So If the offer is on the market 10h fleet return time will be to long (+ 10hours).

Fix is changing the type of return time calculation.
``` php
diff --git a/includes/classes/class.FleetFunctions.php b/includes/classes/class.FleetFunctions.php
index 1d72ed3..b57fa8e 100644
--- a/includes/classes/class.FleetFunctions.php
+++ b/includes/classes/class.FleetFunctions.php
@@ -365,7 +365,7 @@ class FleetFunctions
                        }
                }
 
-               if($fleetResult['fleet_mission'] == 5 && $fleetResult['fleet_mess'] == FLEET_HOLD) {
+               if(($fleetResult['fleet_mission'] == 5 || $fleetResult['fleet_mission'] == 16) && $fleetResult['fleet_mess'] == FLEET_HOLD) {
                        $fleetEndTime   = ($fleetResult['fleet_start_time'] - $fleetResult['start_time']) + TIMESTAMP;
                }else{
                        $fleetEndTime   = (TIMESTAMP - $fleetResult['start_time']) + TIMESTAMP;
```
#### Return button is not working for transport after trading
Description: When you click to "return" button nothing happens.

Solution. Work as designed because you should not have possibility to return the fleet in this case. But button should be removed.

I've added the field to template
``` php
@@ -230,11 +230,12 @@ class ShowFleetTablePage extends AbstractGamePage
                        {
                                $returnTime     = $fleetsRow['fleet_end_time'];
                        }
-                       
+
                        $FlyingFleetList[]      = array(
                                'id'                    => $fleetsRow['fleet_id'],
                                'mission'               => $fleetsRow['fleet_mission'],
                                'state'                 => $fleetsRow['fleet_mess'],
+                               'no_returnable'                 => $fleetsRow['fleet_no_m_return'],
                                'startGalaxy'   => $fleetsRow['fleet_start_galaxy'],
                                'startSystem'   => $fleetsRow['fleet_start_system'],
                                'startPlanet'   => $fleetsRow['fleet_start_planet'],
@@ -249,21 +250,21 @@ class ShowFleetTablePage extends AbstractGamePage
                                'FleetList'             => $FleetList[$fleetsRow['fleet_id']],
                        );
```
And conditional in template

``` php
--- a/styles/templates/game/page.fleetTable.default.tpl
+++ b/styles/templates/game/page.fleetTable.default.tpl
@@ -39,7 +39,7 @@
        {/if}
        <td id="fleettime_{$smarty.foreach.FlyingFleets.iteration}" class="fleets" data-fleet-end-time="{$FlyingFleetRow.returntime}" data-fleet-time="{$FlyingFleetRow.resttime}">{pretty_fly_time({$FlyingFleetRow.resttime})}</td>
        <td>
-       {if !$isVacation && $FlyingFleetRow.state != 1}
+       {if !$isVacation && $FlyingFleetRow.state != 1 && $FlyingFleetRow.no_returnable != 1}^M
                <form action="game.php?page=fleetTable&amp;action=sendfleetback" method="post">
                <input name="fleetID" value="{$FlyingFleetRow.id}" type="hidden">
                <input value="{$LNG.fl_send_back}" type="submit">
@@ -115,7 +115,7 @@
        {if $maxFleetSlots != $activeFleetSlots}
        <tr style="height:20px;"><td colspan="4"><input type="submit" value="{$LNG.fl_continue}"></td>
        {/if}
```
#### Market is ugly
![Zrzut ekranu z 2018-03-15 22-56-45.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1521151117/mqg7hghbu7p7uqadg9kb.png)


@mys projected the new UI  and I've implemented it

![Zrzut ekranu z 2018-03-15 23-06-46.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1521151628/qjxq58jlka32oipk3ixv.png)

``` html
<table style="width:50%">
 	<tr>
-		<th colspan="2">
-			Options
+		<th colspan="2" class="center">
+			{$LNG.market_info_header}
 		</th>
 	</tr>
+	<tr>
+		<td colspan="2">
+			{$LNG.market_info_description}
+		</td>
+	</tr>
 	<tr>
 		<td>
-			Ship type as first:
+			{$LNG.market_ship_as_first}
 		</td>
 		<td>
 			<select id="shipT">
@@ -37,18 +42,34 @@
 {/if}
 <table id="tradeList" style="width:50%;white-space: nowrap;" class="tablesorter">
 	<thead>
+		<tr class="no-background no-border center">
+			<th></th>
+			<th></th>
+			<th><img src="./styles/theme/nova/images/metal.gif"/></th>
+			<th><img src="./styles/theme/nova/images/crystal.gif"/></th>
+			<th><img src="./styles/theme/nova/images/deuterium.gif"/></th>
+			<th></th>
+			<th></th>
+			<th></th>
+			<th></th>
+			<th></th>
+			<th class="LC" style="display: none;"></th>
+			<th class="HC"></th>
+			<th></th>
+		</tr>
 		<tr>
 			<th>ID</th>
 			<th>{$LNG['gl_player']}</th>
 			<th>{$LNG['tech'][901]}</th>
 			<th>{$LNG['tech'][902]}</th>
 			<th>{$LNG['tech'][903]}</th>
 			<th>{$LNG.market_p_total}</th>
+			<th>{$LNG.market_p_end}</th>
+			<th  class="no-background no-border center">-></th>
 			<th>{$LNG.market_p_cost_type}</th>
 			<th>{$LNG.market_p_cost_amount}</th>
-			<th>{$LNG.market_p_end}</th>
 			<th>{$LNG.market_p_from_duration}</th>
-			<th class="LC">{$LNG.market_p_to_duration}</th>
+			<th class="LC" style="display: none;">{$LNG.market_p_to_duration}</th>
 			<th class="HC">{$LNG.market_p_to_duration}</th>
 			<th>{$LNG.market_p_buy}</th>
 		</tr>
@@ -59,15 +80,24 @@
 	<tr>
 		<td>{$smarty.foreach.FlyingFleets.iteration}</td>
 		<td>{$FlyingFleetRow.username}</td>
-		<td>{$FlyingFleetRow.fleet_resource_metal}</td>
-		<td>{$FlyingFleetRow.fleet_resource_crystal}</td>
-		<td>{$FlyingFleetRow.fleet_resource_deuterium}</td>
-		<td>{$FlyingFleetRow.total}</td>
-		<td>{$FlyingFleetRow.fleet_wanted_resource}</td>
-		<td>{$FlyingFleetRow.fleet_wanted_resource_amount}</td>
+		<td class="resource_metal">{$FlyingFleetRow.fleet_resource_metal|number}</td>
+		<td class="resource_crystal">{$FlyingFleetRow.fleet_resource_crystal|number}</td>
+		<td class="resource_deuterium">{$FlyingFleetRow.fleet_resource_deuterium|number}</td>
+		<td>{$FlyingFleetRow.total|number}</td>
 		<td data-time="{$FlyingFleetRow.end}">{pretty_fly_time({$FlyingFleetRow.end})}</td>
+		<td class="no-background no-border">
+			{if $FlyingFleetRow.fleet_wanted_resource_id == 1}
+			<img src="./styles/theme/nova/images/metal.gif"/>
+			{elseif $FlyingFleetRow.fleet_wanted_resource_id == 2}
+			<img src="./styles/theme/nova/images/crystal.gif"/>
+			{elseif $FlyingFleetRow.fleet_wanted_resource_id == 3}
+			<img src="./styles/theme/nova/images/deuterium.gif"/>
+			{/if}
+		</td>
+		<td class="wanted-resource-{$FlyingFleetRow.fleet_wanted_resource_id}">{$FlyingFleetRow.fleet_wanted_resource}</td>
+		<td class="wanted-resource-amount">{$FlyingFleetRow.fleet_wanted_resource_amount|number}</td>
 		<td>{pretty_fly_time({$FlyingFleetRow.from_duration})}</td>
-		<td class="LC">{pretty_fly_time({$FlyingFleetRow.to_lc_duration})}</td>
+		<td class="LC" style="display: none;">{pretty_fly_time({$FlyingFleetRow.to_lc_duration})}</td>
 		<td class="HC">{pretty_fly_time({$FlyingFleetRow.to_hc_duration})}</td>
 		<td><form class="market_form" action="game.php?page=marketPlace&amp;action=buy" method="post">
 		<input name="fleetID" value="{$FlyingFleetRow.id}" type="hidden">
@@ -102,7 +132,7 @@ $('#shipT').on('change', function (e) {
 $('#shipT').trigger("change");
 
 $(".market_form").submit( function() {
-	var c = confirm("Are you sure?");
+	var c = confirm({$LNG.market_confirm_are_you_sure});
 	if (c) {
 		$(this).append('<input type="hidden" name="shipType" value="' + $("#shipT").val() + '">')
 	}
```
Part of the https://github.com/steemnova/steemnova/pull/59/files

#### Fleet menu: Wrong transport mission bug 
https://utopian.io/utopian-io/@barbarossastudio/fleet-menu-wrong-transport-mission-bug

I've fixed typos in the page names.

``` php
		$this->printMessage($LNG['fl_error_same_planet'], array(array(
 				'label'	=> $LNG['sys_back'],
-				'url'	=> 'game.php?page=fleet1'
+				'url'	=> 'game.php?page=fleetStep1'
 			)));
 		}
 
@@ -84,15 +84,23 @@ public function show()
 			($targetType !== 1 && $targetType !== 2 && $targetType !== 3)) {
 			$this->printMessage($LNG['fl_invalid_target'], array(array(
 				'label'	=> $LNG['sys_back'],
-				'url'	=> 'game.php?page=fleet1'
+				'url'	=> 'game.php?page=fleetStep1'
 			)));
 		}
 
 		if (($targetMission == 3 || $targetMission == 16)&& $TransportMetal + $TransportCrystal + $TransportDeuterium < 1)
 		{
 			$this->printMessage($LNG['fl_no_noresource'], array(array(
 				'label'	=> $LNG['sys_back'],
-				'url'	=> 'game.php?page=fleet2'
+				'url'	=> 'game.php?page=fleetStep2'
+			)));
+		}
+
+		if ($targetMission == 16 && $WantedResourceAmount < 1)
+		{
+			$this->printMessage($LNG['fl_no_noresource_exchange'], array(array(
+				'label'	=> $LNG['sys_back'],
+				'url'	=> 'game.php?page=fleetStep2'
 			)));
 		}
 
@@ -139,14 +147,14 @@ public function show()
 			if (!empty($targetPlanetData)) {
 				$this->printMessage($LNG['fl_target_exists'], array(array(
 					'label'	=> $LNG['sys_back'],
-					'url'	=> 'game.php?page=fleet1'
+					'url'	=> 'game.php?page=fleetStep1'
 				)));
 			}
 
 			if ($targetType != 1) {
 				$this->printMessage($LNG['fl_only_planets_colonizable'], array(array(
 					'label'	=> $LNG['sys_back'],
-					'url'	=> 'game.php?page=fleet1'
+					'url'	=> 'game.php?page=fleetStep1'
 				)));
 			}
 		}
@@ -160,14 +168,14 @@ public function show()
 			if ($targetPlanetData["destruyed"] != 0) {
 				$this->printMessage($LNG['fl_no_target'], array(array(
 					'label'	=> $LNG['sys_back'],
-					'url'	=> 'game.php?page=fleet1'
+					'url'	=> 'game.php?page=fleetStep1'
 				)));
 			}
 
 			if (empty($targetPlanetData)) {
 				$this->printMessage($LNG['fl_no_target'], array(array(
 					'label'	=> $LNG['sys_back'],
-					'url'	=> 'game.php?page=fleet1'
+					'url'	=> 'game.php?page=fleetStep1'
 				)));
 			}
 		}
@@ -238,7 +246,7 @@ public function show()
 		{
 			$this->printMessage($LNG['fl_empty_target'], array(array(
 				'label'	=> $LNG['sys_back'],
-				'url'	=> 'game.php?page=fleet1'
+				'url'	=> 'game.php?page=fleetStep1'
 			)));
 		}
 
@@ -255,14 +263,14 @@ public function show()
 		if (!in_array($targetMission, $availableMissions['MissionSelector'])) {
 			$this->printMessage($LNG['fl_invalid_mission'], array(array(
 				'label'	=> $LNG['sys_back'],
-				'url'	=> 'game.php?page=fleet2'
+				'url'	=> 'game.php?page=fleetStep2'
 			)));
 		}
 
 		if ($targetMission != 8 && IsVacationMode($targetPlayerData)) {
 			$this->printMessage($LNG['fl_target_exists'], array(array(
 				'label'	=> $LNG['sys_back'],
-				'url'	=> 'game.php?page=fleet1'
+				'url'	=> 'game.php?page=fleetStep1'
 			)));
 		}
```
Part of the https://github.com/steemnova/steemnova/pull/59/files

#### Translation fallback to en
Many languages do not have all strings translated. Instead of english text you can see IDs
![Zrzut ekranu z 2018-03-15 23-09-47.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1521151815/cyou9uljhpfxcxbkvxpj.png)

I've added including the en files before the selected.
``` php
public function includeData($files)
 	{
 		// Fixed BOM problems.
 		ob_start();
 		$LNG	= array();
 
+		//FALLBACK
+		$path	= 'language/en/';
+        foreach($files as $file) {
+			$filePath	= $path.$file.'.php';
+			if(file_exists($filePath))
+			{
+				require $filePath;
+			}
+		}
+
+		//LANGUAGE
 		$path	= 'language/'.$this->getLanguage().'/';
 ```

https://github.com/steemnova/steemnova/pull/61/files


<br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@dotevo/steemnova-bugfixing-pack-marketplace-wrong-page">Utopian.io -  Rewarding Open Source Contributors</a></em><hr/>
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,