Serverのアーカイブ
   1   2   3   4   5   6   

2011年2月24日

FLATDATAで業務報告

学芸大コミュニティで情報アシスタントの業務報告をさせちゃおうと,FLATDATA を活用してみた.
やっぱ,メモしておかないとすぐ忘れてしまうらしい.
2か月前の手順をまったく忘れて,1時間以上イライラしてしまった.

まずは,登録されたときにメールでも登録データを送信しなければならない.

ということで,FLATDATA - 応用例)お問い合わせ(イベント通知)を使って,登録時にメールが送られるようにした.メール送信先は,情報アシスタント管理者のML,登録者,ペアの担当者,担当する教員.管理者のML以外は固定データではないのが問題.送信先メールアドレスは,参考サイトにある {XOOPS_ROOT_PATH}/preload/FlatdataContactus.class.php の下の方の mail->setToEmails($xoopsConfig['adminmail']); を変更すればよい.複数の宛先に送りたいときには,このメソッドを複数化呼べばよいらしい.

登録者のメールアドレスは,ユーザ情報にあるので,

    $handler = xoops_gethandler('member');
    $user = $handler->getUser( $data["uid"] ) ;
    $email = $user->get('email');

で取り出せる.

一方,教員とペアの担当者のメールアドレスは,とりあえずデータとして入力してもらい,

    for( $i=0; $i < count($allfields); $i++) {
      $fid = $allfields[$i]['fid'] ;
      $fdata = empty($data['data'][$fid]) ? '' : $data['data'][$fid] ;
      if( $fid == 教員メールアドレスのフィールド番号 ){
        $tomail1 = $fdata ;
      }
      else if( $fid == 20 )
      {
        $tomail2 = $fdata ;
      }
    }

として取得.ふぅ....

さて,次は,授業内容などのデータは,特定の人(登録者と管理的立場の人)だけにしか見れないようにしてほしいとのこと.FLATDATA では単純に入力されたデータを見られなくしようとすると,登録もできなくなってしまう.そこで,表示するコードに手を付けて,そのようなデータ項目は一部の人だけにしか表示できないようにした.

FLATDATA で表示内容のコントロールは,管理メニューの中にあるテンプレート管理で行う.これを忘れていて四苦八苦した.*_edit.html が編集画面,*_submi が確認画面,そして,*_single がデータ表示画面のデザインを定義している.編集画面と確認画面はシステム管理者と登録者しか呼び出せないので,データ表示画面だけコントロールすればよい.これには, 一覧表示から特定グループに所属するユーザーのデータを除外するには を参考にした.

  <{elseif ($f.fid==13 || $f.fid==14) }>
    <{if $isadmin || checkUidInGroup($uid,6)}>
        表示したい項目
    <{/if}>
  <{/if}>

とするだけである.

    for( $i=0; $i < count($allfields); $i++) 
    {     
      $fid = $allfields[$i]['fid'] ;
      $fname = $allfields[$i]['fname'] ;
      $fdata = empty($data['data'][$fid]) ? '' : $data['data'][$fid] ;
      $body .= $fname ." : ". $fdata ."\n" ;
      if( $fid == 19 )
      {
        $tomail1 = $fdata ;
      }
      else if( $fid == 20 )
      {
        $tomail2 = $fdata ;
      }
    }
    $ip = getenv("REMOTE_ADDR") ? getenv("REMOTE_ADDR") : "" ;
    $body .= "REMOTE_ADDR : " . $ip ;
    $email = '';
    $handler = xoops_gethandler('member');
    $user = $handler->getUser( $data["uid"] ) ;
//    if (!is_object($user))
      $email = $user->get('email');
    $mail =getMailer();
    $mail->useMail();
    $mail->setToEmails($tomail1);
    $mail->setToEmails($tomail2);
    $mail->setToEmails($email);

 

 

 

2011年1月11日

ついでにLikeボタンもつけてみた

さらにLikeボタンもつけてみた.

参考にしたのはfacebookのLike!ボタンを自分のサイトに追加する方法 - RinGoon POP!!

さて,いいねしてくれる人はいるのかな??

ReTweetボタンをつけてみた

続いてReTweetボタンをつけてみた.

参考にしたのはReTweet(Twitterに投稿)ボタンをつけました♪ | CREAMU

とすればよいようだが,ツイーとしたい内容はUTF-8でエンコードする必要があるので,URLエンコード・デコードフォームを使ってみた.

・・・と思ったら,公式なボタンがあったのでさっそく変更.
関連情報 › ツイートボタン

ブログ投稿時にtweetするようにしてみる

PostTweetプラグインを導入してみた.

修正した時にもtweetするようだ.邪魔かなぁ...

2010年12月29日

LightboxPlus+rel記述不要をインストールしたが

このサイトでのLightBox表示(画像をクリックするとずずず~と表示されるやつ)が動いていないのに気が付いて,ブログに適用指示(rel="lightbox")不要の最新版「lightbox_plus」の設置方法を参考に,LlightboxPlusをインストールしてみた.

が,まだうまく表示されない.
ところが IE で開いてみるときちんと表示された???

Chrome との相性が悪いのか?と思ったが,Lightbox plusのサイトの画像をクリックしてみるときちんと動作する..ということは設置方法が間違っているのか.では,なぜIEでは動くのか??謎である.

ということで,Chrome でこのサイトを見ている人は,画像を見ようとすると,ウィンドウが書き換えられてしまうと思います.

2010年10月11日

XOOPSの新規登録でキーを使ってグループ登録

いやぁ,苦労した...

今回は既存のYIMを利用してキーを扱うことにしてみた

まずは,user モジュールのテンプレートで,入力画面と確認画面を変更.

user_register_form.html

  <tr>
    <td>RegistKey</td>
    <tdodd,even"}>"><{xoops_input maxlength=25 name=user_yim value=$actionForm->get('user_yim')}></td>
  </tr>
<tr>
<td class="head">RegistKey</td>
<td class="<{cycle values="odd,even"}>"><{xoops_input maxlength=25 name=user_yim value=$actionForm->get('user_yim')}></td>
</tr>

user_register_confirm.html

<tr>
<td class="head">RegistKey</td>
<td class="<{cycle values="odd,even"}>">
<{$registForm->get('user_yim')|xoops_escape}>
</td>
</tr>

次は,データ受け渡し用に modules/user/forms/UserRegisterEditForm.class.php に追加

$this->mFormProperties['user_yim'] =& new XCube_StringProperty('user_yim');

$obj->set('user_yim', $this->get('user_yim'));

最後にキーを用いてグループを追加するために modules/user/actions/UserRegister_confirmAction.class.php に追加

if( $this->mNewUser->get('user_yim') == 'KEY' )
{
  if (!$memberHandler->addUserToGroup( 'GROUP ID', $this->mNewUser->get('uid'))) {
    $this->mRedirectMessage = _MD_USER_LANG_REGISTERNG;
    return USER_FRAME_VIEW_ERROR;
  }
}

2010年8月23日

LightBoxを利用した画像表示のバグを修正

このサイトのブログ記事内にある画像をクリックした場合,効果付きで表示される.
これは LightBox という JavaScript コードを利用して実現している.

これまで,ブログ内の最後の画像からさらに次の画像を表示しようとすると,
無限ループに陥るというバグがあったのだが,直せた. 

LightBox を使う場合,画像を貼る際,a タグの中に必ず,rel 属性を書かなくてはいけないのだが,
これは面倒なので, 

rel属性無しでLightbox JS v2.02

に解説があるようにしていた.
ところが,二番目の修正が反映されていなかった.
そのため,画像だけでなく,すべての a タグに反応してしまい,
たとえば,webページを画像だと思って一生懸命表示しようとし,無限ループに陥っていたようだ.

さらに,今回,ブログ記事内の画像だけをきちんと表示するように,
上記修正個所のすぐ上にある 

 

var anchors = document.getElementById('content').getElementsByTagName('a');
// var anchors = document.getElementsByTagName('a');

var anchors = document.getElementsByTagName('a');

を念のため

var anchors = document.getElementById('content').getElementsByTagName('a');

と修正した.

 

2010年8月13日

Windowsを校務サーバにするために一苦労

小平の小学校からの依頼で校務情報共有システム(Webサービス)を構築することになった.

いろいろ考えて,XOOPS を用いたものにすることにし,自分のサーバである程度,構築の目途がついた. 

しかし,問題が発生.
市のセキュリティ方針で新たなサーバマシンを持ち込むのはかなり難しいとのこと.
となると,使えそうなのは校務用に各教員に配布されているWindowsノートパソコン.
どうやら予備用に1台あまっているらしい. 
ということは,Windowsで構築しなければならないことになる.

UNIXベースならお手の物なのだが,Windowsベースなので一苦労.
以前からいろいろ試してみたのだが,上記の条件がはっきりしたので,
自分のWindows7に構築を試みてみた.

たかが,Apache+PHP+MySQL を動かすだけに,
夏休み2日を費やしてしまった...
だが,とりあえずXOOPSのインストールに目途がついた.第一関門通過である. 

インストール方法はこちら.

さぁ,次はXOOPSのインストールだ.

2010年2月14日

OpenPNE 3が動かない

う~む,ガジェット機能がほしいので,OpenPNE3 のインストールに挑戦しているが...

インストールは成功するのだが,ログインすると,404エラー(このリンクは無効です)が出てしまう.
なにが問題なのだろうか???

と思ったら,公開ディレクトリの .htaccess の許可を忘れていた.
AllowOverride All
を入れて,解決.

と思ったら,ログイン後の画面が真っ白ジャン....なんなんだよ
管理画面はちゃんと動くのだが...

続きを読む "OpenPNE 3が動かない"

php-cli がおかしい

OpenPNE をインストールしようとしたら,mbstring の関数が見つからないとエラーが出た.
ブラウザ経由で phpinfo を表示させるときちんと mbstring モジュールがインストールされていることが確認できる.
ところが,コマンドラインで php -m としてみると,mbstring が表示されない.
困って困って,ノーマルヒルを見ながら徹夜.

php -i でコマンドラインでの状態を見てみると...INI ファイルが読み込まれていなかった.そこで,Configuration File (php.ini) Path で示されている場所を確かめると...php.ini がない.そこで,/etc/lib64/の方にある.php.ini をコピー.

これでもまだだめ.どうやら,コマンドライン版の方は,mbstring 利用を明示しないとだめらしい.そこで php.ini の中に,拡張モジュールのありかと利用の明示

extension_dir=/usr/lib64/php/modules
extension=mbstring.so

を記述したら mbstring が使えるようになった.
同様に pdo_mysql も明示的に利用を指定して,万事解決.