• t.ishibuchi
  • NEWBIE
  • 30 Points
  • Member since 2013

  • Chatter
    Feed
  • 1
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 7
    Questions
  • 13
    Replies
大変お世話になっております。t.ishibuchiと申します。

本番環境にアップロードしたCSSファイルがブラウザで正常に読み込まれない、という事象が発生しました。

その原因・対策について、ご助言頂けましたら幸いでございます。


**************************************
▼事象
VFページから静的リソース上のCSSファイルを読み込むようにしております。
また、Force.com サイトにてそのページを公開しています。

先日(2014/9/2)そのCSSを編集し、リリースを行った際に、
本番環境にアップロードされた該当のCSSファイルがブラウザで読み込まれておらず、
それが原因でSandbox環境と比べて画面レイアウトが崩れてしまうという事象が発生しました。

なお、アクセスしたデバイスによってCSSを切り替えるように、
VFには以下のように実装しています。

--VFページ-------------------------------------------------------------------

<script type="text/javascript">
    <!-- css切り替え -->
    (function(){
        var device = navigator.userAgent;
        if((device.indexOf('iPhone') > 0 && device.indexOf('iPad') == -1) || device.indexOf('iPod') > 0 || device.indexOf('Android') > 0){
            document.write('<link class="user" href="/resource/css_sp" rel="stylesheet" type="text/css" />');
        }
        else{
            document.write('<link class="user" href="/resource/css_pc" rel="stylesheet" type="text/css" />');
        }
    })();
</script>

----------------------------------------------------------------------------


**************************************
▼対応
CSSファイル名称を変更して新規に作成し(中身は同一)、該当の画面でそのファイルを読み込むように修正をしたところ、思惑通りの画面レイアウトが正常に表示されました。

なお、上記VF内記載のスクリプトは、以下のように修正し、新規のCSSを呼び出すようにしました。
(CSSファイルは、「css_pc.css」をコピーし、名称を「css_pc_20140903.css」に変更してアップロードしています。「css_sp.css」も同様)

--VFページ-------------------------------------------------------------------

document.write('<link class="user" href="/resource/css_pc" rel="stylesheet" type="text/css" />');

↓修正↓

document.write('<link class="user" href="/resource/css_pc_20140903" rel="stylesheet" type="text/css" />');

----------------------------------------------------------------------------


**************************************
▼望ましい動作
上記対応を行わなくとも(同名のCSSファイルを更新してリリースしただけで)、本番環境にリリースした最新のCSSが読み込まれることが望ましい動作です。


**************************************


あくまで推測ですが、キャッシュサーバ上にあった、古いCSSが読み込まれていた為、レイアウト崩れが発生していたのでは?と思いました。

因みにですが、Sandbox環境のCSSを更新した場合は即座にそのCSSが読み込まれますし、
本番環境においても今回のリリース時に初めて、最新のリリースしたCSSが読み込まれないという事象が発生しました。

もし本事象の原因およびその対策につきまして、お分かりになる方いらっしゃいましたらご教示頂けますでしょうか。

いつも大変お世話になっております。

 

現在、Visualforce画面からメールアドレスとパスワードを入力して
Apexでユーザを作成(更新)する、ユーザ登録(更新)のような機能を実装しております。

 

ユーザのメールアドレスとパスワードを登録(更新)する処理はできたのですが、
メールアドレスが実際に使用できる(メールの送受信ができる)メールアドレスなのかを
チェックする必要があり、その方法をどのようにしたら良いか悩んでおります。

 

最初は、メールが届かなかったことを検地してエラーメッセージを出せれば良いかと考えたのですが、
http://deferloader.blog.uhuru.co.jp/?p=1112
上記サイトに「不達と判断されるには場合によっては数時間くらいかかる場合もあります」ともありますし、
やはり不達であったことを検地してすぐエラーメッセージを表示させるような処理は無理そうだという結論になりました。

 

次に考えた案として、Visualforce画面に入力したメールアドレスに
ユーザ登録とログインを行えるような暗号化したパラメータつきのURLを送信し、
そのURLをクリックすることでユーザ登録が完了するような実装を考えたのですが、
そのような実装は可能でしょうか?
Webサイトのユーザ登録によくあるような、
メールを確認して本登録を行うような処理を実装したいです。

 

実装方法や標準機能で同じようなことが可能か等、
ご存知の方がいらっしゃいましたらご教授頂きたいです。

どうぞ宜しくお願い致します。

お世話になっております。

カスタマーポータルサイトとForce.comサイトから
添付ファイル(Attachment)を参照したいと考えております。

いままでは、

-----Apexクラス-------------------------
public String getFileURL() {
    //添付ファイルのID
    String file_id = [SELECT Id FROM Attachment WHERE ParentId = 添付ファイルのあるレコードのID].Id
    //ベースURL
    String baseURL = URL.getSalesforceBaseUrl().toExternalForm();
    //添付ファイルのURL
    String file_URL = baseURL + '/servlet/servlet.FileDownload?file=' + file_id;
    return file_URL;
}
----------------------------------------

-----Visualforceページ-------------------
<apex:form >
        <apex:image url="{!FileURL}" />
</apex:form>
-----------------------------------------

の様に実装し、
管理者設定→セキュリティのコントロール→共有設定→組織の共有設定で、
添付ファイルのあるオブジェクトを「公開/参照」にすると添付ファイルが表示されていたのですが、
「非公開」にすると表示されなくなってしましました。

オブジェクトの共有設定を「非公開」にした状態で、
オブジェクトのレコードの内容をApexからVisualforceに表示させることは出来ているのですが、
オブジェクトの共有設定を「非公開」にした状態で、
オブジェクトの添付ファイルを表示させるにはどのようにすれば良いのでしょうか。

他の方法でも、カスタマーポータルサイトとForce.comサイトで添付ファイルを表示する方法を
ご存知でしたらご教授頂きたいです。

どうぞ宜しくお願い致します。

 

 

お世話になっております。

カスタマーポータルユーザのパスワードを事前設定したいと考えております。

カスタマーポータルのユーザアカウントにパスワードを事前設定
http://deferloader.blog.uhuru.co.jp/?p=476

上記サイトに、
『WebサービスAPI経由でsetpassword()というメソッドを使うことで、
ユーザパスワードを設定することが可能です。』
と書いてあるのですが、パスワードの設定はWebサービスAPI経由でないと行えないのでしょうか?
Apexでパスワードの設定を行うということは不可能なのでしょうか?

Force.com Web Service API Developer's Guideにも、
APIのsetPassword()についてしか書かれていませんでした。

Force.com Web Service API Developer's Guide
『セキュリティ上の理由で、API またはSalesforce.com ユーザインターフェースを
使用してユーザのパスワードを問い合わせできません。
ただし、API で、setPassword() コールおよびresetPassword() コールを使用して
ユーザパスワードを設定および「リセット」することができます。
パスワードのロックアウト状況およびユーザのロックアウトされた状況をリセットする
機能は、API で使用できません。
Salesforce.comユーザインターフェースを使用して、
ユーザパスワードのロックアウト状況をチェックおよびリセットする必要があります。』

Apexでパスワードの設定を行う方法、
またその可否についてご存知でしたらご教授頂けると幸いです。

宜しくお願い致します。

お世話になっております。

カスタマーポータルユーザをCSVから一括で登録したいと考えております。

現在は、
Data Loaderで取引先責任者(Contact)にCSVファイル経由でユーザ情報を登録し、
1.取引先責任者ごとにUI上で[外部ユーザの管理]>[カスタマーユーザを有効化]で
  カスタマーポータルユーザ化する
2.取引先責任者のリストビューにカスタムボタンを作成し、
  チェックボックスにチェックを入れてカスタムボタンをクリックすることでApexを呼び出し、
  チェックボックスにチェックを入たユーザをカスタマーユーザ化する
  参考:Apex でカスタマポータルユーザを作成したい
        http://vaindespair.blogspot.jp/2012/02/blog-post.html

1の方法はユーザごとにUI上で操作しなくてはいけなく、
手間がかかるのでできれば違う方法で実装したいと考えています。
2の方法は現在調査中で、恐らく実装可能とは考えているのですが、
Data Loaderで取引先責任者情報をインポートした後にUIから
カスタマーポータルユーザ化したい取引先責任者のチェックボックスにチェックを入れて
カスタマーポータルユーザ化するのも少し手間がかかると考えています。

なのでできれば、
Data Loaderでユーザ情報をインポートしただけでカスタマーポータルユーザ化
(カスタマーポータルユーザとしてインポート)するような実装方法が理想なのですが、
その様な実装は可能でしょうか?

上手い実装方法が分からないので、

なるべく手間がかからずカスタマーポータルユーザをCSVから登録できる方法をご教授頂きたいです。

宜しくお願い致します。

いつもお世話になっております。

Force.com SitesのChangePasswordController(パスワード変更用コントローラー)のchangePasswordメソッドで、
パスワードの変更が成功したときにVisualforceページに遷移させる方法をご教授頂きたいです。

 

 

*****以下、長くなってしまいますが、詳細です。*************************

以下のサイトを参考にさせて頂き、ポータルとForce.com Sitesを関連付けることで
Force.com Sitesに配置したログイン画面からポータルにログインできるようにしました。
http://blog.flect.co.jp/salesforce/2011/07/post-9fd5.html
また、サイトに書いてあるように、
SiteLoginController(ログイン画面用コントローラー)のloginメソッド
----------------------------------------
global PageReference login() {
    String startUrl = System.currentPageReference().getParameters().get('startURL');
    return Site.login(username, password, startUrl);
}
----------------------------------------
を、↓↓↓
----------------------------------------
global PageReference login() {
    return Site.login(username, password, '/home/home.jsp');
}
----------------------------------------
と変更することでログイン後、ポータルのホーム画面に遷移するようにでき、
「'/home/home.jsp'」の部分を「'/apex/【Visualforceページ名】'」
と変更することでログイン後にVisualforceのページに遷移させることができました。

同様に、
ChangePasswordController(パスワード変更用コントローラー)のchangePasswordメソッドで、
パスワードの変更が成功したときにVisualforceページに遷移するよう実装したいと考えているのですが、上手く実装できませんでした。
----------------------------------------
public PageReference changePassword() {
    return Site.changePassword(newPassword, verifyNewPassword, oldpassword);
}
----------------------------------------
を、
http://boards.developerforce.com/t5/Apex-Code-Development/Unit-Test-in-Apex-Code-Help/td-p/257565
を参考に、↓↓↓
----------------------------------------
public PageReference changePassword(){
    Site.changePassword(newPassword, verifyNewPassword, oldpassword);
    String s = Site.getOriginalUrl();
    //エラーでないとき
    if(s!=null) {
        //Visualforceページに遷移
        PageReference p = new PageReference('/apex/【Visualforceページ名】');
        p.setRedirect(true);
        return p;
    }
    //エラーのとき
    else {
        //遷移しない
        return null;
    }
}
----------------------------------------
のようにエラー判定しようと試みたのですが、上手くエラー判定できませんでした。

エラー判定の方法が上手くできていないのかと思っているのですが、
パスワードの変更が成功したときにVisualforceページに遷移する方法をご教授頂きたいです。
宜しくお願い致します。

 

Visualforceでログイン履歴(ユーザのログイン状況)を表示したいと考えています。

 

[ 管理者設定 ] [ ユーザの管理 ] [ ログイン履歴 ]で見ることができるような、ログイン履歴に関する情報を

Visualforceに表示することは可能でしょうか?

 

ログイン履歴などの情報をApexで取得し、Visualforceに表示できると良いのかと考え、

ログイン履歴などに関するAPI参照名等を探したのですが、見つけることができませんでした。

 

Visualforceでログイン履歴を表示する方法、またはそのようなことは実装不可であること等

をご存知の方がいらっしゃいましたら、ご教授を宜しくお願いいたします。

大変お世話になっております。t.ishibuchiと申します。

本番環境にアップロードしたCSSファイルがブラウザで正常に読み込まれない、という事象が発生しました。

その原因・対策について、ご助言頂けましたら幸いでございます。


**************************************
▼事象
VFページから静的リソース上のCSSファイルを読み込むようにしております。
また、Force.com サイトにてそのページを公開しています。

先日(2014/9/2)そのCSSを編集し、リリースを行った際に、
本番環境にアップロードされた該当のCSSファイルがブラウザで読み込まれておらず、
それが原因でSandbox環境と比べて画面レイアウトが崩れてしまうという事象が発生しました。

なお、アクセスしたデバイスによってCSSを切り替えるように、
VFには以下のように実装しています。

--VFページ-------------------------------------------------------------------

<script type="text/javascript">
    <!-- css切り替え -->
    (function(){
        var device = navigator.userAgent;
        if((device.indexOf('iPhone') > 0 && device.indexOf('iPad') == -1) || device.indexOf('iPod') > 0 || device.indexOf('Android') > 0){
            document.write('<link class="user" href="/resource/css_sp" rel="stylesheet" type="text/css" />');
        }
        else{
            document.write('<link class="user" href="/resource/css_pc" rel="stylesheet" type="text/css" />');
        }
    })();
</script>

----------------------------------------------------------------------------


**************************************
▼対応
CSSファイル名称を変更して新規に作成し(中身は同一)、該当の画面でそのファイルを読み込むように修正をしたところ、思惑通りの画面レイアウトが正常に表示されました。

なお、上記VF内記載のスクリプトは、以下のように修正し、新規のCSSを呼び出すようにしました。
(CSSファイルは、「css_pc.css」をコピーし、名称を「css_pc_20140903.css」に変更してアップロードしています。「css_sp.css」も同様)

--VFページ-------------------------------------------------------------------

document.write('<link class="user" href="/resource/css_pc" rel="stylesheet" type="text/css" />');

↓修正↓

document.write('<link class="user" href="/resource/css_pc_20140903" rel="stylesheet" type="text/css" />');

----------------------------------------------------------------------------


**************************************
▼望ましい動作
上記対応を行わなくとも(同名のCSSファイルを更新してリリースしただけで)、本番環境にリリースした最新のCSSが読み込まれることが望ましい動作です。


**************************************


あくまで推測ですが、キャッシュサーバ上にあった、古いCSSが読み込まれていた為、レイアウト崩れが発生していたのでは?と思いました。

因みにですが、Sandbox環境のCSSを更新した場合は即座にそのCSSが読み込まれますし、
本番環境においても今回のリリース時に初めて、最新のリリースしたCSSが読み込まれないという事象が発生しました。

もし本事象の原因およびその対策につきまして、お分かりになる方いらっしゃいましたらご教示頂けますでしょうか。

いつも大変お世話になっております。

 

現在、Visualforce画面からメールアドレスとパスワードを入力して
Apexでユーザを作成(更新)する、ユーザ登録(更新)のような機能を実装しております。

 

ユーザのメールアドレスとパスワードを登録(更新)する処理はできたのですが、
メールアドレスが実際に使用できる(メールの送受信ができる)メールアドレスなのかを
チェックする必要があり、その方法をどのようにしたら良いか悩んでおります。

 

最初は、メールが届かなかったことを検地してエラーメッセージを出せれば良いかと考えたのですが、
http://deferloader.blog.uhuru.co.jp/?p=1112
上記サイトに「不達と判断されるには場合によっては数時間くらいかかる場合もあります」ともありますし、
やはり不達であったことを検地してすぐエラーメッセージを表示させるような処理は無理そうだという結論になりました。

 

次に考えた案として、Visualforce画面に入力したメールアドレスに
ユーザ登録とログインを行えるような暗号化したパラメータつきのURLを送信し、
そのURLをクリックすることでユーザ登録が完了するような実装を考えたのですが、
そのような実装は可能でしょうか?
Webサイトのユーザ登録によくあるような、
メールを確認して本登録を行うような処理を実装したいです。

 

実装方法や標準機能で同じようなことが可能か等、
ご存知の方がいらっしゃいましたらご教授頂きたいです。

どうぞ宜しくお願い致します。

お世話になっております。

カスタマーポータルサイトとForce.comサイトから
添付ファイル(Attachment)を参照したいと考えております。

いままでは、

-----Apexクラス-------------------------
public String getFileURL() {
    //添付ファイルのID
    String file_id = [SELECT Id FROM Attachment WHERE ParentId = 添付ファイルのあるレコードのID].Id
    //ベースURL
    String baseURL = URL.getSalesforceBaseUrl().toExternalForm();
    //添付ファイルのURL
    String file_URL = baseURL + '/servlet/servlet.FileDownload?file=' + file_id;
    return file_URL;
}
----------------------------------------

-----Visualforceページ-------------------
<apex:form >
        <apex:image url="{!FileURL}" />
</apex:form>
-----------------------------------------

の様に実装し、
管理者設定→セキュリティのコントロール→共有設定→組織の共有設定で、
添付ファイルのあるオブジェクトを「公開/参照」にすると添付ファイルが表示されていたのですが、
「非公開」にすると表示されなくなってしましました。

オブジェクトの共有設定を「非公開」にした状態で、
オブジェクトのレコードの内容をApexからVisualforceに表示させることは出来ているのですが、
オブジェクトの共有設定を「非公開」にした状態で、
オブジェクトの添付ファイルを表示させるにはどのようにすれば良いのでしょうか。

他の方法でも、カスタマーポータルサイトとForce.comサイトで添付ファイルを表示する方法を
ご存知でしたらご教授頂きたいです。

どうぞ宜しくお願い致します。

 

 

お世話になっております。

カスタマーポータルユーザのパスワードを事前設定したいと考えております。

カスタマーポータルのユーザアカウントにパスワードを事前設定
http://deferloader.blog.uhuru.co.jp/?p=476

上記サイトに、
『WebサービスAPI経由でsetpassword()というメソッドを使うことで、
ユーザパスワードを設定することが可能です。』
と書いてあるのですが、パスワードの設定はWebサービスAPI経由でないと行えないのでしょうか?
Apexでパスワードの設定を行うということは不可能なのでしょうか?

Force.com Web Service API Developer's Guideにも、
APIのsetPassword()についてしか書かれていませんでした。

Force.com Web Service API Developer's Guide
『セキュリティ上の理由で、API またはSalesforce.com ユーザインターフェースを
使用してユーザのパスワードを問い合わせできません。
ただし、API で、setPassword() コールおよびresetPassword() コールを使用して
ユーザパスワードを設定および「リセット」することができます。
パスワードのロックアウト状況およびユーザのロックアウトされた状況をリセットする
機能は、API で使用できません。
Salesforce.comユーザインターフェースを使用して、
ユーザパスワードのロックアウト状況をチェックおよびリセットする必要があります。』

Apexでパスワードの設定を行う方法、
またその可否についてご存知でしたらご教授頂けると幸いです。

宜しくお願い致します。

いつもお世話になっております。

Force.com SitesのChangePasswordController(パスワード変更用コントローラー)のchangePasswordメソッドで、
パスワードの変更が成功したときにVisualforceページに遷移させる方法をご教授頂きたいです。

 

 

*****以下、長くなってしまいますが、詳細です。*************************

以下のサイトを参考にさせて頂き、ポータルとForce.com Sitesを関連付けることで
Force.com Sitesに配置したログイン画面からポータルにログインできるようにしました。
http://blog.flect.co.jp/salesforce/2011/07/post-9fd5.html
また、サイトに書いてあるように、
SiteLoginController(ログイン画面用コントローラー)のloginメソッド
----------------------------------------
global PageReference login() {
    String startUrl = System.currentPageReference().getParameters().get('startURL');
    return Site.login(username, password, startUrl);
}
----------------------------------------
を、↓↓↓
----------------------------------------
global PageReference login() {
    return Site.login(username, password, '/home/home.jsp');
}
----------------------------------------
と変更することでログイン後、ポータルのホーム画面に遷移するようにでき、
「'/home/home.jsp'」の部分を「'/apex/【Visualforceページ名】'」
と変更することでログイン後にVisualforceのページに遷移させることができました。

同様に、
ChangePasswordController(パスワード変更用コントローラー)のchangePasswordメソッドで、
パスワードの変更が成功したときにVisualforceページに遷移するよう実装したいと考えているのですが、上手く実装できませんでした。
----------------------------------------
public PageReference changePassword() {
    return Site.changePassword(newPassword, verifyNewPassword, oldpassword);
}
----------------------------------------
を、
http://boards.developerforce.com/t5/Apex-Code-Development/Unit-Test-in-Apex-Code-Help/td-p/257565
を参考に、↓↓↓
----------------------------------------
public PageReference changePassword(){
    Site.changePassword(newPassword, verifyNewPassword, oldpassword);
    String s = Site.getOriginalUrl();
    //エラーでないとき
    if(s!=null) {
        //Visualforceページに遷移
        PageReference p = new PageReference('/apex/【Visualforceページ名】');
        p.setRedirect(true);
        return p;
    }
    //エラーのとき
    else {
        //遷移しない
        return null;
    }
}
----------------------------------------
のようにエラー判定しようと試みたのですが、上手くエラー判定できませんでした。

エラー判定の方法が上手くできていないのかと思っているのですが、
パスワードの変更が成功したときにVisualforceページに遷移する方法をご教授頂きたいです。
宜しくお願い致します。

 

Visualforceでログイン履歴(ユーザのログイン状況)を表示したいと考えています。

 

[ 管理者設定 ] [ ユーザの管理 ] [ ログイン履歴 ]で見ることができるような、ログイン履歴に関する情報を

Visualforceに表示することは可能でしょうか?

 

ログイン履歴などの情報をApexで取得し、Visualforceに表示できると良いのかと考え、

ログイン履歴などに関するAPI参照名等を探したのですが、見つけることができませんでした。

 

Visualforceでログイン履歴を表示する方法、またはそのようなことは実装不可であること等

をご存知の方がいらっしゃいましたら、ご教授を宜しくお願いいたします。