1: 2012-03-27 (火) 19:23:32 admin ソース 現: 2012-05-12 (土) 20:32:37 admin ソース
Line 1: Line 1:
*お問い合わせモジュールとして使う [#bb0acbaa] *お問い合わせモジュールとして使う [#bb0acbaa]
xCCK は項目を自由に追加できるため、お問い合わせモジュールに使えるのではないかと考える方もいらっしゃるかもしれません。 xCCK は項目を自由に追加できるため、お問い合わせモジュールに使えるのではないかと考える方もいらっしゃるかもしれません。
-実際、お問い合わせモジュールとして利用可能なのですが、それには埔里ロードを使ったやや高度なカスタマイズが必要となります。+実際、お問い合わせモジュールとして利用可能なのですが、それにはプリロードを使ったやや高度なカスタマイズが必要となります。
**お問い合わせモジュールとして必要な機能 [#a69c61b4] **お問い合わせモジュールとして必要な機能 [#a69c61b4]
Line 30: Line 30:
***お問い合わせ入力後、通知のメールを管理者に、受領のメールを送信者に送る [#lbbf3bc6] ***お問い合わせ入力後、通知のメールを管理者に、受領のメールを送信者に送る [#lbbf3bc6]
-この制御にはプリロードを使う。+この制御にはプリロードを使う。XCL2.2 では、XoopsSimpleObject でデータの追加(Add)、更新(Update)、削除(Delete)を行った後にデリゲートポイントが設定されているので、これを利用する。 
 +後述のプリロードサンプルの Contact_Notification::sendNotification() を参照。
***お問い合わせ入力後、トップページに遷移する [#we3f5104] ***お問い合わせ入力後、トップページに遷移する [#we3f5104]
xCCK は入力後、詳細表示画面(action=PageView)に遷移するようになっている。権限管理上、これは都合が悪い(ほかのユーザの入力内容をゲストでも見れてしまう)。そのため、トップページに遷移させる。 xCCK は入力後、詳細表示画面(action=PageView)に遷移するようになっている。権限管理上、これは都合が悪い(ほかのユーザの入力内容をゲストでも見れてしまう)。そのため、トップページに遷移させる。
 +xCCK は、フォーム入力後の遷移先をデリゲートで指定できるようになっている。そのため、プリロードファイルで遷移先を指定する。
 +以下の「プリロードサンプル」の Contact_Notification::forward() を参照。
 +
***複数のお問い合わせフォームを設定できる [#h8bbbc85] ***複数のお問い合わせフォームを設定できる [#h8bbbc85]
xCCK は複製可能なので、フォームごとに複製して対応する。 xCCK は複製可能なので、フォームごとに複製して対応する。
**プリロードサンプル [#ce9331ed] **プリロードサンプル [#ce9331ed]
-{XOOPS_MODULE_PATH}/xcck/preload/Contact_Notification.class.php+{XOOPS_MODULE_PATH}/xcck/preload/Notification.class.php
 <?php  <?php
 if (!defined('XOOPS_ROOT_PATH')) exit();  if (!defined('XOOPS_ROOT_PATH')) exit();
Line 45: Line 49:
   public function preBlockFilter()    public function preBlockFilter()
   {    {
 +     //デリゲート登録
     $this->mRoot->mDelegateManager->add('Module.contact.Event.Add.page', array(&$this, 'sendNotification'));      $this->mRoot->mDelegateManager->add('Module.contact.Event.Add.page', array(&$this, 'sendNotification'));
     $this->mRoot->mDelegateManager->add('Module.contact.Event.GetForwardUri.Success', array(&$this, 'forward'));      $this->mRoot->mDelegateManager->add('Module.contact.Event.GetForwardUri.Success', array(&$this, 'forward'));
   }    }
 + 
   public function sendNotification(&$obj)    public function sendNotification(&$obj)
   {    {
 +     //フォーム入力内容からメール本文を作成
     $contentObj = new Contact_PostContent($obj);      $contentObj = new Contact_PostContent($obj);
     $content = $contentObj->getContents();      $content = $contentObj->getContents();
-     Libson_Utils::call+  
-      'sendMail', +     //メーラの取得 
-      $obj->getShow('title')._MD_CONTACT_NOTIF_TITLE_POSTFIX, +     $mailer =& getMailer(); 
-      Legacy_Utils::renderUri($obj->getDirname(), $obj->getDataname(),$obj->get('page_id'))."\n\n". +  
-      _MD_CONTACT_NOTIF_CONSULTER.' : '. $obj->getShow('title')."\n\n". $content+    //送信内容の設定(管理者向け) 
-      $this->_getSystemConfig('adminmail') +     $mailer->setSubejct($obj->getShow('title')); 
- ;    ); +    $mailer->setBody(Legacy_Utils::renderUri($obj->getDirname(), $obj->getDataname(),$obj->get('page_id'))."\n\n".$content); 
- +    $mailer->appendTo($toMail,$toName); 
-     Libson_Utils::call( +    $mailer->send($this->_getSystemConfig('adminmail')); 
-      'sendMail', +  
-&nbsp;     _MD_CONTACT_NOTIF_SENDER_POSTFIX, +     //送信内容の設定(問い合わせ者向け) 
-      _MD_CONTACT_NOTIF_THANKS. "\n\n". $content, +    $mailer-&gt;setSubect(_MD_CONTACT_NOTIF_SENDER_POSTFIX); 
-      $obj->get('email') +    $mailer->setBody(_MD_CONTACT_NOTIF_THANKS. "\n\n". $content); 
-     );+    $mailer->appendTo($obj->get('email'),''); 
 +     $mailer->send();
   }    }
 +  
 +   //問い合わせフォーム入力後の転送先指定
   public function forward(&$obj)    public function forward(&$obj)
   {    {
     XCube_Root::getSingleton()->mController->executeRedirect(XOOPS_URL.'/', 5, _MD_CONTACT_MESSAGE_RECEIVE_SUCCESSFULLY);      XCube_Root::getSingleton()->mController->executeRedirect(XOOPS_URL.'/', 5, _MD_CONTACT_MESSAGE_RECEIVE_SUCCESSFULLY);
   }    }
 + 
   protected function _getSystemConfig($key, $mid=0)    protected function _getSystemConfig($key, $mid=0)
   {    {
Line 90: Line 98:
   }    }
 }  }
- +  
- &lt;?php+&nbsp;//問い合わせフォーム入力内容からメール本文を組み立て
 class Contact_PostContent  class Contact_PostContent
 {  {
   protected $_mData = null;    protected $_mData = null;
 + 
   public function __construct($obj)    public function __construct($obj)
   {    {
Line 101: Line 109:
     $this->_mData = $obj;      $this->_mData = $obj;
   }    }
 + 
   public function getContents()    public function getContents()
   {    {
Line 118: Line 126:
 }  }
 ?>  ?>
 +コードはおおむねそのまま使えるが、
 +-_MD_CONTACT_NOTIF_SENDER_POSTFIX などの定数は、プリロードファイル内で適宜設定する。
 +-お問い合わせ者のメールアドレスは、"email" というフィールドに入力されている前提


トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 3840, today: 4, yesterday: 3