Регистрация и авторизация в всплывающем окне.

Есть ли какой то не очень сложный способ организовать регистрацию и авторизацию в всплывающем окне, как например на этом же сайте?

Основная задача, что бы при регистрации или авторизации показывались ошибки(регистрации или авторизации) в этой же форме
Евгений Довгань
29 апреля 2013, 13:25
modx.pro
3 595
0

Комментарии: 8

Василий Наумкин
29 апреля 2013, 17:47
0
Самый простой — открывать форму во всплывающем окне браузера методом window.open();

Более красиво, через ajax можно сделать только авторизацию по логину\паролю, с социальной авторизацией (как тут) не прокатит.
    Евгений Довгань
    29 апреля 2013, 17:57
    0
    Нужно обязательно через Login, но ведь через window.open(); после логина — она редиректится на какой либо ресурс, как сделать что бы она закрывалась?
    Прошу прощения за такие вопросы, я только постигаю)
      Василий Наумкин
      29 апреля 2013, 18:01
      0
      Я вот тут точно не скажу (ибо не проверял и в javascript не силён), но можно при редиректе вызывать функцию, которую будет слушать родительское окно и закрывать дочрнее, а потом обновляться.

      Но гораздо лучше, если Login — делать через ajax. Начать можно отсюда.
Евгений Довгань
29 апреля 2013, 18:05
0
Возник промежуточный вариант, через ай-фрейм. Идея такова, ай-фрейм после авторизации переходит на ресурс с скриптом, который его закрывает. Это возможно?
    Вася
    29 апреля 2013, 23:04
    0
    Если я правильно понял, то предлагаю простой способ, при загрузке страницы проверить с помощью JS div c классом loginMessage на наличие элементов, и если они там есть то открыть окно с формой и ошибкой сразу.
    Clean
    30 апреля 2013, 12:16
    0
    iframe это вообще колхоз.
    popup тоже плохо, т.к у многих стоят блокираторы.
    Я мог реализовать любым способом, но решил самым простым-посредством jquery по кнопке раскрывать список вниз, при этом этот чанк используется только в том случае если пользователь не авторизирован на сайте, посредством Personilize идет проверка.Если юзер авторизирован то открывается другой…

    А этот, в случае ошибок сам раскрывается и показывает на ошибку (ловится строчка из location.hash)

    <script type="text/javascript">
    function openBox (objName) {
    
    
      if ( $(objName).css('display') == 'none' ) {
        $(objName).animate({height: 'show'}, 400);
      } else {
        $(objName).animate({height: 'hide'}, 200);
      }
    }
      $(function() {
         var re = /\#fast_reg/;
        var matches = re.exec(window.location.hash);
        if (matches) {
         openBox('#register'); return false;
        }
      });
       $(function() {
         var re = /\#fast_enter/;
        var matches = re.exec(window.location.hash);
        if (matches) {
         openBox('#enter'); return false;
        }
      });
      
      
    </script>
    <a href="#" onclick="openBox('#register'); return false">[Быстрая регистрация]</a>
    <a href="#" onclick="openBox('#enter'); return false">[Быстрый вход]</a>
    
    <!--register -->
    <div id="register" style="display: none">
    
    [[!Register?
        &submitVar=`registerbtn`
        &activationEmailTpl=`lgnActivationEmailTpl`
        &activationEmailSubject=`Спасибо за регистрацию!`
        &submittedResourceId=`[[*id]]`
        &usernameField=`email`
        &usergroups=`Покупатели`
        &activation=`0`
        &validate=`nospam:blank,     
          password:required,
          password_confirm:password_confirm=^password^,
          fullname:required,
          email:required:email`
        &placeholderPrefix=`reg.`
        &postHooks=`auto-login`
    ]]
    
    <div class="registerMessage">[[!+reg.error.message]]</div>
         
    <form class="form" action="[[~[[*id]]]]#fast_reg" method="post">
    <input type="hidden" name="nospam" value="[[!+reg.nospam]]" />
    
    <table cellpadding="5">
      <tr>
            <td>Адрес эл. почты*:</td>
            <td>
                <input type="text" name="email" id="email" value="[[!+reg.email]]" />
                <div class="error">[[!+reg.error.email]]</div>
            </td>
        </tr>
        
        <tr>
            <td>Пароль*:</td>
            <td>
                <input type="password" name="password" id="password" value="[[!+reg.password]]" />
                <div class="error">[[!+reg.error.password]]</div>
            </td>
        </tr>
        <tr>
            <td>Повторите пароль*:</td>
            <td>
                <input type="password" name="password_confirm" id="password_confirm" value="[[!+reg.password_confirm]]" />
                <div class="error">[[!+reg.error.password_confirm]]</div>
            </td>
        </tr>
        <tr>
            <td>Ф.И.О.*:</td>
            <td>
                <input type="text" name="fullname" id="fullname" value="[[!+reg.fullname]]" />
                <div class="error">[[!+reg.error.fullname]]</div>
            </td>
        </tr>
      
        <tr>
            <td>Телефон:</td>
            <td>
                <input type="text" name="phone" id="phone" value="[[!+reg.phone]]" />
                <div class="error">[[!+reg.error.phone]]</div>
            </td>
        </tr>
        <tr>
            <td>Адрес доставки:</td>
            <td>
                <textarea name="address" id="address">[[!+reg.address]]</textarea>
                <div class="error">[[!+reg.error.address]]</div>
            </td>
        </tr>
        <tr>
            <td><input type="submit" name="registerbtn" value="Зарегистрироваться" /></td>
            <td></td>
        </tr>
    </table>
    
    </form>
    
    </div>
    <!--/register -->
    <!-- enter -->
    <div id="enter" style="display: none">
    
    [[!Login?
        &loginTpl=`tpl.orderLoginTpl`
        &logoutTpl=`tpl.loginLogoutTpl`
        &errTpl=`lgnErrTpl` 
        &loginResourceId=`[[*id]]`
        &logoutResourceId=`24` 
        &contexts=`web,catalog` ]]
    
    
    </div>
    
    <!--/enter -->
      Alexander M
      03 мая 2013, 02:50
      0
      Используйте api modx.
      Вот несколько примеров, возможно вам это поможет
      В качестве решения всплывающих окон можно применить fancybox
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8