Nach Löschen eines Layouts verschwinden weitere bei klick

Gesperrt
lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Nach Löschen eines Layouts verschwinden weitere bei klick

Beitrag von lunsen_de » Di 6. Jul 2010, 10:02

Hallo, ich denke diese Frage gehört eher in Bugs, aber irgenwie finde ich den "Neues Thema" Button nicht.

Ich habe bei einer 4.8.12 er Version (die schon laeneger laeuft) ein Problem, welches mir vorher scheinbar nicht aufgefallen ist.

Folgender Ablauf:
1. ich möchte ein nicht mehr benutztes Layout löschen und klicke auf die Mülltonne - Layout verschwindet auf der linkes Seite (so wie es sein soll)
2. ich möchte gleich danach an einem anderen Layout weiterarbeiten und klicke auf dieses (also den Namen)

UND DANN PASSIERT ES - es verschwindet ebenfalls auf der linken Seite, ist weg (So als wenn bei dem Klick auf den Namen der Löschbefehl nochmal ausgeführt wurde)

Randbedingungen:
PHP Version 5.2.6
MYSQL Version 5.0.51a
Es passiert sowohl im IE als auch im Firefox, klicke ich einmal zwischendurch auf den oberen Menüpunkt Content - Layouts und die Layoutübersicht links wird neu aufgebaut kann ich die Layouts wieder normal anklicken ohne dass Sie verschwinden. Aber nach dem Löschen eines nächsten Laouts verschwinden die nächsten auch wieder wie oben beschrieben.

Schreibrechte waren bisher kein Problem, auch manuelles setzten auf 777 in Version brachte keine Änderung.

Hauptproblem ist das nach einem Löschklick in der Layoutübersicht, jeder weitere Klick wieder zum löschen führt, es sei denn die Übersicht (linke Seite) wird neu aufgebaut (z.B. durch nochmaligen klick oben auf Content).

Will ich dann ein neues erstellen, erscheint es links nicht wenn ich den grünen Haken unten rechts klicke (speichern). Beim 2. Klick auf den Haken kommt dann folgende Fehlermeldung

Code: Alles auswählen

Warning: mkdir() [function.mkdir]: Unable to access version/layout/79/ in /var/www/web3/html/contenido/classes/class.version.php on line 319
Warning: chmod() [function.chmod]: Unable to access version/layout/79/ in /var/www/web3/html/contenido/classes/class.version.php on line 320
Warning: chmod() [function.chmod]: Unable to access version/layout/79/ in /var/www/web3/html/contenido/classes/class.version.php on line 320
Warning: chmod() [function.chmod]: stat failed for version/layout/79/ in /var/www/web3/html/contenido/classes/class.version.php on line 320
Warning: fopen() [function.fopen]: Unable to access version/layout/79/2_1278404325.xml in /var/www/web3/html/contenido/classes/class.version.php on line 323
Warning: fopen(version/layout/79/2_1278404325.xml) [function.fopen]: failed to open stream: No such file or directory in /var/www/web3/html/contenido/classes/class.version.php on line 323
Warning: fputs(): supplied argument is not a valid stream resource in /var/www/web3/html/contenido/classes/class.version.php on line 325
Warning: fclose(): supplied argument is not a valid stream resource in /var/www/web3/html/contenido/classes/class.version.php on line 326

Some error occured: Couldnt Create New Version: /var/www/web3/html/contenido/classes/class.version.php at line 329 (#0 /var/www/web3/html/contenido/includes/functions.lay.php(74): Version->createNewVersion() #1 /var/www/web3/html/contenido/main.php(272) : eval()'d code(1): layEditLayout('79', '-- Neues Layout...', '', '') #2 /var/www/web3/html/contenido/main.php(272): eval() #3 {main}) foo 
Nach dem fehlerhaften Löschen ist also kein speichern/neuanlegen mehr möglich (es sei denn, die Übersicht wird neu aufgebaut).
Ich denke das ist aber nur ein Nebeneffekt des fehlerhaften Löschens.

PS: da wir sehr viele Contenido Installationen (in diesem Fall 4.8.12) haben, und zwar auf mehreren Servern, habe ich es gerade auf anderem Server in anderem Account getestet - LEIDER DAS SELBE PROBLEM!

Ich hoffe jemand kann hier helfen.

Gruß lunsen_de

Oldperl
Beiträge: 4254
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Nach Löschen eines Layouts verschwinden weitere bei klic

Beitrag von Oldperl » Di 6. Jul 2010, 11:28

Hallo lunsen_de,

im Bugforum gibt es keinen Button für einen neuen Thread da wir gemeldete Bugs erst nach Prüfung dorthin verschieben. Ist einfach nur eine organisatorische Variante die uns etwas die Arbeit vereinfacht. :-)

Zu deinem Fehler, kannst du bitte mal das Verzeichnis cms/version und alle Unterverzeichnisse auf Schreibrechte (777) prüfen? Laut deiner Fehlermeldung funktioniert schon das Erstellen eines Ordners nicht (mkdir) und alle anderen Fehler resultieren daraus.

Das Verhalten mit dem "Löschen" der Templates werde ich nochmal in einem Demomandanten versuchen nachzuvollziehen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Nach Löschen eines Layouts verschwinden weitere bei klic

Beitrag von Dodger77 » Di 6. Jul 2010, 11:44

Verschoben nach Bugs, da das Löschproblem inkl. 4.8.13 RC2 nachvollziehbar ist.

lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: Nach Löschen eines Layouts verschwinden weitere bei klic

Beitrag von lunsen_de » Di 6. Jul 2010, 12:17

Hallo, mit den Schreibrechten gibt es kein Problem. Auch nach manueller Änderung auf 777 besteht das Problem weiterhin.

Außerdem ist das fälschliche Lösche das Problem, denn die Fehlermeldung (bezüglich der Rechte) taucht ja erst auf, nachdem ein Layout gelöscht wurde und versucht wird ein neues anzulegen und zu spreichern.
Neues Layout wählen, dann 1. mal speichern klicken ohne Auswirkung, 2. mal dann die Fehlermeldung.

Aber wie gesagt alles erst NACHDEM das Löschproblem auftritt. Klickt man auf Content-Layouts und legt ein neues an, geht alles (auch beim ersten klick auf den Haken).

Gruß lunsen_de

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Nach Löschen eines Layouts verschwinden weitere bei klic

Beitrag von Dodger77 » Di 6. Jul 2010, 12:53

Es liegt wohl an der Datei "contenido/includes/include.lay_edit_form.php":

Code: Alles auswählen

    $sReloadScript = "<script type=\"text/javascript\">
                             var left_bottom = parent.parent.frames['left'].frames['left_bottom'];
                             if (left_bottom) {
                                 var href = left_bottom.location.href;
                                 href = href.replace(/&idlay[^&]*/, '');
                                 left_bottom.location.href = href+'&idlay='+'".$_REQUEST['idlay']."';

                             }
                    </script>";

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Nach Löschen eines Layouts verschwinden weitere bei klic

Beitrag von Dodger77 » Di 6. Jul 2010, 14:21

Ich habe das mal behoben und eingecheckt. Änderungen habe ich folgende gemacht:

contenido/templates/standard/template.lay_overview.html:

Code: Alles auswählen

<html>
<head>
    <title></title>
	<meta http-equiv="expires" content="0">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="pragma" content="no-cache">    
    <link rel="stylesheet" type="text/css" href="styles/contenido.css" />
    <script type="text/javascript" src="scripts/messageBox.js.php?contenido={SID}"></script>
    <script type="text/javascript" src="scripts/general.js"></script>
    <script type="text/javascript" src="scripts/rowMark.js"></script>
    <script type="text/javascript">

        /* Session-ID */
        var sid = "{SID}";

        /* Create messageBox
           instance */
        box = new messageBox("", "", "", 0, 0);

        /* Function for deleting
           modules */

        function deleteLayout(idlay) {

            url  = 'main.php?area=lay_edit';
            url += '&action=lay_delete';
            url += '&frame=4';
            url += '&idlay=' + idlay;
            url += '&contenido=' + sid;
            
            parent.parent.frames["right"].frames["right_bottom"].window.location.href = url;

        }

    </script>
</head>
<body bgcolor="#FFFFFF">

<table style="margin: 5px 0 0 0;" width="100%" cellspacing="0" cellpadding="2" border="0">

    <!-- BEGIN:BLOCK -->
    <tr id="{ID}" bgcolor="{BGCOLOR}" onmouseover="lay.over(this)" onmouseout="lay.out(this)" onclick="lay.click(this)">
		 <td></td>
        <td class="textw_small">{NAME}</td>
        <td align="right">{INUSE}&nbsp;{TODO}&nbsp;{DELETE}&nbsp;</td>
    </tr>
    <!-- END:BLOCK -->

</table>

<script language="javascript">    
    if (document.getElementById('marked')) {
        lay.click(document.getElementById('marked'));
    }
</script>

</body>
und contenido/includes/include.lay_edit_form.php:

Code: Alles auswählen

<?php
/**
 * Project: 
 * Contenido Content Management System
 * 
 * Description: 
 * Edit form for layout
 * 
 * Requirements: 
 * @con_php_req 5.0
 * 
 *
 * @package    Contenido Backend includes
 * @version    1.0.2
 * @author     Olaf Niemann
 * @copyright  four for business AG <www.4fb.de>
 * @license    http://www.contenido.org/license/LIZENZ.txt
 * @link       http://www.4fb.de
 * @link       http://www.contenido.org
 * @since      file available since contenido release <= 4.6
 * 
 * {@internal 
 *   created 2003-01-24
 *   modified 2008-06-27, Frederic Schneider, add security fix
 *   modified 2010-07-06, Ingo van Peeren, CON-325 
 *
 *   $Id: include.lay_edit_form.php 692 2008-08-15 14:33:58Z timo.trautmann $:
 * }}
 * 
 */

if(!defined('CON_FRAMEWORK')) {
	die('Illegal call');
}

cInclude("classes", "contenido/class.layout.php");
cInclude("classes", "class.htmlvalidator.php");
cInclude("classes", "class.ui.php");
cInclude("classes", "widgets/class.widgets.page.php");
cInclude("external", "edit_area/class.edit_area.php");

if (!isset($idlay)) $idlay = 0;

$page = new cPage;
$layout = new cApiLayout;

if ($idlay != 0)
{
	$layout->loadByPrimaryKey($idlay);	
}

if ($action == "lay_new")
{
	if (!$perm->have_perm_area_action_anyitem($area, $action))
	{
		$notification->displayNotification("error", i18n("Permission denied"));	
	} else {
		$layouts = new cApiLayoutCollection;	
		$layout = $layouts->create(i18n("-- New Layout --"));
	}
} elseif ($action == "lay_delete")
{
	if (!$perm->have_perm_area_action_anyitem($area, $action))
	{
		$notification->displayNotification("error", i18n("Permission denied"));	
	} else {
		$errno = layDeleteLayout($idlay);
		$layout->virgin = true;
		$notification->displayNotification("info", i18n("Layout deleted"));	
	}
}

if ($refreshtemplates != "")
{
		/* Update all templates for containers with mode fixed and mandatory */
		$sql = "SELECT idtpl FROM ".$cfg["tab"]["tpl"]." WHERE idlay = '".Contenido_Security::toInteger($idlay)."'";
		$db->query($sql);
		
		$fillTemplates = array();
		
		while ($db->next_record())
		{
			$fillTemplates[] = $db->f("idtpl");
		}
		
		foreach ($fillTemplates as $fillTemplate)
		{
			tplAutoFillModules($fillTemplate);
		}
}

if (!$layout->virgin)
{
	$msg = "";
	
    $tpl->reset();

	$idlay = $layout->get("idlay");
	$code = $layout->get("code");
	$name = $layout->get("name");
	$description = $layout->get("description");
	
	/* Search for duplicate containers */
	tplPreparseLayout($idlay);
	$ret = tplBrowseLayoutForContainers($idlay);
	
	if (strlen($ret) != 0)
	{
		$containers = explode("&", $ret);
		
		$types = array();
	
		foreach ($containers as $value)
		{
			if ($value != "") {
				$container[$value] = 0;
			
				/* Search for old-style CMS_CONTAINER[x] */
				$container[$value] += substr_count($code,"CMS_CONTAINER[$value]");

				/* Search for the new-style containers */
				$count = preg_match_all("/<container( +)id=\\\\\"$value\\\\\"(.*)>(.*)<\/container>/i", addslashes($code), $matches);

				$container[$value] += $count;
			
				if (is_array(tplGetContainerTypes($idlay, $value))) {
					$types = array_merge($types, tplGetContainerTypes($idlay, $value));
				}
			}
		}
		
		$types = array_unique($types);
		$layout->setProperty("layout", "used-types", implode($types, ";"));
		
		$msg = "";
		
		foreach ($container as $key => $value)
		{
			if ($value > 1)
			{
				$msg .= sprintf(i18n("Container %s was defined %s times"), $key, $value)."<br>"; 	
			}	
		}
	}

	/* Try to validate html */
	if (getEffectiveSetting("layout", "htmlvalidator", "true") == "true" && $code !== "")
	{
		$v = new cHTMLValidator;
		$v->validate($code);

		if (!$v->tagExists("body") && !$v->tagExists("BODY"))
		{
			$msg .= sprintf(i18n("The body tag does not exist in the layout. This is a requirement for the in-site editing."));
			$msg .= "<br>";	
		}
		
		if (!$v->tagExists("head") && !$v->tagExists("HEAD"))
		{
			$msg .= sprintf(i18n("The head tag does not exist in the layout. This is a requirement for the in-site editing."));
			$msg .= "<br>";	
		}
			
		foreach ($v->missingNodes as $value)
		{
			$idqualifier = "";
			
			$attr = array();
			
			if ($value["name"] != "")
			{
				$attr["name"] = "name '".$value["name"]."'";
			}
			
			if ($value["id"] != "")
			{
				$attr["id"] = "id '".$value["id"]."'";
			}
			
			$idqualifier = implode(", ",$attr);
			
			if ($idqualifier != "")
			{
				$idqualifier = "($idqualifier)";	
			}
			$msg .= sprintf(i18n("Tag '%s' %s has no end tag (start tag is on line %s char %s)"), $value["tag"], $idqualifier, $value["line"],$value["char"]);
			$msg .= "<br>";
	
		}
		
	}
	
	if ($msg != "")
	{
		$notification->displayNotification("warning", $msg);
	}
	
	$form = new UI_Table_Form("module");
	$form->addHeader(i18n("Edit Layout"));
	$form->setWidth("100%");
	$form->setVar("area", $area);
	$form->setVar("action", "lay_edit");
	$form->setVar("frame", $frame);
	$form->setVar("idlay", $idlay);
	
	$tb_name = new cHTMLTextbox("layname", $name, 60);
	$ta_description = new cHTMLTextarea("description", $description,100, 10);
	$ta_description->setStyle("font-family: monospace;width: 100%;");
	$ta_description->updateAttributes(array("wrap" => "off"));
	
	$ta_code = new cHTMLTextarea("code", htmlspecialchars($code), 100,20, 'code');
	$ta_code->setStyle("font-family: monospace;width: 100%;");
	$ta_code->updateAttributes(array("wrap" => "off"));
	
	$cb_refresh = new cHTMLCheckbox("refreshtemplates", i18n("On save, apply default modules to new containers"));
	
	$form->add(i18n("Name"),$tb_name);
	$form->add(i18n("Description"),$ta_description);
	$form->add(i18n("Code"),$ta_code);
	$form->add(i18n("Options"), $cb_refresh);
	
    # Set static pointers
    $tpl->set('s', 'ACTION',    $sess->url("main.php?area=$area&frame=$frame&action=lay_edit"));
    $tpl->set('s', 'IDLAY',     $idlay);
    $tpl->set('s', 'DESCR',     $description);
    $tpl->set('s', 'CLASS', 'code_sfullwidth');
    $tpl->set('s', 'NAME',      htmlspecialchars($name));
    
    # Set dynamic pointers
    $tpl->set('d', 'CAPTION', i18n("Code").':');
    $tpl->set('d', 'VALUE',   htmlspecialchars($code));
    $tpl->set('d', 'CLASS', 'code_fullwidth');
    $tpl->set('d', 'NAME',    'code');
    $tpl->next();
    
    $oEditArea = new EditArea('code', 'html', substr(strtolower($belang), 0, 2), true, $cfg);
    $page->addScript('editarea', $oEditArea->renderScript());
    
    $sScript = '<script type="text/javascript">
                            if (document.getElementById(\'scroll\')) {
                                document.getElementById(\'scroll\').onmousedown = resizer.triggerClickOn;
                                document.getElementById(\'scroll\').onmouseup = resizer.triggerClickOff;
								document.getElementById(\'scroll\').style.paddingTop=\'4px\';
								document.getElementById(\'scroll\').style.paddingBottom=\'5px\';
                            }
                        </script>';
    
	$page->setContent($form->render().$sScript);    


} else {
	$page->setContent("");	
}

$page->setSubnav("idlay=$idlay", "lay");

if (stripslashes($_REQUEST['idlay'])) {
    $sReloadScript = "<script type=\"text/javascript\">
                             var left_bottom = parent.parent.frames['left'].frames['left_bottom'];
                             if (left_bottom) {
                                 var href = left_bottom.location.href;
                                 href = href.replace(/&idlay[^&]*/, '');
                                 left_bottom.location.href = href+'&idlay='+'".$_REQUEST['idlay']."';

                             }
                    </script>";
} else {
    $sReloadScript = "";
}
$page->addScript('reload', $sReloadScript);
$page->render();
?>

lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: Nach Löschen eines Layouts verschwinden weitere bei klic

Beitrag von lunsen_de » Di 6. Jul 2010, 16:17

Hallo, danke für die schnelle Hilfe.

Die beiden geänderten Dateien funktionieren und beseitigen das Problem, d.h. das Problem ist bei mir dann nicht mehr aufgetreten.

Gruß lunsen_de

lunsen_de
Beiträge: 297
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: Nach Löschen eines Layouts verschwinden weitere bei klic

Beitrag von lunsen_de » Do 8. Jul 2010, 09:08

Hallo, wenn ich das richtig sehe, betrifft der Bug wohl alle Bereiche, die mit den Ordnern Version zu tun haben.

Gestern ist leider bei einer css Datei dasselbe beim löschen passiert. Also eine css gelöscht per klick und beim anklicken einer anderen gleich daruf war diese dann auch weg. Verdammt (das letzte Backup war schon ein bisschen her).

Kann sich das nocheinmal jemand anschauen (sind sicher alle Bereiche unter Style: Layouts/Templates/Styles...)?

Gruß lunsen_de

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Nach Löschen eines Layouts verschwinden weitere bei klic

Beitrag von Dodger77 » Do 8. Jul 2010, 09:25

Danke für den Hinweis! Das werden wir uns dann wohl nochmal ansehen müssen.

Beim direkten Test kann ich das nicht bestätigen. Ich habe das getestet für Module, Templates, Styles, Skripts und Modul-Templates.

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Nach Löschen eines Layouts verschwinden weitere bei klic

Beitrag von Dodger77 » Fr 6. Aug 2010, 12:52

Wie schon vorher geschrieben, für weitere Bereiche nicht nachvollziehbar. => Geschlossen.

Gesperrt