Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Tips / Member Properties

Member Properties

會員預設可以設定許多屬性值,包括個人資料夾的目錄位置、地理空間資訊、編輯器種類等。

會員搜尋

權限足夠的話,可以從網址 /Member 看到搜尋成員的畫面,搜尋條件有 login, email, fullname 三項,程式碼在 plone.app.users/browser/membersearch.py 由 MemberSearchForm 搭配 IMemberSearchSchema 來管理。

會員目錄和屬性值

會員的 Profile Field 被稱為屬性欄位,記錄 email 之類的屬性值,在 plone.app.user/browser/account.py 的 AccountPanelSchemaAdapter 和 AccountPanelForm prepareObjectTabs。

會員管理程式註冊在 @@usergroup-userprefs 可試 /@@usergroup-userprefs?searchstring=username 來搜尋特定帳號。

新增會員帳號是 @@new-user 必填欄位包括 E-mail, User Name, Password

取得 Full Name 的方法。

查詢所有會員的 wysiwyg_editor 設定值,批次指定 wysiwyg_editor 設定值。

預設會建立 /Member 目錄來顯示會員資料,想要取消目錄顯示的話,依照程度可以有多種方式。

依群組建立使用者不同的目錄位置

Dynamic Group 可以依據條件指定群組,例如 email 資訊。

查詢 plone.app.users 程式碼可以找到會員資訊的運作細節。個人偏好 plone.app.users/plone/app/users/browser/personalpreferences.py

ZMI acl_users export zettwerk.users

會員使用專屬的 Skin 設定值: Traversal 要執行完畢才能決定會員資訊,自製函式要搭配 IPubAfterTraversal 才會有效。

使用自訂表單來建立會員: my folder action

使用 plone.api 的範例

from plone import api
user = api.user.get_current()
user.getProperty('location')

會員的設定值

以查詢編輯器的設定值為例:

# member_editor.py

pm = app.Plone.portal_membership
for memberId in pm.listMemberIds():
    member = pm.getMemberById(memberId)
    editor = member.getProperty('wysiwyg_editor', None)
    print member, editor
$ cd ~/Plone/zinstance
$ bin/plonectl run member_editor.py

批次指定會員預設編輯器的範例

# kupu2tinymce.py

def Kupu2TinyMCE(self):
    pm = self.portal_membership
    for memberId in pm.listMemberIds():
        member = pm.getMemberById(memberId)
        editor = member.getProperty('wysiwyg_editor', None)
        if editor == 'TinyMCE':
            print('%s: TinyMCE already seleted, pass.' % memberId)
        else:
            member.setMemberProperties({'wysiwyg_editor': 'TinyMCE'})
            print('%s: TinyMCE has been set' % memberId)
    return

from AccessControl.User import UnrestrictedUser
from AccessControl.SecurityManagement import newSecurityManager

admin = UnrestrictedUser('admin', '', ['Manager'], '')
newSecurityManager(None, admin)

portal = app.Plone
from zope.site import hooks
hooks.setSite(portal)
Kupu2TinyMCE(portal)
import transaction
transaction.commit()
$ bin/plonectl run kupu2tinymce.py

Default Editor: No Value vs None

在 Default Editor 設定值裡,No Value 代表使用系統預設值,None 代表未使用視覺編輯器。

如果直接在 ZMI acl_users 刪除使用者,可能會造成 portal_memberdata 出現失連資料,必要時使用 Prune orphaned member records 來清除。

Notification When Users Join

http://stackoverflow.com/questions/5070055

Redirecting Authenticated Users to Their Home Directory

CMFPlone/skins/plone_login/login_next.cpy

home_url = membership_tool.getAuthenticatedMember().getHomeFolder().absolute_url()
came_from = home_url

erId) editor = member.getProperty('wysiwyg_editor', None) if editor == 'TinyMCE': print('%s: TinyMCE already seleted, pass.' % memberId) else: member.setMemberProperties({'wysiwyg_editor': 'TinyMCE'}) print('%s: TinyMCE has been set' % memberId) return from AccessControl.User import UnrestrictedUser from AccessControl.SecurityManagement import newSecurityManager admin = UnrestrictedUser('admin', '', ['Manager'], '') newSecurityManager(None, admin) portal = app.Plone from zope.site import hooks hooks.setSite(portal) Kupu2TinyMCE(portal) import transaction transaction.commit()

Member Properties

顯示 LDAP 屬性值

ZODB Programming

移植會員資料密碼到 PHP 系統 SQL Relational Database

migration: wildcard.importexport

importing profile image to members personal portrait

Activate INavigationRoot Interface When Creating Member

AttributeError: acl_users - collective.select2

source="plone.principalsource.Users"

LDAP

啟用 plone.app.ldap 後,在 @@usergroup-userprefs 出現 IndexError

查詢登入帳號 REST API of OpenIDM

OpenID

批次新增 OpenID 帳號

OpenID 在 Plone 4.3 的支援狀況

Members as Contents

在 Products.membrane 有定義 IMembraneUserObject 介面。

dexterity.membrane

David Glick 在 Net Impact 專案裡的實作經驗

collective.roster