クリスマスに来年の夏のことを考えよう(ホームページコンポーネントの重要な変更)

waves-surfing-Santa

話題のSalesforce Analytics Cloudのプラットフォーム「Wave」の記事では、ありません。 突然ですが、皆様この事実をご存じですか?

Summer '14 以降のホームページコンポーネントの変更について https://help.salesforce.com/apex/HTViewSolution?urlname=Home-Page-Components-Changes-Starting-Summer-14&language=ja&elq_mid=6578&elq_cid=19652239

上から順に詳しく読んでみましょう。

1. この変更のスケジュールは?
Summer '14 リリース以降、アーキテクチャのベストプラクティスへの準拠性を高めるためにホームページコンポーネントの変更が行われます。 Summer '15 リリース* までの期間に追加の変更を段階的にロールアウトする予定です。 * 現時点では 2015 年 6 月を予定していますが、変更される可能性もあります。

何かよくわかりませんが、ホームページHTMLコンポーネントが、 もう既にSummer'14から大きな変更があったようで、

2.自分の HTML ホームページコンポーネントに JavaScript が含まれているかどうかを調べる方法は?
ホームページコンポーネントで JavaScript を使用しているかどうかわからない場合は、カスタムホームページコンポーネントの編集を試みることで発見できます。結果は、次の 2 つのいずれかになります。 画面に次のバナーが表示される場合、ホームページコンポーネントに JavaScript を使用したカスタマイズか、その他のマークアップホワイトリストに適合しないマークアップが含まれていることを意味します。この場合、Visualforce に移行する必要があります。Summer '15 リリース後、該当するカスタマイズは機能を停止します。 画面に次の新しいコンポーネントエディタインターフェースが表示される場合、カスタムホームページコンポーネントにJavaScript やその他の任意のマークアップは含まれていないことを意味します。この場合、カスタマイズでは新しいリッチテキストエディタの使用が開始されます。

利用中のHTML ホームページコンポーネントにJavaScriptが含まれてると何か影響を受けるようですね。それを調べる方法が記載されています。 ↓現在お使いのHTML ホームページコンポーネントを開いて見てください。 このようなメッセージがでていると、「ダダーン!! アウト~」です。cs5  カスタムコンポーネントの編集   Salesforce   Unlimited Edition

↓このような状態であれば、特に何もする必要はありません。cs5  カスタムコンポーネントの編集   Salesforce   Unlimited Edition2

アウトな場合(利用中のHTML ホームページコンポーネントにJavaScriptが含まれてる)は、 Visualforceに移行する必要があるそうですが、なぜ?!

3. 変更点は?
Summer '14 リリースでは、次のような複数の変更が行われます。新しく作成される HTML ホームページコンポーネントでは新しいエディタが使用されます。 このエディタでは、旧エディタに比べてオプション (テーブルなど) が増えますが、JavaScriptや任意のマークアップを入力するための [View HTML (HTML の表示)] ボタンがなくなります。 これにより、HTML ホームページコンポーネントには、セキュリティ担当部門によってホワイトリスト登録されたマークアップのみが含まれることになります。

いよいよ核心です。新しく作るHTML ホームページコンポーネントでは、リッチテキスト・エディターで実装できるものしか表現できず。HTMLタグベースでコーディングできくなります。でも、今まで作ったものはどうなるんだろう。。。

Summer '14 より前に作成された HTML ホームページコンポーネントがマークアップホワイトリストに適合した場合、編集時に新しいリッチテキストエディタが使用されます。

変換してくれるんですね。 なるほど。じゃあ、マークアップホワイトリストに適合しないもの(JavaScriptやiframeを埋め込んだHTML)はどうなるんだろう。。。

Summer '14 より前に作成された HTML ホームページコンポーネントがマークアップホワイトリストに適合しない場合、編集時には引き続き旧エディタが使用されます。 注意: エディタには、ホームページコンポーネントに無効なマークアップが含まれていることを示す警告バナーが表示されます。

編集時には引き続き旧エディタが使えるのか。じゃあ今のところはそのままで大丈夫そうだ。

Summer '15 リリースでは、次のような変更も行われます。 ホワイトリストに適合しない HTML ホームページコンポーネントは、編集後に保存されなくなります。実行時に、ホワイトリストに登録されていないマークアップを含む HTML ホームページコンポーネントはページに表示されなくなります。

ぎやーーーーー Summer'15から動かなくなるんだ!!!!早くVisualforceに置き換えなきゃ!

4.Visualforce ホームページコンポーネントの仕組みは?
Visualforce ホームページコンポーネントを使用すると、Visualforce ページをホームページ、または他のページのサイドバーのどちらに表示するかを指定できます。Visualforce ホームページのコンポーネントには次の機能があります。ホームページレイアウトの狭い列または広い列に追加できます。標準コントローラまたはカスタムコントローラを使用できます。

新規カスタムコンポーネントの追加でVisualforceエリアが選択できるようになっています。3cs5  新規カスタムコンポーネント   Salesforce   Unlimited Edition

Visualforceが選択できますので、これを使えば、いろいろできそうですね!!4cs5  新規カスタムコンポーネント   Salesforce   Unlimited Edition

ホームページレイアウト内の iframe に表示されます。iframe は列 (狭い列または広い列) の幅いっぱいを占め、高さは設計時にユーザが指定します。 Visualforce ホームページコンポーネントが狭い列にあり、すべてのページに含まれる場合は、レコードの ID JavaScript が含まれる場合があります。ただし、Visualforce ページは異なるドメインで提供されるため、この JavaScript は iframe が含まれるページを操作できません。

選択したVisualforceは、iframe内で表示され、なおかつ別ドメイン(visual.force.com)で提供される。。。 嫌な予感。。。

5. Visualforce ホームページコンポーネントを使用し、表示中のレコード/タブに応じてサイドバーに異なる情報を表示できますか?
はい、表示されるコンテンツがサイドバーの iframe 内に含まれている限り可能です。 たとえば、表示しているのが取引先か商談かに応じて変化するリンクのリストがある場合、Visualforce ホームページコンポーネントを使用できます。

使えそうですね。これは分かった!

6.一部のページのサイドバーには表示され、他のページには表示されないように Visualforce ホームページコンポーネントを使用できますか?
いいえ、ユーザインターフェース設定で選択できるのは、サイドバーコンポーネントをホームページのみに表示するか、すべてのページに表示するかです。コンポーネントをすべてのページに表示する場合、レコード詳細ページにのみ表示するようなことはできません。

これも、わかった!!。

7.Visualforce ホームページコンポーネントで JavaScript を使用できますか?
はい、ホームページコンポーネントで使用される Visualforce ページには、タブで使用される Visualforce ページと比べて追加の制限はありません([ヘルプ & トレーニング] の「Visualforce ページでの JavaScript の使用」を参照)。ただし、JavaScript は iframe 外の要素を操作できません。

できるということですが、iframeかつ別ドメインでの提供なので、 iframe 外の要素を操作できません。 したがって、iframe内で完結するような、例えば、以下の様なサイドバーで今日の日付を表示するようなものであれば問題ありません。(これはVisualforceコンポーネントで置き換え可能)

しかし、例えば、お客様の強い要望を実現するのに、標準ページのミニカレンダーの年月を過去5年以上表示したり、保存&作成ボタンを消したり、オートコンプリートのようなものを実装しているものは動かなくなります、、、、、 このような、Javscriptをサイドバーに実装していることはないですか? ミニカレンダーの年月を5年以上表示する

保存&新規作成ボタンを消す

8.レコード詳細ページで Visualforce ホームページコンポーネントの JavaScript を使用してコンテンツを表示したり、非表示にしたりできますか?
いいえ、Visualforce ページは、異なるドメインで提供されており、iframe 内に表示されます。salesforce.com ドメインで提供されるページを操作することはできません。

ぐ、、、念押しされてます。。。標準ページを操作するようなものは動作しません。。

9. レコード詳細ページのヘッダーやその他の要素のスタイルを変更する場合、Visualforce ホームページコンポーネントの JavaScript を使用できますか?
いいえ、Visualforce ページは、異なるドメインで提供されており、iframe 内に表示されます。salesforce.com ドメインで提供されるページを操作することはできません。

さらに、念押し、、、わかりました!!

10. HTML ホームページコンポーネントが iframe を使用して Visualforce ページ以外のページを参照したらどうなりますか?
新しい HTML エディタのホワイトリスト登録されたマークアップでは、iframe は許可されません。Visualforce ホームページコンポーネントを作成し、Visualforce ページ内から別のページにリダイレクトできます。

iframeも動かなくなりますが、これは、Visualforce コンポーネントに置き換えましょう。

11.HTML ホームページコンポーネントの JavaScript を利用するために Salesforce をカスタマイズしましたが、この変更により、カスタマイズ内容の多くが除外されます。カスタマイズ内容が除外されないようにする方法は?
この変更により、お客様にご不便をお掛けする可能性があることを認識しておりますが、カスタマイズ内容が除外されないようにすることはできません。 そのため、段階的アプローチにより、HTML ホームページコンポーネントを Visualforce ホームページコンポーネントに置き換える期間を設けています。Salesforce では、HTML ホームページコンポーネントでの JavaScript の使用の推奨やサポートは、これまでも現在もしておりません (特に JavaScript を使用して Salesforce で提供されるマークアップを操作する場合は)。これは、リリースが変わるとページマークアップが変わる可能性があるためです。

さらに、さらに念押し、、サイドバーにJavaScriptを埋め込んで標準ページの機能を操作するようなことは、 これまでも、現在も推奨及びサポートはしておりません。

あと、今回のホームページコンポーネントに関する変更は、 HTMLエリアコンポーネントに関するものとなり、標準で用意されている「お知らせ」コンポーネントに適用されるものではないため、Summer'14以降 でも「お知らせコンポーネント」内では JavaScript の実行が可能となっているようです。しかしながら、基本的にはこちらもJavaScriptを埋め込んで標準ページの機能を操作するようなことは、現在も推奨及びサポートはしておりませんので、実装の際は、必ずユーザ様に合意を得た上でお使いになることを強くオススメいたします。