在组中添加用户

时间:2015-03-11 11:17:59

标签: xpages xpages-ssjs

我希望能够将用户作为成员添加到一个排除组(简报)。

使用我到目前为止的代码,将为所有用户和新成员创建一个新组。

因此,代码不会插入用户,而是与用户建立新的组(新闻稿)。

<xp:this.data>
    <xp:dominoDocument var="usergroup"
        databaseName="contacts/webusers.nsf" formName="(46Group)"
        action="editDocument" computeWithForm="onsave">
    </xp:dominoDocument>
</xp:this.data>
<xp:br></xp:br>
<xp:inputText id="fullname" value="#{viewScope.fullname}"></xp:inputText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="Add new user" id="button1">
<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
<xp:this.action>
    <xp:actionGroup>

        <xp:executeScript>
            <xp:this.script><![CDATA[#{javascript:var who = @DbLookup("contacts/webusers.nsf","($VIMGroups)","Newsletter",3);
              var newone = getComponent("fullname").getValue();
              who = who + ", "+newone;
              usergroup.replaceItemValue("Members",who);
             usergroup.replaceItemValue("ListName","Newsletter");
             usergroup.save();}]]></xp:this.script>
        </xp:executeScript>
        <xp:openPage name="/login.xsp"></xp:openPage>
    </xp:actionGroup>
</xp:this.action>
</xp:eventHandler>
</xp:button>

修改

新代码:

var ndb = session.getDatabase("","contacts/webusers.nsf")
var d = ndb.getView("($VIMGroups)").getDocumentByKey("Newsletter")
var newArr = new Array(d.getItemValue("Members")); 
newArr =newArr + ", another user";
d.replaceItemValue("Members",newArr);
d.save(true,false);

根据托马斯的建议,我改变了我的代码。 用户已添加到成员中,但会添加x次。 x是排除成员的数量。我也尝试用push添加成员,但这不起作用。如何以正确的方式在数组中添加成员?

1 个答案:

答案 0 :(得分:0)

“usergroup”数据源未连接到组文档,因此数据源在您加载页面时会创建新文档

您需要将数据源连接到组文档,一旦您拥有该组,您不需要执行dblookup,您只需将新用户添加到文档数据源字段并保存即可。

你应该能够连接你的数据源做这样的事情(未经测试)

var ndb = session.getDatabase("","contacts/webusers.nsf")
var d = ndb.getView("($VIMGroups)").getDocumentByKey("Newsletter")
return d.getUniversalID()

以下是您可以在按钮中使用的一些工作代码,由于安全性,我不得不删除数据源,

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:inputText id="inputText1"></xp:inputText>
    <xp:button value="Add new user" id="button1">
        <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:var ndb = sessionAsSignerWithFullAccess.getDatabase("server","names.nsf")
var d = ndb.getView("($VIMGroups)").getDocumentByKey("Newsletter")
var members = d.getItemValue("Members")
members.add(getComponent("inputText1").getValue())
d.replaceItemValue("Members",members)
d.save()}]]></xp:this.action>
        </xp:eventHandler>
    </xp:button>
</xp:view>