web-dev-qa-db-ja.com

パネルの条件付きフラグ

Flagモジュールを使用して2つのフラグを作成し、それらを私のカスタムコンテンツタイプ「Challenge」に配置しました。両方のフラグにフラグを付けることはできますが、フラグを解除することはできません。最初のフラグは「Accept」です。 2番目のフラグは「完全」です。これらの2つのフラグは、UIを使用して通常作成しました。ただし、パネルにそれらを表示するには、フラグが自動的に表示されないため、パネルのカスタムテキスト領域で次のコードを使用しました。

<div id="accept-flag">
<?php 
   print flag_create_link('flag1', %node:nid); 
?>
</div>
<div id ="complete-flag">
<?php
  print flag_create_link('flag2',%node:nid);
   ?>
</div>

これにより、両方のフラグがパネルページに表示されます。ただし、私のユースケースは異なります。最初は、「承諾」フラグが表示されているはずです。次に、ユーザーが[同意する]をクリックすると、他のフラグである[完了]のみが表示されます。これを達成する方法に関するヒント。また、ルールを使用して、次のイベントを発生させてみました。ノードにフラグが設定され、次に新しいフラグのアクションが設定されました。それは動作しません。次に、フラグアクションも使用してみました。つまり、最初のフラグのフラグ付け時に、別のフラグを表示します。それは機能しません。任意のアイデア、提案をいただければ幸いです。

ありがとう

編集

javaScriptとCSSを使用してこれを行う方法を考えました。最初のフラグが表示されている場合、2番目のフラグは表示されません。私が使用しているコードは:

if($("#accept-flag").is(":visible")){
    $("#complete-flag").css('display','none');

これは、テーマフォルダーのjs/script.js内に配置しました。

(function ($, Drupal, window, document, undefined) {

if($("#accept-flag").is(":visible")){
    $("#complete-flag").css('display','none');
}

})(jQuery, Drupal, this, this.document);

ページソースを表示すると、スクリプトが読み込まれますが、両方のフラグがまだ表示されています。

アドバイスをお願いします

再度、感謝します

2
why

パネルを使用しているため、2つのバリアントを作成できます。それらの1つは、「承諾」がフラグ付けされている場合にのみこのバリアントを選択し、その中で完全なフラグのみを表示するという選択ルールがあります。他のバリアントは選択ルールを必要とせず(ただし、バリアントの順序の最初のバリアントの下に配置する必要があります)、完全なフラグのみを表示します。

1
CarolineCB