SalesforceをLightning Experience環境に移行できそうだ
先日DEV460の講習に行ってきたのだけど、Lightning Experience(LEX)対応は時期尚早だと言っていた。
まぁそうは言ってもそのうち対応しなきゃならないのだろうしと思いながらなかなか難しいなと思っていたのだが、作業が一段落した。
リバネスの場合、LEX対応の一番のボトルネックはカスタムボタンで呼び出すJSだ。こいつがあると移行出来ない。
カスタムボタンからのjs呼び出しは、3年前にベンダーの方に作ってもらったものがそのまま設置されているという状況で、正直な話良くわかっていなかったのだがいつまでもそんなことは言っていられない。ということで対応方法。
Onclick Javascriptボタンの代替
方法はこちらを参照:https://support.accorto.com/support/discussions/topics/1000081937
なにが書いてあるかというと、ボタンはそのまま使うのだが、jsじゃなくてリンクにする。
リンクには、Apex classとメソッドと引数を入れるようになっている。
そのリンクを使ってページを開くと、ウィザード的なボタンが配置してあり、startボタンを押すと処理が走るという感じ。
カスタマイズ
onclick javascriptでは、エラーチェックなんかもしていたので、リンクでパラメータを渡してclass側で処理を切り分け、その中で条件判定をするように偏向した。
流れてくるデータによって、エラーがあればstartボタンを非表示にするようにする。
ハマった所
visualforceページにちょっと手を入れている。
<apex:stylesheet value="{!URLFOR($Resource.SLDS214, 'assets/styles/salesforce-lightning-design-system.css')}" />
これでsldsを読み込むようになっているが、現在は仕様が変わったようだ。
visualforceページとapex classの両方のAPIバージョンを39以上に設定する必要があるが、それをやってから
<head></head>の間に <apex:slds /> を追記し、上記スタイルシートの読み込み部分は削除する。
SVGを使っている部分は指定がちょっと違う
<use xlink:href="{!URLFOR($Asset.SLDS, 'assets/icons/standard-sprite/svg/symbols.svg#process')}"></use>
シンプルなonclick jsだったらカスタマイズなしで行ける
課題はそのページに書いてあるとおりで、ウィンドウを手動で閉じる必要があるのと、元のページのリロードが手動になることだが、まあそれくらいだったら許容範囲かなと思いましたとさ。