• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

С вьюхи передать данные документа в Dijit Dialog Box

  • Автор темы xKlonx
  • Дата начала
X

xKlonx

Здраствуйте! Возникла проблемка которую не получается решить, есть ембедед вьюха, есть колонка со значениями в виде линка, нужно по нажатию на линк отображать dijit dialog, а в нём содержимое текущего документа.Заранее спасибо за помощь!
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
и что не получается?
берем хэПагу, кидаем в неё сорц из формы, на странице со вьюхой (онаже хэпага) делаем скрытый элемент для dijit
при нажатии на линк, делаем открытие, в хэпаге (юзая ИД дока), дока по сцылко, далее - dlg.show (анализируя урл, на предмет действия - ежели оно там есть)

можно, разумеется, тянуть контент, парсить его..., но это чуть сложнее (выдирать из формы, следить за уникальностью ИД элементов...)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
и ещё - для dijit надо делать патч, событий инит и сетуп, шобы диалог работал в форме
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
небольшие пояснения...
dijit диалог имеет две формы: декларативную и программную
первая - строится на основе элемента, на странице, логично предположить, что вторая - отображается аналогичным образом (эелемент создается в общем "дереве" DOM)
Т.о. пытаясь получить страницу и отобразить её в диалогбоксе, мы натыкаемся на необходимость "вписать" её, в текущий DOM...
Но не надо забывать, что помимо отображаемых элементов, на странице может присут. и код (доминошный)
Поэтому - логично сразу строить отображение так, чтобы элементы получаемой (по запросу) страницы, уже присут.

Такой подход приводит к построению "от обратного", т.е. строим получаемую страницу, в невидимом элементе, а вьюшку и т.п. добавляем. Т.е. добавляем все элементы, кот. должны отображаться "под" диалогом
Вызываем страницу "стандартно"
Будет две страницы (первая только для вьюшки) или одна (на кот. всегда есть скрытый элемент) - это уже детали.
По факту - элемент формы с датасорцом - это вариант для создания нового дока (в этом случ. не надо делать новый запрос и перерисовывать страницу)
 
X

xKlonx

lmike
делаем скрытый элемент для dijit
Что за елемент? Дата сорц есть на диалоге, сам диалог по линку открываю(естественно пустой),но туда каким то макаром нужно втыкнуть сорц текущего документа...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
а почитать про декларативный метод дилога ;)
обычный div
естественно пустой
об этом сказано выше (он и будет как у нового дока)
для того щобы док открыть - урл должен быть соответ. - с ИД дока и экшеном
т.е. по линку - открываем тотже хэпагес но с "нужным" урлом
в дожо онлоад анализируем урл, и кажим диалог - ежели есть экшн
остальное домина сама заполнит


Добавлено: и ещё раз повторю - ПАТЧ нужен, для диалога
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
есть, например, такой сэмпл
я делал иначе (сразу декларировал див, с таким классом)
вот основа, с пояснениями
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
где всё ето можно почитать
почитать что? я делал по собственной фантазии
просто нашёл как пропатчить диалог , а дальше сделал - как считал нужным
также сделал обработку серверсайд валидэйтов
при загрузке страницы ищу элемент с ошибками, если есть - кажу тотже диалог (а домина сама там вывела ошибки)
перехватываю закрытия диалога (типа cancel, на самом деле - hide) - и перечитываю страницу, чтобы сбросить доминошное заполнение
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
открытие нужного дока я уже указывал &action=editDocument&documentId=...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
типа того:
Код:
var INIT=dojo.addOnLoad(function(){
//alert( "version:"+dojo.version.toString());
arrayPatch();
iePatch();
gDialog=dijit.byId("dialogOne");
if (checkStatus()) {
checkEdit();
}
});
function checkStatus(){
var status="";
try{
var el=dojo.query("ul[id$=':msg_all']")[0];
status=el.innerHTML;
console.log(el.innerHTML);
}catch(e){}
//если ошибки - показываем форму заново
if (status.length){
gDialog.connect(gDialog,"hide", cancelEdit);
gDialog.show();
return false;
}
return true;
}
function checkEdit(){
if ("editdocument" == parseQuery("action").toLowerCase()) {
gDialog.connect(gDialog,"hide", cancelEdit);
gDialog.show();
return true;
}
return false;
}
function cancelEdit(e){
console.log("cancel Edit");
var url=location.pathname+
"?OpenXPage";
window.location=url;
}
...........
onClick: function(){
var el=dojo.byId(this.elid);
console.log(this.label+":"+el.noteid);
var url=location.pathname+
"?OpenXPage&action=editDocument&documentId="+
el.noteid;
window.location=url;
}
...........
 
X

xKlonx

lmike
Спасибо за помощь! Попытаюсь переварить, но пока безрезультатно ;)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
последний кусок - у меня редактирование при клике на элемент (меню, по правой кнопке)
потому кусок неполный
у элемента отображения, при создании его, задаётся id равный noteid (json из запроса к домине), и вешается менюшка
а остальное - там вроди "прозрачно"
патч к диалогу - ссылки выше
я вынес в отдельный файл (js) и подрубил его к хэПаге, добавил модуль (к нейже, в пропертях)
 
X

xKlonx

lmike
т.е. по линку - открываем тотже хэпагес но с "нужным" урлом

Проблема в том что я не могу открывать тотже хэпагес с нужным урлом так как диалог нужно открывать для респонс документа, тоесть теряю урл главного документа
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
parentid - по-моему параметр урла есть... хотя
хэпаге - побабарану - какой док открывать - оно сморит тока на ид и учит. датасорц
т.е. основное - связка id -> datasource

Добавлено: я не знаю - как с 2-мя датасорцами разруливать
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
теоретически - у датасорца есть оба параметра parentId и documentId
можно задавать их "руками" (скриптом, на серверсайд, при загрузке)

Добавлено: типа context.getUrlParameter("mycomplexId");
в mycomplexId запихнуть оба ID (парента и чайлда)
и рассовать их по датасорцам (соответственно)

Добавлено: сабмитить тока чайлдовый датасорц
 
X

xKlonx

Получилось наконец решить.Код линка колонки вьюхи:
Код:
dojo.addOnLoad(function(){

var dialog = dijit.byId("DialogTest");
if (dialog) { dialog.destroyRecursive(); }
var url = "Comments.xsp" + "?documentId=" + "#{java script:commentsEmbedded.getUniversalID()}" + "&action=editDocument";

var dialog = new dijit.Dialog({
title:"Коментар",
href: url,
refreshOnShow: true,
onCancel: function() {
window.location.reload();},
preventCache: true
},

dojo.byId("DialogTest")

);

dialog.show();
});
 
Мы в соцсетях:

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