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

Тема в разделе "Lotus - Xpages", создана пользователем xKlonx, 21 янв 2011.

  1. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Здраствуйте! Возникла проблемка которую не получается решить, есть ембедед вьюха, есть колонка со значениями в виде линка, нужно по нажатию на линк отображать dijit dialog, а в нём содержимое текущего документа.Заранее спасибо за помощь!
     
  2. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    и что не получается?
    берем хэПагу, кидаем в неё сорц из формы, на странице со вьюхой (онаже хэпага) делаем скрытый элемент для dijit
    при нажатии на линк, делаем открытие, в хэпаге (юзая ИД дока), дока по сцылко, далее - dlg.show (анализируя урл, на предмет действия - ежели оно там есть)

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    и ещё - для dijit надо делать патч, событий инит и сетуп, шобы диалог работал в форме
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    небольшие пояснения...
    dijit диалог имеет две формы: декларативную и программную
    первая - строится на основе элемента, на странице, логично предположить, что вторая - отображается аналогичным образом (эелемент создается в общем "дереве" DOM)
    Т.о. пытаясь получить страницу и отобразить её в диалогбоксе, мы натыкаемся на необходимость "вписать" её, в текущий DOM...
    Но не надо забывать, что помимо отображаемых элементов, на странице может присут. и код (доминошный)
    Поэтому - логично сразу строить отображение так, чтобы элементы получаемой (по запросу) страницы, уже присут.

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

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    lmike
    Что за елемент? Дата сорц есть на диалоге, сам диалог по линку открываю(естественно пустой),но туда каким то макаром нужно втыкнуть сорц текущего документа...
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    а почитать про декларативный метод дилога ;)
    обычный div
    об этом сказано выше (он и будет как у нового дока)
    для того щобы док открыть - урл должен быть соответ. - с ИД дока и экшеном
    т.е. по линку - открываем тотже хэпагес но с "нужным" урлом
    в дожо онлоад анализируем урл, и кажим диалог - ежели есть экшн
    остальное домина сама заполнит


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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
  8. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    lmike
    Ну див есть на странице,думал что - то другое ещё надо

    Может есть какая - то дока где всё ето можно почитать?
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    почитать что? я делал по собственной фантазии
    просто нашёл как пропатчить диалог , а дальше сделал - как считал нужным
    также сделал обработку серверсайд валидэйтов
    при загрузке страницы ищу элемент с ошибками, если есть - кажу тотже диалог (а домина сама там вывела ошибки)
    перехватываю закрытия диалога (типа cancel, на самом деле - hide) - и перечитываю страницу, чтобы сбросить доминошное заполнение
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    открытие нужного дока я уже указывал &action=editDocument&documentId=...
     
  11. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    типа того:
    Код (Text):
    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;
    }
    ...........
     
  12. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    lmike
    Спасибо за помощь! Попытаюсь переварить, но пока безрезультатно ;)
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    последний кусок - у меня редактирование при клике на элемент (меню, по правой кнопке)
    потому кусок неполный
    у элемента отображения, при создании его, задаётся id равный noteid (json из запроса к домине), и вешается менюшка
    а остальное - там вроди "прозрачно"
    патч к диалогу - ссылки выше
    я вынес в отдельный файл (js) и подрубил его к хэПаге, добавил модуль (к нейже, в пропертях)
     
  14. xKlonx

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    lmike
    Проблема в том что я не могу открывать тотже хэпагес с нужным урлом так как диалог нужно открывать для респонс документа, тоесть теряю урл главного документа
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    parentid - по-моему параметр урла есть... хотя
    хэпаге - побабарану - какой док открывать - оно сморит тока на ид и учит. датасорц
    т.е. основное - связка id -> datasource

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    теоретически - у датасорца есть оба параметра parentId и documentId
    можно задавать их "руками" (скриптом, на серверсайд, при загрузке)

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

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

    xKlonx Lotus team
    Lotus team

    Регистрация:
    10 сен 2009
    Сообщения:
    412
    Симпатии:
    0
    Получилось наконец решить.Код линка колонки вьюхи:
    Код (Text):
    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();
    });
     
  18. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    при загрузке страницы врядли будет "живым" объект ;)
     
Загрузка...

Поделиться этой страницей