• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Затащить в агент LS WEB Item которго нет в ns.DocumentContext

NetWood

Lotus Team
17.04.2008
545
93
BIT
8
Натягиваю один адаптивный web шаблон на доминоху. Есть обычная форма обратной связи с текстовыми полями, списками, rtf, чекбоксами, но в стилях скрываются чекбоксы и радио следующим образом:
Код:
input[type="checkbox"],
    input[type="radio"] {
        -moz-appearance: none;
        -webkit-appearance: none;
        -ms-appearance: none;
        appearance: none;
        display: block;
        float: left;
        margin-right: -2em;
        opacity: 0;
        width: 1em;
        z-index: -1;
    }

        input[type="checkbox"] + label,
        input[type="radio"] + label {
            text-decoration: none;
            color: #7f888f;
            cursor: pointer;
            display: inline-block;
            font-size: 1em;
            font-weight: 400;
            padding-left: 2.4em;
            padding-right: 0.75em;
            position: relative;
        }

        ...
Код:
                                                            <!-- Checkbox -->
                                                            <div class="6u 12u$(small)">
                                                                <input type="checkbox" id="copy" name="copy">
                                                                <label for="copy">Отправить копию сообщения на Email</label>
                                                            </div>
То есть с чистыми чакбоксами это не работает, а работает только с лейблами...
Ну сделано так, чтобы на страничке светилось красиво вот так.

notes checkbox.png


С остальными полями проблем нет, но если вместо HTML воткнуть нотусовое поле чекбокс, оно не отображается на вебе (скрывается стилем).
Если прописать имя лебла в свойствах Notes поля, то оно на вебе видится кодом так и все равно не отображается
Код:
<input name="%%Surrogate_Copy" type="hidden" value="1"><label>
<input type="checkbox" name="Copy" value="" checked label="Copy"></label>
В дизайнер 7.0.4 никак не написать, что нам нужен только лейбл. В итоге, оно не чекается и его никак не затащить в агент для Set ctx = ns.DocumentContext.

Попытка заюзать WebSession() класс не сильно помогает, так как для него надо делать через jQuery ajax data: form.serialize(), // serializes the form's elements. для data = web.session.DocumentContext.Request_Content(0) и получить головняк с декодированием rtf поля. Неудобно, сложно, плохо работает на большом объеме и пр.

Вот вопрос. Как бы затащить не Лотусовое HTML содержимое в агент?

Фантазирую, что можно на JavaScript это поле прописать через куки и достать через WebSession() класс, но тоже как-то не очень решение. Какие еще есть варианты? Может в свойствах поля Notes неправильно пишу?
 
Последнее редактирование:

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
4
дак - сделай скрытое едит поле и перекладывай данные с чисто веб данных.
Не стал заморачиватся и транслирую все нужные поля в CFD RTF поле в виде json и разбираю json парсером в агенте.
c31cd6d2f4c01063a3bfc1889e24221f.png


JavaScript:
function param2json() {
    var flist={}
    $('.param').each(function() {
        if (this.type!='checkbox') {
            pushObj(this.name,this.value.trim())
        } else {
            if (this.checked) {
                pushObj(this.name,this.value.trim())
            } else {
                pushObj(this.name,'')
            }
        }
    });
    function pushObj(name,value){
        var n=[]
        if (flist[name]) {
            if (value!=''){flist[name].push(value)}
        }else {
            if(value!='') {n.push(value)}
            flist[name]=n
        }
    }
    safeTransfer(flist)
}
function safeTransfer(flist){
    // переносим в поле JsonTransfer данные, сохраняя пред. объекты поля
    var field=$('input[name="JsonTransfer"]').get(0)
    if (field){
        var obj=field.value
        field.value=JSON.stringify(Object.assign(((obj=='')?{}:JSON.parse(obj)),flist))  
    }
}
 
Последнее редактирование:
  • Нравится
Реакции: NetWood
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!