2017-06-14 9 views
0

私のメインページには異なる地域があります。私が達成したいのは、ログに記録されたユーザーに基づいて1つ以上の地域を動的に無効にすることです。APEX ORACLE - PL/SQL + Javascriptで領域を動的に無効にする

私は既に1つの領域を「静的な方法」で無効にすることができました。 R4は地域の一つのIDある

$('#R4').addClass('apex_disabled').attr('tabindex', '-1'); 

:ページ属性では、JavaScriptのメニューの下に、Execute when Page Loadsに私はこのコードを置きます。

「動的な方法」については、Processを作成しました。たとえば、ユーザーがADMINの場合は、領域R4を無効にします。これは、コード(今私は、ユーザーをチェックしていないよのために、私はちょうど無効機能を働いて取得しようとしている)である:

DECLARE 
    user VARCHAR2 (50); 

    BEGIN 

    select username into user 
    from USER 
    where username = V('APP_USER'); 


    htp.p (' <script type = "text/javascript"> '); 
    htp.p (' function disableRegion()'); 
    htp.p (' { '); 
    htp.p (' 
    $(''#R4'').addClass(''apex_disabled'').attr(''tabindex'',''-1''); '); 
    htp.p (' } '); 
    htp.p (' </script> '); 


    END; 

これは動作しません。助言がありますか?ありがとう!

答えて

1

サーバー側の条件は、宣言式、PL/SQLまたはSQL問合せなどの任意の形式を使用できます。 ページがレンダリングされてもレンダリングされない最初は

クライアント側の条件は、ページの読み込み時に動的アクションが発生することがあります。これは認証スキームによっても保護される可能性があるため、特定の動的アクションのみが発生します。しかし誰かが示唆するように、これは安全ではありません。

提供されたコードは、よく書かれたAPEXアプリケーションに存在することはありませんが、私はOPがAPEX 3.xにある可能性があります。

+0

私はApex 4.2を使っています。私はここで学んでいます。したがって、地域の認可制度を変更するのが最善の解決策ですか? – Dygne

+1

はい、特定の地域/ボタンを特定のユーザーに表示しない場合は、承認スキームが必要です。ビジネスロールではなく機能別にスキームを適用することをお勧めしますが、それははるかに深い議論です – Scott

+0

ありがとう!もう1つ質問:私が答えたところで述べたように、特定の地域を無効にしたいだけで、それを隠すことはしません。それはまだ認証スキームで可能ですか? – Dygne

0

問題が解決しました。

スクリプトを起動する必要がありますOn Load - After Regions

鉱山をOn Load - Before Headerに設定しました。

地域のIDを取得できませんでした。

+2

また、特定の地域で承認スキームを変更することもできます。 R4の場合は、管理者権限のないスキームを選択してください。 – RLOG

+0

@RLOGは同意しており、これはもっと強力なアプローチになります。現在の方法は簡単に回避することができます。多分、それはOPの環境では問題ではないでしょう。 – hisnameismyname2

関連する問題