Написать код JavaScript из PHP в Joomla - PullRequest
0 голосов
/ 31 мая 2011

У меня следующая проблема:

Я хочу, чтобы пользователи могли загружать изображения через бэкэнд Joomla.

Я сделал его очень похожим на поле "media", но есть добавлениеполе, в котором каждый раз, когда пользователь выбирает изображение, используя медиа-компонент внутри iframe (так же, как медиа-поле), новое поле вставляется в набор полей с помощью javascript.

Это новое поле имеет выбранное значение изображения, так что вы можетелибо измените его, либо удалите.

При загрузке редактируемого макета PHP генерирует все поля с изображениями, которые там, где они были добавлены ранее, IE:

|image1.png| change  delete
|image2.png| change  delete
|          | addNew

Эти кнопки изменения, сгенерированные PHP, работают отлично,поэтому, когда вы нажимаете на них, появляется iframe, который позволяет вам выбрать другое изображение.кнопки удаления также работают (стирая поле)

, затем я нажимаю addNew и выбираю другое изображение:

|image1.png| change  delete
|image2.png| change  delete
|image3.png| change  delete
|          | addNew

Кажется, что это работает, но когда я нажимаю "изменить", вместо полученияВо всплывающем окне iframe браузер перенаправляет меня к компоненту: S.

Я посмотрел на исходный код HTML, и оба поля, сгенерированные PHP и javascript, одинаковы, поэтому проблема должна заключаться в некотором JavaScript.

это PHP HTML для полей:

        $html = array ( );

        $html[] = '<li id="'.$id.'">';
        $html[] =   '<label></label>';
        $html[] =   '<input'.
                        ' type="text" readonly="true"'.
                        ' value="' .$value. '"'.
                        ' id="'.$id.'_data"'.
                        ' size="60"'.
                    '>';
        $html[] =   '<div class="button2-left">';
        $html[] =       '<div class="blank">';
        $html[] =           '<a href="index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=&amp;author=&amp;fieldid='.$id.'_data&amp;folder='.$this->folder.'"'.
                                'class="modal"'.
                                'rel="{handler: \'iframe\', size: {x: 800, y: 500}}"'.          
                            '>';
        $html[] =               'Cambiar';
        $html[] =           '</a>';
        $html[] =       '</div>';
        $html[] =   '</div>';
        $html[] =   '<div class="button2-left">';
        $html[] =       '<div class="blank">';
        $html[] =           '<a'.
                                ' onclick="document.getElementById(\''.$id.'_data\').value=\'\'; document.getElementById(\''.$id.'\').style.display=\'none\'; document.getElementById(\''.$id.'\').onchange();"'.
                                ' href="#"'.
                            '>';
        $html[] =               'Eliminar';
        $html[] =           '</a>';
        $html[] =       '</div>';
        $html[] =   '</div>';
        $html[] = '</li>';

и это JavaScript, написанный на PHP

        $script2 = array();
        $script2[] = '  function new_'.$this->id.'( value ) {';
        $script2[] = '      var container = document.getElementById(\''.$this->id.'_container\');';

        $script2[] = '      var child  = document.createElement(\'li\');';
        $script2[] = '      var lbl    = document.createElement(\'label\');';
        $script2[] = '      var input  = document.createElement(\'input\');';
        $script2[] = '      var but    = document.createElement(\'div\');';
        $script2[] = '      var but2   = document.createElement(\'div\');';
        $script2[] = '      var blank  = document.createElement(\'div\');';
        $script2[] = '      var blank2 = document.createElement(\'div\');';
        $script2[] = '      var add    = document.createElement(\'a\');';
        $script2[] = '      var clear  = document.createElement(\'a\');';

        $script2[] = '      child.setAttribute( \'id\' , \''.$id_insert.' );';

        $script2[] = '      input.setAttribute ( \'type\' , \'text\' );';
        $script2[] = '      input.setAttribute ( \'readonly\' , \'true\' );';
        $script2[] = '      input.setAttribute ( \'id\' , \''.$id_insert.'+\'_data\' );';
        $script2[] = '      input.setAttribute ( \'size\' , \'60\' );';
        $script2[] = '      input.setAttribute ( \'value\' , value );';

        $script2[] = '      but.setAttribute  ( \'class\' , \'button2-left\' );';
        $script2[] = '      but2.setAttribute ( \'class\' , \'button2-left\' );';

        $script2[] = '      blank.setAttribute  ( \'class\' , \'blank\' );';
        $script2[] = '      blank2.setAttribute ( \'class\' , \'blank\' );';

        $script2[] = '      add.setAttribute   ( \'class\' , \'modal\');';
        $script2[] = "      add.setAttribute   ( 'rel' , \"{handler: 'iframe', size: {x: 800, y: 500}}\");";
        $script2[] = "      add.setAttribute   ( 'href' , 'index.php?option=com_media&view=images&tmpl=component&asset=&author=&fieldid=".$id_insert."+'_data&folder=".$folder_secure."' );";
        $script2[] = '      add.innerHTML = \'Cambiar\';';

        $script2[] = '      clear.setAttribute ( \'href\' , \'#'.$this->id.'_create_data\' );';
        $script2[] = '      clear.setAttribute ( \'onclick\' , \'document.getElementById("'.$id_insert.'+\'_data").value=""; document.getElementById("'.$id_insert.'+\'").style.display="none"; document.getElementById("'.$id_insert.'+\'").onchange();\' );';
        $script2[] = '      clear.innerHTML = \'Eliminar\';';

        $script2[] = '      child.appendChild ( lbl );';
        $script2[] = '      child.appendChild ( input );';

        $script2[] = '      child.appendChild ( but );';
        $script2[] = '      but.appendChild ( blank );';
        $script2[] = '      blank.appendChild ( add );';

        $script2[] = '      child.appendChild ( but2 );';
        $script2[] = '      but2.appendChild ( blank2 );';
        $script2[] = '      blank2.appendChild ( clear );';

        $script2[] = '      var add_new = document.getElementById(\''.$this->id.'_create_new\');';
        $script2[] = '      container.removeChild ( add_new );';

        $script2[] = '      container.appendChild ( child );';
        $script2[] = '      container.appendChild ( add_new );';

        $script2[] = '      document.getElementById(\''.$this->id.'_data\').value = \'\';';
        $script2[] = '      '.$count_insert.'++;';

        $script2[] = '      }';

Браузер не находит ошибок вJavaScript, поэтому я не знаю, почему это не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...