如何创建自定义用户配置文件?我想在Alfresco中为用户添加一个新字段...我尝试使用这个:http://ecmarchitect.com/archives/2012/02/27/1555,代码:http://ecmarchitect.com/images/articles/alfresco-people/someco-people.zip...
重要代码:
SignUserFactory.java
package com.someco.share;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Map;
import org.alfresco.web.site.SlingshotUserFactory;
import org.json.JSONException;
import org.json.JSONObject;
import org.springframework.extensions.surf.FrameworkUtil;
import org.springframework.extensions.surf.RequestContext;
import org.springframework.extensions.surf.exception.ConnectorServiceException;
import org.springframework.extensions.surf.exception.UserFactoryException;
import org.springframework.extensions.surf.site.AlfrescoUser;
import org.springframework.extensions.surf.support.ThreadLocalRequestContext;
import org.springframework.extensions.surf.util.StringBuilderWriter;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.connector.Connector;
import org.springframework.extensions.webscripts.connector.ConnectorContext;
import org.springframework.extensions.webscripts.connector.HttpMethod;
import org.springframework.extensions.webscripts.connector.Response;
import org.springframework.extensions.webscripts.json.JSONWriter;
public class SomeCoUserFactory extends SlingshotUserFactory {
public static final String SCP_BIRTH_DATE = "{http://www.someco.com/model/people/1.0}birthDate";
public static String SCP_SHIRT_SIZE = "{http://www.someco.com/model/people/1.0}shirtSize";
public static String SCP_SIGNIFICANT_OTHER = "{http://www.someco.com/model/people/1.0}significantOther";
public static String SCP_LIKES_NEIL_DIAMOND = "{http://www.someco.com/model/people/1.0}likesNeilDiamond";
public static String PROP_SCP_BIRTH_DATE = "birthDate";
public static String PROP_SCP_SHIRT_SIZE = "shirtSize";
public static String PROP_SCP_SIGNIFICANT_OTHER = "significantOther";
public static String PROP_SCP_LIKES_NEIL_DIAMOND = "likesNeilDiamond";
@Override
protected AlfrescoUser constructUser(JSONObject properties, Map<String, Boolean> capabilities,
Map<String, Boolean> immutability) throws JSONException {
AlfrescoUser user = super.constructUser(properties, capabilities, immutability);
user.setProperty(PROP_SCP_BIRTH_DATE, properties.has(SCP_BIRTH_DATE) ? properties.getString(SCP_BIRTH_DATE) : null);
user.setProperty(PROP_SCP_SHIRT_SIZE, properties.has(SCP_SHIRT_SIZE) ? properties.getString(SCP_SHIRT_SIZE) : null);
user.setProperty(PROP_SCP_SIGNIFICANT_OTHER, properties.has(SCP_SIGNIFICANT_OTHER) ? properties.getString(SCP_SIGNIFICANT_OTHER) : null);
user.setProperty(PROP_SCP_LIKES_NEIL_DIAMOND, properties.has(SCP_LIKES_NEIL_DIAMOND) ? properties.getString(SCP_LIKES_NEIL_DIAMOND) : null);
return user;
}
@Override
public void saveUser(AlfrescoUser user) throws UserFactoryException {
RequestContext context = (RequestContext)ThreadLocalRequestContext.getRequestContext();
if (!context.getUserId().equals(user.getId())) {
throw new UserFactoryException("Unable to persist user with different Id that current Id.");
}
StringBuilderWriter buf = new StringBuilderWriter(512);
JSONWriter writer = new JSONWriter(buf);
try {
writer.startObject();
writer.writeValue("username", user.getId());
writer.startValue("properties");
writer.startObject();
writer.writeValue(CM_FIRSTNAME, user.getFirstName());
writer.writeValue(CM_LASTNAME, user.getLastName());
writer.writeValue(CM_JOBTITLE, user.getJobTitle());
writer.writeValue(CM_ORGANIZATION, user.getOrganization());
writer.writeValue(CM_LOCATION, user.getLocation());
writer.writeValue(CM_EMAIL, user.getEmail());
writer.writeValue(CM_TELEPHONE, user.getTelephone());
writer.writeValue(CM_MOBILE, user.getMobilePhone());
writer.writeValue(CM_SKYPE, user.getSkype());
writer.writeValue(CM_INSTANTMSG, user.getInstantMsg());
writer.writeValue(CM_GOOGLEUSERNAME, user.getGoogleUsername());
writer.writeValue(CM_COMPANYADDRESS1, user.getCompanyAddress1());
writer.writeValue(CM_COMPANYADDRESS2, user.getCompanyAddress2());
writer.writeValue(CM_COMPANYADDRESS3, user.getCompanyAddress3());
writer.writeValue(CM_COMPANYPOSTCODE, user.getCompanyPostcode());
writer.writeValue(CM_COMPANYFAX, user.getCompanyFax());
writer.writeValue(CM_COMPANYEMAIL, user.getCompanyEmail());
writer.writeValue(CM_COMPANYTELEPHONE, user.getCompanyTelephone());
// START SomeCo Specific properties
writer.writeValue(SCP_BIRTH_DATE, user.getStringProperty(PROP_SCP_BIRTH_DATE));
writer.writeValue(SCP_SHIRT_SIZE, user.getStringProperty(PROP_SCP_SHIRT_SIZE));
writer.writeValue(SCP_SIGNIFICANT_OTHER, user.getStringProperty(PROP_SCP_SIGNIFICANT_OTHER));
writer.writeValue(SCP_LIKES_NEIL_DIAMOND, user.getStringProperty(PROP_SCP_LIKES_NEIL_DIAMOND));
// END SomeCo Specific properties
writer.endObject();
writer.endValue();
writer.startValue("content");
writer.startObject();
writer.writeValue(CM_PERSONDESCRIPTION, user.getBiography());
writer.endObject();
writer.endValue();
writer.endObject();
Connector conn = FrameworkUtil.getConnector(context, ALFRESCO_ENDPOINT_ID);
ConnectorContext c = new ConnectorContext(HttpMethod.POST);
c.setContentType("application/json");
Response res = conn.call("/slingshot/profile/userprofile", c,
new ByteArrayInputStream(buf.toString().getBytes()));
if (Status.STATUS_OK != res.getStatus().getCode()) {
throw new UserFactoryException("Remote error during User save: " + res.getStatus().getMessage());
}
} catch (IOException ioErr) {
throw new UserFactoryException("IO error during User save: " + ioErr.getMessage(), ioErr);
} catch (ConnectorServiceException cse) {
throw new UserFactoryException("Configuration error during User save: " + cse.getMessage(), cse);
}
}
}
share-config-custom.xml
<config evaluator="string-compare" condition="WebFramework" replace="true">
<web-framework>
<defaults>
<user-factory>webframework.factory.user.someco</user-factory>
</defaults>
</web-framework>
</config>
<bean id="webscripts.resources" class="org.springframework.extensions.surf.util.ResourceBundleBootstrapComponent">
<property name="resourceBundles">
<list>
<value>webscripts.messages.webscripts</value>
<value>alfresco.messages.common</value>
<value>alfresco.messages.slingshot</value>
<value>alfresco.web-extension.messages.somecoPeople</value>
</list>
</property>
</bean>
<bean id="webframework.factory.user.someco" class="com.someco.share.SomeCoUserFactory" parent="webframework.factory.base" />
当我尝试在Alfresco中进行登录时,它给我这个错误:
有人能帮我吗?也许当我将它添加到我的多合一扩展中时,文件夹是不正确的。我需要帮忙!
我用的是露天社区5
Jeff Potts的教程是针对Alfresco3.4.d的,它不能直接用于Alfresco5。
抛出的错误似乎是由于您没有部署内容模型,即教程中引用的scpeopleModel.xml。
我已经使用Alfresco SDK2.2将上面的教程转换为Alfresco 5.1,这个项目就在这里
此项目中的主要更改是省略了文件userprofile.get.head.ftl,原因是.head.ftl WebScript文件现在已不推荐用于呈现共享组件的WebScript。现在通过使用main.html.ftl文件中的@script和@link标记来加载依赖项。
因此,出于上述原因,您可能会在userprofile.get.html.ftl中找到下面的代码部分
<@markup id="css" >
<#-- CSS Dependencies -->
<@link href="${url.context}/res/components/profile/profile.css" group="profile"/>
</@>
<@markup id="js">
<#-- JavaScript Dependencies -->
<@script src="${url.context}/res/components/profile/profile.js" group="profile"/>
<@script src="${url.context}/res/modules/simple-dialog.js" group="profile"/>
<@script src="${url.context}/res/components/profile/sc-profile.js" group="profile"/>
</@>
问题内容: 我可以看到使用表单时如何向字段添加错误消息,但是模型表单呢? 这是我的测试模型: 我的模型表格: 在字段中的错误信息:和是: 这是必填栏 如何以模型形式进行更改? 问题答案: 对于简单的情况,你可以指定自定义错误消息
功能介绍 获取本APP的新用户自定义留存报告相关数据 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/app/getDataByKey 请求参数 此处仅列本接口特有参数,公共参数请参考报告级API说明 获取表格数据 参数名 参数类型 是否必须 描述 method string 是 retaineduser/a flag string 是 newcust
我使用open cmis在Alfresco存储库(5.1e)中创建带有附件的文件夹(自定义类型)。文件夹创建成功,但对于将文档(cmis:document-cm:content)创建为附件,我得到以下异常: 下面是将文档添加到文件夹的源代码(方法):
我正在用PHP制作一个CMS,希望用户能够创建自定义表单字段,用于他们的网站注册(类似于SocialEngine或PHPFox)。然而,我真的没有一个好主意,我将如何实现这一点。我需要做一些插件(“钩子”)系统吗?我最初是这么想的,但我不知道这是否真的是一个好方法: CMS管理员将获得一个表单,其中包含他们想要创建的表单字段名称、字段类型(字符串、布尔值、日期等)、字段类别以及是否为必填字段等选项
主要内容:自定义复选框,Bootstrap4 实例,自定义单选框,Bootstrap4 实例,自定义控件显示在同一行,Bootstrap4 实例,自定义选择菜单,Bootstrap4 实例,Bootstrap4 实例,自定义滑块控件,Bootstrap4 实例,自定义文件上传控件,Bootstrap4 实例Bootstrap4 可以自定义一些表单的样式来替换浏览器默认的样式。 自定义复选框 如果要自定义一个复选框,可以设置 <div> 为父元素,类为 .custom-control 和 .cus
问题内容: 我正在尝试更新Alfresco中的文件…,然后执行以下代码: 变量是把该文件(的变化,我对文件进行更新以base64文件)的内容,但也许这是不正确的格式?是的文件,如参考:和是对: 参数来源 我得到了错误: POST http:// localhost:8080 / share / proxy / alfresco / api / upload 500内部服务器错误 javax.ser