登録  |  LOGIN

CMSならDotNetNuke!高機能かつフリーのCMSです。

 

 DotNetNuke 対応ホスティングサービスに、
at link 専用サーバサービス」を追加

掲示板

DNNに関する情報共有はこちらからどうぞ!

DotNetNuke.jp 掲示板は、すべての DotNetNuke ユーザーのための情報共有の場です。

単に質問・回答の場ではありませんし、回答義務もございません。
運営メンバーも含め、DotNetNuke を日々学んでいる状況です。
質問をする場合は、まずインターネットなどで自分自身でお調べいただき、その情報を共有する事をこころがけてください。

>>当掲示板に書き込みいただくには、ユーザー登録が必要です。( ログイン・ご登録はこちら )
>>プライバシーポリシーについてはこちらをご覧ください。
 
  dotnetnuke.jp bbs  一般  開発  タブ・モジュールの閲覧権限の取得と判定
前へ 前へ
 
次へ 次へ
新しい投稿 2009/02/18 7:05
解決済み
  SHIMIZU
155件の投稿
5位


タブ・モジュールの閲覧権限の取得と判定 

 

お世話になります。

http://dotnetnuke.jp/tabid/263/forumid/29/threadid/2494/scope/posts/Default.aspx

の続きのようなものですが、アドバイスいただけますでしょうか。

やりたいことは、ポータル内のタブとそのタブ内にあるモジュールの閲覧権限の状態をループで取得して、権限がある場合にはリストに入れ、なければ入れないというものです。要はタブ以下のモジュールまで含めたメニューのようなナビゲーションモジュールを生成しようとしていると考えてもらえればよいかと思います。

権限は関係なくリスト化する方法は、前掲のスレッドで回答いただいた内容でできるようになりました。次は各タブ、モジュールの権限を取得する方法ですが、ここで躓いています。

タブについては、とりあえず以下のような方法で判定はできるようになりました。

' Tabの情報。実際はDotNetNuke.Common.GetPortalTabsで取得した情報を入れています
Dim tab As DotNetNuke.Entities.Tabs.TabInfo

If tab.AuthorizedRoles.Contains("All Users") = True Then
 ' 「All Users」が権限に入っていたら処理
End If

これも、もっと他に良い方法がありそうですが、とりあえずできているので良しとします。

次にこのIf文の中で、更に内部にあるモジュールの閲覧権限を判定しますが、モジュールリストは前掲のスレッドで教えていただいたもので取得し、以下の変数にセットします。

Dim moduleInfo As DotNetNuke.Entities.Modules.ModuleInfo

次に権限の判定ですが、同様に

If moduleInfo.AuthorizedRoles.Contains("All Users") = True Then
 ' 「All Users」が権限に入っていたら処理
End If

とやってみても、うまく判定できません。調べてみるとAuthorizedRolesには何も入っていないようです。

このあたりどうやって判定したらよいのでしょうか?上の方法でなく、全く別の方法でもかまいません。

よろしくお願いします。

 
新しい投稿 2009/02/21 13:49
  富山
22件の投稿
ランキングデータがありません


Re: タブ・モジュールの閲覧権限の取得と判定 

私も、DNNを勉強している富山と申します。

お役にたてるかわかりませんが、

以下のように、moduleInfo.AuthorizedViewRoles , moduleInfo.AuthorizedEditRoles

には、値が入っているようです。

 

                Dim tabInfo As DotNetNuke.Entities.Tabs.TabInfo = DotNetNuke.Common.Globals.GetPortalSettings.ActiveTab()
                Label1.Text = tabInfo.AuthorizedRoles + "<br/>"

                For Each moduleInfo As DotNetNuke.Entities.Modules.ModuleInfo In tabInfo.Modules()
                    Label1.Text += moduleInfo.ModuleTitle & "<br/>"

                    Label1.Text += "[1." + moduleInfo.AuthorizedViewRoles + "]<br/>"

                    Label1.Text += "[2." + moduleInfo.AuthorizedEditRoles + "]<br/>"

                    Label1.Text += "[3." + moduleInfo.AuthorizedRoles + "]<br/>"

                Next

 
新しい投稿 2009/02/22 0:40
  SHIMIZU
155件の投稿
5位


Re: タブ・モジュールの閲覧権限の取得と判定 
修正者: SHIMIZU   2009/02/22 0:44:01)

富山様ありがとうございます。

質問の前にAuthorizedViewRoles はやってみたのですが、そちらにも何も入っていなかったように思います。

恐らくですが、DotNetNuke.Common.Globals.GetPortalSettings.ActiveTab()のTabInfoと私のやり方では取得した情報が若干違うのだと思われます。(前回の質問もそういうようなことが原因でしたので)

とりあえず暫定処置として、DotNetNukeのクラスは使用せず、直接データベースにSQLのクエリを発行してタブ内のモジュール権限を取得するようにしています。これでも良いといえば良いのですが、本来はどうなのかやっぱり気になりますので、解決できれば書き直したいと思っています。

ちなみに何でこんなことをしているかですが、簡易的なモバイル表示用モジュールを作るためです。モバイルでは表示できる文字数が多くないので、タブ単位ではなくモジュール単位で表示した方がよいだろうということで表示中のタブ内のモジュールを列挙して個別にリンクするモジュールを作っております。一応完成はしたものの、ちょっと中途半端なのでどうしようか考え中です。

 
新しい投稿 2009/02/22 23:30
  富山
22件の投稿
ランキングデータがありません


Re: タブ・モジュールの閲覧権限の取得と判定 

SHIMIZUさん。こんにちは。

再度はずしていた場合は、はずかしいのですが、DNNを勉強中の者のためお許しください。

DNNのソースを見て、タブと、モジュールと、権限を表示する処理を作ってみました。(自信なし)

 

                Dim objModules As New ModuleController
                Dim objModule As New ModuleInfo


                Dim _portalSettings As PortalSettings = GetPortalSettings()

                'Get the Pages
                Dim tabs As ArrayList = GetPortalTabs(_portalSettings.PortalId, True, True, False, False, False)
                Dim tab1 As DotNetNuke.Entities.Tabs.TabInfo

                Label1.Text += "<br/><br/>Count=" & tabs.Count & "<br/>"

                For Each tab1 In tabs

                    Label1.Text += "--- Tab1:" & tab1.TabID.ToString & "<br/>"
                    Label1.Text += "--- Auth:" & tab1.AuthorizedRoles.ToString & "<br/>"

                    For Each kvp As KeyValuePair(Of Integer, ModuleInfo) In objModules.GetTabModules(tab1.TabID)
                        objModule = kvp.Value

                        Label1.Text += "--- Title:" & objModule.ModuleTitle & " ---<br/>"
                        Label1.Text += "[1." & objModule.AuthorizedViewRoles & "]<br/>"
                        Label1.Text += "[2." & objModule.AuthorizedRoles & "]<br/>"
                        Label1.Text += "[3." & objModule.AuthorizedEditRoles & "]<br/>"
                    Next
                Next

 
新しい投稿 2009/02/25 4:09
  SHIMIZU
155件の投稿
5位


Re: タブ・モジュールの閲覧権限の取得と判定 

富山さん。

わざわざコードを書いて試していただいたようでありがとうございます。

確かにこれでできました。すばらしいです!コードがかなりスッキリしました。

私はC#使いで、VBの文法がほとんどわからずにやっているため、コードのちょっとした違いがどう関係するのか分からないのですが、見たところほとんど同じような情報を取ってきているように見えて、中に入っているデータが違う(プロパティとしては存在するのに値が入っていない?)というのがいまいちよく分からないところです。

でも、値もとれたし、とりあえずよしとして、中身はまた勉強してみることとします。

どうもありがとうございました。

 
前へ 前へ
 
次へ 次へ
  dotnetnuke.jp bbs  一般  開発  タブ・モジュールの閲覧権限の取得と判定

掲示板ご利用のためのご案内

ログイン
すでに登録済みの方は、
上のボタンからログインを
お願いします。
登録
ユーザー登録がまだの方は、
上の「登録する」ボタンをクリックし、
登録画面にて必要事項をご入力の上、
ご登録ください。