Added a feature flag to also be able to hide all stock related UI elements and routes (closes #228)

This commit is contained in:
Bernd Bestel 2019-05-03 20:03:04 +02:00
parent bd296f8fe1
commit 4c2cf4944d
No known key found for this signature in database
GPG Key ID: 71BD34C0D4891300
5 changed files with 61 additions and 27 deletions

View File

@ -23,3 +23,4 @@
- Some other small fixes and improvements
- The "Add as barcode to existing product" productpicker workflow failed to add the barcode to the given product
- Recipes can now be filter by stock availability
- Added a feature flag (`config.php` setting) to also be able to hide all stock related UI elements and routes

View File

@ -91,6 +91,7 @@ DefaultUserSetting('shopping_list_to_stock_workflow_auto_submit_when_prefilled',
# came and still come by, because they are useful - here you can disable the parts
# which you don't need to have a less cluttered UI
# (set the setting to "false" to disable the corresponding part, which should be self explanatory)
Setting('FEATURE_FLAG_STOCK', true);
Setting('FEATURE_FLAG_SHOPPINGLIST', true);
Setting('FEATURE_FLAG_RECIPES', true);
Setting('FEATURE_FLAG_CHORES', true);

View File

@ -28,7 +28,7 @@ class SystemController extends BaseController
$demoDataGeneratorService->PopulateDemoData();
}
return $response->withRedirect($this->AppContainer->UrlManager->ConstructUrl('/stockoverview'));
return $response->withRedirect($this->AppContainer->UrlManager->ConstructUrl($this->GetEntryPageRelative()));
}
public function About(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args)
@ -38,4 +38,24 @@ class SystemController extends BaseController
'changelog' => $this->ApplicationService->GetChangelog()
]);
}
private function GetEntryPageRelative()
{
$entryPage = '/stockoverview';
if (!GROCY_FEATURE_FLAG_STOCK)
{
$entryPage = '/choresoverview';
}
if (!GROCY_FEATURE_FLAG_CHORES)
{
$entryPage = '/batteriesoverview';
}
if (!GROCY_FEATURE_FLAG_BATTERIES)
{
$entryPage = '/equipment';
}
return $entryPage;
}
}

View File

@ -25,6 +25,8 @@ $app->group('', function()
$this->get('/user/{userId}', '\Grocy\Controllers\UsersController:UserEditForm');
// Stock routes
if (GROCY_FEATURE_FLAG_STOCK)
{
$this->get('/stockoverview', '\Grocy\Controllers\StockController:Overview');
$this->get('/purchase', '\Grocy\Controllers\StockController:Purchase');
$this->get('/consume', '\Grocy\Controllers\StockController:Consume');
@ -39,6 +41,7 @@ $app->group('', function()
$this->get('/productgroups', '\Grocy\Controllers\StockController:ProductGroupsList');
$this->get('/productgroup/{productGroupId}', '\Grocy\Controllers\StockController:ProductGroupEditForm');
$this->get('/stockjournal', '\Grocy\Controllers\StockController:Journal');
}
// Shopping list routes
if (GROCY_FEATURE_FLAG_SHOPPINGLIST)
@ -142,6 +145,8 @@ $app->group('/api', function()
$this->put('/user/settings/{settingKey}', '\Grocy\Controllers\UsersApiController:SetUserSetting');
// Stock
if (GROCY_FEATURE_FLAG_STOCK)
{
$this->get('/stock', '\Grocy\Controllers\StockApiController:CurrentStock');
$this->get('/stock/volatile', '\Grocy\Controllers\StockApiController:CurrentVolatilStock');
$this->get('/stock/products/{productId}', '\Grocy\Controllers\StockApiController:ProductDetails');
@ -154,6 +159,7 @@ $app->group('/api', function()
$this->post('/stock/products/{productId}/open', '\Grocy\Controllers\StockApiController:OpenProduct');
$this->post('/stock/bookings/{bookingId}/undo', '\Grocy\Controllers\StockApiController:UndoBooking');
$this->get('/stock/barcodes/external-lookup', '\Grocy\Controllers\StockApiController:ExternalBarcodeLookup');
}
// Shopping list
if (GROCY_FEATURE_FLAG_SHOPPINGLIST)

View File

@ -75,12 +75,14 @@
<div id="sidebarResponsive" class="collapse navbar-collapse">
<ul class="navbar-nav navbar-sidenav pt-2">
@if(GROCY_FEATURE_FLAG_STOCK)
<li class="nav-item" data-toggle="tooltip" data-placement="right" title="{{ $__t('Stock overview') }}" data-nav-for-page="stockoverview">
<a class="nav-link discrete-link" href="{{ $U('/stockoverview') }}">
<i class="fas fa-box"></i>
<span class="nav-link-text">{{ $__t('Stock overview') }}</span>
</a>
</li>
@endif
@if(GROCY_FEATURE_FLAG_SHOPPINGLIST)
<li class="nav-item" data-toggle="tooltip" data-placement="right" title="{{ $__t('Shopping list') }}" data-nav-for-page="shoppinglist">
<a class="nav-link discrete-link" href="{{ $U('/shoppinglist') }}">
@ -130,6 +132,7 @@
</li>
@endif
@if(GROCY_FEATURE_FLAG_STOCK)
<li class="nav-item mt-4" data-toggle="tooltip" data-placement="right" title="{{ $__t('Purchase') }}" data-nav-for-page="purchase">
<a class="nav-link discrete-link" href="{{ $U('/purchase') }}">
<i class="fas fa-shopping-cart"></i>
@ -148,6 +151,7 @@
<span class="nav-link-text">{{ $__t('Inventory') }}</span>
</a>
</li>
@endif
@if(GROCY_FEATURE_FLAG_CHORES)
<li class="nav-item" data-toggle="tooltip" data-placement="right" title="{{ $__t('Chore tracking') }}" data-nav-for-page="choretracking">
<a class="nav-link discrete-link" href="{{ $U('/choretracking') }}">
@ -179,6 +183,7 @@
<span class="nav-link-text">{{ $__t('Manage master data') }}</span>
</a>
<ul id="top-nav-manager-master-data" class="sidenav-second-level collapse">
@if(GROCY_FEATURE_FLAG_STOCK)
<li data-nav-for-page="products" data-sub-menu-of="#top-nav-manager-master-data">
<a class="nav-link discrete-link" href="{{ $U('/products') }}">
<i class="fab fa-product-hunt"></i>
@ -203,6 +208,7 @@
<span class="nav-link-text">{{ $__t('Product groups') }}</span>
</a>
</li>
@endif
@if(GROCY_FEATURE_FLAG_CHORES)
<li data-nav-for-page="chores" data-sub-menu-of="#top-nav-manager-master-data">
<a class="nav-link discrete-link" href="{{ $U('/chores') }}">