Neue und benutzerfreundlichere include.CMS_IMG.php

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 10. Dez 2003, 15:14

emergence hat geschrieben:schön nur ein kleiner fehler timo...

die zeile um das entsprechende javascript mit link zu erzeugen sollte so aussehen

Code: Alles auswählen

$script .= 'imglnk["'.$img_id[$key].'"] = "'.$cfgClient[$client]["path"]["htmlpath"]."upload/".$img_dir.$img_list[$key].'";';
begründung: der wert der in $img_dir gespeichert ist enthält schon ein /

bei mir hats im unterverzeichniss zb die jpg bilder nicht mehr angezeigt...
Hab ich geändert. Welchen Browser verwendest du, daß du so etwas siehst? IE sowohl Mozilla sowohl Firebird zeigen das Bild ohne Probleme an...

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 10. Dez 2003, 15:21

ie 6.0 ohne sp1 (kein scherz) , manchmal auch mozilla 1.4 oder 1.6, opera je nachdem was ich grad mache...

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 10. Dez 2003, 15:31

noch was nettes gefunden...

auf meiner testumgebung läuft ja die standard website von contenido
wie ich jetzt diese neue include_CMS_IMG verwendet hab sind plötzlich alle zugewiesenen bilder von Bild 1 - Bild 4 die ein bild jpg in einem unterordner eingebunden hatten nur mehr als ziffern definiert gewesen ??
erst durch neu zuweisung stimmten dann die links...
ähm ja... wäre jetzt nur intressant ob dies auch bei anderen auftritt...

die andere sache beim öffnen des bild bearbeiten dialogs wird zwar das definierte bild ausgewählt aber unten nicht angezeigt...

vielleicht sollte man noch ein onload script einbauen...

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 10. Dez 2003, 15:39

wie ich jetzt diese neue include_CMS_IMG verwendet hab sind plötzlich alle zugewiesenen bilder von Bild 1 - Bild 4 die ein bild jpg in einem unterordner eingebunden hatten nur mehr als ziffern definiert gewesen ??
Den Satz verstehe ich vom Aufbau her nicht :)
die andere sache beim öffnen des bild bearbeiten dialogs wird zwar das definierte bild ausgewählt aber unten nicht angezeigt...
Ja, ist bekannt. Ich hab's versucht, aber so einfach ging das nicht, deshalb hab ich's erstmal aufgeschoben.

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 10. Dez 2003, 15:46

timo hat geschrieben:Den Satz verstehe ich vom Aufbau her nicht :)
okay ich und meine komplizierten satz konstruktionen, also einfach:
1. verwende die standard website die bei contenido dabei ist auf meinem testsystem
2. hab die neue include_CMS_IMG eingebaut
3. beim ansehen der seite. alle bilder die mittels BILD (1)-(4) eingebunden sind und sich in einem unterordner befinden (zB bilder/banner.jpg) werden nicht mehr angezeigt...
4. bei bildeigenschaften wird mir dort nur http://localhost/cms/5 angezeigt
-> als ziffer...
5. bei neuerlicher zuweisung des bildes (gleiches bild) gings dann wieder...

PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay » Mi 10. Dez 2003, 16:11

Bei mir ist folgendes Problem aufgefallen: Das Preview wird nur angezeigt, wenn man dein Eintrag in der Auswahlliste ändert. Wenn sich dort aber nur ein Bild befindet, wird dieses von Anfang an selektiert, aber ein Preview erscheint keines.

Das gleiche geschieht mit dem Ursprungsbild, das heisst, wenn ich bereits ein Bild im Container habe, dann auf den IMAGE-Link klicke um das Bild zu editieren. Das bereits vorhandene Bild wird nicht als Preview angezeigt.

Man müsste also noch irgendwie die Events ändern, doch wie das geht weiss ich nicht.

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 10. Dez 2003, 16:20

emergence hat geschrieben:
timo hat geschrieben:Den Satz verstehe ich vom Aufbau her nicht :)
okay ich und meine komplizierten satz konstruktionen, also einfach:
1. verwende die standard website die bei contenido dabei ist auf meinem testsystem
2. hab die neue include_CMS_IMG eingebaut
3. beim ansehen der seite. alle bilder die mittels BILD (1)-(4) eingebunden sind und sich in einem unterordner befinden (zB bilder/banner.jpg) werden nicht mehr angezeigt...
4. bei bildeigenschaften wird mir dort nur http://localhost/cms/5 angezeigt
-> als ziffer...
5. bei neuerlicher zuweisung des bildes (gleiches bild) gings dann wieder...
Bei mir geht das wunderbar. Eventuell defekter CMS_TYP? Bei CMS_IMG (bei mir) ist es so, daß wenn eine Zahl drinsteht, wird der entsprechende Eintrag aus der DB geholt, falls es ein Pfad ist, dann wird er so angezeigt...

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 10. Dez 2003, 16:28

hmm... meine CMS_IMG sieht so aus...

Code: Alles auswählen

/**
 * CMS_IMG
 */
 
$tmp = $a_content["CMS_IMG"][$val];
$tmp = urldecode($tmp);
if($tmp==""||$tmp=="0"){
$tmp="";

}else{

$sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE idclient='".$client."' AND idupl='".$tmp."'";

$db2 = new DB_Contenido;
$db2->query($sql);

if ( $db2->next_record() ) {

        $tmp = $cfgClient[$client]["upload"].$db2->f("dirname").$db2->f("filename");
    }

    $tmp = htmlspecialchars($tmp);
$tmp = urldecode($tmp);
    $tmp = str_replace("'", "\'", $tmp);
}

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 10. Dez 2003, 16:32

Sieht auf den ersten Blick mit meiner identisch aus -> sollte also gehen...

PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay » Mi 10. Dez 2003, 16:37

die andere sache beim öffnen des bild bearbeiten dialogs wird zwar das definierte bild ausgewählt aber unten nicht angezeigt...
Ich habe mal etwas geproggt, das dieses Problem bearbeitet:

Code: Alles auswählen

<?php

/*****************************************
* File      :   $RCSfile: include.CMS_IMG.php,v $
* Descr     :   CMS_IMG editor
*
* Author    :   $Author: timo.hummel $
*
* Created   :   10.12.2003
* Modified  :   $Date: 2003/12/10 13:50:47 $
*
* © four for business AG, www.4fb.de
*
* Contributions by:
* 21.11.2003 (Ing. Christian Schuller - www.maurer-it.com)
*
* $Id: include.CMS_IMG.php,v 1.20 2003/12/10 13:50:47 timo.hummel Exp $
******************************************/



if ($doedit == "1") {
    consaveContentEntry($idartlang, "CMS_IMG", $typenr, $CMS_IMG);
    consaveContentEntry($idartlang, "CMS_IMGDESCR", $typenr, $CMS_IMGDESCR);
    conGenerateCodeForArtInAllCategories($idart);
    header("location:".$sess->url($cfgClient[$client]["path"]["htmlpath"]."front_content.php?area=$tmp_area&idart=$idart&idcat=$idcat&changeview=edit"));
}

?>
<html>
<head>
<title>contenido</title>
<link rel="stylesheet" type="text/css" href="<?php print $cfg["path"]["contenido_fullhtml"] . $cfg["path"]["styles"] ?>contenido.css">
</HEAD>
<script>
        function disp_preview() {
         if (document.editcontent.CMS_IMG.value) {
          preview.document.open();
          preview.document.writeln('<html><body style="padding:0px; margin:0px;"><table border=0 width=100% height=100%><tr><td align="middle"><img src="'+imglnk[document.editcontent.CMS_IMG.value]+'"></td></tr></table></body></html>');
          preview.document.close();
         }
        }

</script>
<body onLoad="window.setTimeout('disp_preview()',1000);">
<table width="100%"  border=0 cellspacing="0" cellpadding="0" bgcolor="#ffffff">
  <tr>
    <td width="10" rowspan="4"><img src="<?php print $cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"] ?>spacer.gif" width="10" height="10"></td>
    <td width="100%"><img src="<?php print $cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"] ?>spacer.gif" width="10" height="10"></td>
    <td width="10" rowspan="4"><img src="<?php print $cfg["path"]["contenido_fullhtml"].$cfg["path"]["images"] ?>spacer.gif" width="10" height="10"></td>
  </tr>
  <tr>
    <td>

<?php

   cInclude("classes","class.ui.php");
   cInclude("classes","class.htmlelements.php");
   cInclude("classes","class.template.php");
   cInclude("includes","functions.forms.php");

    getAvailableContentTypes($idartlang);

    $dirheight = 5;
    $dirwidth = 300;
    $filewidth = 300;
    $fileheight = 5;
    $descrwidth = 70;
    $descrheight = 5;
    $previewwidth = 600;
    $previewheight = 400;


    // COLLECT DATA
    if (!isset($img_dir))
    {
        $sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE idclient='".$client."' AND idupl = ".$a_content["CMS_IMG"][$typenr];
        $db->query($sql);
        $db->next_record();
        $img_dir = $db->f("dirname");
    }

    $sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE idclient='".$client."' AND filetype IN ('jpg', 'gif', 'png') ORDER BY dirname, filename";
    $db->query($sql);

    $ds_name = Array();

    while ( $db->next_record() )
    {

       $descr = $db->f("description");

        if ( strlen($descr) > 24 )
        {
            $descr = substr($descr, 0, 24);
            $descr .= "..";
        }

        // collect data for dir selection
        $tmp = split("/",$db->f("dirname"));

        if (!in_array($tmp[count($tmp)-2],$ds_name))
        {
            $ds_lvl[] = count($tmp)-1;
            $ds_name[] = $tmp[count($tmp)-2];
            $ds_fullpath[] = $db->f("dirname");
        }

        if (strcmp($img_dir,$db->f("dirname"))==0)
        {
            $img_list[] = $db->f("filename");
            $img_id[] = $db->f("idupl");
            $img_descr[] = $descr;
        }

    }

    $form = new UI_Table_Form("editcontent", $cfg["path"]["contenido_fullhtml"].$cfg["path"]["includes"]."include.backendedit.php");
    $form->setVar("lang",$lang);
    $form->setVar("typenr",$typenr);
    $form->setVar("idart",$idart);
    $form->setVar("idcat",$idcat);
    $form->setVar("idartlang",$idartlang);
    $form->setVar("contenido",$sess->id);
    $form->setVar("action",10);
    $form->setVar("doedit",1);
    $form->setVar("type",$type);
    $form->setVar("changeview","edit");
    $form->setVar("CMS_LINK", $a_content["CMS_LINK"][$typenr]);

   $header = sprintf(i18n("Edit image for container %s"),$typenr);
   $form->addHeader($header);

   $dirselect = new cHTMLSelectElement("img_dir");
   $dirselect->setEvent("change", "doedit.value=0; submit();");
   $dirselect->setSize($dirheight);
   $dirselect->setStyle("width: {$dirwidth}px;");

   foreach ($ds_lvl as $key => $value)
   {
      $text = str_repeat("-",$value*2)."> ".$ds_name[$key];

      $option = new cHTMLOptionElement($text, $ds_fullpath[$key]);

        switch ($value)
        {
            case 0:
            case 1: $style="background-color:#C0C0C0;"; break;
            case 2: $style="background-color:#D0D0D0;"; break;
            case 3: $style="background-color:#E0E0E0;"; break;
            default: $style="background-color:#F0F0F0;"; break;
        }

      if (strcmp($img_dir,$ds_fullpath[$key])==0)
        {
           $option->setSelected("selected");
        }

        $dirselect->addOptionElement($key, $option);

   }

   $script =  '<script language="JavaScript">';
   $script .= "imglnk = new Array();";

   foreach($img_list as $key => $value)
   {
       $script .= 'imglnk["'.$img_id[$key].'"] = "'.$cfgClient[$client]["path"]["htmlpath"]."upload/".$img_dir.$img_list[$key].'";';
   }
    $script .= "</script>";

   $fileselect = new cHTMLSelectElement("CMS_IMG");
   $fileselect->setEvent("Change", "disp_preview();");
   $fileselect->setEvent("Focus", "disp_preview();");
   $fileselect->setSize($fileheight);
   $fileselect->setStyle("width: {$filewidth}px;");

   $option = new cHTMLOptionElement("-- ".i18n("None")." --", "0");

   if ($a_content["CMS_IMG"][$typenr] == 0)
   {
      $option->setSelected("selected");
   }

   $fileselect->addOptionElement(0,$option);

    foreach ($img_list as $key => $value)
    {
       $description = $img_descr[$key];

       if ($description != "")
       {
          $text = $value . " (". $description .")";
       } else {
          $text = $value;
       }

        switch ($key % 2)
        {
            case 0: $style="background-color:#D0D0D0;"; break;
            case 1: $style="background-color:#E0E0E0;"; break;
        }

        $option = new cHTMLOptionElement($text, $img_id[$key]);

        if ($a_content["CMS_IMG"][$typenr]==$img_id[$key])
      {
         $option->setSelected("selected");
      }

      $option->setStyle($style);
      $fileselect->addOptionElement($key, $option);
    }

   $form->add(i18n("Directory / File"), $dirselect->render().$script.$fileselect->render());

   $textarea = new cHTMLTextarea("CMS_IMGDESCR", $a_content["CMS_IMGDESCR"][$typenr], $descrwidth, $descrheight);
   $form->add("Description", $textarea->render());

    $preview = '<iframe src="about:blank" name="preview" style="border: 0px; width:'.$previewwidth.'px; height:'.$previewheight.'px;">';
    $preview .= '</iframe>';

   $form->add("Preview", $preview);





   $form->render(false);









?>
</td></tr></table>
</body>
</HTML>

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 10. Dez 2003, 16:58

@PickPay
funktioniert... aber ich glaube bei onload tuts folgendes auch...
<body onLoad="disp_preview();">
oder hats nen grund warum dies mit set_timeout geschalten wurde... ?

was anderes ist mir noch aufgefallen....
dateitypen mit der endung jpeg werden nicht selektierbar sein...
hier die entsprechende zeile...

Code: Alles auswählen

    $sql = "SELECT * FROM ".$cfg["tab"]["upl"]." WHERE idclient='".$client."' AND filetype IN ('jpg', 'jpeg', 'gif', 'png') ORDER BY dirname, filename";

PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay » Mi 10. Dez 2003, 17:09

@emergence

Das setTimeout habe ich eingebaut, da es sonst zu einem Fehler kommen kann, wenn das Skript ausgeführt wird, aber die Seite noch nicht ganz geladen ist. Man kann natürlich auch den Timout auf 500 oder kleiner setzen. Das ganze ist bloss eine Sicherheitsmassnahme.

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 10. Dez 2003, 17:28

na ja das onload impliziert ja das die seite geladen sein muss bevor das script aufgerufen wird...

aber als sicherheitsmassnahme ist es okay ;-)

schönen abend noch... ich geh jetzt auf ne schnaps verkostung :-) :-)

PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay » Mi 10. Dez 2003, 22:32

Ich hatte schon Probleme mit dem OnLoad, dass, wie gesagt, eine Fehlermeldung erschien, xy sein Kein Objekt etc..., eben, weil die Seite noch nicht vollständig geladen war, Allerdings war das noch zu Zeiten des IE 5 und Netscape 4.5.

emergence
Beiträge: 10643
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Do 11. Dez 2003, 11:16

noch ne wichtige sache...
hat einer schon versucht ein bild wieder auf kein zu stellen ?
das geht nämlich nicht...

Gesperrt