サイト管理用の設定 [Plone3.3]

各サイトの管理者用にサイト管理者グループを定義する。このグループには全ての権限(Managerロール)を与えず、Editor、Contributor、Reviewerロールに加え、新たにSiteAdmin ロールを定義して必要な権限を与える。このグループメンバーは、サイトのすべてのコンテンツ編集に加え、主にグループメンバーの変更、共有の変更ができ、ZMIへのアクセスはできないものとする。

サイト管理者グループの作成

SiteAdminロールの権限ではPloneのサイト設定にはアクセスできないため、サイト管理者グループのメンバー変更専用のテンプレートを定義する。

siteadmin.jpg

サイト管理者グループのメンバー管理用テンプレートの作成

portal_skins/plone_prefs/prefs_group_members をスキンフォルダにコピーし、テンプレートの id を prefs_site-admin-group として編集する。

- <div id="region-content" class="documentEditable">
+ <div>

  :

- <ul class="contentViews">
+ <ul class="contentViews" tal:condition="nothing">

  :

- <div class="contentActions">
-   &nbsp;
- </div>

  :

- <h1 class="documentFirstHeading"
-    i18n:translate="heading_group_members_of">
-    Members of the <span tal:content="grouptitle" tal:omit-tag=""
-                         i18n:name="groupname">Groupname</span> group
+ <h1>
+     <span tal:content="grouptitle">Groupname</span>
  </h1>

- <a href=""
-    class="link-parent"
-    tal:attributes="href string: $portal_url/prefs_groups_overview"
-    i18n:translate="label_up_to_groups_overview">
-   Up to Groups Overview
- </a>

  :

  <input type="submit"
         class="searchButton"
         name="form.button.FindAll"
         value="Show all"
         i18n:attributes="value label_search_large;"
-        tal:condition="not:site_properties/many_users" />
+        tal:condition="nothing" />

  :

  <tal:block tal:condition="python: not isGroup(this_user)">
    <td>
      <img src="user.gif" alt="" />
-     <a href="" tal:attributes="href python:'prefs_user_details?'
-                    + mq(userid=this_user.getId())"
-        tal:content="this_user/getId | default">
-        <span i18n:translate="link_username_not_available">
-        username not available
-        </span>
-     </a>
+     <span tal:content="python:this_user.getProperty('fullname')">
+     </span>
    </td>
  </tal:block>

  :
 
  <tal:block tal:condition="python:not isGroup(this_user)">
      <img src="user.gif" alt="" />
-     <a href="" tal:attributes="href python:'prefs_user_details?'
-                    + mq(userid=this_user.getId())"
-        tal:content="this_user/getId | default">
-        <span i18n:translate="link_username_not_available">
-                  username not available</span>
-     </a>
+     <span tal:content="python:this_user.getProperty('fullname')">
+     </span>
  </tal:block>

また、Actions タブを開き Edit Default Actionss の項目で Argument を次のように変更する。

tring:prefs_group_members を string:prefs_site-admin-group に変更
tring:prefs_group_members_add を string:prefs_site-admin-group_add に変更
tring:prefs_group_members_delete を string:prefs_site-admin-group_delete に変更

サイト管理者グループのメンバー追加用スクリプトの作成

portal_skins/plone_prefs/prefs_group_members_add をスキンフォルダにコピーし、テンプレートの id を prefs_site-admin-group_add に変更する。Actions タブを開き Edit Default Actionss の項目で Argument を次のように変更する。

string:prefs_group_members を string:prefs_site-admin-group に変更

サイト管理者グループのメンバー削除用スクリプトの作成

portal_skins/plone_prefs/prefs_group_members_delete をスキンフォルダにコピーし、テンプレートの id を prefs_site-admin-group_delete に変更する。Actions タブを開き Edit Default Actionss の項目で Argument を次のように変更する。

string:prefs_group_members を string:prefs_site-admin-group に変更

サイト管理者グループのメンバー管理ページへのリンクを作成する

このテンプレートにアクセスできるように、工学ではフッタにリンクを作成する。SiteAdminロール、またはManagerロールがあれば表示されるようにする。

+ <div class="footer-setup">
+   <a tal:define="user python:context.portal_membership.getAuthenticatedMember()"
+      tal:attributes="href python:context.portal_url() + '/prefs_site-admin-group?groupname=site-admin-group'"
+      tal:condition="python:user.has_role('SiteAdmin') or user.has_role('Manager')"
+      i18n:translate="Site Setup">
+   Site Setup
+   </a>
+ </div>
  <div class="footer-login" ...

SiteAdminロールの追加

ZMI で Plone のルートの Security タブを開き User defined roles から SiteAdmin を追加する。

SiteAdminロールの設定

ZMI で Plone(≠Zope) のルートの Security タブを開き、SiteAdmin ロールに次の権限を与える。

Add portal member
Manage users
View Groups

このようにすることで SiteAdmin ロールを持つユーザが、ユーザの追加やグループメンバーの変更等を行うことができる。

サイト管理者グループの作成

Plone に管理者でログインし、ユーザとグループの管理より「サイト管理者グループ」を追加する。

名前 : site-admin-group
タイトル : サイト管理者グループ

サイト管理者グループのロール設定

Plone に管理者でログインし、ユーザとグループの管理より上記「サイト管理者グループ」に与えるロールを設定する。グループのユーザ変更および、コンテンツの追加・編集を可能とするため次のロールを与える。

Contributor
Editor
Reviewer
SiteAdmin

共有タブをManagerかSiteAdminロールのみに表示

Plone のルートの Securities を開き

Sharing page: Delegate roles  を変更する。

Acquire? : OFF
Manager : ON
SiteAdmin : ON
その他 : OFF

共有タブからSiteAdminがContributorロールも設定できるようにする

Plone のルートの Securities を開き Sharing page: Delegate Contributor role を変更する。

SiteAdmin : ON

共有タブからSiteAdminがReviewerロールも設定できるようにする

Plone のルートの Securities を開き Sharing page: Delegate Reviewer role を変更する。

SiteAdmin : ON