0

リードページレイアウトでメールを非表示にすることを検討しています。

すでにvisualforceページがあるセクションに含めていますが、PageLayoutはそれを検出せず、レイアウト上にある必要があります。

PageLayoutから削除する方法はありますか?

選択リストを編集できることを読みましたが、それを行う確かな例は見つかりませんでした。フィールドレベルのアクセシビリティについても読みましたが、全員が同じ役割の一部であり、所有者である場合に基づいて詳細を除外しているだけなので、それが進むべき道ではないと思います。javascriptも試しましたが、visualforceページがiframeに読み込まれているため、iframeの親ドキュメントにアクセスして、所有者として表示していないときにメールの値を非表示にしたり削除したりできません。

どんな考えでもいただければ幸いです。

4

1 に答える 1

1

カスタム ボタンに保存された JavaScript でフィールドを非表示にしてみてください。ボタンのオンクリック JavaScript には、電子メール フィールドを非表示にする jQuery によってページの読み込み時に実行されるコードを含めることができます。その後、実際のボタンも非表示にすることができます。非常にハックなアプローチですが、うまくいくはずです。

オンクリック JavaScript ボタンに配置するコードを次に示します ( Daniel Llewellyn のブログ投稿 およびmgsmith の force2b ブログ投稿から変更)。うまくいけば、これですぐに始められるはずです。メール フィールドを非表示にする方法についてのコードは含めませんでしたが、Visualforce ページで既に試しているとのことでしたので、その部分はお任せします。乾杯!

var interval;
//The main function that does all the work
function appendScript() {
    // Include core jQuery library by injecting it into the DOM
    var script= document.createElement('script');
    script.type= 'text/javascript';
    script.src= 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js';
    head.appendChild(script);

    // It takes a second to load, so put in a delay
    // (we don't want to try and reference the script
    // before it is actually loaded, so we store the interval
    // in a global variable, and set up an interval.
    // this interval dealio. This will keep running 
    // until jQuery has been found to be loaded and then
    //clears the interval so it doesn't keep running.

    interval=self.setInterval(function(){

        //Check to see if jQuery has loaded                           
        if(jQuery) {
            //if jQuery has loaded, clear the interval
            window.clearInterval(interval);

            // Hide the Email field

            // Hide the custom button
            var btnName = 'buttonName';
            try{
                var buttons = parent.document.getElementsByName(btnName);
                for (var i=0; i < buttons.length; i++) {
                    buttons[i].className="btnDisabled ";
                    buttons[i].disabled=true;
                    buttons[i].type='hidden';
                }
            } catch(e) {
                // var ee = e.message || 0; alert('Error: \n\n'+e+'\n'+ee);
             }
        }
    }, 300);    
}

appendScript();
于 2012-06-13T15:58:26.417 に答える