Coder Social home page Coder Social logo

shopsys / shopsys Goto Github PK

View Code? Open in Web Editor NEW
322.0 20.0 91.0 93.89 MB

Main repository for maintaining Shopsys Platform packages. Open for ISSUES and PULL REQUESTS.

Home Page: https://www.shopsys.com

License: Other

PHP 73.22% Batchfile 0.01% JavaScript 2.53% CSS 0.06% Shell 0.28% Dockerfile 0.06% API Blueprint 1.05% Twig 3.66% Less 2.08% Makefile 0.04% Scala 0.05% TypeScript 16.98%
e-commerce ecommerce-framework ecommerce-platform shopsys-framework shopsys-platform

shopsys's Introduction

Shopsys Platform

Build Status - master

Shopsys Platform is a fully functional e-commerce solution for businesses transitioning into tech companies with their own software development team. It contains the most common B2C and B2B features for online stores, and its infrastructure is prepared for high scalability.

Shopsys Platform is the fruit of our 16 years of experience in creating custom-made online stores, and it’s dedicated to the best in-house devs teams who work with online stores with tens of millions of Euros of turnover per year.

Our platform’s architecture is modern and corresponds to the latest trends in the production of software for leading e-commerce solutions. Deployment and scaling of our system are comfortable thanks to containerization and orchestration concepts (Docker, Kubernetes). The platform is based on one of the best PHP frameworks on the market - Symfony.

Shopsys Platform Infrastructure

Shopsys Platform Infrastructure

Current State and Roadmap

Current State

Shopsys Platform is a fully functional e-commerce solution with all the basic functionality all e-commerce sites need:

  • Product catalog
  • Registered customers
  • Basic orders management
  • Back-end administration
  • Front-end full-text search and product filtering
  • 3-step ordering process
  • Basic CMS
  • Support for several currencies, languages, and domains
  • Full friendly URL for main entities and full control over SEO aspects of online presence
  • Performance optimization through Elasticsearch, Redis, PostgreSQL
  • Full core upgradability
  • GDPR compliance
  • Preparation for scalability
  • Manifest for orchestration via Kubernetes
  • Support to easier deployment to Google Cloud via Terraform
  • Basic GraphQL Front-end API for implementation of own front-end and PWA

Plans for next releases

An overview of our goals and priorities can be found in our Shopsys Platform Roadmap

How to Start a New Project

The shopsys/shopsys package is a monolithic repository, a single development environment, for the management of all parts of Shopsys Platform. See more information about the monorepo approach in the Monorepo article.

For the purposes of building a new project, use the shopsys/project-base, which is fully ready as the base for building your Shopsys Platform project.

For more detailed instructions, follow one of the installation guides:

Documentation

For documentation of Shopsys Platform itself, see Shopsys Platform Knowledge Base.

For the frequently asked questions, see FAQ and Common Issues.

Contributing

Let us know if you have some ideas or want to help improve Shopsys Platform! We are looking forward to your insights, feedback, and improvements. Thank you for helping us make Shopsys Platform better.

All the necessary information is in our Contribution Guide.

Support

What to do when you are in troubles or need some help? The best way is to join our Slack.

If you are experiencing problems during installation or running Shopsys Platform on Docker, please see our Docker troubleshooting.

Or ultimately, just report an issue.

License

We distribute the main parts of Shopsys Platform under two different licenses:

  • Community License in MIT style for growing small to mid-size e-commerce sites with total online sales less than 12.000.000 EUR / year (3.000.000 EUR / quarter)
  • Commercial License

Learn the principles on which we distribute our product on our website at Licenses and Pricing section.

Some of Shopsys Platform repositories including HTTP smoke testing and Monorepo Tools are distributed under standard MIT license so generally you can use it without any restriction. The information about the license is placed in the LICENSE file in the root of each repository.

Shopsys Platform also uses some third-party components and images which are licensed under their own respective licenses. The list of these licenses is summarized in Open Source License Acknowledgements and Third Party Copyrights.

shopsys's People

Contributors

boris-brtan avatar davidostrozlik avatar grossmannmartin avatar henzigo avatar krhovjak avatar lukasheinz avatar malymiso avatar mattczerner avatar miroslav-stopka avatar miroslav2stopka avatar msshopsys avatar paolo42 avatar pesektomas avatar petrheinz avatar pk16011990 avatar robindvorak avatar rostislavkreisinger avatar s3tezsky avatar sebaholesz avatar seedya avatar simara-svatopluk avatar srnka392 avatar sspooky13 avatar sustmi avatar tomasgottvald avatar tomasludvik avatar tomasvotruba avatar topolanekmartin avatar tvikito avatar vitek-rostislav avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shopsys's Issues

Hidden call of ObjectManager::flush() without parameter

What is happening

Throughout the system, there is a rule that flush should not be called without parameter specifying which entity (or array of entities) should be flushed. We are trying to avoid calling flush without parameter by cumulating entities in arrays, eg.:

. But sometimes the array can be empty and then calling ObjectManager::flush([]) is useless.

Expected result

ObjectManager::flush() is not called when not necessary

Improve UX work with URL in admin

It would be nice to add some explanation to set up the main URL in the administration (for the product, article, ...) - from the point of view of admin now I have some URLs, I can add more, there are some radiobuttons, but I do not even know what will actually happen when I choose the other radiobutton :) Another thing - would the add can be done in ajax style? "add URL" action button is a bit confusing - after adding a new URL, it makes me think that I'm going to save it. I feel we've probably solved it before, but I do not remember, how it actually happened, or I could not find any US.

Admin: reset.less: disable scrollbar normalization in order to fix problems with jQuery UI drag&drop

@marek.fiser reported an issue in Chrome that caused misaligned cursor and dragged item when using drag&drop on Articles overview in administration.

2017-12-13__1__li
(the red cross shows position of the cursor)

It is a well known issue of necolas/normalize.css fixed in this commit: necolas/normalize.css@6ef5b9e

I also reviewed our admin/core/reset.less which was hard to maintain because it was based on some old version of https://github.com/necolas/normalize.css and mixed with custom rules so I was not sure what code was from upstream and which were our customizations. So I divided it to reset.less which contains only upstream code from necolas/normalize.css and reset-custom.less that contains our custom rules.

I also checked the most of the pages in Administration side-by-side with the previous reset.less in Firefox 57 and it matches almost perfectly. The only difference is that previously pages that were shorter than the screen height (eg. administration login page) had a visible grayed out vertical scrollbar and now the scrollbar is not visible on such pages .

I recommend to check it in browsers other than Firefox before merging.

Merge request can be found here:
https://git.shopsys-framework.com/shopsys/shopsys-framework/merge_requests/21

Problem with multidomain LESS (weird import)

We need to understand how @include works in LESS. If I have:

B/main.less:
@import "../A/main.less"

A/main.less:
@import "./notFromB.less"

B/notFromB.less
.asdf {}

So even though I would expect that during the "B/main.less" processing it reports an error because "A/notFromB.less" doesn't exist it normally load "B/notFromB.less". What is also interesting is, that "notFromB.less" might be both in A or B it will work (it will load it). If it would be in both then i don't know what it takes. It looks like that this is some grunt-less speciality of how these imports are being solved.

Now, this behavior is quite unpredictable, and I do not know what this might be like when we do some customization of design on different domains. The second domain has its main.less, which includes main.less from the first domain. And I would expect that the main.less from the first domain does not include anything from the other (but that might actually happen).

Problem with demo images at the local

For some reason, I do not have pictures on the FE - slider on the homepage and the category of the Books category even after downloading the demo image, even though I see it in the admin

Import performance orders fall into memory (128MiB) for many products (~ 500K)

If we have many products (500k) and users (100k) then import performance orders fall to the memory limit (128MiB).

This is because the IDs of all products and users are loaded into memory and then selected for import. This could be solved by a limited number of random IDs that would be selected and changed during import (for example, for every 1000 orders we select random 100k products and 10k users, from which we will then select objects to import).

Console report:
php bin/console shopsys:performance-data
loading Shopsys\ShopBundle\DataFixtures\Performance\CategoryDataFixture
308/308 [=] 100%, 138.3 cat./s (0.007 s/cat.), Elapsed: 0h 00m 02s, Remaining: 0h 00m 00s, MEM: 34.0 MiB
loading Shopsys\ShopBundle\DataFixtures\Performance\ProductDataFixture
500000/500000 [=] 100%, 48.8 prod./s (0.021 s/prod.), Elapsed: 2h 57m 30s, Remaining: 0h 00m 00s, MEM: 82.0 MiB
loading Shopsys\ShopBundle\DataFixtures\Performance\UserDataFixture
100000/100000 [=] 100%, 4.5 users/s (0.224 s/user), Elapsed: 6h 15m 14s, Remaining: 0h 00m 00s, MEM: 78.0 MiB
loading Shopsys\ShopBundle\DataFixtures\Performance\OrderDataFixture
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/lib/jenkins/workspace/performance-lvl3/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php on line 122

[Symfony\Component\Debug\Exception\OutOfMemoryException]
Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate
20480 bytes)

Exception trace:
() at /var/lib/jenkins/workspace/performance-lvl3/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:122

shopsys:performance-data [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--]

Build step 'Execute shell' marked build as failure
Finished: FAILURE

CRON falls on memory (128MiB) at > 220k products

On the server demo CRON for sitemap generation falls when it runs on a project with performance data set as follows:

category.counts_by_level: [2, 4, 6]
product.total_count: 220000
user.count_per_domain: 20000
order.total_count: 200000
order.item_count_per_order: 6

Console report:
Workspace: performance-lvl2
Running CRON...
Buildfile: /var/lib/jenkins/workspace/performance-lvl2/build.xml
[property] Loading /var/lib/jenkins/workspace/performance-lvl2/build/build.local.properties
[property] Unable to find property file: /var/lib/jenkins/workspace/performance-lvl2/build/build.local.properties... skipped

ShopSys Framework > cron:

[2017-11-20 08:13:34] cron.INFO: ====== Start of cron ======
[2017-11-20 08:13:34] cron.INFO: Start of shopsys\shopbundle\model\pricing\vat\vatdeletioncronmodule
[2017-11-20 08:13:34] cron.DEBUG: All vats are replaced [2017-11-20 08:13:34] cron.INFO: Deleted 0 vats
[2017-11-20 08:13:34] cron.INFO: End of shopsys\shopbundle\model\pricing\vat\vatdeletioncronmodule
[2017-11-20 08:13:34] cron.INFO: Start of shopsys\shopbundle\model\product\pricing\productpricecronmodule
[2017-11-20 08:13:34] cron.DEBUG: All prices are recalculated.
[2017-11-20 08:13:34] cron.INFO: End of shopsys\shopbundle\model\product\pricing\productpricecronmodule
[2017-11-20 08:13:34] cron.INFO: Start of shopsys\shopbundle\model\product\productvisibilityimmediatecronmodule
[2017-11-20 08:13:34] cron.INFO: End of shopsys\shopbundle\model\product\productvisibilityimmediatecronmodule
[2017-11-20 08:13:34] cron.INFO: Start of shopsys\shopbundle\model\product\availability\productavailabilitycronmodule
[2017-11-20 08:13:34] cron.DEBUG: All availabilities are recalculated.
[2017-11-20 08:13:34] cron.INFO: End of shopsys\shopbundle\model\product\availability\productavailabilitycronmodule
[2017-11-20 08:13:34] cron.INFO: Start of shopsys\shopbundle\model\feed\deliveryfeedcronmodule
[2017-11-20 08:15:50] cron.INFO: End of shopsys\shopbundle\model\feed\deliveryfeedcronmodule
[2017-11-20 08:15:50] cron.INFO: Start of shopsys\shopbundle\component\sitemap\sitemapcronmodule
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/lib/jenkins/workspace/performance-lvl2/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php on line 122

[Symfony\Component\Debug\Exception\OutOfMemoryException]
Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate
20480 bytes)

Exception trace:
() at /var/lib/jenkins/workspace/performance-lvl2/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:122

shopsys:cron [--list] [--module [MODULE]] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--]

BUILD FAILED
/var/lib/jenkins/workspace/performance-lvl2/build.xml:130:46: Task exited with code 255

Total time: 2 minutes 17.19 seconds

Selectboxes are collapsing right after displaying (Mac OS, Firefox)

Current status:
When I choosing option in administration via selectbox (e.g. choosing articles in Admin > Settings > Legal conditions > Legal conditions). Sometimes (in 25% cases) when I click to open selectbox, the option appears and immediatly disapperas as if I choose option.

It happens only on FF, Chrome is OK. I wasn't able to create valid steps to reproduce.

Admin: Product detail: JS validation does not work for the newly added parameter

How to reproduce:

  1. Open the iPhone editing in administration
  2. Add a new parameter and leave the values ​​blank
  3. Get out of the box
  4. Submit a form

What will happen:

When you leave the box, nothing happens.
The form can be sent even though the parameter is not filled in.

What should happen:

When leaving the box, a validation message should pop up.
The form should not be sent.

Note:

Once the form has been submitted, JS validation for that parameter works.

DBAL cannot connect to PostgreSQL server

I'm on Windows 10 and installed the app using docker.
When running php phing db-create from the php-fpm container I get this error:

ERROR [app] Doctrine\DBAL\Exception\ConnectionException: An exception occurred in driver: SQLSTATE[08006] [7] could not connect to server: Connection refused
Is the server running on host "postgres" (127.0.0.1) and accepting
TCP/IP connections on port 5432?

Here are my dev params:

...
database_host: postgres
database_port: null
database_name: shopsys
database_user: root
database_password: root
database_server_version: 9.5
...

PS: I already updated my code to use the changes from commit 013978d

Converting to variants ends with an error of 500 if the main product is not available

When setting up a product, I do not have to choose availability if I use the "stock stock". This is a created product that has calculatedAvailability but not availibility.

When I want to create variants from this product, the system shouts to me that the product does not have the availability and the system drops into the database.

The option is the raw availability of the main product.

This is a business issue that will be followed by programming.

Analysis

  • We are considering removing SSFW variants
  • But how could it be solved:
    • The product in the administration should always include availability
      • Change forms, logic
      • It does not require any further interventions
    • The Product Designer should get the product into a consistent state
      • The Product Designer would also include default accessibility
      • The Factory on Products could cater for this dependence
      • Construction is swelling
      • This constructor parameter will almost never be used
    • The Product Factory will contain a creation logic
      • We will not dig into the Product constructor
      • The logic will have to be copied by the factory implementor in the project-base
        - We break forward compatibility

Closed Partial PR: #120

Coding standards - sniff for forgotten dumps

What is happening

Sometimes a programmer forgets a dump in the code, which can be accidentally displayed in production.

Expected result

There should be a sniff watching for forgotten dump calls (at least for PHP and Twig calls - d(), dump(), var_dump(), var_export(), maybe for JS conosle.log())

Grid does not support Drag&Drop with inline editation

What is happening

When Drag&Drop is allowed in Grid and GridInlineEdit is setted, creating of new row fails.

For example in Shopsys\ShopBundle\Model\Product\Flag\FlagGridFactory add $grid->enableDragAndDrop(Flag::class); and click to button [+ Create flag] causes:

Exception:
Type error: Argument 1 passed to Shopsys\ShopBundle\Component\Grid\Grid::getValueFromRowBySourceColumnName() must be of the type array, null given, called in C:\html\example.com\src\Shopsys\ShopBundle\Component\Grid\Grid.php on line 300

Expected result

  • new row in grid table (do not forget save in right order )
  • or documented unsupported behaviour and throw understable exception immediately on set GridInlineEdit and set Drag&Drop concurrently

Design: the size of the headings does not match the normal text

Headlines H5 or H6 have a smaller font size than the normal text in < p >
image

H4 is +/- the same size as normal text, but when it reduces the size of the screen (responsive), at a width of about 400px, H4 is less than normal text and even smaller than H6.
image

I'm not a typographer, but it seems to me that the title should not be smaller than the paragraph.
And the fact that the mobile is H4 smaller than H6 is definitely wrong.

Upgrade coding standards in http-smoke-testing package

Coding standards in http-smoke-testing are not up to date because there is need to have this package compatible with PHP-5.6 and PHP-7.0 and new coding standards are compatible with PHP-7.1 and up.

What is happening

travises jobs call old coding standards because the support for older PHP versions.

Expected result

to have it solved somehow

Prepared blocks

What is happening

During implementation we usually need to add blocks like (before_content, after_content, order header, order footer etc.).
Try thing about having these blocks prepared and empty. It will be less comunication with programmer.

Expected result

Comunication with frontend developers to set right prepared empty blocks

Multi dimensional picture element

What is happening

We have usually request to have more than one dimension of image. Now we are using only one e.g. in product detail, which is set to maximum size of parent element and centered.

But now we have new possibility: use picture element

<picture>
  <source media="(min-width: 650px)" srcset="img_pink_flowers.jpg">
  <source media="(min-width: 465px)" srcset="img_white_flower.jpg">
  <img src="img_orange_flowers.jpg" alt="Flowers" style="width:auto;">
</picture>

Source with description:
https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_picture

We have to just think about picture dimensions for desktop, tablet, mobile, retina etc.

Expected result

For frontend developers there will be no change - bcs this element can be generated by twig function image

Installation failed - Docker, Linux

With these instructions:
https://github.com/shopsys/shopsys/blob/master/docs/installation/installation-using-docker-linux.md

I have following errors:

E: Unable to locate package postgresql-client-9.5
E: Couldn't find any package by glob 'postgresql-client-9.5'
E: Couldn't find any package by regex 'postgresql-client-9.5'
ERROR: Service 'php-fpm' failed to build: The command '/bin/sh -c apt-get update && apt-get -y install postgresql-client-9.5' returned a non-zero code: 100

Full-stack informations with command docker-compose up -d:

docker-compose up -d
Building php-fpm
Step 1/13 : FROM phpdockerio/php72-fpm:latest
 ---> a6e4cd6c5ef5
Step 2/13 : ARG DEBIAN_FRONTEND=noninteractive
 ---> Using cache
 ---> 02b7da0918d3
Step 3/13 : RUN apt-get update && apt-get -y install apt-utils dialog
 ---> Using cache
 ---> 03b67d2d4ff2
Step 4/13 : RUN apt-get update && apt-get -y install acl
 ---> Using cache
 ---> 4ac99cf5c17d
Step 5/13 : RUN apt-get update && apt-get -y install git
 ---> Using cache
 ---> d0f2b05ebcc7
Step 6/13 : RUN apt-get update && apt-get -y install postgresql-client-9.5
 ---> Running in 0b5d1daa2e14
Hit:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [69.9 kB]
Hit:3 http://ppa.launchpad.net/ondrej/php/ubuntu bionic InRelease
Get:4 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [65.4 kB]
Hit:5 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
Fetched 135 kB in 1s (209 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package postgresql-client-9.5
E: Couldn't find any package by glob 'postgresql-client-9.5'
E: Couldn't find any package by regex 'postgresql-client-9.5'
ERROR: Service 'php-fpm' failed to build: The command '/bin/sh -c apt-get update && apt-get -y install postgresql-client-9.5' returned a non-zero code: 100

add listable property to Product

Product properties calculatedSellingDenied, calculatedHidden, calculatedVisibility (and theirs original values: sellingDenied, hidden) and behavior dependent on these properties should be extended with properties: "listable" and "calculatedListable"

What is happening

sellingDenied automatically prevents Product to be listed in Search results, Category list , Feeds and more

this is unexpected behavior I think and not very obvious

also absence of "listable" can complicate development in some use-cases

Expected result

there should be "listable" and "calculatedListable" properties in Product entity, these properties will be used to calculate if Product should or should not be in product list, search results etc.

[cs] remove docs that are already typehinted, pre-PHP7 prepare

I'm upgrading packages on Github to PHP 7/PHP7.1 with automated tools:

It's very fast upgrade that does 80 % work for you.

I'd like to try it here when decide to do so, starting with this dummy PR.

Let me know what you think :)

(I didn't run tests yet. I'd do it so and fix false positives after/if this gets a go).

Merge request available here:
https://git.shopsys-framework.com/shopsys/shopsys-framework/merge_requests/17

Are ProductEditFormTypes still relevant

What is happening

After removal of *EditData it seems like *EditFormTypes are not needed, we should stick with only entity FormTypes to make form types easier to use and to not confuse devs with many undocumented types of FormTypes

Problem

There is already many of buildForm() methods that needs to have @ExcessiveLengthMethod annotation because of length of method.

Possible solution

We should make FormTypes more modular, for example, ProductFormType has many of sections like 'Basic Information' or 'Display and availability', we could make FormType for each of them so methods arent so long as now.

Custom js validation (UniqueEmail) does not start, and when it starts, the error does not prevent the form from being sent

We have our own constraint on editing / creating a customer that validates the uniqueness of the email - this should work in javascript but it does not work.

In addition, Rosťa did something similar on the model - custom constraint UniqueCatnum for the product (commit here http://gitlab/ss6-projects/htmodel.sk/commit/e86dd9c7a1dc6ea1ffb9ad29f3ce909efa0dcc7b) - the commit starts up in javascript correctly, but this validation error does not prevent the form from being sent.

Current behavior:

  • I'll go to the customer's editing, change the email to an existing one
  • I will save the form and (server) validation message will pop up that the email already exists

Required behavior:

  • I'll go to the customer's editing, change the email to an existing one
  • I'll get the JS message that the email already exists
  • I can not send a form (it will not allow me) until I enter a unique email

Validation error alert in forms is misplaced in case of checkbox element

On front-end form when there is checkbox option that user have to check there is problem with displaying validation error alert. See examples below:
snimek obrazovky 2018-05-25 v 12 07 16
snimek obrazovky 2018-05-25 v 11 35 05

It should be fixed on all forms. There is list:

  • 3rd step of order
  • contact form on title page on left column
  • newsletter subscription above footer
  • registration form

[shopsys/migrations] Mysql/Maria DB does not support migration DDL in transaction

Transfered from migrations

@pk16011990
Hello,

running migrations in transaction - It sounds as very good improvement instead of basic Doctrine migrations, but ... In Mysql DDL (create, alter, drop) commands are out of transaction and on rollback these changes are persist, but migraton looks like rollbacked.

In my opinion it does not have a solution, It is a feature that should be documented or It shoud be allowed on this engines.

Product Search does not work with characters like slash and others

As mentioned in !24

  • if product name (or other ts_vector searched text) contain slash, product is not possible to find by exactly same text
  • there are other characters which should be considered as part of searched token/word for TSQUERY

creating tokens should be done via Postgres to get 100% functioning results.

For example TsQueryFactory::getTsqueryWithOrConditions() could do something like this: SELECT to_tsquery(regexp_replace(plainto_tsquery('english', 'The Fat Rats&cats the|wonderful / beasts ABC/123 XX-11 YY - 22')::text, E'&', '|', 'g'));

Merge request can be found here:
https://git.shopsys-framework.com/shopsys/shopsys-framework/issues/42

Explanation --stability = alpha in installation guides

In the installation manuals, we explain what the --no-install and --keep-vcs switches mean, it would also describe --stability = alpha, which ensures that the project-base is installed from the last tag, not the master. If someone wants the current master, they must use --stability = dev

Admin: Products: Behavior of sort by name is platform specific

When I view the / admin / product / list / page on my computer (Czech 64bit Linux) or on CI, the first products in the series starting with A (Apple iPhone 5S 64GB, gold).

When I do the same with Peter Heinz on his laptop (Windows, maybe 32 bit), the first products in the series starting with alphabet (something like "100 Czech crowns ticket").

We have confirmed that sorting is different on different platforms. This is a known PostgreSQL issue because sorting currently depends on the implementation of collations in the OS.

This should be solved in PostgreSQL v10, when the sorting will be solved by the independent ICU library platform https://blog.2ndquadrant.com/icu-support-postgresql-10/ 

Another problem is that the grid does not even call ORDER BY xxx COLLATE. This will then have to be added to sort the language in which the names appear.

Javascripts in one file and minify content

Our customers have request on minify of javascript code. I implemented this request on one project and i would like it to share. Code watch, whether enviroment is not development, then minify code and create javascript version file to cache folder. If javascript version file in cache folder exists, load a javascript by version. History is not good. If you know how it to rewrite better, i will a glad.

Thank you for approve this.

Merge request can be faound on:
https://git.shopsys-framework.com/shopsys/shopsys-framework/merge_requests/10

Simplification of .form-group separation

When using multiple .form-group elements we always had to add separators manually via .wrap-border
This is tiresome, error-prone and leads to complicated ifs when .form-groups are added dynamically (see plugins on product detail)
Some pages even had extra divs with .wrap-border (see order detail)

I have tried to simplify it using CSS adjacent sibling combinator in ph-form-group-separation, please check it out and:

  • validate that changes to group.less make sense
  • update CHANGELOG.md, UPGRADE.md and CSS documentation
  • fix excessive gap after Images section on product detail (issue is also in master, separate commit)
  • manually check as much pages in admin to see that forms are OK (especially if they contain mix of .form-groups and other elements)
  • break changes Order/edit.html.twig into separate commits to make the changes clear
  • check that .wrap-border makes sense as it creates the separation AFTER the element, not BEFORE it - is that best practice?

Broken styling of the maintenance page

The maintenance page has been broken since the execution of some redesigned graphics (there is an immense 6000x4000px image).

Note: on / off maintenance - phin maintenance-on and phing maintenance-off

Upgrade of commerceguys/intl

What is happening

We are not using the latest version (ie. v0.7.5) of commerceguys/intl library but we should. The new version drops the support for BYR currency so our unit test IntlCurrencyRepositoryTest must be modified accordingly.

In the past, we already upgraded the library to the new version but as we were not sure which other changes were made in the new version (there is no changelog), we reverted that upgrade in 5cb2404.

Expected result

The changes since v0.7.4 of commerceguys/intl are reviewed and the library is required in the latest version.

Difficult to add icon into submit button

What is happening

When a coder wants to add icon into particular submit (eg. ▶️ for "Proceed in order" button), there is no easy way to do so because the submit is rendered via form_widget(form.save) function. The coder is often forced to generate the HTML and then copy and modify the final HTML structure.

Coders use icons via <i> tag and particular css classes.

Expected result

There should be an option that enables adding icon into submit buttons, coders would like to specify somehow whether the button should have icon and also specify the css class for the icon.

Also, there should be demonstrative extension of a HTML button in project-base or in documentation so the coders can see the rel usage.

Duplicate information in several installation guides

What is happening

In installation guides, the first step (composer create-project) is the same for almost all platforms, ie. the same changes need to be done in multiple files from time to time (see eg. #162) and that can cause problems when some of the files is accidentally omitted. Also, modifying multiple files with the same change is quite annoying 🙂

Expected result

It would be nice if the same information could be written only once in one file and that could be included to or linked from all the places.

Notes:

  • It seems there is no natural way of inculding md in each other (https://stackoverflow.com/questions/4779582/markdown-and-including-multiple-files)
  • I do not like linking the first step to another file because going through installation guide would mean too many clicking back and forth. 🙁
  • I am little bit worried about SEO in the current state, because in fact, the first step is duplicit content and including the information from one file would not solve this issue. 🤔

Standard for yaml files are alphabetically sorted

Hello, i create library for check yaml files are alphabetically sorted. U can add directory and all file by finded recursive or u can add path to file for check. U can add too path to file, which will be exclude for check. I sort only all service files and path file in project because i dont know what u want check. That library is located in https://github.com/sspooky13/yaml-alphabetical-checker. If you want more information, you know where to find me :)

I will glad every feedback. Thank you for approve this.

Also mentioned in:
https://git.shopsys-framework.com/shopsys/shopsys-framework/merge_requests/19

Dates on the frontend are not localized

Problem is in DatePickerType, which uses a constant format (Czech localization: dd.MM.yyyy), both in admin and front-end:

image

A localized date format should be used.

Recalculation of prices might not be executed

When editing product, it is flagged for price recalculation and depends on service ProductPriceRecalculationScheluderer that in the end of request runs the recalculation. If however is product edited in CLI (like transfers) recalculation does not run and the product has wrong prices set. 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.