2013-02-25 86 views
1

我們有一個多站點,多語言解決方案。我們有一個特定的網站(網站A),我們希望將英語作爲「主」語言,然後翻譯並以各種其他語言發佈。我們希望防止例如一位法國編輯可以用法文以外的任何語言編輯和發佈。Sitecore語言版本控制,安全權限和工作流程

但是,法國編輯將爲解決方案的另一部分(網站B)提供英語和法語讀寫權限,因此我們無法直接指定他們擁有的權限站點A.我們也只使用刪除繼承來限制角色權限,而不是顯式拒絕,所以權限是累積的。

是否可以創建特定於語言的工作流,併爲其分配相關角色,以防止該編輯器編輯或發佈其他語言的項目?

注意:如果這個編輯器可以用所有語言發佈,但是隻有語言版本已經移動到「可發佈」狀態,並且不能使自己可以發佈的外語版本(如果這樣他確實發佈了一個德語版本,它只是一個完整的,可發佈的版本,而不是正在進行的工作)。

編輯:爲了澄清,我不介意我的編輯能夠發佈項目的所有可發佈版本,只要他只能使用他擁有該網站的所有權的一種語言進行編輯,並且不能使其他版本發佈的。

如果不是,是否有解決此問題的標準/最佳實踐方案?

+1

這可能是您感興趣的內容:http:// stackoverflow。com/questions/13690804/how-to-limit-sitecore-language-write-to-only-certain-parts-of-the-tree- 這不完全相同的情況,但我認爲要點在這種情況下也是如此。 – Trayek 2013-02-25 16:25:10

+1

我不太確定我是否理解最後一部分:無論如何,只有處於工作流程最終狀態的項目纔會發佈。 – jammykam 2013-02-25 19:01:06

+0

請看我的說明,謝謝。 – 2013-02-26 10:59:29

回答

4

您可以強制Sitecore的只發布項目用戶已經通過讀取web.config中更改以下設置/寫訪問:

Publishing.CheckSecurity = true 
Publishing.RequireTargetDeleteRightWhenCheckingSecurity = false 

Use Default or Custom Access Rights to Control Whether Users Can Publish an Item

這意味着你需要將您的角色和權限分開爲相當精細的部分,即您需要單獨擔任網站1英文編輯,網站1法語編輯,網站2英文編輯等角色。

編輯:感謝您的澄清以上,我可以s ee你的問題在哪裏。正如我在上面的評論中提到的,也許你可以在發佈對話框中隱藏/禁用語言選項。剛剛看過Sitecore.Shell.Applications.Dialogs.Publish.PublishForm,正如所料,有一些私有方法需要複製,但是您可以將自己的邏輯添加到BuildLanguages()以獲得所需內容。只需複製sitecore\shell\Applications\Dialogs\Publish\Publish.xmlsitecore\shell\Override並將codebes改爲指向您的自定義邏輯。

我討厭通常將字段添加到系統模板,但可能會向/sitecore/templates/System/Language添加另一個字段來指定哪些角色/用戶可以發佈該語言。你可以用這個Account Selector Field

+0

但我的實際用戶將是所有三個角色的成員,因此將具有兩種語言的語言讀/寫。 – 2013-02-26 06:43:41

+0

有趣的想法,謝謝。儘管如此,我們仍然需要處理編輯錯誤語言的限制。我們目前的建議是引入新的語言,而不是在其他網站上使用,然後使用標準語言讀/寫設置,CheckSecurity和一個基本的工作流程來控制它。和您一樣,我不想對標準Sitecore模板和管道進行太多修改,而更喜歡使用標準功能來保持解決方案的清潔。處理編輯和發佈限制所需的自定義功能很深,所以我們寧願使用解決方法。 – 2013-03-01 08:24:32

+0

編輯不會成爲問題,您應該可以通過每種語言/網站組合的角色來完成此操作。最簡潔的方法將如您所建議的那樣,只要確保語言環境匹配(如果您使用的是語言)(但我認爲您正在複製現有的語言) – jammykam 2013-03-01 14:27:49

0

您可以設置工作流操作的安全性,從而防止某些用戶執行操作。如果這不能解決問題(因爲涉及相同的工作流程),您可以隨時恢復爲自己實施工作流程操作,這很容易。

0

我已經通過爲用戶創建多個帳戶來處理此事。在你的情況下,一個英文網站A和一個英文和法文網站B.這可能不太理想,但我不認爲創建額外的語言也是。祝你好運!