2011年7月23日土曜日

SharePoint Webパーツをクラウドへ

こんどは変態がクラウドにも進出します。
略してはダメです。Hentai Web Parts

Office365へ展開します。
手順は、オンプレミスと同じですが、クラウドで動かすには、サーバーのCPUを使用する関係で、リソースクオーターを設定する必要があります。

リソースクオーターの設定方法をザックリと記載します。

  1. 先ずは、 管理サイトを開きます。
    「Manage Site Collections」をクリックします。WS000442
  2. サイトコレクションを管理する画面が表示されます。ここでは、リソースクオーターを割り当てるサイトコレクションの左のチェックボックスをチェック状態にして、リボンメニューの「Resource Usage Quota」をクリックします。
    WS000444
  3. サイトコレクションに割り当てるリソースクオーターを設定します。
    WS000443
  4. これで、サイトコレクションでSandboxed Solutionを動かす事が可能になります。
    WS000445

次は、AccessServicesです!

Silverlight Webパーツで変態チャート開発3

SilverlightSquareで喋って既に1っか月、、
夏休みの宿題が終わらない子供みたい、、、

前回の投稿で、開発が完了したので実際に展開してみたいと思います。

先ずは、完成したイメージから、、 下記の手順で展開します。
事前に、Sandboxd Solutionの設定は済ませておいてください。
WS000441

  1. サイトコレクションへソリューション(WSPファイル)のアップロードをして、アクティブ化に成っている事を確認します。非アクティブならアクティブ化してください。
    WS000435
  2. サイトコレクションの機能で「Hentai Chart」をアクティブ化されている事を確認します。非アクティブならアクティブ化してください。
    WS000436
  3. サイトコレクションの機能がアクティブ化れていると、「Hentai」リストが作成されています。
    WS000437
  4. 「Hentai」リストには、変態の名前と、変態パワーを登録してください。変態パワーがわからない場合は、スカウターがあると便利です。
    WS000438
  5. 取あえず、一通り登録してみました。
    WS000439
  6. Webパーツを設置するページで編集モードに切り替え作成したHentai Webパーツを追加してみます。
    WS000440
  7. これで変態パワーが可視化されました。
    WS000441

次回は変態をクラウドに持っていきます!

2011年7月9日土曜日

Silverlight Webパーツで変態チャート開発2

前回からの続き、機能が有効になった時に変態リストを自動的に有効化する処理を実装します。

イベント処理の実装

先ずは、SharePointプロジェクトの方に、イベント処理を実装します。
Silverlight側のプロジェクトに追加しても意味がないのでご注意!
イベント処理で”Hentai”リストを作成します。
Webパーツで使用するデータを保存するデータベースとして扱います。

  1. Features配下にあるフューチャー(機能)を右クリックして、新し項目の追加を実施します。
    WS000429
  2. 今度はダブルクリックして、名前を適切な名前にしましょう(笑)
    ここで実装するフューチャー(機能)がサイトで有効化する時に表示される名称になります。
    WS000431
  3. イベントコードを実装します。予め下記の様なテンプレートが作成されています。
    WS000430
  4. コードは下記の通り。

    // フィーチャーをアクティブにした後に発生したイベントを処理するには、以下のメソッドのコメントを解除します。

    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {
        try
        {
          //サイトコレクションのインスタンスを取得します。
            SPSite site = properties.UserCodeSite;
            //サイトのインスタンスを取得します。
            SPWeb web = site.RootWeb;
            //リストを作成します。
            Guid id = web.Lists.Add("hentai", "変態チャートのリスト", SPListTemplateType.GenericList);
            //IDを元にリストのインスタンスを取得します。
            SPList list = web.Lists[id];
            //リストに列を追加します。
            list.Fields.Add("Value", SPFieldType.Number, true);
           //リストをメニューに追加します。
            list.OnQuickLaunch = true;
            //変態リストの削除は許可しません。
            list.AllowDeletion = false;
            list.Update();
        }
        catch { }
    }

    // フィーチャーを非アクティブにする前に発生したイベントを処理するには、以下のメソッドのコメントを解除します。

    public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        try
        {
          //サイトコレクションのインスタンスを取得します。
            SPSite site = properties.UserCodeSite;
            //サイトのインスタンスを取得します。
            SPWeb web = site.RootWeb;
            //名前を元にリストのインスタンスを取得します。
            SPList list = web.Lists["hentai"];
            //変態リストの削除は許可しません。
            list.AllowDeletion = true;
            list.Update();
            web.Lists.Delete(list.ID);
        }
        catch { }
    }

  5. プロジェクトファイルのプロパティを確認してみましょう。
    サンドボックスソリューションが有効になっている事を確認します。
    WS000434
  6. 「ソリューションの配置」で展開されます。
    WS000432

これで、Webパーツと展開機能が実装されました。
あとは、実際に張り付けてみましょう!

2011年7月3日日曜日

Silverlight Webパーツで変態チャート開発

SilverlightSqare振り返り投稿第2弾

Silverlight Webパーツの開発デモです。
それではLets HENTAI

開発環境環境

SharePointがインストールされたサーバー上で構築するのが良いです。

  1. VS2010で拡張機能マネージャーを起動
    WS000415
  2. 拡張機能を導入
    WS000416

WebParts開発

変態チャートを開発します。変態ジェネレータは、めんどいのでコードのみ貼り付けておきます。

  1. SharePoint開発プロジェクトを選択。プロジェクトテンプレートは「空のSharePointプロジェクト」
    WS000418
  2. 参照設定を追加
    Microsoft.SharePoint.Client.Silverlight.dll
    Microsoft.SharePoint.Client.Silverlight.Runtime.dll
    詳細はここ
  3. プロジェクトの追加から「Silverlightアプリケーション」を選択
    WS000419
  4. 次に、空のSharePointプロジェクトにSilverlight WebPartsを追加
    WS000421
  5. 追加すると、使用するSilverlightアプリケーションを選択しろとメッセージが表示される。たぶん、SharePointアプリケーションが一つだけなら出てこないかも、、
    WS000422
  6. チャートコントロールを追加します。今回はインフラジスティックスさんのチャートコントロールを使用しました。
    WS000420
  7. コードの追加

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using Microsoft.SharePoint.Client;
    using Infragistics.Silverlight.Chart;

    namespace SilverlightApplication1
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
            }
            private ClientContext context = null;
            private delegate void UpdateUIMethod();

            private ListItemCollection _projects;

            private void UserControl_Loaded(object sender, RoutedEventArgs e)
            {
                this.context = ClientContext.Current;
                // SharePoint上に展開した場所に関する情報を取得。
                // いわゆるカレントサイト

                List oList = this.context.Web.Lists.GetByTitle("Hentai");
                this.context.Load(oList);
                // ”Hentai”という名前のリストのインスタンスを取得

                CamlQuery query = new Microsoft.SharePoint.Client.CamlQuery();
                string camlQueryXml = "<view><query></query><viewfields>" +
                    "<fieldref name=\"Title\"></fieldref></viewfields></view>";
                //CAMLというXML言語で表示対象クエリの作成

                query.ViewXml = camlQueryXml;
                _projects = oList.GetItems(query);
                this.context.Load(_projects);
                this.context.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(OnRequestSucceeded), null);
                // イベント処理で非同期化した処理
            }

            private void OnRequestSucceeded(Object sender, ClientRequestSucceededEventArgs args)
            {
                // This is not called on the UI thread.
                Dispatcher.BeginInvoke(BindData);
            }

            private void BindData()
            {
                Series s1 = new Series();
                s1.ChartType = ChartType.Bar;
                s1.Label = "変態度";
                foreach (ListItem li in _projects)
                {
                    DataPoint d = new DataPoint();
                    string title = li["Title"].ToString();
                    d.Label = title;
                    int val = -1;
                    string aa = li["Value"].ToString();
                    if (int.TryParse(aa, out val))
                    {
                        d.Value = val;
                    }
                    s1.DataPoints.Add(d);
                }
                this.xamWebChart1.Series.Clear();
                this.xamWebChart1.Series.Add(s1);
            }
        }
    }

眠くなったので、また今度、、