За последние 24 часа нас посетили 18243 программиста и 1612 роботов. Сейчас ищут 1853 программиста ...

msg-boxes. Где их рендерить?

Тема в разделе "JavaScript и AJAX", создана пользователем Koc, 17 май 2009.

  1. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Хочу сделать что-то типа такого.

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

    HTML:
    1.  
    2. <div id="modal-delete" class="msgBox popup ui-draggable">
    3.     <div class="msgBox-body confirm-m">
    4.         <div class="caption">Подтверждение удаления</div>
    5.         <div class="text">Вы действительно хотите удалить <span class="item">USD</span>?</div>
    6.         <div class="buttons">
    7.             <input type="button" class="button" value="Да" id="btYes"/>
    8.             <input type="button" class="button" value="Нет" id="btNo"/>
    9.         </div>
    10.     </div>
    11. </div>
    12.  
    .msgBox - display: none;
    Когда нужно - это показывается и центрируется.

    Однако закрадываются сомнения в том, что это нужно делать на сервере. Да и ExtJS рендерит это жабаскриптом.
    Возможно стоит просто передавать список параметров типа caption, text, buttons+actions for it.

    Но: сейчас можно через шаблоны настроить все для этих msg-box'ов. А если сделаю через JS, то это будет как-то не так.

    Что посоветуете?
     
  2. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Я считаю, что рендерить такое на сервере не желательно. Раз уж это клиентская часть, пусть их рендерит клиент.

    Я делаю так: передаю для таких диалогов данные в JSON формате, а клиентская часть уже решает чего с этими данными делать.

    Такое разделение удобно тем, что если у тебя поменялось что-то в клиентском интерфейсе, то нужно менять только клиентский JS, и не лезть в серверные скрипты.

    Хранить это можно в template`ах на клиентской стороне. Для JQuery такой плагин точно есть, наверное и для ExtJS есть. Серверную сторону тоже можно автоматизировать через создание слоя для ajax-общения с клиентским скриптом.
     
  3. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    да я чувствую, что протупил, когда решил на сервере рендерить это дело. Думал просто, что это ж типа я на сервере подставлю весь необходимый текст (читай нужные переводы) и верну их клиенту. Но: передать нужные переводы можно и через <script> var translation = {caption: [:tr|caption:], text: [:tr|text:]}...

    короче буду переделывать. Cron только подтвердил мои опасения.
     
  4. Честно говоря, принципиальной особо разницы не вижу.
     
  5. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Дело стиля, имхо.
    Ну или командных "правил", если пишешь не сам. Особенно, когда серверная и клиентская часть разделены не только логически, но и между программистами (что часто бывает).
     
  6. Дело стиля, или командного - да. А технически, имхо, вообще по барабану.
     
  7. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    дело в том, что мы же должны как-то отделять код от шаблонов. Ладно, если внутри этого msg-box'а будет текст и 1-2 кнопки. Кномки я отрендерю через js. А что если там будет не текст а какой-нить input или форма? Нужно наверно создавать для нее шаблон и передавать его в js-переменную.

    В этом плане хорош Ext, но он мне нифига не подходит.