2013-05-06 37 views
0

我有一個替代幾乎相同的代碼默認RolesBasedAuthorizationService,除了自定義模塊,將啓用我的自定義模塊時,它會拉動作用從服務而不是從用戶。啓用該服務需要在設置中填寫信息並選中一個框。使用包裝有條件地隱藏編輯用戶頁面上的角色

由於角色使用時,我的自定義模塊(以及功能啓用)代替,我想隱藏編輯用戶頁面上的角色。繼Understanding placement info,我可以用成功隱藏角色列表中我的自定義模塊的placement.info如下:

<Match ContentType="User"> 
    <Place Parts_Roles_UserRoles_Edit="-" /> 
</Match> 

然而,這將隱藏列表每當我模塊的功能啓用。但要啓用的功能是不是所有的已發生的特點做它的魔力 - 複選框也必須檢查(提供開啓基於業務的授權前,輸入所需設置的功能)。因此,與同一塊文檔的持續,我可以創建一個包裝和應用它,像這樣:

<Match ContentType="User"> 
    <Place Parts_Roles_UserRoles_Edit="Content:10;Wrapper=Wrapper_HideIfCondition" /> 
</Match> 

這應該讓我來包裝,像這樣的角色列表:

<div style="display: block"> 
    @Model.Html 
</div> 

我目前使用display: block,以確保包裝被稱爲;然而,角色列表消失 - 看起來Orchard沒有找到包裝。該cshtml文件存在於MyCurrentTheme\Views\Wrapper.HideIfCondition.cshtml - 我希望把它搬進模塊,但我會等待直到我得到它的默認方式工作(在主題)。

所以我現在的問題是這樣的:我是什麼,以便失蹤獲得包裝被發現和使用?

+0

你牛逼關於管理員中的編輯用戶頁面? – Hazza 2013-05-08 22:47:01

+0

@Hazza:這是正確的。我試圖在該頁面上包裝角色複選框。 – zimdanen 2013-05-09 12:18:28

+1

那麼,它目前無法正常工作的原因是該主題未在管理員中應用。管理員主題是。所以你可以在管理主題中查看你的代碼,然後就可以工作了。最好創建自己的管理主題,如果這是你要去的路線。 – Hazza 2013-05-09 20:07:56

回答

1

那麼,你是如何做的,它不會工作的原因目前是您的主題沒有被在管理應用。管理員主題是。所以你可以在管理主題中查看你的代碼,然後就可以工作了。最好創建自己的管理主題,如果這是你要去的路線。

如果你想把它放在一個模塊中,你需要確保你的模塊依賴於Orchard.Roles否則Orchard.Roles的放置將優先。因此,在您module.txt你將需要這行:

Dependencies: Orchard.Roles

放置文件:

<Match ContentType="User"> 
    <Place Parts_Roles_UserRoles_Edit="Content:10;Wrapper=Wrappers_HideIfCondition" /> 
</Match> 

然後你的時候,會在你的意見的東西,如文件夾,名爲Wrappers.HideIfCondition.cshtml :

@using Orchard.ContentManagement; 

@{ 
    var condition = true; 
} 

@if(condition) 
{ 
    @Display(Model.Metadata.ChildContent) 
} 

<p>I am a wrapper</p> 

希望這有助於

+0

謝謝!我現在正在處理另一個問題的雜草,但我打算儘快嘗試。 – zimdanen 2013-05-10 18:58:09

+0

我一直在其他方向快速前進,但這聽起來是對的,所以我已經獎勵了你的賞金。一旦我真的能夠測試,我會解決正確性和投票/答案選擇。 – zimdanen 2013-05-14 13:01:05

+1

乾杯,如果遇到任何問題,我會很樂意以任何方式幫助我:) – Hazza 2013-05-15 15:06:28

相關問題