【发布时间】:2017-10-20 17:41:27
【问题描述】:
我不希望在特定网站的管理方面显示几个方面。所以我更改了共享配置自定义 XML。但是,所有站点都反映了这种变化。我怎样才能使这个特定于一个网站?
感谢任何帮助。
提前致谢!!!
【问题讨论】:
我不希望在特定网站的管理方面显示几个方面。所以我更改了共享配置自定义 XML。但是,所有站点都反映了这种变化。我怎样才能使这个特定于一个网站?
感谢任何帮助。
提前致谢!!!
【问题讨论】:
您应该使用站点评估器来使用每个站点单独共享模块的概念:
在 alfresco\site-data\extensions\ 中创建一个 share-extension-mysitename-module.xml 文件,如下所示:
<id>My site module</id>
<auto-deploy>true</auto-deploy>
<evaluator type="site.module.evaluator">
<params>
<sites>mysitename</sites>
<applyForNonSites>false</applyForNonSites>
</params>
</evaluator>
<customizations>
<customization>
<targetPackageRoot>org.alfresco</targetPackageRoot>
<sourcePackageRoot>com.mypackage</sourcePackageRoot>
</customization>
</customizations>
<configurations>
<config evaluator="string-compare" condition="DocumentLibrary" >
...
<aspects>
<visible>
<aspect name="my:visibleaspect" />
</visible>
</aspects>
</config>
</configurations>
</module>
</modules>
【讨论】:
据我所知,我认为这不可能按站点进行自定义共享配置。
我看到了两个(可能不令人满意的)解决方案:
您可以创建您的 custom evaluator 并使用它来使某些部件可访问(或不可访问)。
<bean id="evaluator.doclib.action.siteBased" class="xx.xx.xx.web.evaluator.SiteBasedEvaluator">
<property name="sites">
<list>
<value>mysite</value>
</list>
</property>
</bean>
public class SiteBasedEvaluator extends BaseEvaluator {
private List<String> sites;
public SiteBasedEvaluator() {
super();
}
public SiteBasedEvaluator(String... pSites) {
super();
sites = Arrays.asList(pSites);
}
public boolean evaluate(JSONObject jsonObject) {
Boolean isFound = false;
if (sites != null) {
for (String site : sites) {
isFound = site.equals(getSiteId(jsonObject));
if (isFound) {
break;
}
}
}
return isFound;
}
你可以在你的tomcat中部署两个share war,每个都有你想要的share-config-custom.xml
【讨论】: