Ищете лучший подход для кнопки подписи на странице - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужна простая кнопка, с помощью которой пользователь нажимает, чтобы подписать документ.По одному подписавшему документу, но когда они щелкают по нему, он помещает свое имя и дату в два видимых поля и меняет поле статуса.

Каков наилучший подход для этого?Вероятно, это очень просто, но по какой-то причине я не могу заставить его работать.

К этому времени они вынуждены были войти в систему.

Заранее спасибо.

Matt

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Судя по этому, «к этому времени они были вынуждены войти».ваша проблема в вашем ACL.Кажется, вы разрешаете анонимное чтение документа, но в тот момент, когда вы хотите сохранить его, ACL не позволяет анонимным пользователям делать это, поэтому Domino запрашивает их личность.

Установите анонимный доступ на Нет уровня доступа.

0 голосов
/ 12 декабря 2018

Вот кнопка, но если пользователь не вошел в систему и не имеет анонимного доступа к редактированию, появится диалоговое окно входа.Для функции подписи я предполагаю, что пользователь должен войти в систему, чтобы подписать.document1 - это документ данных Xpage, который нужно подписать.

    <xp:button
        value="Sign"
        id="button1"
        styleClass="btn btn-primary">
        <xp:eventHandler
            event="onclick"
            submit="true"
            refreshMode="complete">
                <xp:this.action>
                    <xp:executeScript>
                        <xp:this.script><![CDATA[#{javascript:
                        document1.appendItemValue("SignerName", session.getEffectiveUsername();
                        document1.document1("SignedDate",       session.createDateTime(@Now()));
                        document1.save();                                       
                    }]]></xp:this.script>
                </xp:executeScript>
            </xp:this.action>
        </xp:eventHandler>
    </xp:button>

Если вам нужно обновить документ без входа в систему, то на кнопке вам нужно будет получить документ с sessionAsSigner, а затемобновить.

0 голосов
/ 12 декабря 2018

Попробуйте следующее:

    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
        <xp:this.data>
            <xp:dominoDocument var="document1" formName="test"></xp:dominoDocument>
        </xp:this.data>
        <xp:panel id="panelMain">
            <xp:table>
                <xp:tr>
                    <xp:td colspan="2">
                        <xp:label value="Main Form" id="label1"></xp:label>
                    </xp:td>
                </xp:tr>
                <xp:tr>
                    <xp:td style="width:100.0px">
                        <xp:label value="Now" id="label2"></xp:label>
                    </xp:td>
                    <xp:td>
                        <xp:text escape="true" id="computedField1" value="${javascript:return @Now();}">
                            <xp:this.converter>
                                <xp:convertDateTime type="both"></xp:convertDateTime>
                            </xp:this.converter>
                        </xp:text>
                    </xp:td>
                </xp:tr>
            </xp:table>
        </xp:panel>
        <xp:panel id="panelSignature" style="background-color:rgb(192,192,192)">
            <xp:button value="I Agree" id="button1">
                <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="SignatureTable">
                    <xp:this.action><![CDATA[#{javascript:
    document1.replaceItemValue("SignedDate",@Now());
    document1.replaceItemValue("SignedBy",userBean.getDisplayName());}]]></xp:this.action>
                </xp:eventHandler>
            </xp:button>
            <xp:table id="SignatureTable">
                <xp:tr>
                    <xp:td colspan="2">
                        <xp:label value="SignatureTable" id="label3"></xp:label>
                    </xp:td>
                </xp:tr>
                <xp:tr>
                    <xp:td style="width:100.0px">
                        <xp:label value="SignedBy" id="label6"></xp:label>
                    </xp:td>
                    <xp:td>
                        <xp:inputText id="computedField4" value="#{document1.SignedBy}" readonly="true"></xp:inputText>
                    </xp:td>
                </xp:tr>
                <xp:tr>
                    <xp:td style="width:100.0px">
                        <xp:label value="SignedDate" id="label5"></xp:label>
                    </xp:td>
                    <xp:td>
                        <xp:inputText id="computedField3" value="#{document1.SignedDate}" readonly="true">
                            <xp:this.converter>
                                <xp:convertDateTime type="both"></xp:convertDateTime>
                            </xp:this.converter>
                        </xp:inputText>
                    </xp:td>
                </xp:tr>
            </xp:table>
        </xp:panel>
    </xp:view>
...