如何定义在alfresco共享全局标题中使用的自定义条件或权限?

时间:2014-01-08 13:36:13

标签: alfresco-share

以下是共享全局标题的摘录:

<container-group id="tools" permission="admin">  <== Like this
                        <item type="link" id="application">/console/admin-console/application</item>
                        <item type="link" id="groups">/console/admin-console/groups</item>
                        <item type="link" id="replication-jobs" condition="!conditionEditionTeam">/console/admin-console/replication-jobs
                        </item>
                        <item type="link" id="repository">/console/admin-console/repository</item>
                        <item type="link" id="trashcan">/console/admin-console/trashcan</item>
                        <item type="link" id="users">/console/admin-console/users</item>
                        <item type="link" id="more">/console/admin-console/</item>
                    </container-group>
                </item>
            </app-items>
            <user-items>
                <item type="container" id="user" icon="" description="">
                    <container-group id="usermenu" label="">
                        <item type="user" id="status">{userprofilepage}</item>
                        <item type="link" id="my-profile">{userprofilepage}</item>
                        <item type="link" id="change-password" condition="user.capabilities.isMutable">/user/change-password
                        </item>
                        <item type="link" id="logout" condition="!context.externalAuthentication">/dologout</item> <== Or Like this
                    </container-group>
                </item>

我想知道如何定义我自己的条件,或者如何利用针对我要添加的另一组菜单项的仲裁组的权限。 这可能吗?

编辑: 我发现这个share wiki为3.4,但不确定它是否与我的安装(4.2.c)相关

1 个答案:

答案 0 :(得分:1)

我想这个解决方案有点乱,但至少它完成了工作。也许你可以在“myOwnChecks.inc.ftl”这样的东西中添加check-fct,如果你在其他地方也需要它们(至少我在其他几个地方也使用过它们)。

可以在header.get.*找到用于标题组件的webscript中的js-controller(../alfresco/site-webscripts/org/alfresco/components/header/header.get.js)。 在js-controller(header.get.js)中是函数“getHeader()”,其中为模型设置变量“permissions”。这是您需要更改的唯一文件,如果您想查看它是如何用于应用权限的话,可以查看header.inc.ftl

/**
 * Customizable Header
 */
function getHeader()
{
  // Array of tokenised values for use in i18n messages
  model.labelTokens = [ user.name || "", user.firstName || "", user.lastName || "", user.fullName || ""];
  model.permissions =
  {
    guest: user.isGuest,
    admin: user.isAdmin
  };
}

添加您以后想要在share-conf中使用的其他条目(这是一个简单的共享 - webscript,当然可以远程调用alfresco),例如。

model.permissions =
{
  guest: user.isGuest,
  admin: user.isAdmin,
  adminGrp: isInAdminGrp()
};

然后在share-conf中使用简单的permission="adminGrp"即可。