Skip to content

Commit 1e8def9

Browse files
Merge branch '3.x'
2 parents b3dd5af + e217e1a commit 1e8def9

309 files changed

Lines changed: 6137 additions & 3029 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ The state-of-the-art architecture of SmartStore.NET - with `ASP.NET 4.5` + `MVC
3939
* Unlimited number of products and categories
4040
* Product Bundles
4141
* RESTful WebApi
42-
* Multi-language support
42+
* Multi-language and RTL support
4343
* Modern, clean, SEO-optimized and fully responsive Theme based on Bootstrap 4
4444
* Ultra fast search framework with faceted search support
4545
* Extremely scalable thanks to output caching, REDIS & Microsoft Azure support.
@@ -56,22 +56,23 @@ The state-of-the-art architecture of SmartStore.NET - with `ASP.NET 4.5` + `MVC
5656
* and many more...
5757

5858
## Project Status
59-
SmartStore.NET V3.0.0 has been released on May 15, 2017. The highlights are:
60-
61-
* **Flex**: New mobile-first responsive Theme based on Bootstrap 4
62-
* **Mega Search \***: highly professional search framework based on Lucene.NET
63-
* Ultra fast search results, even with millions of items
64-
* Faceted search
65-
* Synonyms
66-
* Compound word splitting
67-
* **Mega Menu \***: highly customizable catalog menu widgets
68-
* **Content Slider \***: creates eye-catching content to boost sales
69-
* **Output Cache \*** with "donut hole caching" for maximum speed and scalability
70-
* **Microsoft AZURE \*** provider for media storage
71-
* Web Farms: **REDIS \*** providers for Business Cache, Output Cache and Session State
72-
* Product variant **option sets**
73-
* New product specification attribute type: **numeric range**
74-
* Image support for variant attributes
59+
SmartStore.NET V3.1.0 has been released on April 20, 2018. The highlights are:
60+
61+
* **Wallet \***: Enables full or partial order payment via credit account. Includes REST-Api.
62+
* **[Liquid](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers) template engine**: very flexible templating for e-mails and campaigns with autocompletion and syntax highlighting.
63+
* **Cash Rounding**: define money rounding rules on currency and payment method level.
64+
* **Modern, responsive backend**: migrated backend to Bootstrap 4, overhauled and improved the user interface.
65+
* **Enhanced MegaMenu \***: virtual dropdowns for surplus top-level categories and brands.
66+
* **RTL**: comprehensive RTL (Right-to-left) and bidi(rectional) support.
67+
* **Amazon Pay**:
68+
* Supports merchants registered in the USA and Japan
69+
* External authentication via *Login with Amazon* button in shop frontend
70+
* Several improvements through the new *Login and pay with Amazon* services
71+
* **Image processing**: new processing and caching strategy! Thumbnails are not created synchronously during the main request anymore, instead a new middleware route defers processing until an image is requested by any client.
72+
* **TinyImage \***: scores ultra-high image compression rates (up to 80 %!) and enables WebP support.
73+
* **UrlRewriter \***: define URL redirection rules in the backend using *mod_rewrite* notation.
74+
* **Address formatting** templates by country
75+
* **Language packs**: downloader & auto-importer for packages available online.
7576
* ...and a lot more new features, enhancements and fixes
7677

7778
\* Commercial plugin
@@ -105,4 +106,4 @@ NOTE: SmartStore.NET 3 requires [Visual C++ Redistributable für Visual Studio 2
105106

106107
## License
107108

108-
SmartStore.NET is released under the [GPLv3 license](http://www.gnu.org/licenses/gpl-3.0.txt).
109+
SmartStore.NET Community Edition is released under the [GPLv3 license](http://www.gnu.org/licenses/gpl-3.0.txt).

SmartStoreNET.Tasks.Targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<BuildPlatform Condition="$(BuildPlatform) == ''">x86</BuildPlatform>
4040

4141
<xVersion>$(BUILD_NUMBER)</xVersion>
42-
<Version>3.1.0</Version>
42+
<Version>3.1.5</Version>
4343
<ZipDirectory>$(StageFolder)</ZipDirectory>
4444
<ZipVersionFileSuffix Condition="$(Version) != ''">.$(Version)</ZipVersionFileSuffix>
4545
<ZipVersionFileSuffix Condition="$(Version) == ''"></ZipVersionFileSuffix>

changelog.md

Lines changed: 81 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,90 @@
1-
# Release Notes
1+
# Release Notes
2+
3+
## SmartStore.NET 3.1.5
4+
5+
### Highlights
6+
* Compliance with EU-GDPR requirements
7+
* Search engine friendly topic URLs
8+
* "Honeypot" bot detection for registration and contact forms.
9+
10+
### New Features
11+
* #1429 Search engine friendly topic URLs
12+
* Implemented cookie consent according to EU-GDPR
13+
* Added checkboxes for data processing consent in all relevant forms
14+
* Implemented "Honeypot" bot detection for registration and contact forms.
15+
* Trusted Shops: Added consent checkbox to confirm order page for submission of customer email address to Trusted Shops if review widget is active
16+
* #1226 Shop-Connector: Added exchange of tier prices and delivery times
17+
* #1439 Debitoor: Option whether to display the payment method and SKU on invoices
18+
19+
### Improvements
20+
* Added double opt-in feature for newsletter subscriptions during checkout (confirm order)
21+
* Allow forward slash in product tag URL slug
22+
* Theming: throttle AJAX cart refresh after spin up/down click
23+
* Moved StoreLastIpAddress & DisplayPrivacyAgreementOnContactUs from customer settings to privacy settings tab
24+
* #1450 Show the regular price only if it's higher than the final price
25+
* #1450 Do not ignore discounts with a negative amount
26+
* (Soft) deleted customers can be edited now
27+
* Customer IP addresses will be anonymized on (soft) deletion
28+
* Set catalogsettings.showsharebutton to false as its not compliant with GDPR
29+
* Made form fields for first & last name in customer registration optional
30+
* Implemented settings to make form fields for first & last name required again
31+
* Made form field for full name in contact us & product request optional
32+
* Implemented settings to make form field for full name in contact us & product request required again
33+
* #1453 Import: Use [IGNORE] to ignore a field value on record level
34+
* #1455 More detail on packing slip when bundled item
35+
* Display category alias as badge in grids and dropdowns
36+
37+
### Bugfixes
38+
* Migration: take all same-named message templates into account
39+
* Messaging: OrderPlaced e-mail templates show main product image even when an attribute combination with a custom image has been selected
40+
* Theming: fix broken product review voting
41+
* Theming: added missing bottom space to .html-editor-content
42+
* Theming: Language switcher is not displayed if no currency options are available
43+
* No bundle item thumbnail displayed in bundle summary if item is not individually visible
44+
* Tracking number in shipment details was not saved
45+
* Assigning or removing product tags did not invalidate model cache
46+
* Reward points weren't displayed in message templates
47+
* Dashboard: link for not yet shipped orders loads list with all orders
48+
* Topic search button had no effect
49+
* #1442 Message factory should not throw an exception if a template has been deactivated
50+
* Fixes script error "$(...).tab is not a function" on product detail page
51+
* Title attribute for the product name in product lists was sometimes truncated
52+
* Relativizing font sizes should cast to double, not int
53+
* Fixes category list on product edit page shows empty category name
54+
* #1438 Debitoor: The country is displayed twice
55+
* MegaSearch: Fixes indexing ignores DeliveryTimeIdForEmptyStock setting
56+
* Web API: Fixes "No NavigationLink factory was found for the navigation property 'WalletHistory'"
57+
* #1449 IgnoreCharges of shipping methods is not working if a localized name is specified
58+
* Fixes "The object does not support the property or method 'startsWith'" on product edit page.
59+
* Wallet: Fixes "Child actions are not allowed to perform redirect actions" when there are cart warnings
60+
* Fixes the delivery time in the order notifications may differ from delivery time on the product detail page
61+
262

363
## SmartStore.NET 3.1.0
4-
### Breaking changes
5-
* Message template customizations are lost due to the new template engine. You have to customize the templates again. No automatic migration, sorry :-(
6-
* Amazon Pay: The plugin has been changed to new *Login and pay with Amazon* services. A registration at Amazon and new access data are necessary for its use. The old access data can no longer be used.
7-
* (Dev) Calls to cache methods `Keys()` and `RemoveByPattern()` require glob chars to be present now (supported glob-styles see [https://redis.io/commands/keys](https://redis.io/commands/keys)). Previously these methods appended `*` to the passed pattern, which made pattern matching rather unflexible.
8-
* (Dev) Hook framework now passes `IHookedEntity` interface instead of `HookedEntity` class
9-
* (Dev) Completely removed all `EntityInserted<T>`, `EntityUpdated<T>` and `EntityDeleted<T>` legacy events. We were using DbSaveHooks anyway, which provides a much more powerful and way faster pub-sub mechanism for database operations.
1064

1165
### Highlights
12-
* New [Liquid](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers) based template engine
13-
* Multi-configurable rounding of order total ("cash rounding"). Can be adjusted and activated separately for each currency and payment method.
14-
* (Perf) Picture service: new processing and caching strategy! Thumbnails are not created synchronously during the main request anymore, instead a new middleware route defers processing until an image is actually requested by any client.
15-
* MegaMenu shrinker and *Brands* virtual menu item
16-
* Address formatting templates by country
17-
* Connection to translate.smartstore.com. For available languages, localized resources can be downloaded and installed directly.
66+
* **Wallet**: Enables full or partial order payment via credit account. Includes REST-Api. (commercial plugin)
67+
* **[Liquid](https://github.com/Shopify/liquid/wiki/Liquid-for-Designers) template engine**: very flexible templating for e-mails and campaigns with autocompletion and syntax highlighting.
68+
* **Cash Rounding**: define money rounding rules on currency and payment method level.
69+
* **Modern, responsive backend**: migrated backend to Bootstrap 4, overhauled and improved the user interface.
70+
* **Enhanced MegaMenu**: virtual dropdowns for surplus top-level categories and brands (commercial plugin exclusively bundled with Pro Edition).
71+
* **RTL**: comprehensive RTL (Right-to-left) and bidi(rectional) support.
1872
* **Amazon Pay**:
1973
* Supports merchants registered in the USA and Japan
2074
* External authentication via *Login with Amazon* button in shop frontend
2175
* Several improvements through the new *Login and pay with Amazon* services
76+
* (Perf) **Faster image processing**: new processing and caching strategy! Thumbnails are not created synchronously during the main request anymore, instead a new middleware route defers processing until an image is requested by any client.
77+
* **TinyImage**: scores ultra-high image compression rates (up to 80 %!) and enables WebP support (commercial plugin exclusively bundled with Premium Edition).
78+
* **UrlRewriter**: define URL redirection rules in the backend using *mod_rewrite* notation. (commercial plugin)
79+
* **Address formatting** templates by country
80+
* **Language packs**: downloader & auto-importer for packages available online.
81+
82+
### Breaking changes
83+
* Message template customizations are lost due to the new template engine. You have to customize the templates again. No automatic migration, sorry :-(
84+
* Amazon Pay: The plugin has been changed to new *Login and pay with Amazon* services. The client ID has been added, which has to be created in Amazon Seller Central and saved in the payment method configuration.
85+
* (Dev) Calls to cache methods `Keys()` and `RemoveByPattern()` require glob chars to be present now (supported glob-styles see [https://redis.io/commands/keys](https://redis.io/commands/keys)). Previously these methods appended `*` to the passed pattern, which made pattern matching rather unflexible.
86+
* (Dev) Hook framework now passes `IHookedEntity` interface instead of `HookedEntity` class
87+
* (Dev) Completely removed all `EntityInserted<T>`, `EntityUpdated<T>` and `EntityDeleted<T>` legacy events. We were using DbSaveHooks anyway, which provides a much more powerful and way faster pub-sub mechanism for database operations.
2288

2389
### New Features
2490
* 1203 MegaMenu shrinker and *Brands* virtual menu item
@@ -48,7 +114,7 @@
48114
* Target .NET Framework changed: 4.5.2 > 4.6.1.
49115
* Lower memory consumption
50116
* #649 Media FileSystem provider: segmenting files in subfolders to increase IO perf with huge amount of files
51-
* #1141 Clearer backend order list. Added more infos like payment method.
117+
* #1141 Cleaner backend order list. Added more infos like payment method.
52118
* OuputCache: Simple product changes that affect visibility now correctly invalidate all assigned category and manufacturer pages
53119
* * OuputCache: When MegaSearch is active, invalidation occurs only during indexing and not ad-hoc anymore.
54120
* #1248 New payment integration guidelines for Sofort\Klarna
@@ -65,7 +131,7 @@
65131
* Import and export product quantity step
66132
* Add bundle item information to order messages
67133
* #1031 Enable offline payment methods to have brand icons
68-
* DevTools Plugin: Added example for how to invalidate cached output
134+
* DevTools Plugin: Added example for cached output invalidation
69135

70136
### Bugfixes
71137
* #1268 Data importer always inserts new pictures and does not detect equal pictures while importing

src/AssemblyVersionInfo.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
//
1010
// You can specify all the values or you can default the Revision and Build Numbers
1111
// by using the '*' as shown below:
12-
[assembly: AssemblyVersion("3.1.0.0")]
12+
[assembly: AssemblyVersion("3.1.5.0")]
1313

14-
[assembly: AssemblyFileVersion("3.1.0.0")]
15-
[assembly: AssemblyInformationalVersion("3.1.0.0")]
14+
[assembly: AssemblyFileVersion("3.1.5.0")]
15+
[assembly: AssemblyInformationalVersion("3.1.5.0")]

src/Libraries/SmartStore.Core/ComponentModel/HybridExpando.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ public override bool TrySetMember(SetMemberBinder binder, object value)
234234

235235
protected virtual bool TrySetMemberCore(string name, object value)
236236
{
237-
// first check to see if there's a native property to set
237+
// first check to see if there's a dictionary entry to set
238238
if (Properties.ContainsKey(name))
239239
{
240240
Properties[name] = value;

src/Libraries/SmartStore.Core/Domain/Catalog/CatalogSettings.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ public CatalogSettings()
8080
ShowProductsFromSubcategories = true;
8181
ApplyTierPricePercentageToAttributePriceAdjustments = false;
8282
AllowDifferingEmailAddressForEmailAFriend = false;
83+
AllowAnonymousUsersToEmailAFriend = false;
84+
AllowAnonymousUsersToReviewProduct = false;
8385
}
8486

8587
/// <summary>

src/Libraries/SmartStore.Core/Domain/Customers/Customer.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,6 @@ public virtual ICollection<RewardPointsHistory> RewardPointsHistory
206206
/// <summary>
207207
/// Gets or sets the wallet history.
208208
/// </summary>
209-
[DataMember]
210209
public virtual ICollection<WalletHistory> WalletHistory
211210
{
212211
get

src/Libraries/SmartStore.Core/Domain/Customers/CustomerSettings.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ public CustomerSettings()
2323
NewsletterEnabled = true;
2424
OnlineCustomerMinutes = 20;
2525
StoreLastVisitedPage = true;
26-
StoreLastIpAddress = true;
27-
DisplayPrivacyAgreementOnContactUs = false;
26+
FirstNameRequired = false;
27+
LastNameRequired = false;
2828
}
2929

3030
/// <summary>
@@ -151,16 +151,6 @@ public CustomerSettings()
151151
/// Gets or sets a value indicating we should store last visited page URL for each customer
152152
/// </summary>
153153
public bool StoreLastVisitedPage { get; set; }
154-
155-
/// <summary>
156-
/// Gets or sets a value indicating whether to store last IP address for each customer
157-
/// </summary>
158-
public bool StoreLastIpAddress { get; set; }
159-
160-
/// <summary>
161-
/// Gets or sets a value indicating whether to display a checkbox to the customer where he can agree to privacy terms
162-
/// </summary>
163-
public bool DisplayPrivacyAgreementOnContactUs { get; set; }
164154

165155
#region Form fields
166156

@@ -174,10 +164,20 @@ public CustomerSettings()
174164
/// </summary>
175165
public bool TitleEnabled { get; set; }
176166

177-
/// <summary>
178-
/// Gets or sets a value indicating whether 'Date of Birth' is enabled
179-
/// </summary>
180-
public bool DateOfBirthEnabled { get; set; }
167+
/// <summary>
168+
/// Gets or sets a value indicating whether 'FirstName' is required
169+
/// </summary>
170+
public bool FirstNameRequired { get; set; }
171+
172+
/// <summary>
173+
/// Gets or sets a value indicating whether 'LastName' is required
174+
/// </summary>
175+
public bool LastNameRequired { get; set; }
176+
177+
/// <summary>
178+
/// Gets or sets a value indicating whether 'Date of Birth' is enabled
179+
/// </summary>
180+
public bool DateOfBirthEnabled { get; set; }
181181

182182
/// <summary>
183183
/// Gets or sets a value indicating whether 'Company' is enabled
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using SmartStore.Core.Configuration;
2+
using SmartStore.Core.Domain.Localization;
3+
using SmartStore.Core.Domain.Orders;
4+
5+
namespace SmartStore.Core.Domain.Customers
6+
{
7+
public class PrivacySettings : BaseEntity, ISettings, ILocalizedEntity
8+
{
9+
public PrivacySettings()
10+
{
11+
EnableCookieConsent = true;
12+
StoreLastIpAddress = false;
13+
DisplayGdprConsentOnForms = true;
14+
FullNameOnContactUsRequired = false;
15+
}
16+
17+
/// <summary>
18+
/// Specifies whether cookie hint and consent will be displayed to customers in the frontent
19+
/// </summary>
20+
public bool EnableCookieConsent { get; set; }
21+
22+
/// <summary>
23+
/// Specifies the text which will be display to customers using the frontend
24+
/// </summary>
25+
public string CookieConsentBadgetext { get; set; }
26+
27+
/// <summary>
28+
/// Gets or sets a value indicating whether to store last IP address for each customer
29+
/// </summary>
30+
public bool StoreLastIpAddress { get; set; }
31+
32+
/// <summary>
33+
/// Gets or sets a value indicating whether to display a checkbox to the customer where he can agree to privacy terms
34+
/// </summary>
35+
public bool DisplayGdprConsentOnForms { get; set; }
36+
37+
/// <summary>
38+
/// Gets or sets a value indicating whether the full name field is required on contact us requests
39+
/// </summary>
40+
public bool FullNameOnContactUsRequired { get; set; }
41+
42+
/// <summary>
43+
/// Gets or sets a value indicating whether the full name field is required on product requests
44+
/// </summary>
45+
public bool FullNameOnProductRequestRequired { get; set; }
46+
}
47+
}

src/Libraries/SmartStore.Core/Domain/Customers/SystemCustomerAttributeNames.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public static partial class SystemCustomerAttributeNames
3939
public static string MostRecentlyUsedCategories { get { return "MostRecentlyUsedCategories"; } }
4040
public static string MostRecentlyUsedManufacturers { get { return "MostRecentlyUsedManufacturers"; } }
4141
public static string WalletEnabled { get { return "WalletEnabled"; } }
42+
public static string HasConsentedToGdpr { get { return "HasConsentedToGdpr"; } }
4243

4344
//depends on store
4445
public static string CurrencyId { get { return "CurrencyId"; } }

0 commit comments

Comments
 (0)