GithubHelp home page GithubHelp logo

ec-cube / ec-cube2 Goto Github PK

View Code? Open in Web Editor NEW
86.0 86.0 96.0 68.5 MB

EC-CUBE official repository version 2

Home Page: https://www.ec-cube.net

License: Other

JavaScript 7.28% PHP 64.70% HTML 0.13% CSS 2.50% Shell 0.20% Smarty 23.51% Dockerfile 0.05% TypeScript 1.63%

ec-cube2's Introduction

EC-CUBE 4.2

Unit test for EC-CUBE E2E test for EC-CUBE Plugin test for EC-CUBE PHPStan codecov

Slack

4.1からの更新内容はリリースノートをご確認ください。

  • 本ドキュメントはEC-CUBEの開発者を主要な対象者としております。
  • パッケージ版はEC-CUBEオフィシャルサイトで配布しています。
  • カスタマイズやEC-CUBEの利用、仕様に関しては開発コミュニティをご利用ください。
  • 本体開発にあたって不明点などあればIssueをご利用下さい。
  • EC-CUBE 3系の保守については、 EC-CUBE/ec-cube3にて開発を行っております。
  • EC-CUBE 2系の保守については、 EC-CUBE/ec-cube2にて開発を行っております。

インストール

EC-CUBE 4.2のインストール方法

開発ドキュメントの インストール方法 の手順に従ってインストールしてください。

CSS の編集・ビルド方法

Sass を使用して記述されています。 Sass のソースコードは html/template/{admin,default}/assets/scss にあります。 前提として [https://nodejs.org/ja/] より、 Node.js をインストールしておいてください。

以下のコマンドでビルドすることで、 html/template/**/assets/css に CSS ファイルが出力されます。

npm ci # 初回およびpackage-lock.jsonに変更があったとき
npm run build # Sass のビルド

docker compose を使用している場合は以下のコマンドを実行してください

# 初回およびpackage-lock.jsonに変更があったとき
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npm ci
# Sass のビルド
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npm run build

JavaScript のビルド方法

フロントエンドで使用する JavaScript のライブラリは npm で管理されています。 JavaScript のライブラリは webpack でバンドル/minifyされます。 バンドルするライブラリを変更する場合は、テンプレートごとに以下の bundle.js を修正し、リビルドしてください。

npm ci # 初回およびpackage-lock.jsonに変更があったとき
npm run build # Sass 及び JavaScript のビルド

JavaScript ライブラリのみをビルドしたい場合は以下でも可能です。

npx webpack

docker compose を使用している場合は以下のコマンドを実行してください

# 初回およびpackage-lock.jsonに変更があったとき
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npm ci
# Sass のビルド
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npm run build
# JavaScript ライブラリのみのビルド
docker compose -f docker-compose.yml -f docker-compose.dev.yml -f docker-compose.nodejs.yml run --rm -T nodejs npx webpack

動作確認環境

  • Apache 2.4.x (mod_rewrite / mod_ssl 必須)
  • PHP 7.4.x / 8.0.x / 8.1.x
  • PostgreSQL 10.x or higher / MySQL 5.7.x or 8.0.x
  • ブラウザー:Google Chrome

詳しくは開発ドキュメントの システム要件 をご確認ください。

ドキュメント

EC-CUBE 4.x 系の仕様や手順、開発Tipsに関するドキュメントを掲載しています。 修正や追記、新規ドキュメントの作成をいただく場合、以下のレポジトリからPullRequestをお送りください。 https://github.com/EC-CUBE/doc4.ec-cube.net

開発への参加

EC-CUBE 4.2の不具合の修正、機能のブラッシュアップを目的として、継続的に開発を行っております。
コードのリファクタリング、不具合修正以外のPullRequestを送る際は、Pull Requestのコメントなどに意図を明確に記載してください。

Pull Requestの送信前に、Issueにて提議いただく事も可能です。 Issuesの利用方法については、こちらをご確認ください。

Slackでも本体の開発に関する意見交換などを行っております。

コピーライトポリシーへの同意

コードの提供・追加、修正・変更その他「EC-CUBE」への開発の御協力(Issue投稿、Pull Request投稿など、GitHub上での活動)を行っていただく場合には、 EC-CUBEのコピーライトポリシーをご理解いただき、ご了承いただく必要がございます。 Issueの投稿やPull Requestを送信する際は、EC-CUBEのコピーライトポリシーに同意したものとみなします。

ec-cube2's People

Contributors

3tiles avatar bauzer avatar chihiro-adachi avatar cohki avatar dependabot[bot] avatar dogggggo avatar dotani1111 avatar izayoi256 avatar ji-eunsoo avatar kaorukobo avatar kazumiiiiiiiiiii avatar kiy0taka avatar kurozumi avatar matsuoshi avatar mattintosh4 avatar nanasess avatar nobuhiko avatar nskun avatar okazy avatar pineray avatar ryo-endo avatar scubism-tech-share avatar seasoftjapan avatar shinya avatar shoji-k avatar snyk-bot avatar t-nagahashi avatar tao-s avatar ytetsuro avatar yuh4 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

Watchers

 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

ec-cube2's Issues

商品登録時に先頭が0の数字がそのまま表示されてしまう

概要

商品登録ページにて、販売価格等の半角数字を入力する項目で0が先頭の値("0100"など)を入力すると確認ページでそのままの値で表示されてしまう。

発生箇所

商品管理>商品登録
商品管理>商品登録>確認ページ

発生頻度

毎回

再現手順

商品管理>商品登録のページにて、

  • 通常価格
  • 販売価格
  • 在庫数
  • 商品送料(有効にしていれば)
  • ポイント付与率
  • 販売制限数

の項目に0で始まる値を半角数字で入力して
"確認ページへ"ボタンを押す。
確認ページで0で始まる値がそのまま表示されてしまう

ただし、この手順で入力された値は登録後に商品マスタで確認すると先頭の0を除いた値となっている。

-

確かに例外ではあるが、CSV の取得機能を実装してあるのだから、自然復帰を期待できる。

管理機能>商品選択ポップアップ画面で規格2のonchangeに存在しないfnCheckStock()が使われている

http://svn.ec-cube.net/open_trac/changeset/23448 で削除されていると思われるfnCheckStock()が templates/admin/order/product_select.tpl で呼び出されている。

<dd>
    <select name="classcategory_id2" id="<!--{$class2}-->" style="<!--{$arrErr[$class2]|sfGetErrorColor}-->" onchange="fnCheckStock(this.form);"></select>
    <!--{if $arrErr[$class2] != ""}-->
    <br /><span class="attention">※ <!--{$tpl_class_name2[$id]}-->を入力して下さい。</span>
    <!--{/if}-->
</dd>

帳票の発行日の文言が統一されていない

概要

帳票の作成ウインドウには"発行日"と表記されているが
出力される帳票には"作成日"と表記されているので文言が統一されていない

発生箇所

受注管理>個別出力
受注管理>編集>帳票出力

発生頻度

毎回

送料を0にできる不具合

やり方
送付先の都道府県を設定するときにページのソースをいじり,
北海道=1, 青森=2,...と割り当ててある都道府県のIDを0に設定し送信する.

こうすることで処理が適切に行われず送料が0円に設定されるようです.

商品一覧の価格順並び替えが登録されていない商品規格に影響される

商品一覧で価格順に表示した際に、登録していない規格の価格を含めた状態で並び替えられます。
再現手順は以下の通りです。

  1. 2.13.5 をインストール。
  2. 商品ID:1 アイスクリームの商品管理>商品登録(商品規格)を開く。
  3. いずれかの規格の販売価格を 1 に変更、登録のチェックボックスを外し、登録。
  4. 商品一覧を開き、価格順 で並び替える。

SC_Product::findProductIdsOrder() が、dtb_products_class.del_flg を考慮していないための現象と思われます。

EC-CUBE 2.13.4, 2.13.5 で確認。

会員登録時の確認用Eメールアドレス入力がコピペ許可になっているため、効果がない。

概要

 会員登録時の確認用Eメールアドレス入力がコピペ許可になっているため、確認用途で設置するには効果が薄い。
 結果的に、Eメールアドレスの誤入力を誘発する可能性が上がる。

対応

 スマホ、PCの会員登録入力フォームにおいて、該当カラムのコピペ入力を付加とする。

Warning が発生すると、セッションが切れてしまう場合がある

Warning が発生した際に「不正なページ移動です」エラー画面になってしまう場合がある模様。
通常、「不正なページ移動です」エラー画面になった場合は、 data/logs/error.log が出力されるが、このケースは出力されないため、原因の特定が困難である。
#69 によるデグレード。

csv出力設定完了時に表示崩れ

概要

画面:管理画面>コンテンツ管理>csv出力設定画面
現象:csv出力設定完了時に表示崩れが起きる。(alertウィンドを消すまで)
検証環境:IE 11, Firefox 36, Chrome 41

対応

 alertウィンドを表示するタイミングを変更する。

プラグイン管理で、「アップロード」と「インストール」を分離。

フォーラムで提案され、コードまで書いてありました。 他のCMSを見ても必須の機能だと思います。

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=12779&post_id=58850&order=0&viewmode=flat&pid=58845&forum=7#forumpost58850

現状、プラグイン管理では、「インストール」の指示で、・圧縮ファイルをアップロード・圧縮ファイルの解凍・dtb_pluginへの登録・プラグインのインストールになるかと思います。当方で借りているサーバーは、かつて:SSHが利用できた。いま:SSHが許可されない。また、PHPによる圧縮ファイルの解凍ができない。つまり、プラグイン管理機能でのインストールができないのです。そのため、解凍したプラグインをアップロードし、ファイルに記述されているインストール内容を手作業で実施しています。そこで、WordPressのようにアップロードとインストールを分離できれば、手作業による誤りもなくなりありがたいのです。

Tracからの転記

Tracでのコメント

  • Author: Kim

プラグインの開発仕様に関わるため、ひとまずバックログへと移動します。

新着情報管理 順番の変更が出来ない

概要

「□番目に移動」の□内に全角数字を入力すると移動が出来ない。エラー文も表示されない。「商品の並び替え」は全角数字でも移動する。

発生個所

管理画面>コンテンツ管理>新着情報管理

頻度

常に起こっていると思われる。

Masterをチェックアウトして確認しています。

決済処理中ロールバックによって会員ログイン中の画面でエラーが出る不具合

SC_Helper_Purchase::rollbackOrder($order_id, $orderStatus = ORDER_CANCEL, $is_delete = false)で決済処理中の受注をロールバックする場合、

  1. 決済処理中の受注を取得し、その受注IDでステータスをキャンセルに変更する。
  2. その受注IDに紐づく一時受注を取得する。
  3. 一時受注の削除フラグを0にして保存する。
    という手順を踏みます。
    しかし、受注ステータスが決済処理中で、かつ一時受注が存在しない受注が存在する場合、
    2で一時受注が取得できず、そのまま3で保存しようとするためDBエラーが発生します。
    このロールバック処理はPENDING_ORDER_CANCEL_FLAGがtrueで会員ログイン時はページ読み込み毎に呼び出されるため、上記の条件に合致する受注を持つ会員は毎回エラーページが表示されます。
    そのため3の手順を
  4. 「一時受注が存在する場合、」一時受注の削除フラグを0にして保存する。
    に変更する必要があります。

再現方法:
PENDING_ORDER_CANCEL_FLAGをtrueに変更する。
受注登録画面で任意の会員+決済処理中のステータスで受注を登録する。
受注登録した会員でログインする。

SC_CartSession 内の配列要素の扱いが怪しい

[0]としている箇所が疑わしい。

うち1箇所は #85 で削除済み。

未検証だが、常に NULL が渡ったりしていないだろうか。その場合、商品規格を使った、商品毎の税率設定に不備を生じる懸念を感じる。

商品管理 商品の並び替えが出来ない

概要

一番上の商品に対する「□番目へ移動」の指示が正常に反映されない。
しばらく動かしていると、正常に作動するようになる。
また、商品の上下の移動は最初から可能。

発生個所

管理画面>商品管理>商品並び替え

頻度

初回のみと思われる

Masterをチェックアウトして確認しています。

帳票発行時に不要なバリデートが行われている

概要

帳票発行時に発行日の"年"、"月"、"日"の以下のバリデートはCHECK_DATEでチェックできているため、不必要であるにもかかわらず行われている。

  • "年"が数値であるか
  • "月"が数値であるか
  • "日"が数値であるか
  • "月"が1以上12以下であるか
  • "日"が1以上31以下であるか

発生箇所

受注管理>個別出力
受注管理>編集>帳票出力

定休日管理のタイトルの字数制限が表記と異なる

概要

定休日管理登録用フォームのタイトルの項目に"(上限100文字)"と表記しているが、51文字以上の文字列を入力すると"※ タイトルは50字以下で入力してください。"と表示されて弾かれてしまう。

発生箇所

基本情報管理>定休日管理

発生頻度

毎回

再現手順

  1. 基本情報管理>定休日管理にてタイトルの項目に51文字以上の文字列を入力する
  2. 妥当な日付を入力する
  3. "この内容で登録する"ボタンを押す
  4. エラーメッセージが表示されて入力が弾かれる

"お届け先を指定"チェックボックスにチェックがないと"お届け先を複数指定する"ボタンが表示されない(SP)

概要

画面:スマートフォン,"会員登録をせずに購入"時のお客様情報入力画面
現象:"お届け先を指定"チェックボックスにチェックがないと"お届け先を複数指定する"ボタンが表示されない。

配送先を複数指定する際に"お届け先を指定"チェックボックスをチェックする必要がある。
結果、お客様情報入力画面にて別の配送先情報を入力しなければ次の画面に進むことができない。

対応

 ボタンの表示位置を変更、PC同様にお届け先の複数指定ができるよう修正。

プラグイン機能 テンプレートに対するトランスフォームが環境によって正常に動作しない

PHPがリンクしているlibxmlのバージョンが2.7未満の場合に生じる問題

具体的な不具合
・テキストのみのテンプレート(主にメールテンプレート)の場合に、libxmlのバージョンが古いと記号類が数値参照形式になってしまう。
・長大なHTMLの場合、正常にパースできない

パース自体が失敗している場合に処理を迂回するような改修の必要性がありそうです。

詳細は下記コミュニティ内にて http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=12017&forum=10&post_id=55450#forumpost55450

※主にhetemlサーバーで生じる模様

Tracからの転記

プラグインでZIP形式のサポート

プラグインや, デザインテンプレートのアーカイブ形式を ZIP もサポートさせる.

ZIP 形式は PHP のデフォルトエクステンションに含まれていないが, 既に多くのレンタルサーバーがサポートしていると思われる

Trac からの転記

Tracでのコメント

  • Author: poego

PHP5.1系のサポートを切ってPHP5.2以上にできるなら、ZipArchive? クラスが使えるので良いかと。
http://jp1.php.net/manual/ja/class.ziparchive.php
郵便番号ZIPの解凍のようにZip関数でやろうとすると、郵便番号とちがって、Zip内サブディレクトリを考慮しないといけないのでごちゃごちゃ独自実装する事になり不安がのこりそうです。

  • Author: nanasess

    JSON と同様に 5.1 系の場合は PECL でインストールしてもらえれば良いのではないでしょうか??

  • Author: Kim

    2.13系からは、PHP5.2以上となっているため小規模回収として取り扱い可能とし、次期バージョンでの実装を検討

SC_Helper_TaxRule の処理で国別、県別税率の処理の不整合

キャッシュの確認の後にログインしているかどうかを判定しているため、TaxRuleの取得が一部不足している。

    public static function getTaxRule($product_id = 0, $product_class_id = 0, $pref_id = 0, $country_id = 0)
    {
        // 複数回呼出があるのでキャッシュ化
        static $data_c = array();

        // 初期化
        $product_id = $product_id > 0 ? $product_id : 0;
        $product_class_id = $product_class_id > 0 ? $product_class_id : 0;
        $pref_id = $pref_id > 0 ? $pref_id : 0;
        $country_id = $country_id > 0 ? $country_id : 0;

        // 一覧画面の速度向上のため商品単位税率設定がOFFの時はキャッシュキーを丸めてしまう
        if (OPTION_PRODUCT_TAX_RULE == 1) {
            $cache_key = "$product_id,$product_class_id,$pref_id,$country_id";
        } else {
            $cache_key = "$pref_id,$country_id";
        }

        if (empty($data_c[$cache_key])) {
            // ログイン済み会員で国と地域指定が無い場合は、会員情報をデフォルトで利用。管理画面では利用しない
            if (!(defined('ADMIN_FUNCTION') && ADMIN_FUNCTION == true)) {
                $objCustomer = new SC_Customer_Ex();
                if ($objCustomer->isLoginSuccess(true)) {
                    if ($country_id == 0) {
                        $country_id = $objCustomer->getValue('country_id');
                    }
                    if ($pref_id == 0) {
                        $pref_id = $objCustomer->getValue('pref');
                    }
                }
            }

-

実質的な動作が変わらないものを扱う。

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.