1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

Помощь Помогите встроить код в joomla

Тема в разделе "Joomla", создана пользователем verfaa, 24 окт 2013.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Статус темы:
Закрыта.
Модераторы: arman29, DMS, Genk0
  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    Всем привет. С joomla раньше никогда не работал, а тут возникла необходимость подправить сайт на этой cms.
    На главной странице есть ссылка, кликая на которую всплывает модальное окно с формой регистрацией. В этой форме есть картинка, кликая на которую юзер может добавить фото. Затем при сабмите формы сохранить эту картинку в папку. Вроде бы все просто... если бы не joomla.
    В форме прописан следующий action
    Код:
    <form action="<?php echo $target;?>" method="post" name="adminForm" id="adminForm" enctype="multipart/form-data" onsubmit="return submitbutton(this)">
    Мне нужно каким то образом этот код
    Код:
    var fd = new FormData();
    fd.append('img', $('#imgFile')[0].files[0]);
    
    $.ajax({
      type: 'POST',
      url: '/templates/beez_20/html/com_adsmanager/edit/ajax.php',
      data: fd,
      processData: false,
      contentType: false,
      dataType: "json",
      success: function(data) {  },
      error: function(data) {  }
    });
    
    встроить в функцию submitbutton() (она вызывается при сабмите формы) Там уже видимо кто-то пытался подключить jquery виджет Plupload...

    Вот тело функции submitbutton()
    Код:
    function submitbutton(mfrm) {
     
        var me = mfrm.elements;
        var r = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-]", "i");
        var r_num = new RegExp("[^0-9\., ]", "i");
        var r_email = new RegExp("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,3}$" ,"i");
    
        var errorMSG = '';
        var iserror=0;
     
        <?php
        if (function_exists("loadEditFormCheck")){
            loadEditFormCheck();
        }
        ?>
     
        <?php if ($this->nbcats > 1)
        {
        ?>
            var form = document.adminForm;
            var srcList = eval( 'form.selected_cats' );
            var srcLen = srcList.length;
            if (srcLen == 0)
            {
                errorMSG += <?php echo json_encode(JText::_('ADSMANAGER_FORM_CATEGORY')); ?>+" : "+<?php echo json_encode(JText::_('ADSMANAGER_REGWARN_ERROR')); ?>+'\n';
                srcList.style.background = "red";
                iserror=1;
            }
            else
            {
                for (var i=0; i < srcLen; i++) {
                    srcList.options[i].selected = true;
                }
            }
        <?php
        }
        ?>
     
        if (mfrm.username && (r.exec(mfrm.username.value) || mfrm.username.value.length < 3)) {
            errorMSG += mfrm.username.getAttribute('mosLabel').replace('&nbsp;',' ') + ' : '+<?php echo json_encode(sprintf( JText::_('ADSMANAGER_VALID_AZ09'), JText::_('ADSMANAGER_PROMPT_UNAME'), 4 )); ?>+'\n';
            mfrm.username.style.background = "red";
            iserror=1;
        }
        if (mfrm.password && r.exec(mfrm.password.value)) {
            errorMSG += mfrm.password.getAttribute('mosLabel').replace('&nbsp;',' ') + ' : '+<?php echo json_encode(sprintf( JText::_('ADSMANAGER_VALID_AZ09'), JText::_('ADSMANAGER_REGISTER_PASS'), 6 )); ?>+'\n';
            mfrm.password.style.background = "red";
            iserror=1;
        }
     
        if (mfrm.email && !r_email.exec(mfrm.email.value) && mfrm.email.getAttribute('mosReq')) {
            errorMSG += mfrm.email.getAttribute('mosLabel').replace('&nbsp;',' ') + ' : '+<?php echo json_encode(JText::_('ADSMANAGER_REGWARN_EMAIL')); ?>+'\n';
            mfrm.email.style.background = "red";
            iserror=1;
        }
                 
        // loop through all input elements in form
        for (var i=0; i < me.length; i++) {
     
            if ((me[i].getAttribute('test') == 'number' ) && (r_num.exec(me[i].value))) {
                errorMSG += me[i].getAttribute('mosLabel').replace('&nbsp;',' ') + ' : '+<?php echo json_encode(JText::_('ADSMANAGER_REGWARN_NUMBER')); ?>+'\n';
                iserror=1;
            }
         
            // check if element is mandatory; here mosReq="1"
            if ((me[i].getAttribute('mosReq') == 1)&&(me[i].type == 'hidden')&&(me[i].value == '')) {
                // add up all error messages
                errorMSG += me[i].getAttribute('mosLabel').replace('&nbsp;',' ') + ' : '+<?php echo json_encode(JText::_('ADSMANAGER_REGWARN_ERROR')); ?>+'\n';
                // notify user by changing background color, in this case to red
                el = me[i].getAttribute('mosElem');
    
                elem = document.getElementById(el);
                elem.style.background = "red";
                iserror=1;
            } else if ((me[i].getAttribute('mosReq') == 1)&&(me[i].style.visibility != 'hidden')&&(me[i].style.display != 'none')) {
                if (me[i].type == 'radio' || me[i].type == 'checkbox') {
                    var rOptions = me[me[i].getAttribute('name')];
                    var rChecked = 0;
                    if(rOptions.length > 1) {
                        for (var r=0; r < rOptions.length; r++) {
                            if (rOptions[r].checked) {
                                rChecked=1;
                            }
                        }
                    } else {
                        if (me[i].checked) {
                            rChecked=1;
                        }
                    }
                    if(rChecked==0) {
                        // add up all error messages
                        errorMSG += me[i].getAttribute('mosLabel').replace('&nbsp;',' ') + ' : '+<?php echo json_encode(JText::_('ADSMANAGER_REGWARN_ERROR')); ?>+'\n';
                        // notify user by changing background color, in this case to red
                        me[i].style.background = "red";
                        iserror=1;
                    }
                }
                if (me[i].value == '') {
                    // add up all error messages
                    errorMSG += me[i].getAttribute('mosLabel').replace('&nbsp;',' ') + ' : '+<?php echo json_encode(JText::_('ADSMANAGER_REGWARN_ERROR')); ?>+'\n';
                    // notify user by changing background color, in this case to red
                    me[i].style.background = "red";
                    iserror=1;
                }
            }
        }
    
        <?php if ((@$this->content->id == 0)&&($this->conf->show_accept_rules == 1)) {?>
        if (!jQ('#acceptrules').is(':checked')) {
            iserror=1;
            errorMSG += <?php echo json_encode(JText::_('ADSMANAGER_YOU_MUST_ACCEPT_RULES')) ?>;
        }
        <?php } ?>
     
     
        if(iserror==1) {
            alert(errorMSG);
            return false;
        } else {
            <?php if ($withImages) {?>
            var uploader = jQ('#uploader').pluploadQueue();
             
            // Files in queue upload them first
            if (uploader.files.length > 0) {
                // When all files are uploaded submit form
                uploader.bind('StateChanged', function() {
                    if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
                        //Little hack to be able to return the selected_cats
                        <?php if ($this->nbcats > 1) { ?>
                        var srcList = eval( 'form.selected_cats' );
                        srcList.name = "selected_cats[]";
                        <?php } ?>
                        jQ('#adminForm')[0].submit();
                    }
                });
                 
                uploader.start();
                return false;
            }
            <?php } ?>
             
            //Little hack to be able to return the selected_cats
            <?php if ($this->nbcats > 1) { ?>
                srcList.name = "selected_cats[]";
            <?php } ?>
            return true;
        }
    
    }
    
    Помогите пожалуйста!
     
    Последнее редактирование: 24 окт 2013
  2. step-di

    step-di Постоялец

    Регистр.:
    26 авг 2008
    Сообщения:
    59
    Симпатии:
    33
    Можно сделать новую функцию и в нее заложить необходимый функционал. В теге form вызывать вместо submitbutton уже эту новую функцию
    Иногда мне приходится например вставлять какой то код на php непосредственно в материал или HTML модуль
    Я для этого использую плагин jumi
    пример вызова - {jumi [path/script.php]}
    в параметрах указываю путь к php файлу
    Другой способ - рыскать (поиск по файлам) где эта функция живет и там ее пытаться изменить. Но нужно учесть, что при обновлении джумлы или расширения, которое использует эту функцию ваши доработки могут затереться.
    Функцию новую можно разместить и в коде своего шаблона расширения. В джумле можно выбрать какой шаблон у расширения использовать или переопределить шаблон расширения по умолчанию в папке html текущего шаблона сайта
     
Статус темы:
Закрыта.