SSブログ
技術情報 ブログトップ
- | 次の10件

カスタムリストの不思議 「前へ」 [技術情報]

今日は1つ、勉強をさせてもらいました。みなさんはすでに承知のことかもしれませんが、自分に対しての備忘録として記録しておきます。
SPS2003ではカスタムリストをWebパーツで表示し、表示アイテム数を指定した場合、次へしか出ないのが当たり前だと思っていましたが、FrontPageでとあることをすると「前へ」も表示されます。

たとえば下記の様にカスタムリスト「テスト」をページに配置し、9件登録した場合

 


表示件数を3件にして4~6件を表示した場合、戻って1~3件目を表示するのにブラウザの「戻る」を使用して表示させていました。

 


しかし、FrontPage2003を使って、このカスタムリストをXSLTデータビューに変換してやると。。。

あら、不思議。「前へ」と「次へ」が両方とも表示されます。
すごい!というか最初からこうしてよって気がしなくもないですが。ちなみにリセットは最初に戻るようです。


 

いやぁ~、初めて画像を入れてみました(笑) いかがでしょう?


DataBase構造について-(1)- [技術情報]

SharePointではデータと言われるものはほとんどSQL Serverデータベースに格納される。
よってSQL Serverのデータベース構造を把握することは重要になる。
この内容は「Microsoft SharePoint 製品とテクノロジ 2003 ソフトウェア開発キット」に記載されている。
主な内容を備忘録としてまとめる。

【コンフィグレーションデータベース】
  Databases … SharePointで使用しているデータベースの一覧
  VirtualServers … 仮想サーバー一覧
  Servers … サーバー一覧

【コンテンツデータベース】
  ComMD … ディスカッションのデータ
  Docs … ドキュメントのデータ
  DocVersions … ドキュメントのVersion管理データ
  Lists … リストに関する情報
  Personalization … 個別に登録されたWebパーツの一覧
  Sites … トップレベルサイトの情報
  UserData … リストのデータ
  UserInfo … サイトコレクションのユーザー情報
  Webs … サブサイトの一覧

  
 


システム移行の苦悩 -(1)- [技術情報]

いやぁー、困りました。
実はお客様よりPloneからSPS2003へのデータ移行の話がありました。
PloneはZopeを基盤としたUnixのOpenSourceです。ただで使えるということで少し前からもてはやされていますが、OpenSourceの宿命でユーザー側にかなりのスキルを要求されます。
今回のお客様もシステムを構築した人が会社を辞めてしまい、内部がわからない状態で困っておられるようです。
データはZope固有の内部DBに格納され、簡単にはデータを取り出せない仕組みになっています。
抽出方法としてはエクスポート機能があるのですが、PloneもしくはZopeへの移行用でサイト全体を1XMLファイルに書き出すもので、内部を解析しないと使えない状態です。
エクスポートのほかにスクリプト言語のPythonが使えるようなのですが、残念ながら今のところ私は使えません。
明日、いや今日か。チーム内で対応方法を検討することになりそうです。


VBプログラマのSharePoint開発-(3)- リストデータの削除 [技術情報]

リストデータを全部削除するプログラムのサンプル

--------------------------------------------------------------
Public Function DelAllListItem(ByVal MyWeb As SPWeb, ByVal ListName As String) As Boolean
'---------------------------------------------------------------
' 概要
' リスト内のすべてのアイテムを削除する
' パラメータ
' ByVal MyWeb as SPWeb SPWebオブジェクト
' ByVal ListName as String リスト名
' 機能
' 1.リストを削除する
' 戻り値
' Boolean
'---------------------------------------------------------------
Try
DelAllListItem = False
Dim MyListItemCollection As SPListItemCollection = MyWeb.Lists(ListName).Items
Dim k As Integer
Dim MyListItem As SPListItem
If MyListItemCollection.Count > 0 Then
For k = 0 To MyListItemCollection.Count - 1
MyListItem = MyListItemCollection(k)
MyListItemCollection.Delete(k)
Next
End If
DelAllListItem = True
Catch ex As Exception

End Try
End Function


VBプログラマのSharePoint開発-(2)- ユーザー追加 [技術情報]

SPS2003で検索を実施するためには各サイトをクロールする必要性があります。
この際にクロールするユーザーアカウントがクロール対象サイトにアクセス権を持っている必要性があります。
しかし、クロールアカウントが入っていないサイトを見つけてアクセス権を登録するのは至難の業です。
そこで今回は特定アカウントを全サイトに登録するコンソールプログラムを作りました。
下記のサンプルはその一部です。パラメータにサイトURLを渡してそのサイト配下の全サブサイトに対して指定のアカウントが存在しなければ追加します。

--------------------------------------------------------------------------
Public Function AdminUserAdd(ByVal SiteUrl As String) As Boolean
Dim GlobalAdmin As New Administration.SPGlobalAdmin
Dim MySPUser As SPUser
Dim MySPWeb As SPWeb
Dim MySPRole As SPRole
Dim tmpLogin As String
Dim admLogin As String = [追加したいユーザーアカウント]
Dim addFlg As Boolean

Try
Dim MyUri As Uri = New Uri(SiteUrl)
Dim MyVirtualServer As Administration.SPVirtualServer = GlobalAdmin.OpenVirtualServer(MyUri)
Dim MySPSite As SPSite = MyVirtualServer.Sites(MyUri.AbsolutePath)

'サイトコレクション内の全サブサイトを調べる
For Each MySPWeb In MySPSite.AllWebs
        '追加フラグ
addFlg = False
Try
'サブサイト内の全ロールを調べる
For Each MySPRole In MySPWeb.Roles
'ロールが管理者か?
If MySPRole.Type = SPRoleType.Administrator Then
'全管理者ユーザーを調べる
For Each MySPUser In MySPRole.Users
'追加したいアカウントが存在するかチェックする。
If MySPUser.LoginName.ToLower = admLogin.ToLower Then
addFlg = True
End If
Next
End If
Next
Catch ex As Exception
System.Console.WriteLine("*** Web Language Not Supported ** " & ex.Message)
System.Console.WriteLine("Site Url = " & MySPWeb.Url)
End Try
'追加したいアカウントが存在しなかった場合、アカウントを追加する。
If addFlg = False Then
MySPRole.AddUser(sUser, sEmail, sShowName, sNotes)
End If
Next
Catch ex As Exception
System.Console.WriteLine(ex.Message)
End Try
End Function


VBプログラマのSharePoint開発-(1)- 通知設定 [技術情報]

SPS2003ではリストにアイテムが追加されたときにメールで知らせる通知設定がありますが、この設定は自分で行うことが原則になっているようです。
しかし、開発を請け負った場合、通知設定まで行って引き渡す必要性が出てきます。
こんな時のために通知設定と解除行うSAMPLEプログラムを記載します。

SAMPLE
---------------------------------
事前に設定しておく変数
sSiteUrl = [表示したいサイトURL]
LoginName = [通知を追加したいユーザー]
ListName = [通知したいリスト名]
Flg = [登録したい場合:True、削除したい場合:False]
---------------------------------
Dim GlobalAdmin As New Microsoft.SharePoint.Administration.SPGlobalAdmin
Dim MyVirtualServer As Microsoft.SharePoint.Administration.SPVirtualServer
Dim MySPSite As Microsoft.SharePoint.SPSite
Dim MySPWeb As Microsoft.SharePoint.SPWeb
Dim MyUser As Microsoft.SharePoint.SPUser
Dim MyList As Microsoft.SharePoint.SPList
Dim k As Integer
Dim MyUri As New Uri(sSiteUrl)
MyVirtualServer = GlobalAdmin.OpenVirtualServer(MyUri)
MySPSite = MyVirtualServer.Sites(sSiteUrl.Replace("http://" & MyVirtualServer.HostName, ""))
MySPWeb = MySPSite.AllWebs(sSiteUrl.Replace("http://" & MyVirtualServer.HostName, ""))
'ユーザー取得
MyUser = MySPWeb.Users(LoginName)
'通知対象リスト取得
MyList = MySPWeb.Lists(ListName)
If Flg = True Then
'登録設定
MyUser.Alerts.Add(MyList, Microsoft.SharePoint.SPEventType.All, _ Microsoft.SharePoint.SPAlertFrequency.Immediate)
Else
'削除設定
For k = 0 To MyUser.Alerts.Count - 1
If MyList.Title = MyUser.Alerts(k).List.Title Then
MyUser.Alerts.Delete(k)
Exit For
End If
Next
End If


サブサイトをトップレベルサイトに移行する [技術情報]

WSS2.0でサブサイト→トップレベルサイトへの移行に成功しました。備忘録として手順を残しておきます。

【サブサイト編集】
 1.SMIGRATE.EXEを使用してサイトをバックアップする。
 2.バックアップファイルの拡張子を.fwp→.cabに変更。
 3.書庫ファイルからmanifest.xmlを取り出す。
 4.FrontPageなどでURLを移行したいトップレベルサイトのURLに置換する。
 5.再圧縮し、拡張子を.cab→.fwpに戻す。

【トップレベルサイトの作成】
 1.コンテンツDBを作成する。
 2.トップレベルサイトを作成する。ただし、このときにテンプレートは指定しない。
 3.URL指定でトップレベルサイトの「ユーザーの管理」を表示し、移行元サブサイトのユーザーを追加する。

【サイト移行】
 1.SMIGRATE.EXEを使用してサイトをトップレベルサイトにリストアする。


- | 次の10件 技術情報 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。