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

Статус
В этой теме нельзя размещать новые ответы.

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Всем привет. С 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;
    }

}

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