AdminForm: 'filebrowse'-Element nur 1x möglich?

Begonnen von alaniso, 21 Oktober 2014, 08:41:41

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

alaniso

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é

Olaf

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
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

alaniso

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é

Olaf

 :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:
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

Olaf

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:
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

alaniso

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é

Olaf

g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

alaniso