リスト ビュー Web パーツを他サイトで利用したい

以前本 Blog で 「SharePoint 2013 リスト ビュー Web パーツを他のサイトでどうしたも使いたい」 という記事を UP したことがありますが、今回は同様のことを SharePoint Designer を利用して行う方法のご紹介です。
(1/30 (土) の Japan SharePoint Group 勉強会の LT でお話しさせていただい他内容です)

SharePoint 2010、2013 両方で同じことできます。

1.まずトップページでもどこでもいいので、リストやライブラリを Web パーツとして貼り付けて、[現在のビューの編集] とかツールバーの種類とか、タイトル等の設定を行います。
2.SharePoint Designer でサイトを開き、リスト ビュー Web パーツを貼り付けたページを開きます。
     
3.コード内から対象のリスト ビュー Web パーツを探します。

リスト ビュー Web パーツの開始タグは、<WebPartPages:XsltListViewWebPart runat="ser・・・ からはじまるので、うまくコード内を検索して探してください。
同じページ内にリスト ビュー Web パーツが複数あれば、その分だけ <WebPartPages:XsltListViewWebPart runat="ser ・・ から始まるタグがあります。
その場合、開始タグにマウスカーソル合わせておいて、リボンの [Web パーツ ツール] – [書式] タブ内で、Web パーツのタイトルが確認できます。
  image

4.2010 だとここでリボン内に [リスト ビュー ツール] タブが表示されるので、この手順4はスキップしてください。

2013 の場合、[リスト ビュー ツール] タブを表示するため、[プロパティ] をクリックします。
  image
ブラウザーで利用できる Web パーツの編集画面と同様の画面がダイアログで開くため、なにも変更せず [OK] をクリックします。
    image
その後再度リスト ビュー Web パーツの開始タグコードにマウス カーソルを合わせると、リボンに [リスト ビュー ツール] タブがでてきます。
   

5.[リスト ビュー ツール] – [Web パーツ] タブ内の [サイト ギャラリーへ] をクリックします。  
   image  
6.[サイト ギャラリーへの Web パーツの保存] ダイアログが表示されます。
      名前はエンコードされるので半角で付け直したほうがいいです。[OK] をクリックします。 
7.次のような絶対パスでリストを参照していいかどうか確認するダイアログが表示されるため、[はい] をクリックします。
   image 
8.SharePoint Designer は閉じて OK です。操作で利用したページは保存する必要ありません。
9.同じサイト コレクション内の他サイトを開き、Web パーツを配置する際、[その他] カテゴリーより、配置できます。
   image      

  • SPD でサイト ギャラリーに保存した Web パーツを [その他] カテゴリーから消したい場合、Web パーツ ギャラリーより削除ください。
  • Web パーツ ギャラリーから webpart ファイルをダウンロードし、他サイト コレクションの Web パーツ ギャラリーに UP しても、他サイト コレクションでは利用できません。
    奥田 Bunny
広告

SharePoint Designer でお知らせ 表示フォーム デザイン変更例

SharePoint Designer でお知らせ リストの表示フォームのデザインを次のように変更する例です
<SharePoint 2010 例
>
image

下記手順は SharePoint Designer 2010 のものですが、SharePoint Designer 2013 でもデザインビューは利用できませんが、コードレベルで同様のことは可能です。
<SharePoint 2013 例>
image

■ 参考手順

1.SharePoint Designer 2010 で対象リストの [フォーム] 一覧を開きます。
リボンから [表示用のフォーム] をクリックします
image
2.[新しいリスト フォームの作成] ダイアログが開くので、ファイル名を任意につけ、[OK] をクリックします。
     image
3.作成したリストフォーム (aspx ファイル) をクリックしてエディターで開きます。 [デザイン] モードに切り替えます。
4.表示フォーム内容の上下に [閉じる] ボタンが用意されていますが、フォーム内容が少ない (縦幅がそんなに多くない)
ため、上部の [閉じる] ボタン は削除したいと思います。
[閉じる] ボタンが表示されている行を範囲選択し、右クリック ― [削除] – [行の削除] をクリックします。
5.ラベル部分の列を削除します。ラベル内容を右クリック – [削除] – [列の削除] をクリックします。
image
image
6.[分割] モードに切り替え、デザイン画面内で [タイトル] をクリックし、タイトル欄に相当するソースコードを探します。
image
7.タイトル欄に相当するソースコードを次のように変更します。 

<変更前>
<td width=”400px” valign=”top” class=”ms-formbody”>
<xsl:value-of select=”@Title” /></td>

<変更後>
<td style=”padding:5px”>
<p style=”font-family: Meiryo UI; font-size: 14px; border-bottom: dotted 1px #000088; border-left: solid 8px #000088;padding-left:10px”><xsl:value-of select=”@Title” /></p></td>

8.デザイン画面内で [本文] をクリックし、本文欄に相当するソースコードを探します。
image
9. 本文欄に相当するソース コードを次のように変更します。   

<変更前>
<td width=”400px” valign=”top” class=”ms-formbody”>
<xsl:value-of select=”@Body” disable-output-escaping=”yes” /></td>

<変更後>
<td style=”padding-left:10px; font-family: Meiryo UI;”>
<xsl:value-of select=”@Body” disable-output-escaping=”yes” /></td>

10. デザイン画面内で [有効期限] をクリックし、有効期限欄に相当するソースコードを探します。
11. 有効期限欄に相当するソース コード を次のように変更します。     

<変更前>
<td width=”400px” valign=”top” class=”ms-formbody”>
<xsl:value-of select=”@Expires” /></td>

<変更後>
<td style=”padding-right:20px;text-align:right;font-family: Meiryo UI;”>
有効期限:<xsl:value-of select=”ddwrt:FormatDate(string(@Expires) ,1041 ,3)” /> </td>

12. リボンを非表示とするためスタイルを追加します。リボン内の [ホーム] タブの [詳細モード] をクリックします。
13. ソースコード内で、PlaceHolderBodyAreaClass という ID の ContentPlaceHolder タグ内のスタイル タグに、
スタイルを追加します。(赤字部分)     

<asp:Content ContentPlaceHolderId=”PlaceHolderBodyAreaClass” runat=”server”>
<style type=”text/css”>
.ms-bodyareaframe {
padding: 8px;
border: none;
}
#s4-ribbonrow{display:none;
}
</style>
</asp:Content>

14. 上書き保存します。上書き保存時に、警告ダイアログが表示された場合、[OK] をクリックします。
15. [フォーム] をクリックし、フォーム一覧に戻ります。
image
16. フォームの一覧で、追加したリストフォーム (aspx ファイル) を選択肢、[既定に設定] をクリックします。
image     

動作確認すると、表示フォームのデザインが変更され、表示フォーム内のリボンが非表示となっていることが確認できます。

奥田 Bunny

[SharePoint 2010] SPD 2010 でリストビューに条件付き書式設定

SharePoint Server 2010 で、リストビューに条件付き書式を設定する方法です。SharePoint Designer 2010 を利用します。

<例>
image

1.SharePoint Designer で対象のサイトを開きます。
2.[サイト オブジェクト] から [リストとライブラリ] をクリックして、リストとライブラリの一覧を開きます。
3.条件付き書式を設定したいリストをクリックして開きます。
image

4.リストが開きます。[ビュー] カテゴリーから条件付き書式を設定したいビューをクリックして開きます。
image

5.ビューがエディター画面で開いたら、[デザイン] ビューに切り替えます。
image
6.ビュー内の任意の場所をクリックして選択し、リボン内に [リストビュー ツール] タブを表示させます。
image
7.[リスト ビュー ツール] – [オプション] タブにある [条件付き書式] – [行の書式設定] をクリックします。
image

8.[条件基準] ダイアログ ボックスが開きます。任意の条件を指定します。
image
9.[スタイルの設定] をクリックします。
10.[スタイルの変更] ダイアログ ボックスが開きます。設定したいスタイルを指定します。
[背景] カテゴリーで [background-color] に任意の色を指定し、[OK] をクリックします。
image
11.上書き保存します。

 

以上、SharePoint 2010 での Tips でした。
これ SharePoint Designer 2013 では [条件付き書式] メニューがなくなってるので、同様の操作では設定できません。別の方法でカスタマイズすることになります。次回 SharePoint 2013 で条件付き書式の設定方法を投稿します。

奥田 うさぎ

SharePoint Online/SharePoint Server 2013(2010) – リストやライブラリで列を表示する幅を調整したい

ここ最近というわけではないですが、よくいただく質問から第3弾です。

■ 質問内容

    リストやライブラリのビューで、列幅を調整できないか?

    ■ 詳細

入力されたデータ内容 (文字数) により、またブラウザーのサイズにより途中でデータが折り返して表示される場合があり、どうしても折り返して表示したくないデータがあるときです。

そして下図のように列のデータ型によって、折り返して表示されるものとされないものがあります。よく利用しがちな [一行テキスト] は折り返しされますね。下図リストには含まれていませんが [複数行テキスト] も折り返されるほうです。対して [選択肢] や [数値]、[日付と時刻] は折り返しされないようです。

 image

■ 解決方法

まず設定のみではできません。CSS をビューの aspx 内に挿入する必要があります。

1. 列幅を調整したいと思っているビューを開きます。
2. [設定] – [ページの編集] をクリックします。
   image
3. ページが編集モードに切り替わるため、[Web パーツの追加] をクリックし、コンテンツ エディター Web パーツを挿入します。
   image
4. 一番上に挿入されたコンテンツ エディター Web パーツをドラッグ操作で、ビューの下に移動します。
   image

5. コンテンツ エディター Web パーツ内の [ここをクリックして新しいコンテンツを追加] をクリックします。
    そしてコンテンツ エディター Web パーツ内にマウス カーソルをあわせ、リボン内の [テキストの書式設定] タブ – [ソースの編集] をクリックします。 

 ※ コンテンツ エディター Web パーツ内に [ここをクリックして新しいコンテンツを追加] が表示されない場合は、
    まずコンテンツエディター Web パーツの設定画面を表示してください。
    トップページに配置した Web パーツに対して同様のことを行う場合など、サイトのページ内に配置したコンテンツ エディター Web パーツではそうなります。

6. [HTML ソース] に次の CSS コードを追加し、[OK] をクリックします。

<style type="text/css">
.ms-vh-div[DisplayName=’列の表示名を入れてください’]
{
  
width:250px;
}
</style>

       ※ 列の表示名や、列幅は任意に変更
     image

7. [ページ] タブの [編集の終了] をクリックして保存します。
   image

指定した列幅で表示されるように変更されました。
  image

  • この方法を行った場合の注意点
  • まず、SharePoint の既定のスタイル クラス名を利用しているため、SharePoint 側で生成されるクラス名が変わると、たちまち動作しなくなります。たとえば SharePoint Online の場合だと大きな Update とか、SharePoint Server 2016 になったときとか。
    個人的にはおそらく大丈夫だと思います。なぜかって、おんなじコードで SharePoint Server 2010 でも動作するんですよね、コレ。というか 2010 のときから使ってた Tips です。リストの基本はあんまり変わらないかと。もし変わったとしても、列幅が変更になるくらい大したことないですし。

それよりも、これをやると、ビューを開いた際に [アイテム] タブと [リスト] タブが既定で表示されなくなります。ライブラリで行った場合や [ファイル] タブと [ライブラリ] タブですね。

こんな感じ↓
  image

どれでもいいので、リストアイテムを選択すると出てくるのですが。。
  image

微妙ですよね。
コンテンツ エディター Web パーツだけではなく、ビューの aspx 内に Web パーツを追加するとこうなるんですよね。。
これも 2010 でもおんなじです。

もしこうなるのがどうしてもいやだ、でも列幅は調整したいんだ!って場合は、面倒ですが、SharePoint Designer 2013 で同様の CSS を追加してください。

1. SharePoint Designer 2013 で対象サイトを開きます。
2. 左側のサイト オブジェクトより [リストとライブラリ] をクリックします。
3. リストとライブラリの一覧が開くため、対象リストもしくはライブラリをクリックして開きます。
4. 対象リスト、ライブラリが開いたら、[ビュー] カテゴリーより、列幅調整 CSS を挿入したいビュー名をクリックします。
   image
5. ビューが編集画面 (ソースコード) で開きます。ほとんどのコードが黄色い背景で表示されているかと思います。
       これ、コード編集にロックがかかっている状態ですので、[ホーム] タブより [詳細モード] をクリックします。
   image

6.<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server"> タグ内に CSS を挿入してください。他のタグの間にいれたりしないようにご注意を。
  自信ない方は <asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server"> タグのすぐ下がおすすめ。
   image

7.  上書き保存します。

この方法だと、Web パーツを追加しているわけではないため、リボンタブが既定で表示されない!ってことにはなりません。
  image

以上、リストやライブラリのビューで、列幅を調整する方法のご紹介でした。
さて、最後にちょっと考えてみてください。ここまでやってまで本当にその列幅、調整する必要ありますか?
「はい!」 って自信もてる場合はぜひ活用してやってください。ある程度、標準機能や画面を受け入れて、うまく利用するのが SharePoint の本当の活用です♪

奥田Bunny

SharePoint Designer でカスタム アクション作成するときのリボン内の場所

こんばんは、奥田です。今日は金曜、さらに年内最終営業日という方も多いのではないでしょうか。
弊社も本日が最終営業日、明日からは年末年始のお休みです。

さて、おとつい昨日SharePoint Designer で作成するリボンメニューについて投稿しましたが、今日はそのちょっとだけ応用編です。SharePoint Designer でリスト・ライブラリ ビューのリボン内に表示する場合、既定では、[アイテム] タブの [操作] カテゴリーにカスタム メニューがボタンとして表示されます。
 CALocation1

これは、SharePoint Designer でカスタム アクションを作成する際、[ユーザー設定のアクションの作成] ダイアログ内 [リボンの場所] にそのように既定値が入っているからです。
  CALocation2

この [リボンの場所] の値を次のように変更することで、リボン内に表示する場所を変更可能です。

<設定例>
 CALocation3

   ① [新規] カテゴリー内: Ribbon.ListItem.New.Controls._children
   ②
[管理] カテゴリー内: Ribbon.ListItem.Manage.Controls._children
   ③
[操作] カテゴリー内 : (既定値) Ribbon.ListItem.Actions.Controls._children
   ④
[共有と追跡] カテゴリー内 : Ribbon.ListItem.Share.Controls._children
   ⑤
[ワークフロー] カテゴリー内 : Ribbon.ListItem.Workflow.Controls._children

また、シーケンス番号を変更すれば、各カテゴリー内で一番目 (一番左) に表示されるのが既定ですが、[シーケンス番号] を変更すれば場所も移動できます。
  CALocation4

   ① シーケンス番号 0 (既定値)
  
② シーケンス番号 10
  
③ シーケンス番号 20

ソリューション開発でカスタム アクションをつくるときの、CommandUIDefinition 要素の Location 属性で利用するグループの値が参考になりますね。この記事では、ビューのリボン内に表示するバリエーションをまとめてみましたが、リストフォーム内のリボン内に表示する際は参考にしてみてください。

参考URL
「MSDN既定のサーバーリボンのカスタマイズの場所」
http://msdn.microsoft.com/ja-jp/library/office/ee537543(v=office.14).aspx

奥田でした。SPD でメニューを作ってみようシリーズは以上です。

SharePoint 2013 SharePoint Designer でリボン内にメニュー作成 – 他のサイトにお知らせコピー

こんばんは、奥田です。昨日の投稿で SharePoint Designer を利用したカスタム アクション作成 (ワークフロー起動ボタン) をご紹介しました。今日はカスタム アクション作成 JS 書ける人向けバージョンです。

SharePoint Designer でカスタム アクションを作成する場合、独自で作成したボタンクリック時の操作として、URL も指定できます。ここで JavaScript を指定することでボタンクリック時にさまざまな操作を組み込めます。

SharePoint はサイト内のほとんどの操作が JavaScript で操作できる API が用意されているため、標準機能だとすこし手が届かないような機能を、カスタム アクションと JavaScript を組み合わせてカスタマイズしてみます。

たとえば、下記は別のサイトにお知らせ データをコピーする例です。

javascript:var context=SP.ClientContext.get_current();var clientContext=new SP.ClientContext(‘別サイトURL’);var web=context.get_web();context.load(web);var source=web.get_lists().getByTitle(‘お知らせリスト名’);var oList = clientContext.get_web().get_lists().getByTitle(‘書き込み先サイトのお知らせリスト名’);clientContext.load(oList);var currentItem = source.getItemById({SelectedItemId});context.load(currentItem);context.executeQueryAsync(Function.createDelegate(this,copyItem),Function.createDelegate(this,error));function copyItem(sender, args){var itemCreateInfo = new SP.ListItemCreationInformation();var oListItem = oList.addItem(itemCreateInfo);oListItem.set_item(‘Title’, currentItem.get_item(‘Title’));oListItem.update();oList.update();clientContext.executeQueryAsync(Function.createDelegate(this,copyCompleted),Function.createDelegate(this,error));}function error(sender, args){alert(args.get_message());}function copyCompleted(sender, args){alert(‘コピーしました!’);}

組み込み方は次のとおりです。

  1. SharePoint Designer 2013 で対象のサイトを開きます。
  2. [サイト オブジェクト] より [リストとライブラリ] をクリックします。
  3. リストとライブラリの一覧が表示されます。対象のリストもしくはライブラリをクリックします。
  4. リボンより、[ユーザー設定のアクション] – [リボンの表示] をクリックします。
  5. [ユーザー設定のアクションの作成] ダイアログ ボックスが表示されます。
        次の設定を行い [OK] をクリックします。
       ●
    名前:任意のメニュー名
       ●
    アクションの種類:[URLへの移動] を選択し、上記スクリプトを改行やスペースなしで挿入
       ●
    ボタンイメージのURL:メニューに表示したい画像ファイルのパスを指定
           CAAno
    リスト ビュー Web パーツを利用してお知らせ新着データをトップページに表示することは、SharePoint 基本としてよく利用する機能ですが、リストビュー Web パーツは同じサイト内でのみという仕様制限があるため、他のサイトにお知らせデータを一覧表示したい場合、クエリ結果 Web パーツを利用するとかコンテンツ検索 Web パーツを利用するなど、少し設定の難易度が上がります。クエリ結果 Web パーツやコンテンツ検索 Web パーツを利用しても、リスト ビュー Web パーツのように、表形式での一覧表示は標準でできないので、なかなか悩ましいですよね。

いっそ、お知らせを表示させたい他サイト内のお知らせ リストに、お知らせデータを表示したいものだけ、このボタンをクリックしてデータをコピーさせてしまえ!そしてリストビュー Web パーツで表示したい! というカスタマイズ例です。
(以前勉強会かなにかでしゃべった内容を記事にしました)

SharePoint 2013 で利用できる JavaScript API は下記が参考になります。http://msdn.microsoft.com/ja-jp/library/office/jj163201(v=office.15).aspx

以上です。SPD でカスタム アクション作成 Tips、明日もさらに続きます うさぎ

SharePoint 2013 SharePoint Designer でリボン内にメニュー作成 – ワークフロー起動

今日はクリスマスイブですね。あんまり大人は関係ありませんが。さて、今日は SPD ネタをひとつご紹介します。

SharePoint Designer 2013 を利用してできることの一つに、カスタム アクション作成機能があります。この機能を利用すると、リストやライブラリのリボン内に、独自コマンドメニューを追加できます。

ボタンのアイコン画像も自分で用意したものを利用できるので、簡易な設定でリボン内にメニュー追加ができますが、問題はクリックしたときに何をさせられるか?ですよね。

ソリューション開発や SharePoint 用アプリ開発を行ってカスタム アクション開発を行った場合には、クリック時の動作は、プログラミングでいかように開発できますが、SharePoint Designer 2013 で作成する場合にはそうはいきません。SharePoint Designer 2013 でカスタム アクション作成時に、設定できるのは以下3種類です。

フォームへの移動
   指定したリスト・ライブラリのフォーム (新規入力画面や編集画面、表示画面) を起動する。
   正直そんなに利用する機会はないかと思います。リストA 内のデータを操作している際に、リストA 内の各フォーム  は既定で用意されているリボン内メニューから開けますし。リストA内のデータを操作している際に、他のリストB のフォームを開きたいといったことはよくあるシナリオとしてさほどイメージできないので。

・ ワークフローの開始
 
手動開始で関連付けられた ワークフローの開始ボタンを作成できます。
  ワークフロー機能を利用して簡易な処理を組み込む場合にはとっても便利です。

・ URL への移動
  指定した URL を開けます。リスト内のデータを操作している際に、他の参考 URL を開いたり。。
  でしょうか。また JavaScript も OK。

今日は SharePoint Designer 2013 を利用して、手動開始ワークフロー用のボタンを作成する内容をご紹介します。もちろん SharePoint Server、SharePoint Online 両方で利用いただけます。

そもそも手動開始ワークフローの場合、既定では次のような操作でワークフローを開始できます。
WFCA_1

① まず、ワークフローを開始させたいリスト アイテムを選択し、
リボン内の [ファイル] タブ – [ワークフロー] をクリックし、
からの、そのリスト/ライブラリに関連ついているワークフロー一覧が表示されるので、
     開始したいワークフロー名をクリック

なかなかの操作ステップです。

SharePoint Designer でメニューを作成した場合がこちら。
WFCA_2

  ① まず、ワークフローを開始したいリスト アイテムを選択し、
  ②
リボンから作成したボタンをクリック  以上!

と、操作ステップを簡略化でき、「ワークフロー」 といった難しい用語を意識せず、ワークフローによって組み込んだ機能を操作してもらえます。

<設定方法>

  •   16*16、32*32 のアイコン画像を用意し、サイト内にアップロードしておく。
         ([サイトのリソースファイル] ライブラリ等任意のライブラリにアップロード)
  • 手動起動でワークフローが関連付け設定がされているリスト・ライブラリでのみ設定可能。
  1. SharePoint Designer 2013 で対象のサイトを開きます。
  2. [サイト オブジェクト] より [リストとライブラリ] をクリックします。
  3. リストとライブラリの一覧が表示されます。対象のリストもしくはライブラリをクリックします。
  4. リボンより、[ユーザー設定のアクション] – [リボンの表示] をクリックします。
  5. [ユーザー設定のアクションの作成] ダイアログ ボックスが表示されます。次の設定を行い [OK] をクリックします。
  6.          ● 名前:任意のメニュー名
             ●
    アクションの種類:[ワークフローの開始] を選択し、
                                        リストまたはライブラリに関連付けられている手動開始のワークフローを選択
             ●
    ボタンイメージのURL:メニューに表示したい画像ファイルのパスを指定

            WFCA_3

以上、奥田でした。 明日も SPD メニュー作成 Tips 投稿します うさぎ