midas.dll 4daeb069 @Delphi

Delphi7 > 2010の以降作業中。

滅多にお目にかかることはなかろう、エラーです。

midas.dll

ClientDataSetを使うときに、必要なミドルウェアのエラーですが、
原因がわからず、困っていました。

こんな場合のセオリーは、
今も昔も、

怪しい箇所を、1から、作り直す・・・

  1. 新規に、ClientDataSetを貼り付け、
    DataProviderを経由して、TTableに接続すると、エラーはなし。
  2. 既存のClientDataSetから、項目を切り取り、貼り付け。
    まず、既存のClientDataSetで、項目を消したにも関わらず、エラー。

原因は、AgregateFieldのフィールド・・・

件数を調べるために、Count(*)としたところ、

これが、エラーの元凶。

* ではなく、キーフィールドを指定してやると、解決しました。

midasが古いのかな?、
わからんけど、とりま、動いた。

-

個人情報の取り扱いの同意 @WP

プライバシーマークを取っていると、
この先、個人情報取り扱いに、同意を求める必要があるらしく、

  • 新規入会ページに挿入する説明書き
  • カートページに挿入する説明書き

に、追記したが、これだけでは、不十分。

これらに、inputタグで、同意のチェックボックスを置いて、
Javascriptで、同意にチェックが付いたとき、
「次」または、「送信」を押せるようにしようとしたが、
まず、
inputタグが、書き込めない。(消される)

あまり、大きな手を加えないのが、大原則なので、

themes / welcart_default / wc_templates / member /
wc_new_member_page.php

の、25~30行目あたりを、コメントアウト(<ul>~</ul>)
※ここにも、個人情報の記載があり、2重になるので。

[php]
<!–ul>
<li>< ?php _e(‘All your personal information will be protected and handled with carefull attention.’, ‘usces’); ?></li>
<li>< ?php _e(‘Your information is entrusted to us for the purpose of providing information and respond to your requests, but to be used for any other purpose. More information, please visit our Privacy Notice.’, ‘usces’); ?></li>
<li>< ?php _e(‘The items marked with *, are mandatory. Please complete.’, ‘usces’); ?></li>
<li>< ?php _e(‘Please use Alphanumeric characters for numbers.’, ‘usces’); ?></li>
[/php]

55~59行目あたり
footer_explanationを、usces_newmember_buttonの、前に持ってくる。

[php]
<div class="footer_explanation">
< ?php do_action(‘usces_action_newmember_page_footer’); ?></div>
<!– end of footer_explanation –></pre>
<div class="send">< ?php usces_newmember_button($member_regmode); ?></div>
[/php]

続いて、
themes / welcart_default /??wc_templates / cart /
wc_cart_page.php
も、
footer_explanationを、usces_newmember_buttonの、前に持ってくる。
(77~80行目あたり)

[php]</pre>
<div class="footer_explanation">< ?php do_action(‘usces_action_cart_page_footer’); ?></div>
<div class="send">< ?php usces_get_cart_button(); ?></div>
<pre>[/php]

とりあえず、
これで、同意文章を追加することは出来たが、「同意する」などのアクションが必要であるが、
上記の通り、これらのページに、直接記載しても良いのだが、
javascriptを、書くのが、面倒だったので、
「送信」「次へ」のボタンを、
「同意して、登録」「同意して、次へ」
に、書き換える。

ただし、他のページでも、「送信」「次へ」を使っているので、
ここで使用されるボタン名を変える必要がある。

  • usces_newmember_button
  • usces_get_cart_button

が、該当するボタンを表示する関数で、
に、書かれている

usc-e-shop / functions / template_func.php
2436行目?>?usces_newmember_button

[php]
function usces_newmember_button($member_regmode){
$html = ‘<input type="hidden" name="member_regmode" value="’ . $member_regmode . ‘" />’;
$newmemberbutton = ‘<input type="submit" name="regmember" value="’ . __(‘AgreeAndRegist’, ‘usces’) . ‘" />’;
$html .= apply_filters(‘usces_filter_newmember_button’, $newmemberbutton);
echo $html;
}
[/php]

変更点
__(‘transmit a message’, ‘usces’) > __(‘AgreeAndRegist’, ‘usces’)

usc-e-shop / functions / function.php
3015行目 > usces_get_cart_button

[php]
function usces_get_cart_button( $out = ” ) {
global $usces;
$res = ”;

if($usces->use_js){
$res .= ‘<input class="continue_shopping_button" id="previouscart" onclick="uscesCart.previousCart();" type="button" name="previous" value="’ . __(‘continue shopping’,’usces’) . ‘" />??’;
if( usces_is_cart() ) {
$res .= ‘<input class="to_customerinfo_button" onclick="return uscesCart.cartNext();" type="submit" name="customerinfo" value="’ . __(‘AgreeAndNext’,’usces’) . ‘" />’;
}
}else{
$res .= ‘<a class="continue_shopping_button" href="’ . get_home_url() . ‘">’ . __(‘continue shopping’,’usces’) . ‘</a>??’;
if( usces_is_cart() ) {
$res .= ‘<input class="to_customerinfo_button" type="submit" name="customerinfo" value="’ . __(‘AgreeAndNext’,’usces’) . ‘" />’;
}
}
$res = apply_filters(‘usces_filter_get_cart_button’, $res);

if($out == ‘return’){
return $res;
}else{
echo $res;
}
}
[/php]

変更点
__(‘ Next ‘,’usces’) > __(‘AgreeAndNext’,’usces’)
※2カ所あります

最後に、
usc-e-shop / languages / usces-ja.po
を、Poedit にて、書き換え >?

(これは、英語を日本語に表示するためのもの)
使い方は、自分で調べてもらうとして、

  • AgreeAndRegist > 同意して、登録
  • AgreeAndNext ?> 同意して、次へ

私は、エディターで追加してから、Poeditorで、開いて保存したら、
書き直されたusces-ja.moが生成された。

なお、バージョンアップの都度、修正しなければ成りません。
本来であれば、フックで対応するのが筋ですが、
フックが用意されていないことが多いですし、
オブジェクト指向で、書けるのって?
ソースですから、

その辺は、あしからず。

-