整合:Xaraya:技术文档
Xaraya的Gallery2整合模块的技术文档。
包括的Hook[ ]
gallery2模块提供create,update,delete API hook和一个search GUI hook。API hook仅用于roles模块,因为这些hook被用作与G2的用户/组管理的同步。
所有的hook都应被激活。而它们在gallery2模块安装过程中就被自动激活了。如果这些hook不处于活动状态而需要激活的话,请打开管理面板(Admin panel) -> 模块(Modules) -> 配置hook(Configure Hooks)并点击gallery2链接。选择roles模块来启用用户/组的同步功能。
认证/会话管理[ ]
Xaraya负责认证并将经认证的用户递送给G2。xaraya和G2均具有各自的会话管理和cookies。唯一的区别就是,G2会在为相同用户创建会话之前先检查是否已存在一个xaraya会话。
用户-/组管理[ ]
两个应用程序都具有各自的用户-/组管理。但G2则不被允许进行初始改动。每次你在xaraya中创建,更新或删除某个角色(用户/组)的时候, gallery2模块就会同时创建,更新或删除G2中的用户/组。对于用户组成员也是如此。 如果你在xaraya中删除了某个用户,G2用户就会受到一个随机密码。这样以来,在xaraya中重新呼叫该角色就成为了可能。如果你删除了角色,那么在G2中也会被删除。
初始用户-/组同步[ ]
初始用户及组同步,即G2用户/组导入xaraya及xaraya角色向G2的导出,是基于唯一角色名称/ G2 userName / groupName之上的。有三类特殊组及一个特殊用户是经内部进行映射的:
- xaraya: 'Everybody'被映射到G2: 'Everybody' (默认名称)
- xaraya: 'Administrators'被映射到G2: 'Site Admins' (默认名称)
- xaraya: 'Users' 被映射到G2: '?' (默认名称)
- xaraya: 'anonymous'被映射到G2: 'guest' (默认名称)
- 其他所有组/用户,包括管理员,都基于各自唯一用户名而经映射。
G2用户组和xaraya角色的导入/导出在你点击Modify Config 视图中的"Update Config"后就开始了,但仅当你所提供的config参量有效时才可行。
如果发生冲突,即在初始同步之前xaraya角色和G2用户/组唯一用户名皆相同的话,我们就会使用取自xaraya的数据来进行G2用户数据的更新。
- 注:如果你希望映射某些特定用户/组的话,在配置该模块之前,确保它们在xaraya和G2中具有相同的唯一用户名。
- 注:所有用户必须为G2 User用户组中的成员,但管理员绝不能是xaraya User用户组的成员。我们会处理这个问题的,因此在查看数据库时碰上了此类"不一致性"的话不要多想。
我们还会从G2中删除审核中的用户。如果他们还没有注册xaraya的话,看到这种变化之后就会注意到的,然后就会注册。:)
所有后继的同步(登入,登出,创建,更新,删除角色)都是基于xaraya uid至G2 entityId的映射上的。
权限/特权[ ]
你可以在G2中管理G2权限,而不用xaraya的roles/ privileges 模块。但所有的xaraya用户组也存在于G2中。所以只要为G2中的默认用户组/管理员组/所有人组指定权限,所有已注册用户/管理员/所有人就会具有相应的这些权限了。
更多相关信息请见有关Gallery2权限管理的资料。
可视化整合[ ]
不使用任何HTML框架。G2生成不带... section和标签的HTML并将其返回wrapper模块。接着我们将所有东西都放入一个几乎为空的xaraya模板。G2也会返回javascript,css和页面标题。而我们在创建的xaraya 页面中包括进所有东西。
如果你想自定义外观的话,可以选取某个现有G2外观主题作为开始。然后你可以自定义G2模板,外观主题和风格页来做进一步的细节调整。G2使用smarty作为自己的模板引擎,所以你可能已对G2外观主题的自创胸有成竹了。
菜单链接[ ]
TODO: 我们会将所有来自G2的菜单链接自动发送到xaraya,目的就是具有唯一的xaraya菜单。
搜素hook[ ]
TODO: 我们会添加一个搜索(search) hook这样就可以从xaraya搜索G2项目,评论…了。
URL,直接和间接请求[ ]
我们对G2进行配置以运行所有经由xaraya的请求。xaraya核心则理解这些请求是针对gallery2模块的,而gallery2模块则会自己将这些请求传输给G2。
唯一例外的就是下载链接/请求。G2具有图片防火墙这一特色。。与一般的gallery脚本不同,你无法通过应用程序从G2中下载任何图片。G2开发者做出了不少工作以减少下载请求的处理时间。如果所有这些下载请求在G2接收到之前就经过xaraya的话,速度就会非常慢。这就是所有的下载链接/请求直接走向G2而绕过xaraya的原因了。
目前,xaraya短URL尚不被该模块所支持。但你可以启用G2的URL重写模块,它也能生成较为美观的URL。
语言设定[ ]
Xaraya和G2处理语言设定的方式是相同的。有站点范围的默认语言,用户语言设定以及按会话计的语言设定。一个基础模块updateconfig hook会将站点默认语言进行同步,而在各请求中我们会将活动xaraya用户的当前语言设定移交给G2。如果G2有安装lang_COUNTRY语言的话,它就会相应地对语言进行设定;如果没有安装的话,它就会尝试回退到lang_ANYOTHERCOUNTRY。如果仍旧失败的话,则会使用旧的语言设定。