pragmaMx Support Forum

pragmaMx => integrierte Module => Thema gestartet von: alaniso am 21 Oktober 2014, 08:41:41

Titel: AdminForm: 'filebrowse'-Element nur 1x möglich?
Beitrag von: alaniso am 21 Oktober 2014, 08:41:41
Hallo zusammen,
bei der Erstellung der Settings zu einem neuen Theme  mit dem AdminForm habe ich folgenden "kleinen" Fehler festgestellt:

Das Objekt "filebrowse" kann im Formular nur 1 mal verwendet werden.
Falls es ein zweites mal verwendet wird, so wird innerhalb aller daraus resultierende "Input"-Objekte die identische JavaCode-Variable "inputid" redefiniert. Dies hat zur Folge, dass immer das letzte Input-Objekt mit dem über den FileBrowser selektierten Wert versorgt wird - und nicht das jeweils dazugehörige:

                    /*<![CDATA[*/
                      var inputid = 'adminFormMainslides9';
                      $('#xxadminFormMainslides9xx').click(function() {
                        pmxfilemanager(inputid, true);
                        return false;
                      });
                      /*]]>*/


@TerraProject:
Hast Du eine Idee, dieses abzustellen?

Vielen Dank vorab und viele Grüße,
André
Titel: Re:AdminForm: 'filebrowse'-Element nur 1x möglich?
Beitrag von: Olaf / TerraProject am 21 Oktober 2014, 09:03:24
hmmm... versuche mal das hier in AdminForm.php (Zeilen ab 1229)

                   /*<![CDATA[*/
                     var yy{$inputid}yy = '{$inputid}';
                     $('#xx{$inputid}xx').click(function() {
                       pmxfilemanager(yy{$inputid}yy, true);
                       return false;
                     });
                     /*]]>*/

damit bekommt die Variable über die ID jedes mal einen neuen Namen....

Gib mal Rückmeldung, obs klappt
Titel: Re:AdminForm: 'filebrowse'-Element nur 1x möglich?
Beitrag von: alaniso am 21 Oktober 2014, 15:24:31
Hallo TerraProject,

vielen Dank für die schnelle Hilfe: hat super funktioniert!

Wie immer steckt die Tücke im Detail - durch die Eindeutigkeit der ID funktioniert nun die "Bildvorschau" nicht mehr, wie sie z.B. im RSS-Modul vom pmx-Team verwendet wird.

Hier hätte ich den Vorschlag, das Image optional aufzunehmen. Ich habe da etwas gebastelt und folgendes ist dabei herausgekommen:

//          $forminput .= "
//                     <button id=\"xx{$inputid}xx\">" . _BROWSE . "</button>
//                     <script type=\"text/javascript\">
//                     /*<![CDATA[*/
//                       var inputid = '{$inputid}';
//                       $('#xx{$inputid}xx').click(function() {
//                         pmxfilemanager(inputid, true);
//                         return false;
//                       });
//                       /*]]>*/
//                     </script>";
//        }
//        $forminput .= "
//            </div>
//            <div {$linestyle3}>{$fdescription}</div>
//            </div>";
         
//        break;
         
         
         $forminput .= "
         <button id=\"xx{$inputid}xx\">" . _BROWSE . "</button>
         <script type=\"text/javascript\">
         /*<![CDATA[*/
          var yy{$inputid}yy = '{$inputid}';
          $('#xx{$inputid}xx').click(function() {
          pmxfilemanager(yy{$inputid}yy, true);
          return false;
          });
         /*]]>*/
         </script>";
        }
       
        // Soll das Image dargestellt werden?
        $showimage = false;
        if (isset ( $fextern ['showimage'] )) {
          $showimage = $fextern ['showimage'];
        }
        if ($showimage){
          // Image-ID
          $img_id = $inputid."_img";
          // Image-Tag incl. JavaScript:
          $img = "<img src=\"{$fvalue}\" id=\"{$img_id}\"/>";
          $img .= "<script type=\"text/javascript\">
          /*<![CDATA[*/
          $('#{$inputid}').change(function() {
            $('#{$img_id}').attr('src', this.value);
          });
          /* ]]> */
          </script>";
       
         //Image-Tag mit eigener style-class hinzufuegen:
         $forminput .= "<div class=\"" . $this->cssform . "-filebrowseimage{$class}\">".$img."</div>";
       }
         
       $forminput .= "
                </div>
                <div {$linestyle3}>{$fdescription}</div>
                </div>";
       
        break;


Der Aufruf in der /modules/rss/admin/admin.php (Zeile 117) wäre dann:

//        $this->form->add("rss", "filebrowse", "logo", $data['logo'], _RSS_LOGOURL1, _RSS_LOGOURL2, 40, array('type' => 'images'));
//        $this->form->add("rss", "output", $image);
        $this->form->add("rss", "filebrowse", "logo", $data['logo'], _RSS_LOGOURL1, _RSS_LOGOURL2, 40, array('type' => 'images', 'showimage'=>true));


Das funktioniert einwandfrei. Wäre das etwas für die Standard-Erweiterung des AdminForms?

LG,
André
Titel: Re:AdminForm: 'filebrowse'-Element nur 1x möglich?
Beitrag von: Olaf / TerraProject am 21 Oktober 2014, 15:34:36
 :thumbup:
ich schau mir das noch mal an, ob noch andere Teile betroffen sind. Ansonsten werd ich die Klasse dementsprechend aktualisieren

Danke für die Info und die Hilfe  :drinks:
Titel: Re:AdminForm: 'filebrowse'-Element nur 1x möglich?
Beitrag von: Olaf / TerraProject am 22 Oktober 2014, 08:01:26
Moin  :morning:

habe das mal getestet. Mit noch einer kleineren Anpassung habe ich das jetzt ins Core übernommen. Ausser RSS sind keine anderen Module derzeit betroffen.

Danke für den Tip und die konstruktive Hilfe und eine saubere Lösung. Diese Hilfe von Usern ist für uns ser wichtig  :thumbup:
:JC_highfive:
Titel: Re:AdminForm: 'filebrowse'-Element nur 1x möglich?
Beitrag von: alaniso am 22 Oktober 2014, 14:40:59
Gerne wieder!

Ist es evt. möglich, die Datei vorab zum Download anzubieten? Dann könnte ich auf diesem Stand aufsetzen und spätere Rück-Anpassungen vermeiden!

Viele Grüße,
André
Titel: Re:AdminForm: 'filebrowse'-Element nur 1x möglich?
Beitrag von: Olaf / TerraProject am 22 Oktober 2014, 19:47:50
hier mal vorab
:drinks:
Titel: Re:AdminForm: 'filebrowse'-Element nur 1x möglich?
Beitrag von: alaniso am 23 Oktober 2014, 08:31:57
Vielen Dank!
:thumbup: