Compare commits

..

No commits in common. "master" and "v4.6.0" have entirely different histories.

14 changed files with 91 additions and 175 deletions

View File

@ -15,5 +15,5 @@ if ($adminUserRow == null)
} }
$adminUserRow->update([ $adminUserRow->update([
'password' => password_hash('admin', PASSWORD_ARGON2ID) 'password' => password_hash('admin', PASSWORD_DEFAULT)
]); ]);

8
.editorconfig Normal file
View File

@ -0,0 +1,8 @@
root = true
[*]
indent_style = tab
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

View File

@ -2,7 +2,7 @@
- => https://github.com/grocy/grocy-desktop - => https://github.com/grocy/grocy-desktop
- Run Grocy without a webserver just like a normal (Windows) desktop application - Run Grocy without a webserver just like a normal (Windows) desktop application
- New "embedded mode" for Grocy to help running in "desktop application mode" [see README](https://github.com/grocy/grocy#embedded-mode) - New "embedded mode" for Grocy to help running in "desktop application mode" [see README](https://github.com/grocy/grocy#embedded-mode)
- New date time picker shorthands and improvements - New datepicker shorthands and improvements
- `YYYYMMe` or `YYYYMM+` gets expanded to the end of the given month in the given year in proper notation - `YYYYMMe` or `YYYYMM+` gets expanded to the end of the given month in the given year in proper notation
- Changed: `MMDD` will be expanded to the given day next year if > today - Changed: `MMDD` will be expanded to the given day next year if > today
- [see README](https://github.com/grocy/grocy#input-shorthands-for-date-fields) - [see README](https://github.com/grocy/grocy#input-shorthands-for-date-fields)

View File

@ -1,6 +1,6 @@
- Fixed that price data (last price & chart) was not taken from inventory correction bookings, only purchases - Fixed that price data (last price & chart) was not taken from inventory correction bookings, only purchases
- Fixed weekly chores were scheduled on the same day after execution - Fixed weekly chores were scheduled on the same day after execution
- Fixed that undone chores were also included in "Last tracked" - Fixed that undone chores were also included in "Last tracked"
- Fixed the date time picker width was too narrow sometimes - Fixed the date-time-picker width was too narrow sometimes
- Improved that execution dates of "Track date only" chores will never display the time part - Improved that execution dates of "Track date only" chores will never display the time part
- Improved date display for products that never expire (again, there was a display problem after consuming an item on the stock overview page) - Improved date display for products that never expire (again, there was a display problem after consuming an item on the stock overview page)

View File

@ -73,7 +73,7 @@
### General & other improvements/fixes ### General & other improvements/fixes
- Added a new `config.php` setting `CALENDAR_SHOW_WEEK_OF_YEAR` to configure if calendars should show week numbers (defaults to `true`) - Added a new `config.php` setting `CALENDAR_SHOW_WEEK_OF_YEAR` to configure if calendars should show week numbers (defaults to `true`)
- Fixed that date time pickers not considered the `config.php` setting `CALENDAR_FIRST_DAY_OF_WEEK` - Fixed that date/time pickers not considered the `config.php` setting `CALENDAR_FIRST_DAY_OF_WEEK`
- Improved the handling which entry page to use with disabled feature flags (thanks @nielstholenaar) - Improved the handling which entry page to use with disabled feature flags (thanks @nielstholenaar)
- Boolean settings provided via environment variables (so the strings `true` and `false`) are now parsed correctly (thanks @mduret) - Boolean settings provided via environment variables (so the strings `true` and `false`) are now parsed correctly (thanks @mduret)
- All uploaded pictures (currently for products and recipes) are now automatically downscaled to the appropriate size when serving them to improve page load times (this requires the `php-gd` extension, if not installed, images will not be downscaled) - All uploaded pictures (currently for products and recipes) are now automatically downscaled to the appropriate size when serving them to improve page load times (this requires the `php-gd` extension, if not installed, images will not be downscaled)

View File

@ -43,7 +43,7 @@ If you run Grocy in a subdirectory, you need to set a new `config.php` setting (
- Added a button to enable the device flash light on the camera barcode scanner popup (thanks @radim-ek) - Added a button to enable the device flash light on the camera barcode scanner popup (thanks @radim-ek)
- Optimized the top navbar height and overall spacing to waste less space - Optimized the top navbar height and overall spacing to waste less space
- Replaced the scan-mode-switch-button by a native button because it's less disturbing - Replaced the scan-mode-switch-button by a native button because it's less disturbing
- Fixed that the "contextual time ago" of date time pickers was not displayed - Fixed that the "contextual time ago" of date/time pickers was not displayed
- New translations: (thanks all the translators) - New translations: (thanks all the translators)
- Czech (demo available at https://cs.demo.grocy.info) - Czech (demo available at https://cs.demo.grocy.info)
- Portuguese (Portugal) (demo available at https://pt-pt.demo.grocy.info) - Portuguese (Portugal) (demo available at https://pt-pt.demo.grocy.info)

View File

@ -1,59 +0,0 @@
> ⚠️ xxxBREAKING CHANGESxxx
> ❗ xxxImportant upgrade informationXXX
> 💡 xxxMinor upgrade informationXXX
### New Feature: xxxx
- xxx
### Stock
- Fixed that changing the location on the purchase page re-initialized the due date based on product defaults (if any)
- Fixed that when undoing a product consume or transfer transaction, the store of the corresponding stock entry wasn't restored
- This will only apply to new consume / transfer transactions, not when undoing transactions made before using this release
### Shopping list
- xxx
### Recipes
- xxx
### Meal plan
- xxx
### Chores
- xxx
### Calendar
- xxx
### Tasks
- xxx
### Batteries
- xxx
### Equipment
- xxx
### Userfields
- xxx
### General
- xxx
### API
- xxx

View File

@ -40,10 +40,10 @@ class DefaultAuthMiddleware extends AuthMiddleware
$sessionKey = SessionService::getInstance()->CreateSession($user->id, $stayLoggedInPermanently); $sessionKey = SessionService::getInstance()->CreateSession($user->id, $stayLoggedInPermanently);
self::SetSessionCookie($sessionKey); self::SetSessionCookie($sessionKey);
if (password_needs_rehash($user->password, PASSWORD_ARGON2ID)) if (password_needs_rehash($user->password, PASSWORD_DEFAULT))
{ {
$user->update([ $user->update([
'password' => password_hash($inputPassword, PASSWORD_ARGON2ID) 'password' => password_hash($inputPassword, PASSWORD_DEFAULT)
]); ]);
} }

View File

@ -9,7 +9,7 @@ if (defined('GROCY_HTTP_USER'))
// Migrate old user defined in config file to database // Migrate old user defined in config file to database
$newUserRow = $db->users()->createRow([ $newUserRow = $db->users()->createRow([
'username' => GROCY_HTTP_USER, 'username' => GROCY_HTTP_USER,
'password' => password_hash(GROCY_HTTP_PASSWORD, PASSWORD_ARGON2ID) 'password' => password_hash(GROCY_HTTP_PASSWORD, PASSWORD_DEFAULT)
]); ]);
$newUserRow->save(); $newUserRow->save();
} }
@ -18,7 +18,7 @@ else
// Create default user "admin" with password "admin" // Create default user "admin" with password "admin"
$newUserRow = $db->users()->createRow([ $newUserRow = $db->users()->createRow([
'username' => 'admin', 'username' => 'admin',
'password' => password_hash('admin', PASSWORD_ARGON2ID) 'password' => password_hash('admin', PASSWORD_DEFAULT)
]); ]);
$newUserRow->save(); $newUserRow->save();
} }

View File

@ -441,65 +441,36 @@ if (Grocy.Components.ProductPicker !== undefined)
function PrefillBestBeforeDate(product, location) function PrefillBestBeforeDate(product, location)
{ {
if (!Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING)
{
return;
}
if (location == null) if (location == null)
{ {
location = {} location = {}
} }
var shortcutValue = $("#datetimepicker-shortcut").attr("data-datetimepicker-shortcut-value"); if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_BEST_BEFORE_DATE_TRACKING)
var dueDateCurrent = Grocy.Components.DateTimePicker.GetValue();
var dueDateDefault = null;
var dueDateFreezer = null;
if (product.default_best_before_days != 0)
{ {
dueDateDefault = moment().add(product.default_best_before_days, 'days').format('YYYY-MM-DD'); var dueDays;
if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_PRODUCT_FREEZING && BoolVal(location.is_freezer))
if (product.default_best_before_days == -1)
{ {
dueDateDefault = shortcutValue; dueDays = product.default_best_before_days_after_freezing;
}
}
if (Grocy.FeatureFlags.GROCY_FEATURE_FLAG_STOCK_PRODUCT_FREEZING && BoolVal(location.is_freezer) && product.default_best_before_days_after_freezing != 0)
{
dueDateFreezer = moment().add(product.default_best_before_days_after_freezing, 'days').format('YYYY-MM-DD');
if (product.default_best_before_days_after_freezing == -1)
{
dueDateFreezer = shortcutValue;
}
}
// Set the default due date when currently no one is set
if (dueDateDefault && !dueDateCurrent)
{
if (!$("#datetimepicker-shortcut").is(":checked") && dueDateDefault == shortcutValue)
{
$("#datetimepicker-shortcut").click();
} }
else else
{ {
Grocy.Components.DateTimePicker.SetValue(dueDateDefault); dueDays = product.default_best_before_days;
}
} }
// Set the default due date after freezing when currently no one is set or when it was previously set to the default due date if (dueDays != 0)
// (so essentially don't overwrite a by the user different entered due date)
if (dueDateFreezer && (!dueDateCurrent || dueDateCurrent == dueDateDefault))
{ {
if (!$("#datetimepicker-shortcut").is(":checked") && dueDateFreezer == shortcutValue) if (dueDays == -1)
{
if (!$("#datetimepicker-shortcut").is(":checked"))
{ {
$("#datetimepicker-shortcut").click(); $("#datetimepicker-shortcut").click();
} }
}
else else
{ {
Grocy.Components.DateTimePicker.SetValue(dueDateFreezer); Grocy.Components.DateTimePicker.SetValue(moment().add(dueDays, 'days').format('YYYY-MM-DD'));
}
} }
} }
} }

View File

@ -463,8 +463,7 @@ class StockService extends BaseService
'transaction_id' => $transactionId, 'transaction_id' => $transactionId,
'user_id' => GROCY_USER_ID, 'user_id' => GROCY_USER_ID,
'location_id' => $stockEntry->location_id, 'location_id' => $stockEntry->location_id,
'note' => $stockEntry->note, 'note' => $stockEntry->note
'shopping_location_id' => $stockEntry->shopping_location_id
]); ]);
$logRow->save(); $logRow->save();
@ -499,8 +498,7 @@ class StockService extends BaseService
'transaction_id' => $transactionId, 'transaction_id' => $transactionId,
'user_id' => GROCY_USER_ID, 'user_id' => GROCY_USER_ID,
'location_id' => $stockEntry->location_id, 'location_id' => $stockEntry->location_id,
'note' => $stockEntry->note, 'note' => $stockEntry->note
'shopping_location_id' => $stockEntry->shopping_location_id
]); ]);
$logRow->save(); $logRow->save();
@ -1534,8 +1532,7 @@ class StockService extends BaseService
'opened_date' => $logRow->opened_date, 'opened_date' => $logRow->opened_date,
'open' => $logRow->opened_date !== null, 'open' => $logRow->opened_date !== null,
'location_id' => $logRow->location_id, 'location_id' => $logRow->location_id,
'note' => $logRow->note, 'note' => $logRow->note
'shopping_location_id' => $logRow->shopping_location_id
]); ]);
$stockRow->save(); $stockRow->save();
@ -1586,8 +1583,7 @@ class StockService extends BaseService
'stock_id' => $logRow->stock_id, 'stock_id' => $logRow->stock_id,
'price' => $logRow->price, 'price' => $logRow->price,
'opened_date' => $logRow->opened_date, 'opened_date' => $logRow->opened_date,
'note' => $logRow->note, 'note' => $logRow->note
'shopping_location_id' => $logRow->shopping_location_id
]); ]);
$stockRow->save(); $stockRow->save();
} }

View File

@ -12,7 +12,7 @@ class UsersService extends BaseService
'username' => $username, 'username' => $username,
'first_name' => $firstName, 'first_name' => $firstName,
'last_name' => $lastName, 'last_name' => $lastName,
'password' => password_hash($password, PASSWORD_ARGON2ID), 'password' => password_hash($password, PASSWORD_DEFAULT),
'picture_file_name' => $pictureFileName 'picture_file_name' => $pictureFileName
]); ]);
$newUserRow = $newUserRow->save(); $newUserRow = $newUserRow->save();
@ -61,7 +61,7 @@ class UsersService extends BaseService
'username' => $username, 'username' => $username,
'first_name' => $firstName, 'first_name' => $firstName,
'last_name' => $lastName, 'last_name' => $lastName,
'password' => password_hash($password, PASSWORD_ARGON2ID), 'password' => password_hash($password, PASSWORD_DEFAULT),
'picture_file_name' => $pictureFileName 'picture_file_name' => $pictureFileName
]); ]);
} }