web-dev-qa-db-ja.com

送信したプライベートメッセージをブロックする

私は this tip を使用してDrupal 7個のプライベートメッセージをブロックに入れ、それらのブロックをquicktabsブロックに配置しました:

<?php
/**
 * Implements hook_block_info().
 */
function MYMODULE_block_info() {
  $blocks = array();
  $blocks['messages_list'] = array(
    'info' => t('Messages List'),
    'cache' => DRUPAL_NO_CACHE,
  );
  $blocks['messages_sent'] = array(
    'info' => t('Sent Messages'),
    'cache' => DRUPAL_NO_CACHE,
  );
  $blocks['new_message'] = array(
    'info' => t('New Private Message'),
    'cache' => DRUPAL_NO_CACHE,
  );
  return $blocks;
}

/**
 * Implements hook_block_view().
 */
require_once('sites/all/modules/privatemsg/privatemsg.pages.inc');
function MYMODULE_block_view($delta = '') {
  $block = array();
  switch ($delta) {
    case 'messages_list':
      global $user;
      $block['subject'] = t('Private Messages List');
      $block['content'] = 
        drupal_get_form('privatemsg_list', 'list', $user);
      break;

    case 'messages_list':
      global $user;
      $block['subject'] = t('Private Sent Messages');
      $block['content'] = 
        drupal_get_form('privatemsg_list', 'sent', $user);
      break;
    case 'new_message':
      $block['subject'] = t('New Private Message');
      $block['content'] = drupal_get_form('privatemsg_new');
      break;
  }
  return $block;
} ?>

それはかなりうまくいきますが、私は次の問題を抱えています:

  1. タブ1(受信トレイ):メッセージリストのメッセージを削除できない、またはステータスを変更できないのはなぜですか。
  2. タブ2(送信済みメッセージ):送信済みメッセージのリストを表示するにはどうすればよいですか?別のフォームはありますか?
  3. タブ3(新しいメッセージ):新しいメッセージを送信した後、ユーザーをメッセージリストにリダイレクトする方法を教えてください。
  4. Sites/all/modules/privatemsg/privatemsg.pages.incを含める必要がないようにする方法(このブロックを「/ messages」で始まらない非標準のURLに配置する場合は、関数でエラーが発生するそのファイルが見つかりません。

ノート(編集済み):

Drupal 7 Privatemsgビュー統合モジュールがスタックしています(最新のパッチ こちら を参照できます)。フォームの統合は多少は機能します。

代替アプローチ:

  • データモジュール(任意のテーブルでビューを作成できるようにする)+ VBOで編集します。彼らが一緒に働くなら。
  • Views + VBOを使用してソリューション全体を再作成します。

お知らせ下さい

ありがとう

アムノン

1
Druvision

クイックタブを使用する必要はありません。 privatemsg_filterアドオンモジュールを使用する場合、タブ機能は固有です。受信トレイ、送信済みメッセージ、およびすべてのメールが3つのタブとして公開されます。

新しいプライベートメッセージを送信するオプションを備えた4番目のタブを追加する必要があるだけです。

タブはすでにページとして存在していたので、hook_menu_alter()を使用してタブを追加するのは簡単でした。

したがって、最終的なコードは次のとおりです。

<?php 
function MYMODULE_menu_alter(&$items) {
  // Make the privatemsg new link a tab
  $items['messages/new']['type'] = MENU_LOCAL_TASK;
}
?>
1
Druvision

そのサンドボックスプロジェクト ここにリンクの説明を入力 を使用して、必要なブロックを作成できます

0
Mohammed Gomma