Fuelphp : class 'smarty' not found

kishidaです。

FuelphpでSmartyを使用しようとしてclass ‘smarty’ not foundが表示されました。

smartyの設定は以下を参考にさせていただきました。
参考URL http://piyopiyocs.blog115.fc2.com/blog-entry-633.html

設定漏れはない筈・・・多分。

解決
fuel/packages/parser/config/parser.phpのファイルに以下の行を追加することで使えるようになりました。

‘View_Smarty’ => array(
‘include’ => APPPATH.’vendor’.DS.’Smarty’.DS.’libs’.DS.’Smarty.class.php’, // <— この行
‘auto_encode’ => true,
‘delimiters’ => array(‘left’ => ‘{‘, ‘right’ => ‘}’),

参考 http://www.doumeishi.me/wordpress/?p=35

カテゴリー: php

android(titanium) : webviewでページ遷移する際にviewが切り替わるのを防ぐ

kishidaです。

今回はタイトルの通りでtitaniumのwebviewでリンクをタップした際にwebview内で開くのではなく新しくviewが生成されることが多々ありました。

広告の表示など既存のviewの設定は新しいviewには反映されないためこれではよろしくないということで色々悩みながらも解決しました。

原因

新しいviewが生成されていた原因はタップしているリンクの設定にあるみたいでした。
PCのブラウザからリンクをクリックすると新しいページで開くようになっていたのでそれが影響していたみたいです。

解決

開いているwebviewに対してページを読み込んだ時にリンクの設定を新しくページを開かないように上書きしました。。

webview.addEventListener('load',function(){
  var content = webview.evalJS("document.body.innerHTML = document.body.innerHTML.replace(/target="_blank"/gi, '');");
});

カテゴリー: Android, Titanium, 未分類

お久しぶりです

kishidaです。
気がつけば最後に書いてから半年近く経過していますね。
書こうかなーと思うことはあったのですがなんとなーく別の作業をしているうちに期間が空いてしまいました。

とりあえずメモ帳の肥やしになっているのを少しづつでも消化していきたいです。

gitでpullやコミットができない時に

“fatal: Unable to create ‘/hogehoge/.git/index.lock’: File exists.”
こういうエラーが有った時は
“rm /hogehoge/.git/index.lock”
を実行すればpullやコミットができるようになります。

カテゴリー: git

FaceBookアプリでDropBoxを使用する

kishidaです。

facebookのタブアプリを作るため、試しに表示するwebページにDropBoxを使用しようとしてはまったのでメモします。

はまったのはページタブのURLにDropBoxのURLを入れようとすると”There was a problem saving your changes. Please try again later”というエラーが発生。
「時間を置いてまた試してください」とのことなので少し待ってみるも変化無し。いろいろ調べてみるとこんな内容がありました。

http://debugreport.blogspot.jp/2013/03/there-was-problem-saving-your-changes.html

dl.dropbox.comの後にポート番号を書けばいいみたいなのでURLをhttps://dl.dropboxusercontent.com:443/u/123456789/sample/
の形で設定するとうまくいきました。

カテゴリー: 未分類

fuelphpのEmail

kishidaです。かなり久しぶりに投稿します。

fuelphpのEmailパッケージを使用したのでそのメモを書きます。

まずはapp/config/config.php、またはコントローラー側でEmailパッケージを読み込みます。

'packages'  => array(
    'email',
),

または

Package::load('email');

次にEmailクラスの設定を行います。設定は設定ファイルを使用する方法とEmailパッケージ使用の際にその場で設定し引数で渡す方法があります。

設定ファイルを使用する場合はpackages/email/config/email.phpをapp/config/email.phpにコピーし新規作成します。

例 文字セットの指定

//設定ファイル
'setups' => array(
    'default' => array(),
    'mail_pattern_A' => array(
        'charset' => 'ISO-2022-JP',
    )
),
//設定を作成
$conf = array(
  'charset' => 'utf-8',
);
Package::load('email');   //パッケージのロード

//$email = Email::forge('mail_pattern_A'); //設定ファイルの内容を使用
$email = Email::forge($conf);  //作成した設定の読込

最後に送信までの処理を書きます。

$conf = array(
  'charset' => 'utf-8',
);
Package::load('email');   //パッケージのロード

//$email = Email::forge('mail_pattern_A'); //設定ファイルの内容を使用
$email = Email::forge($conf);
$email->from('送信元アドレス', '送信者名');
$email->to('送信先アドレス');
$email->subject('件名');
$email->body('本文');

$email->send();
カテゴリー: php

検索で絞り込み(jQuery使用)

kishidaです。
今回は検索して絞り込みをできるようにします。

javascript

$(function(){
 $('#search').on('keyup', function(){  //#searchに入力されるたびに反映
  var pattern = $(this).val();  //検索文字列を取得
  $("[class=tr]").each(function() {
   var str = $(this).children("td").text();  //検索対象を取得
      //検索に引っかかった場合表示
   if(str.match(pattern))  $(this).show();
      //検索対象以外隠す
      else $(this).hide();
  });
 });
});

html


A
B
C
D

これで検索して絞り込めるようになりました。なおcssでevenやoddを使用していた場合は検索前と検索後でそれぞれ設定する必要があるので注意です。

カテゴリー: html, javascript

テーブルの中身をスクロールする

kishidaです。
最近お腹まわりが気になりだしました。
とりあえず運動しようということで外をランニングしているのですが最近雨が多くて外に出れません。
運動したい・・・

テーブルの中身をスクロールさせる方法

A B C
D E

スクロールさせる方向のサイズ(幅、高さ)をはっきりさせておかないと思ったように動作しないので注意です。

カテゴリー: css, html

ドラッグ、ドロップで要素を入れ替え

お久しぶりです、kishidaです。
今年は暑いなーと思っていたら最近急に冷えてきました。
そういえば去年は一度気温が下がってまた上がってたような記憶があります。
今くらいが過ごしやすいのでこのまま冬になるのを祈ります。

 

 

テーブルのセルを入れ替える処理をしました。
jQuery UIのsortableを使用すると簡単に出来ました。

$(function(){
  //並び順
  $( "#sortable" ).sortable();
});
A
B
C
D

並びを保存したい場合はsortableを以下のように変更すると要素のidが取得できるのでそれをDBやcookieなどでコネコネしてやればいいと思います。

$(function(){
  //並び順
  $( "#sortable" ).sortable({
    update: function(ev, ui) {
      var updateArray =  $("#sortable").sortable("toArray");
      alert(updateArray);  //出力結果 : ["A","B","C","D"]
    }
  });
});

sortableは<table>以外にも<ul>などにも適用可能です。

カテゴリー: html, javascript

一定時間画面をタッチするとダイアログを表示する

どうもお久しぶりです。kishidaです。

今年も本格的に熱くなって来ました。

休日に家にいると日中は完全にダウン状態で日没後にようやく動き出すような生活をしています。

冷房を使えばいいだけなのですがもう5~6年ぐらい冷房無しで過ごしているせいか意地になって逆に使わない感じになってます。

 

暑いの(ダウン)には慣れました。

 

 

一定時間タッチしたままでいるとダイアログを表示する処理

final int TIMER  = 1000 * 3;  //3000ミリ秒
final int MARGIN = 30;       //タッチ時の誤差
AsyncTask task;

view.setOnTouchListener(new OnTouchListener() {
  int x=0,y=0;

  @Override
  public boolean onTouch(View v, MotionEvent event) {
    switch ( event.getAction() ) {

      //タッチした
      case MotionEvent.ACTION_DOWN:
        x = (int)event.getX();
        y = (int)event.getY();
        task = new AsyncTask() {
          @Override
          protected Boolean doInBackground(final Integer... timer) {
            try{
              Thread.sleep(timer[0]);
            }catch(InterruptedException  e){
              return false;
            }
            return true;
          }

          @Override
          protected void onPostExecute(Boolean result) {
            /*****ダイアログ表示処理*****/
          }

          @Override
          protected void onCancelled() {
          }
        };
        task.execute(TIMER);
        break;

        //タッチしたまま移動
      case MotionEvent.ACTION_MOVE:
          //一定以上動いたらリセット
          if( x + MARGIN < (int)event.getX() || x - MARGIN > (int)event.getX() ||
            y + MARGIN < (int)event.getY() || y - MARGIN > (int)event.getY()){

            task.cancel(true);
            task = new AsyncTask() {
              @Override
              protected Boolean doInBackground(Integer... timer) {
                try{
                  Thread.sleep(timer[0]);
                }catch(InterruptedException  e){
                  return false;
                }
                return true;
              }
              @Override
              protected void onPostExecute(Boolean result) {
                /*****ダイアログ表示処理*****/
              }
              @Override
              protected void onCancelled() {
              }
            };
            task.execute(TIMER);
            x = (int)event.getX();
            y = (int)event.getY();
          }
        break;

     //画面から離れたorキャンセルされた
      case MotionEvent.ACTION_UP:
      case MotionEvent.ACTION_CANCEL:
        task.cancel(true);
        break;
      }
      return false;
    }
});
//タッチしたまま移動
case MotionEvent.ACTION_MOVE:
  //一定以上動くようならカウントリセット
  if( x + MARGIN < (int)event.getX() || x - MARGIN > (int)event.getX() ||
    y + MARGIN < (int)event.getY() || y - MARGIN > (int)event.getY()){

タッチ部分が少しでもずれるとonTouchが呼ばれcase MotionEvent.ACTION_MOVEが動作するため少し余裕を持たせる。

try{
  Thread.sleep(timer[0]);
}catch(InterruptedException  e){
  return false;
}

時間を計測。cancelメソッドを呼ぶとInterruptedExceptionが出るのでそれを利用する。

以上

カテゴリー: Android

テーブルのセルにリンクを貼る

kishidaです。
朝、晴れてるからといって天気予報を見ないで布団を干して出かけたら雨に降られて帰る頃にはビシャビシャになりました。
これからは絶対に天気予報を見てから干すようにします。

テーブルのセルにリンクを貼る方法について
CSS

td{
 width:300px;
 height:50px;

}
a{
  display:block;
  width:100%;
  height:100%;
}


HTML

このセルクリック

注意点としてセルのサイズをを指定してやらないとwidth:100%;などがうまく動きません。
知らないで悩みました。

カテゴリー: css, html