mirror of
				https://github.com/grocy/grocy.git
				synced 2025-11-03 20:15:04 +00:00 
			
		
		
		
	Properly pluralize everything (closes #19)
This commit is contained in:
		@@ -1244,6 +1244,9 @@
 | 
				
			|||||||
					"name": {
 | 
										"name": {
 | 
				
			||||||
						"type": "string"
 | 
											"type": "string"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
 | 
										"name_plural": {
 | 
				
			||||||
 | 
											"type": "string"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
					"description": {
 | 
										"description": {
 | 
				
			||||||
						"type": "string"
 | 
											"type": "string"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -168,3 +168,13 @@ function GetUserDisplayName($user)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return $displayName;
 | 
						return $displayName;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function Pluralize($number, $singularForm, $pluralForm)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						$text = $singularForm;
 | 
				
			||||||
 | 
						if ($number != 1 && $pluralForm !== null && !empty($pluralForm))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							$text = $pluralForm;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return $text;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
return array(
 | 
					return array(
 | 
				
			||||||
	'Stock overview' => 'Bestand',
 | 
						'Stock overview' => 'Bestand',
 | 
				
			||||||
	'#1 products with #2 units in stock' => '#1 Produkte (#2 Einheiten) vorrätig',
 | 
					 | 
				
			||||||
	'#1 products expiring within the next #2 days' => '#1 Produkte laufen innerhalb der nächsten #2 Tage ab',
 | 
						'#1 products expiring within the next #2 days' => '#1 Produkte laufen innerhalb der nächsten #2 Tage ab',
 | 
				
			||||||
	'#1 products are already expired' => '#1 Produkte sind bereits abgelaufen',
 | 
						'#1 products are already expired' => '#1 Produkte sind bereits abgelaufen',
 | 
				
			||||||
	'#1 products are below defined min. stock amount' => '#1 Produkte sind unter Mindestbestand',
 | 
						'#1 products are below defined min. stock amount' => '#1 Produkte sind unter Mindestbestand',
 | 
				
			||||||
@@ -194,6 +193,18 @@ return array(
 | 
				
			|||||||
	'Price' => 'Preis',
 | 
						'Price' => 'Preis',
 | 
				
			||||||
	'in #1 per purchase quantity unit' => 'in #1 pro Einkaufsmengeneinheit',
 | 
						'in #1 per purchase quantity unit' => 'in #1 pro Einkaufsmengeneinheit',
 | 
				
			||||||
	'The price cannot be lower than #1' => 'Der Preis darf nicht niedriger als #1 sein',
 | 
						'The price cannot be lower than #1' => 'Der Preis darf nicht niedriger als #1 sein',
 | 
				
			||||||
 | 
						'#1 product expires within the next #2 days' => '#1 Produkt läuft innerhalb der nächsten #2 Tage ab',
 | 
				
			||||||
 | 
						'#1 product is already expired' => '#1 Produkt ist bereits abgelaufen',
 | 
				
			||||||
 | 
						'#1 product is below defined min. stock amount' => '#1 Produkt ist unter Mindestbestand',
 | 
				
			||||||
 | 
						'Unit' => 'Einheit',
 | 
				
			||||||
 | 
						'Units' => 'Einheiten',
 | 
				
			||||||
 | 
						'#1 habit is due to be done within the next #2 days' => '#1 Gewohnheit steht in den nächsten #2 Tagen an',
 | 
				
			||||||
 | 
						'#1 habit is overdue to be done' => '#1 Gewohnheit ist überfällig',
 | 
				
			||||||
 | 
						'#1 battery ist due to be charged within the next #2 days' => '#1 Batterie muss in den nächsten #2 Tagen geladen werden',
 | 
				
			||||||
 | 
						'#1 battery ist overdue to be charged' => '#1 Batterie ist überfällig',
 | 
				
			||||||
 | 
						'#1 unit was automatically added and will apply in addition to the amount entered here' => '#1 Einheit wurde automatisch hinzugefügt und gilt zusätzlich der hier eingegebenen Menge',
 | 
				
			||||||
 | 
						'in singular form' => 'in der Einzahl',
 | 
				
			||||||
 | 
						'in plural form' => 'in der Mehrzahl',
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	//Constants
 | 
						//Constants
 | 
				
			||||||
	'manually' => 'Manuell',
 | 
						'manually' => 'Manuell',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
return array(
 | 
					return array(
 | 
				
			||||||
	'Stock overview' => 'Dispensa',
 | 
						'Stock overview' => 'Dispensa',
 | 
				
			||||||
	'#1 products with #2 units in stock' => '#1 prodotti stano per finire(#2 unità)',
 | 
					 | 
				
			||||||
	'#1 products expiring within the next #2 days' => '#1 prodotti scadranno tra #2 giorni',
 | 
						'#1 products expiring within the next #2 days' => '#1 prodotti scadranno tra #2 giorni',
 | 
				
			||||||
	'#1 products are already expired' => '#1 prodotti scaduti',
 | 
						'#1 products are already expired' => '#1 prodotti scaduti',
 | 
				
			||||||
	'#1 products are below defined min. stock amount' => '#1 prodotti sotto il limite minimo',
 | 
						'#1 products are below defined min. stock amount' => '#1 prodotti sotto il limite minimo',
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
return array(
 | 
					return array(
 | 
				
			||||||
	'Stock overview' => 'Husholdning',
 | 
						'Stock overview' => 'Husholdning',
 | 
				
			||||||
	'#1 products with #2 units in stock' => '#1 Produkter med #2 i husholdningen',
 | 
					 | 
				
			||||||
	'#1 products expiring within the next #2 days' => '#1 Produkter som går ut på dato innen de neste #2 dagene',
 | 
						'#1 products expiring within the next #2 days' => '#1 Produkter som går ut på dato innen de neste #2 dagene',
 | 
				
			||||||
	'#1 products are already expired' => '#1 Produkt som har gått ut på dato',
 | 
						'#1 products are already expired' => '#1 Produkt som har gått ut på dato',
 | 
				
			||||||
	'#1 products are below defined min. stock amount' => '#1 Produkt under minimum husholdningsnivå',
 | 
						'#1 products are below defined min. stock amount' => '#1 Produkt under minimum husholdningsnivå',
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								migrations/0030.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								migrations/0030.sql
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					ALTER TABLE quantity_units
 | 
				
			||||||
 | 
					ADD name_plural TEXT;
 | 
				
			||||||
@@ -19,6 +19,16 @@ U = function(relativePath)
 | 
				
			|||||||
	return Grocy.BaseUrl.replace(/\/$/, '') + relativePath;
 | 
						return Grocy.BaseUrl.replace(/\/$/, '') + relativePath;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Pluralize = function(number, singularForm, pluralForm)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						var text = singularForm;
 | 
				
			||||||
 | 
						if (number != 1 && pluralForm !== null && !pluralForm.isEmpty())
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							text = pluralForm;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return text;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (!Grocy.ActiveNav.isEmpty())
 | 
					if (!Grocy.ActiveNav.isEmpty())
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	var menuItem = $('#sidebarResponsive').find("[data-nav-for-page='" + Grocy.ActiveNav + "']");
 | 
						var menuItem = $('#sidebarResponsive').find("[data-nav-for-page='" + Grocy.ActiveNav + "']");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,10 +5,11 @@ Grocy.Components.ProductCard.Refresh = function(productId)
 | 
				
			|||||||
	Grocy.Api.Get('stock/get-product-details/' + productId,
 | 
						Grocy.Api.Get('stock/get-product-details/' + productId,
 | 
				
			||||||
		function(productDetails)
 | 
							function(productDetails)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								var stockAmount = productDetails.stock_amount || '0';
 | 
				
			||||||
			$('#productcard-product-name').text(productDetails.product.name);
 | 
								$('#productcard-product-name').text(productDetails.product.name);
 | 
				
			||||||
			$('#productcard-product-stock-amount').text(productDetails.stock_amount || '0');
 | 
								$('#productcard-product-stock-amount').text(stockAmount);
 | 
				
			||||||
			$('#productcard-product-stock-qu-name').text(productDetails.quantity_unit_stock.name);
 | 
								$('#productcard-product-stock-qu-name').text(productDetails.quantity_unit_stock.name);
 | 
				
			||||||
			$('#productcard-product-stock-qu-name2').text(productDetails.quantity_unit_stock.name);
 | 
								$('#productcard-product-stock-qu-name2').text(Pluralize(stockAmount, productDetails.quantity_unit_stock.name, productDetails.quantity_unit_stock.name_plural));
 | 
				
			||||||
			$('#productcard-product-last-purchased').text((productDetails.last_purchased || L('never')).substring(0, 10));
 | 
								$('#productcard-product-last-purchased').text((productDetails.last_purchased || L('never')).substring(0, 10));
 | 
				
			||||||
			$('#productcard-product-last-purchased-timeago').text($.timeago(productDetails.last_purchased || ''));
 | 
								$('#productcard-product-last-purchased-timeago').text($.timeago(productDetails.last_purchased || ''));
 | 
				
			||||||
			$('#productcard-product-last-used').text((productDetails.last_used || L('never')).substring(0, 10));
 | 
								$('#productcard-product-last-used').text((productDetails.last_used || L('never')).substring(0, 10));
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,8 +12,8 @@
 | 
				
			|||||||
<div class="row">
 | 
					<div class="row">
 | 
				
			||||||
	<div class="col">
 | 
						<div class="col">
 | 
				
			||||||
		<h1>@yield('title')</h1>
 | 
							<h1>@yield('title')</h1>
 | 
				
			||||||
		<p class="btn btn-lg btn-warning no-real-button responsive-button mr-2">{{ $L('#1 batteries are due to be charged within the next #2 days', $countDueNextXDays, $nextXDays) }}</p>
 | 
							<p class="btn btn-lg btn-warning no-real-button responsive-button mr-2">{{ Pluralize($countDueNextXDays, $L('#1 battery ist due to be charged within the next #2 days', $countDueNextXDays, $nextXDays), $L('#1 batteries are due to be charged within the next #2 days', $countDueNextXDays, $nextXDays)) }}</p>
 | 
				
			||||||
		<p class="btn btn-lg btn-danger no-real-button responsive-button">{{ $L('#1 batteries are overdue to be charged', $countOverdue) }}</p>
 | 
							<p class="btn btn-lg btn-danger no-real-button responsive-button">{{ Pluralize($countOverdue, $L('#1 battery ist overdue to be charged', $countOverdue), $L('#1 batteries are overdue to be charged', $countOverdue)) }}</p>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,8 +12,8 @@
 | 
				
			|||||||
<div class="row">
 | 
					<div class="row">
 | 
				
			||||||
	<div class="col">
 | 
						<div class="col">
 | 
				
			||||||
		<h1>@yield('title')</h1>
 | 
							<h1>@yield('title')</h1>
 | 
				
			||||||
		<p class="btn btn-lg btn-warning no-real-button responsive-button mr-2">{{ $L('#1 habits are due to be done within the next #2 days', $countDueNextXDays, $nextXDays) }}</p>
 | 
							<p class="btn btn-lg btn-warning no-real-button responsive-button mr-2">{{ Pluralize($countDueNextXDays, $L('#1 habit is due to be done within the next #2 days', $countDueNextXDays, $nextXDays), $L('#1 habits are due to be done within the next #2 days', $countDueNextXDays, $nextXDays)) }}</p>
 | 
				
			||||||
		<p class="btn btn-lg btn-danger no-real-button responsive-button">{{ $L('#1 habits are overdue to be done', $countOverdue) }}</p>
 | 
							<p class="btn btn-lg btn-danger no-real-button responsive-button">{{ Pluralize($countOverdue, $L('#1 habit is overdue to be done', $countOverdue), $L('#1 habits are overdue to be done', $countOverdue)) }}</p>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,11 +22,16 @@
 | 
				
			|||||||
		<form id="quantityunit-form" novalidate>
 | 
							<form id="quantityunit-form" novalidate>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<div class="form-group">
 | 
								<div class="form-group">
 | 
				
			||||||
				<label for="name">{{ $L('Name') }}</label>
 | 
									<label for="name">{{ $L('Name') }} <span class="small text-muted">{{ $L('in singular form') }}</span></label>
 | 
				
			||||||
				<input type="text" class="form-control" required id="name" name="name" value="@if($mode == 'edit'){{ $quantityunit->name }}@endif">
 | 
									<input type="text" class="form-control" required id="name" name="name" value="@if($mode == 'edit'){{ $quantityunit->name }}@endif">
 | 
				
			||||||
				<div class="invalid-feedback">{{ $L('A name is required') }}</div>
 | 
									<div class="invalid-feedback">{{ $L('A name is required') }}</div>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								<div class="form-group">
 | 
				
			||||||
 | 
									<label for="name_plural">{{ $L('Name') }} <span class="small text-muted">{{ $L('in plural form') }}</span></label>
 | 
				
			||||||
 | 
									<input type="text" class="form-control" id="name_plural" name="name_plural" value="@if($mode == 'edit'){{ $quantityunit->name_plural }}@endif">
 | 
				
			||||||
 | 
								</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<div class="form-group">
 | 
								<div class="form-group">
 | 
				
			||||||
				<label for="description">{{ $L('Description') }}</label>
 | 
									<label for="description">{{ $L('Description') }}</label>
 | 
				
			||||||
				<textarea class="form-control" rows="2" id="description" name="description">@if($mode == 'edit'){{ $quantityunit->description }}@endif</textarea>
 | 
									<textarea class="form-control" rows="2" id="description" name="description">@if($mode == 'edit'){{ $quantityunit->description }}@endif</textarea>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,7 +76,7 @@
 | 
				
			|||||||
						{{ FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id)->name }}
 | 
											{{ FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id)->name }}
 | 
				
			||||||
					</td>
 | 
										</td>
 | 
				
			||||||
					<td>
 | 
										<td>
 | 
				
			||||||
						{{ $recipePosition->amount }} {{ FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id)->qu_id_stock)->name }}
 | 
											{{ $recipePosition->amount }} {{ Pluralize($recipePosition->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $recipePosition->product_id)->qu_id_stock)->name_plural) }}
 | 
				
			||||||
						<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $recipePosition->id)->need_fulfilled == 1) {{ $L('Enough in stock') }} @else {{ $L('Not enough in stock, #1 missing, #2 already on shopping list', FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $recipePosition->id)->missing_amount, FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $recipePosition->id)->amount_on_shopping_list) }} @endif</span>
 | 
											<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $recipePosition->id)->need_fulfilled == 1) {{ $L('Enough in stock') }} @else {{ $L('Not enough in stock, #1 missing, #2 already on shopping list', FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $recipePosition->id)->missing_amount, FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $recipePosition->id)->amount_on_shopping_list) }} @endif</span>
 | 
				
			||||||
					</td>
 | 
										</td>
 | 
				
			||||||
					<td class="fit-content">
 | 
										<td class="fit-content">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,7 +71,7 @@
 | 
				
			|||||||
			<ul class="list-group list-group-flush">
 | 
								<ul class="list-group list-group-flush">
 | 
				
			||||||
				@foreach($selectedRecipePositions as $selectedRecipePosition)
 | 
									@foreach($selectedRecipePositions as $selectedRecipePosition)
 | 
				
			||||||
				<li class="list-group-item">
 | 
									<li class="list-group-item">
 | 
				
			||||||
					{{ $selectedRecipePosition->amount }} {{ FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->qu_id_stock)->name }} {{ FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->name }}
 | 
										{{ $selectedRecipePosition->amount }} {{ Pluralize($selectedRecipePosition->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->qu_id_stock)->name_plural) }} {{ FindObjectInArrayByPropertyValue($products, 'id', $selectedRecipePosition->product_id)->name }}
 | 
				
			||||||
					<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $selectedRecipePosition->id)->need_fulfilled == 1) {{ $L('Enough in stock') }} @else {{ $L('Not enough in stock, #1 missing, #2 already on shopping list', FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $selectedRecipePosition->id)->missing_amount, FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $selectedRecipePosition->id)->amount_on_shopping_list) }} @endif</span>
 | 
										<span class="timeago-contextual">@if(FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $selectedRecipePosition->id)->need_fulfilled == 1) {{ $L('Enough in stock') }} @else {{ $L('Not enough in stock, #1 missing, #2 already on shopping list', FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $selectedRecipePosition->id)->missing_amount, FindObjectInArrayByPropertyValue($recipesFulfillment, 'recipe_pos_id', $selectedRecipePosition->id)->amount_on_shopping_list) }} @endif</span>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					@if(!empty($selectedRecipePosition->note))
 | 
										@if(!empty($selectedRecipePosition->note))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@
 | 
				
			|||||||
						@if(!empty($listItem->product_id)) {{ FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->name }}<br>@endif<em>{{ $listItem->note }}</em>
 | 
											@if(!empty($listItem->product_id)) {{ FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->name }}<br>@endif<em>{{ $listItem->note }}</em>
 | 
				
			||||||
					</td>
 | 
										</td>
 | 
				
			||||||
					<td>
 | 
										<td>
 | 
				
			||||||
						{{ $listItem->amount + $listItem->amount_autoadded }} @if(!empty($listItem->product_id))  {{ FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name }}@endif
 | 
											{{ $listItem->amount + $listItem->amount_autoadded }} @if(!empty($listItem->product_id)){{ Pluralize($listItem->amount + $listItem->amount_autoadded, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $listItem->product_id)->qu_id_purchase)->name_plural) }}@endif
 | 
				
			||||||
					</td>
 | 
										</td>
 | 
				
			||||||
				</tr>
 | 
									</tr>
 | 
				
			||||||
				@endforeach
 | 
									@endforeach
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,7 @@
 | 
				
			|||||||
			))
 | 
								))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			<div class="form-group">
 | 
								<div class="form-group">
 | 
				
			||||||
				<label for="amount">{{ $L('Amount') }}  <span id="amount_qu_unit" class="small text-muted"></span><br><span class="small text-muted">@if($mode == 'edit' && $listItem->amount_autoadded > 0){{ $L('#1 units were automatically added and will apply in addition to the amount entered here', $listItem->amount_autoadded) }}@endif</span></label>
 | 
									<label for="amount">{{ $L('Amount') }}  <span id="amount_qu_unit" class="small text-muted"></span><br><span class="small text-muted">@if($mode == 'edit' && $listItem->amount_autoadded > 0){{ Pluralize($listItem->amount_autoadded, $L('#1 units were automatically added and will apply in addition to the amount entered here', $listItem->amount_autoadded), $L('#1 units were automatically added and will apply in addition to the amount entered here', $listItem->amount_autoadded)) }}@endif</span></label>
 | 
				
			||||||
				<input type="number" class="form-control" id="amount" name="amount" value="@if($mode == 'edit'){{ $listItem->amount }}@else{{1}}@endif" min="0" required>
 | 
									<input type="number" class="form-control" id="amount" name="amount" value="@if($mode == 'edit'){{ $listItem->amount }}@else{{1}}@endif" min="0" required>
 | 
				
			||||||
				<div class="invalid-feedback">{{ $L('This cannot be negative') }}</div>
 | 
									<div class="invalid-feedback">{{ $L('This cannot be negative') }}</div>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,10 +11,10 @@
 | 
				
			|||||||
@section('content')
 | 
					@section('content')
 | 
				
			||||||
<div class="row">
 | 
					<div class="row">
 | 
				
			||||||
	<div class="col">
 | 
						<div class="col">
 | 
				
			||||||
		<h1>@yield('title') <small class="text-muted">{{ $L('#1 products with #2 units in stock', count($currentStock), SumArrayValue($currentStock, 'amount')) }}</small></h1>
 | 
							<h1>@yield('title') <small class="text-muted">{{ count($currentStock) . ' ' . Pluralize(count($currentStock), $L('Product'), $L('Products')) }}, {{ SumArrayValue($currentStock, 'amount') . ' ' . Pluralize(SumArrayValue($currentStock, 'amount'), $L('Unit'), $L('Units')) }}</small></h1>
 | 
				
			||||||
		<p class="btn btn-lg btn-warning no-real-button responsive-button mr-2">{{ $L('#1 products expiring within the next #2 days', $countExpiringNextXDays, $nextXDays) }}</p>
 | 
							<p class="btn btn-lg btn-warning no-real-button responsive-button mr-2">{{ Pluralize($countExpiringNextXDays, $L('#1 product expires within the next #2 days', $countExpiringNextXDays, $nextXDays), $L('#1 products expiring within the next #2 days', $countExpiringNextXDays, $nextXDays)) }}</p>
 | 
				
			||||||
		<p class="btn btn-lg btn-danger no-real-button responsive-button mr-2">{{ $L('#1 products are already expired', $countAlreadyExpired) }}</p>
 | 
							<p class="btn btn-lg btn-danger no-real-button responsive-button mr-2">{{ Pluralize($countAlreadyExpired, $L('#1 product is already expired', $countAlreadyExpired), $L('#1 products are already expired', $countAlreadyExpired)) }}</p>
 | 
				
			||||||
		<p class="btn btn-lg btn-info no-real-button responsive-button">{{ $L('#1 products are below defined min. stock amount', count($missingProducts)) }}</p>
 | 
							<p class="btn btn-lg btn-info no-real-button responsive-button">{{ Pluralize(count($missingProducts), $L('#1 product is below defined min. stock amount', count($missingProducts)), $L('#1 products are below defined min. stock amount', count($missingProducts))) }}</p>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -69,7 +69,7 @@
 | 
				
			|||||||
						{{ FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name }}
 | 
											{{ FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->name }}
 | 
				
			||||||
					</td>
 | 
										</td>
 | 
				
			||||||
					<td>
 | 
										<td>
 | 
				
			||||||
						<span id="product-{{ $currentStockEntry->product_id }}-amount">{{ $currentStockEntry->amount }}</span> {{ FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name }}
 | 
											<span id="product-{{ $currentStockEntry->product_id }}-amount">{{ $currentStockEntry->amount }}</span> {{ Pluralize($currentStockEntry->amount, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name, FindObjectInArrayByPropertyValue($quantityunits, 'id', FindObjectInArrayByPropertyValue($products, 'id', $currentStockEntry->product_id)->qu_id_stock)->name_plural) }}
 | 
				
			||||||
					</td>
 | 
										</td>
 | 
				
			||||||
					<td>
 | 
										<td>
 | 
				
			||||||
						{{ $currentStockEntry->best_before_date }}
 | 
											{{ $currentStockEntry->best_before_date }}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user