• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Решено Подтверждение удаления документов в dataview

victorhalf

Green Team
29.05.2007
79
3
BIT
0
День добрый
Помогите реализовать сабж.
Я использую датавью, кнопки на placeBarActions(из Applicationlayout), тип- basicLeafNode
на onClick кнопки вешаю return Confirm("Delete?"), а в submitValue пишу deleteDocs,

по идее должно спросить. и если нажал "ОК", то выполнить ssjs в моём кастом контроле с введенным submitValue.

На деле получаю свой вопрос и что бы я не ответил мой ssjs даже не запускается(слушал дебагером).
Если же очищаю onClick, то получаю молчаливое правильное выполнение ssjs.
Очень хочется их совместить, а где проблема не пойму.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
submit идет на сервер (если он вызван), а запрос на клиенте
и если нажал "ОК", то выполнить ssjs в моём кастом контроле с введенным submitValue.
и где вызывается сам сабмит (где код?)
короче, пример с сохранением:
 
Последнее редактирование модератором:

victorhalf

Green Team
29.05.2007
79
3
BIT
0
submit идет на сервер (если он вызван), а запрос на клиенте
и где вызывается сам сабмит (где код?)
Ух ты, еще и как то сабмит нужно вызывать рвучную? А как?
Смотри, вот такая конструкция работает, без каких то доп. телодвижений. Но молча.
JavaScript:
<xe:basicLeafNode label="Видалити заявку"
submitValue="viewDeleteSelected"></xe:basicLeafNode>
 
плюс
 
<xp:eventHandler event="onItemClick" submit="true" refreshMode="complete">
<xp:this.action><![CDATA[#{javascript:
	var vSubmitValue = context.getSubmittedValue();
	if (vSubmitValue=="viewDeleteSelected"){код по удалению}
</xp:this.action></xp:eventHandler>
а если изменить так
JavaScript:
<xe:basicLeafNode label="Видалити заявку"
submitValue="viewDeleteSelected">
<xe:this.onClick><![CDATA[return confirm("Точно удалить?")]]></xe:this.onClick>
</xe:basicLeafNode>
то отработает конфирм, а эвент хендлер - нет
или его как то можно дернуть принудительно из csjs?
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
@victorhalf, в твоей логике на клике сначала отработает CSJS, а потом SSJS.
Соответственно в CSJS надо получить confirm и сделать его доступным в SSJS: напр. через SubmittedValue.
Записать чото в SubmittedValue на CSJS - это записать в поле с ID = "$$xspsubmitvalue" (на страничке оно есть всегда - это <input type="hidden" name="$$xspsubmitvalue">)
Это один из десятка вариантов.
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
стесняюсь спросить, а что мешает вызвать SSJS прямо из события OnClick там где confirm? SubmittedValue тут не нужен.
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
36
стесняюсь спросить, а что мешает вызвать SSJS прямо из события OnClick там где confirm?
:)А ничО не мешает - это будет 11 вариант. @victorhalf - у надо прояснить для себя, как ващще триггерят CSJS из SSJS. И наоборот. Человек учится.
 

victorhalf

Green Team
29.05.2007
79
3
BIT
0
Спасибо за советы
стесняюсь спросить, а что мешает вызвать SSJS прямо из события OnClick там где confirm? SubmittedValue тут не нужен.
Знал бы как - обязательно бы вызвал. А из того что я читал через сабмиттед валуэ чуть ли не единственный пОнятый мной способ дергать ssjs.

пойду читать про "$$xspsubmitvalue",
хотя всё равно не пойму, во втором моем варианте submitValue остается заполненным, а обработки эвент хендлера нет, значит его как то нужно принудительно вызывать?
ну да ладно, почитаю авось проясниться :)
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Как по мне - Remote Service легко и удобно
 
Последнее редактирование модератором:

victorhalf

Green Team
29.05.2007
79
3
BIT
0
Как по мне - Remote Service легко и удобно
нее, в эти тапки я пока не влажу:) мельком посмотрел - штука вроде удобная. может со временем...
но пока подглядел что делает сам лотус
JavaScript:
<xe:basicLeafNode label="Видалити заявку">
<xe:this.onClick><![CDATA[
if (XSP.confirm("Точно удалить?")){
XSP.setSubmitValue("viewDeleteSelected");
XSP.fireEvent(arguments[0],"view:_id1:ccApp:_id5", "view:_id1:ccApp:applicationLayout1", null, true, 2, null)
}]]></xe:this.onClick>
</xe:basicLeafNode>
Всем спасибо за советы
 
Мы в соцсетях:

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