SharePoint Publishingサイトの電子メールエンコード/デコード
-
05-09-2019 - |
質問
私の会社のウェブサイトで従業員情報のためのSharePoint(Moss)パブリッシングサイトを構築しています。従業員のコンテンツタイプがあり、連絡先電子メールアドレスサイト列を使用して従業員のメールアドレスを保存しています。
私が望むことは、実行時に電子メールアドレスをエンコードして、実際の電子メールアドレスがスパマーによって収穫されないようにすることができることです。これは、ユーザーが電子メールのハイパーリンクをクリックするとデコードされます。たとえば、次のHTMLがブラウザに送信されます。
<a href="javascript:sendEmail('5237952A6F67618E407373772E6063212E6175')">Email Jonny</a>
上記の意味のない文字列からテキスト値をエンコード/デコードするためのJavaScriptメソッドはすでにありますが、SharePointを念頭に置いてこれにアプローチする方法についてはあまり確信がありません。カスタムコントロールやカスタムJクエリを考えていますか?
どんな助けも大歓迎です!
ジョニー
解決
ユーザーを広告に入れることができない場合、 カスタムフィールドコントロール 必要なカスタムレンダリング(jQuery)を含める機能と、「通常の」テキストとしてデータを入力する機能を提供します。
カスタムフィールドは、フィールドを表示する必要がある場合でも「Just Works」と定義されたものです。
JQueryの使用を考えていることを考えると、このタイプのフィールドが必要なときにいつでもJqueryライブラリが正しくリンクされていることを確認する問題の1つになります。
他のヒント
サイトの従業員を作成すると、SharePointがこの問題を処理します。
メールを送信できますが、メールアドレスは送信時にのみ使用されます。ボタンを追加して誰かにメールを送信すると、バックエンドで処理されたメールアドレスが表示されません。
SPUtility.SendEmail(SPContext.Current.Web, false, false,
[SPUser.Email][1], "E-mail title",
"E-mail body");
(ソース: msdn.com)
試してみることができる2つのオプション/アプローチ:
(1)Microsoft.SharePoint.WebControls.TextFieldから継承するカスタムTextFieldコントロールを実装し、RenderFieldFordisPlayをオーバーライドする
次に、コード - ディスプレイ用のフィールドをエンコードします。
このコントロールをSafeControlsに追加し、PageLayoutの通常のテキストフィールドの代わりにこれを使用します。
(2)既存のTextfieldコントロールを使用しますが、editModeのTextfieldの横にあるjQueryを使用して[エンコード]ボタンを挿入します。
JavaScriptエンコードメソッドを使用して、ユーザーが入力したものをエンコードされた値にエンコードし、既存のTextField値を置き換えます。その後、SharePointに保存できます。
展開シナリオに基づいてアプローチを評価します - Nat's Oneは最もクリーンですが、おそらく展開に関与しています。オーバーライドのテキストフィールドアプローチは、おそらく真ん中のどこかに座るでしょう。