Firefox5.0 でタブを待機させる(Firefox5非対応アドオンのBarTabを使えるようにする)

前回、Firefox4.0.1で「対応してないじゃん><」
と思って急遽やった方法を、今回もやりましたw


・開発版のバージョンで凌ぐ
https://addons.mozilla.org/ja/firefox/addon/bartab/versions/

「バージョン 2.1b2」が、現在
対応バージョン:Firefox 3.5 - 6.*

となっているので、一応、6.*まで?は、がんばれるかな・・・?w


他にも、xpi自体のバージョン制限を書き換えて、誤魔化したり、
そもそもbarTabなんか使わなくてもabout:configでできんじゃーん!
って人もいるので、別になんだっていいんですけれども、ね。


使ってるアドオンが全部対応になるまで、約1ヶ月かかったか・・・
次のバージョンアップが来るほうが早そうだな、本当困る:(


ちょっとでもお役に立てばいいな。

2011/06/25 MTDDC 参加してきたよ!

MTDDC Meetup Tokyo 2011に参加してきました。
Movable Type プロの現場の仕事術」

Movable Type 5.1 プロの現場の仕事術

Movable Type 5.1 プロの現場の仕事術

という本が今週リリースになるので、そのプロモーションも兼ねてのセミナーではありますが、
Movable Typeドリームチーム”の著者陣がセミナーを行ってくださいました。

いつもTipsやプラグインでお世話になるブログをやってらっしゃる方々ばかり
なので、とても興味深い話ばかりでした。

=以下、レポ兼自分用メモ書きー=

Movable Typeの新機能について (SixApart 金子順さん)

Movable Typeのセキュリティ対策、
今後のMovable Typeのセキュリティ方針について。
管理画面をSSL化したり、Basic認証で分けたり、cgiの名前を変えたり、
ちゃんと分離して外から見つけられにくいようにしましょう
というような内容でした。


SSL対応もそうですが、案件によってはなかなか腰が重いところだったりもするのですが、
昨今のXSSや漏洩などを鑑みると、そういったリスクのためにも然るべき予算を割くべきですからね。
何事も”大丈夫”が一番こわいです(・・; )


あと、Movable Type5.1の新機能のデモンストレーションなんかもありました。
ソート機能に関しては、色々カスタマイズの可能性が広がって、いい感じですね。
ウェブサイトのテンプレートをそのままブログサイトにも適用させるのも、
タグ1行で済むようになった、っていうのもかなり嬉しいところですね!
(いつもを忘れる。←既に綴りが間違ってるかもしれない)


・よくわかる条件分岐 (伊藤のりゆきさん)

PGやったことある人なら少し退屈だったかもしれないですが、
Movable Typeのカスタムを始めたばかりの人ならみんなつまづくであろう、
」についてのお話でした。
Ifってなんなのか、Ifはどういうときにtrueになるのか(0とそれ以外について)、
SetVarで値を取得してIFで判定させる方法、
とか、そういう感じです。
論理演算までやってくれてたら、さらに実用的だったかな・・・(゜゜)

Movable TypeFacebookの素敵な関係 (蒲生トシヒロさん)

蒲生さんは今度出版になる「Facebookページ プロフェッショナルガイド」

Facebookページ プロフェッショナルガイド

Facebookページ プロフェッショナルガイド

でも執筆なさっているということで、
今回は(ほぼ)Facebookを有効活用しよう!という内容でお話されました。

  • OGP(Open Graph protocol)について
  • CAMPFIREでの活用事例
  • MTからFacebookへイイネ
  • イイネとlikeの違い
  • OGPを利用して投稿を表示したときと通常のときの違い


OGPの概念については知らなかったので、
完全に目からウロコでした。(確かにソーシャルグラフを使わない理由はありませんよね…)
ECサイトなんかには特に活用できそうなので、ちょっと色々実験してみたいところです。


Movable Type+CSS3+jQueryで作るiPhoneサイト (西畑一馬さん)

モバイルは特にロードに時間がかかるとそれだけでロスだよね。
スマフォはCSS3に対応しているから、
jQueryMobileと合わせてリッチで速くて安定したサイトを作ろう!
というところについてのお話です。(+昨今話題のXSSについてのお話)


jQueryMobileは、EC-CUBEでスマフォサイトをカスタマイズしてたときに、
ちょこちょこいじりましたが、なかなか楽ちんにUI実装できるので面白いです。


XSSはいつになっても頭が痛い問題ですね・・・
特に、自分はWEBセキュリティエンジニアでは無いので、
常に脅威を監視するようなこともできないですし・・・
ただ、こういうことがあるから、と明らかになっているような問題については
なるべく対応しますけど。いや、責任を持てるほどではないのがまた頭が痛い(x_x)


EPUBプラグインで、Movable Type電子書籍 (藤本壱さん)

Movable Typeを汎用ファイル作成ツールとして使いましょう!
というお話。なかなか興味深かったです。
EPUB形式での出力については、特化したプラグインを藤本さんのブログで配布中だそうです。
他、質疑で「PDF出力はできますか?」とあったが「できません」とのこと。
確かに出来ると一番便利・・・!
HTMLページをPDFとして保存するようなソフトって結構あるし、
出来ない技術ではないだろうけどなー・・・誰か作ってください><


・クライアントの満足度を高める!管理画面の簡単カスタマイズ! (奥脇知宏さん)

管理画面をより使いやすく、カスタマイズする方法について。
「MTAppjQuery」を使ったカスタマイズですが、
フィールド名をカテゴリによって変えたり、(たくさんのカスタムフィールドを作らなくていい!)
入力に関するヒントを出したり、配置をマチカラムに変えたり、
入力値の誤入力を防ぐためにロックしたり、
今まで地道に管理画面テンプレートをいじって設定してきたことが、簡単にできます。


他にも、「MTAppNumChecker」っていう、
入力した数字の全角半角をトリミングしてくれるやつとか、
「alt-L10N」っていう、
「ウェブサイト」や「ブログ」などの固定名を個別に変えたり、
色んなプラグインを紹介してくださいました。


これもどんどん使ってみようっと!(・ω・)


・もっとディープにMovable Typeを使いこなす (荒木勇次郎さん)

Movable Typeの検索項目や一覧の表示についてのカスタムで
有用な変数群についてお話いただきました。
自分は結構前のほうに座っていましたが、それでもちらほら頭の下がっている方が目に付くほど
ディーーーーープな話でした(笑)
より大規模なサイトなんかでは、検索効率を考えないと使えないですから、
そういったときにはかなり便利に使えるんじゃないかな、と思いました。
予約変数周りは自分じゃ全く分からないので、いつも勉強になります!(´`)´´




いやー、4時間があっという間の濃厚なセミナーでした!
20代は自分くらいだったでしょうか・・・ほぼ、30代後半〜50代の方だったような気がします。CMSは高年齢化・・・?


そのあとに懇親会もあったのですが、講師の方や来場した方々とお話しできて楽しかったです。
(普段はなかなか外の会社の方と交流ってないですからね・・・)
またこういったセミナーがあれば行ってみたいですね。

2.11.1 ヘッダーやページ内などブロック以外の場所にログアウトボタンを設置する

しばらく悩んでいましたが、どうにか2.11.1系でも実装が出来たので、自分用メモ。


EC-CUBEには最初から「ログイン」ブロックがありますが、
サイトのデザイン上、メールアドレスとパスワードを入力するフォームを
常に表示させたくなかったりすることがよくあります。
「ログインボタンからログインページに移動して、そこからログインしてもらえればいいやー(´ー`)」
って場合ですね。


以前の2.4.x系ではテンプレート自体をブロック化させたり、ファイルを新しく作成したり、
何かと手間のかかるカスタマイズでありましたが、
2.11.1では「【ヘッダー】ログイン」ブロック内のソースを流用して実装します。

ログイン/ログアウトの判定をつける

以下のソースをメニューやヘッダー、フッターなどの切替えたいリンクの場所へ追加します。
(今回は、ログイン・ログアウトの切り替えと、会員登録・MYページの切り替えをします。)

<form name="header_login_form" id="header_login_form" method="post" action="<!--{$smarty.const.HTTPS_URL}-->frontparts/login_check.php" onsubmit="return fnCheckLogin('header_login_form')">
<input type="hidden" name="mode" value="login" />
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
<input type="hidden" name="url" value="<!--{$smarty.server.PHP_SELF|h}-->" />
<!--{if $smarty.session.customer|@count > 0}-->

<!-- ***  ここにログイン時の表示を書きます *** -->
<li class="member"><a href="<!--{$smarty.const.URL_MYPAGE_TOP}-->">MYページ</a></li>
<li class="login"><a href="<!--{$smarty.const.HTTPS_URL}-->mypage/login.php" onclick="fnFormModeSubmit('header_login_form', 'logout', '', ''); return false;">ログアウト</a></li>

<!--{else}-->

<!-- *** ここにログアウト時の表示を書きます *** -->
<li class="member"><a href="<!--{$smarty.const.ROOT_URLPATH}-->entry/kiyaku.php">会員登録</a></li>
<li class="login"><a href="<!--{$smarty.const.HTTPS_URL}-->mypage/login.php">ログイン</a></li>

<!--{/if}-->
</form>


こんな感じで出来るかな、と思います(・ω・)
ちなみにですが、既存のログインブロックを併用しますと、
ログアウトの処理が正しくできなくなります。
セッションで見てるから・・・なんですけど。どうにか他の方法ないですかねorz
検索処理なんかも、もしかしたら干渉するかもしれない(検証はしてないけど)

Firefox4.0.1 でタブを待機させる(Firefox4非対応アドオンのBarTabを使えるようにする)

Firefox4.0.1 が公開されましたが、
普段使用しているアドオンの中に非対応のものがあり、対応を見送っていました。
BarTab 2.0」という、タブを読み込まずに待機させることができるアドオンなのですが、
これが無いとどうにも不便で・・・
作業途中などで終了させた場合、前回のタブが残った状態で再開したいところですが、
通常だと、全てのタブを読み込んでしまうので起動がかなり重たい。(x_x )
開きっぱなしだったテスト用の環境とかがあったりすると、
BASIC認証のポップアップまみれになったりして本当にk(ry


さて、どうにかabout:configとかをいじらずに、
アドオンを適応出来ないかと思うわけで。


BarTabのアドオンページへ情報を確認しにいったところ、
開発版であればFirefox4.0.1でも利用できそうです。

[手順]
1.Firefox4をインストールする
2.アップデート途中で「BarTabは対応してません」と出るが構わず続行する
3.インストールが終わったら、BarTabのアドオンページへ進む
4.右側の「バージョン履歴」をクリックし、
  一番上の最新のバージョンを、対応するFirefoxのバージョンを念のため確認してから、
  ダウンロードを行います。
  ※2011/05/12 現在 - バージョン2.1b2  (環境:Firefox 3.5 - 4.0.*)

ただし、この方法はあくまでも次回アドオン更新までの暫定的な対処法でしかありません。
開発版の使用については、各々の判断の下ご利用ください。

バージョン履歴を見ると、最新のものがFirefox4.0b対応分(2011-01)なので、
もう少し待てば4.0.1版も公開になりそうな気もしますよね。
その際はちゃんと、確定版を再ダウンロードしてくださいね(・ω・)

2.11.1対応予定 管理画面のカテゴリーが文字化け(の続き)

以前この記事でも書いたのですが、

管理画面のカテゴリーが文字化け
http://d.hatena.ne.jp/AI-615/20101008/1286517213


EC-CUBE管理画面のカテゴリ一覧をはじめ、
あちらこちらで、マルチバイト文字がsfCutStringによって切られるため文字化けしていたんですが。
2.11.1でついに修正対応されるようです。(ぱちぱち)

チケット #1251 マルチバイト文字列を考慮していない処理
http://svn.ec-cube.net/open_trac/ticket/1251


しかし、国産なのにマルチバイト関連のバグが多いってのもなんだかおかしな話です。

2.11.0系 商品購入手続き画面のお届け日に定休日を反映させる

フォーラムに投げた内容をこちらにも転載。
そういえば2.11.0ではどうやるんだろう?と思って試しにやってみたら、
なんとなく出来た気が・・・
内容に問題があったらご報告お願いします!

/data/class/helper/SC_Helper_Purchase.php

/**
* お届け可能日のスタート値から, お届け日の配列を取得する.
*/
function getDateArray($start_day, $end_day) {

/*---------- ↓ 追加 ↓ --------*/
//カレンダーを呼び出す
require_once(CLASS_REALDIR . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar.php");
$blockCalender = new LC_Page_FrontParts_Bloc_Calendar();
/*---------- ↑ 追加 ↑ --------*/

$masterData = new SC_DB_MasterData();
$arrWDAY = $masterData->getMasterData("mtb_wday");
//お届け可能日のスタート値がセットされていれば
if($start_day >= 1) {
  $now_time = time();
  $max_day = $start_day + $end_day;
  // 集計
  for ($i = $start_day; $i < $max_day; $i++) {
    // 基本時間から日数を追加していく
    $tmp_time = $now_time + ($i * 24 * 3600);
    list($y, $m, $d, $w) = explode(" ", date("Y m d w", $tmp_time));

/*---------- ↓ 変更 ↓ --------*/
//休日かどうかチェックする
if(!$blockCalender->lfCheckHoliday_Payment($y, $m, $d)){
$val = sprintf("%04d/%02d/%02d(%s)", $y, $m, $d, $arrWDAY[$w]);
$arrDate[$val] = $val;
}
/*---------- ↑ 変更 ↑ --------*/

    }
  } else {
    $arrDate = false;
  }
  return $arrDate;
}

/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Calendar

/*---------- ↓ 追加 ↓ --------*/
/**
* 休日チェック取得.
* (購入手続き内、配送日時判定) 
*/
function lfCheckHoliday_Payment($year, $month, $day) {
  // 休日取得取得
  $this->arrHoliday = $this->lfGetHoliday();
  // 定休日取得取得
  $this->arrRegularHoliday = $this->lfGetRegularHoliday();
  if (!empty($this->arrHoliday[$month])) {
    if (in_array($day, $this->arrHoliday[$month])) {
      return true;
    }
  }
  if (!empty($this->arrRegularHoliday)) {
    $day = date('w', mktime(0,0,0 ,$month, $day, $year));
    if (in_array($day, $this->arrRegularHoliday)) {
      return true;
    }
  }
  return false;
}
/*---------- ↑ 追加 ↑ --------*/

2.11.0系でブロックやテンプレートから別のテンプレートファイルやphpファイルをincludeで呼び出す

以前書いた記事で、

ヘッダーとフッターにログアウトボタンを設置/ヘッダーとフッターをブロック化する
http://d.hatena.ne.jp/AI-615/20110118/1298876586


この中で記述している

<!--{include_php file="`$smarty.const.HTML_PATH`frontparts/bloc/header.php"}-->

が、2.11.0系では呼び出すことができなくなりました(・_・`)


どうやら、”HTML_PATH”が廃止されちゃってるみたいなんですよね。
そのかわりに、”HTML_REALDIR”で呼び出すことができるようになったようです。
なので、今まで”HTML_PATH”と書いていたところは、

<!--{include_php file="`$smarty.const.HTML_REALDIR`frontparts/bloc/header.php"}-->

と、してあげると動いてくれるかもしれないです(・ω・)



ついでに片っ端から「〜PATH」を拾ってみたよ!!!!

EC-CUBE 2.11.0 主要ディレクトリパス一覧

<!--{$TPL_URLPATH}-->
/html/user_data/packages/default/

<!--{$smarty.const.USER_TEMPLATE_REALDIR}-->
html/user_data/packages/


<!--{$smarty.const.TOP_URLPATH}-->
/html/

<!--{$smarty.const.ROOT_URLPATH}-->
/html/

<!--{$smarty.const.HTML_REALDIR}-->
/html/

<!--{$smarty.const.HTTPS_URL}-->
https://ドメイン


<!--{$smarty.const.P_DETAIL_URLPATH}-->
/html/products/detail.php?product_id=

<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->
/html/upload/save_image/


<!--{$smarty.const.DATA_REALDIR}-->
/data/

<!--{$smarty.const.CLASS_REALDIR}-->
/data/class/

<!--{$smarty.const.CLASS_EX_REALDIR}-->
/data/class_extends/


<!--{$smarty.const.TEMPLATE_REALDIR}-->
/data/Smarty/templates/default/

<!--{$smarty.const.TEMPLATE_ADMIN_REALDIR}-->
data/Smarty/templates/admin/


<!--{$smarty.const.TEMPLATE_TEMP_REALDIR}-->
html/upload/temp_template/

<!--{$smarty.const.GRAPH_URLPATH}-->
/html/upload/graph_image/

<!--{$smarty.const.IMAGE_TEMP_URLPATH}-->
/html/upload/temp_image/


<!--{$smarty.const.CART_URLPATH}-->
/html/cart/


<!--{$smarty.const.ADMIN_LOGIN_URLPATH}-->
/html/shopmng/

<!--{$smarty.const.ADMIN_SYSTEM_URLPATH}-->
/html/shopmng/system/

<!--{$smarty.const.ADMIN_PRODUCTS_URLPATH}-->
/html/shopmng/products/

<!--{$smarty.const.ADMIN_ORDER_URLPATH}-->
/html/shopmng/order/


<!--{$smarty.const.MOBILE_IMAGE_URLPATH}-->
/html/upload/mobile_image/

<!--{$smarty.const.MOBILE_TOP_URLPATH}-->
/html/

<!--{$smarty.const.MOBILE_CART_URLPATH}-->
/html/cart/

<!--{$smarty.const.MOBILE_P_DETAIL_URLPATH}-->
/html/products/detail.php?product_id=

/html/がいっぱいあるんだよね!
最初”HTML_REALDIR”に辿り着くまでは”ROOT_URLPATH”だとばかり信じていたのですが、
ちっとも呼び出せなくてあきらめた。何が違うんだ・・・(・_・`)