anmerkung: contenido-cvs-2005-01-21.tar

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

anmerkung: contenido-cvs-2005-01-21.tar

Beitrag von emergence » Sa 22. Jan 2005, 12:45

contenido/includes/functions.rights.php

Code: Alles auswählen

   $userIDContainer[0] = $auth->auth["uid"]; // user_id of current user
   $userIDContainer = array_merge($userIDContainer, $perm->getGroupsForUser($auth->auth["uid"]));
kommt 2x vor (copyRightsForElement, createRightsForElement)
ersetzen durch

Code: Alles auswählen

   $userIDContainer = $perm->getGroupsForUser($auth->auth["uid"]); // add groups if available
   $userIDContainer[] = $auth->auth["uid"]; // add user_id of current user
Zuletzt geändert von emergence am Di 25. Jan 2005, 22:50, insgesamt 1-mal geändert.
*** make your own tools (wishlist :: thx)

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

Beitrag von emergence » Sa 22. Jan 2005, 12:46

classes/class.backend.php

Code: Alles auswählen

    /**
     * Debug flag
     */
    var $debug = 1;
wieder auf 0 stellen...
*** make your own tools (wishlist :: thx)

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

Beitrag von emergence » Sa 22. Jan 2005, 13:40

includes/globals_off.inc.php

findet sich momentan folgendes...

Code: Alles auswählen

<?php

$types_to_register = array('GET','COOKIE','POST','SERVER','ENV');
foreach ($types_to_register as $global_type) {
	$arr = @${'HTTP_' . $global_type . '_VARS'};
	if (@count($arr) > 0) {

		extract($arr, EXTR_OVERWRITE);
	}
}

/* Register post and get variables into $FORM */
$FORM = array_merge($_REQUEST);

?>
noch so nebenbei

Code: Alles auswählen

$FORM = array_merge($_REQUEST);
bringt es nicht...
wenn $_REQUEST bereits existiert ist das bereits ein array der die nötigen daten beinhaltet... also $_GET, $_POST, $_COOKIE

Code: Alles auswählen

$FORM = $_REQUEST;
täte es auch...

es gibts da ein missverständniss worauf ich eigentlich hinaus wollte..
das ganze bezieht sich auf
-> http://contenido.org/forum/viewtopic.php?t=6483

der hauptgrund warum es die datei gibt ist ja das register globals = on simuliert werden soll...

soweit so gut...
dieses file verwendet die $HTTP_*_VARS um das zu erledigen...

ich hab gemeint die $FORM soll komplett gekickt werden und statt dessen in den files

include.frontend.user_menu.php
include.html_tpl_edit_form.php
include.html_tpl_files_overview.php
include.js_edit_form.php
include.js_files_overview.php
include.style_edit_form.php
include.style_files_overview.php

anstelle von $FORM -> $_REQUEST verwendet werden...
mittels eines search & replace sind das 59 ersetzungen (gross/ kleinschreibung darf nicht ignoriert werden!)
ich hab das getestet und das birgt wirklich keine risiken in sich...

ich hab mich jetzt hingesetzt und was geschrieben, das dafür sorgt das
sowohl $HTTP_*_VARS als auch alle $_* zur verfügung stehen...

ich hab sogar berücksichtigt das register_long_arrays off sein kann...

Code: Alles auswählen

<?php

	// REGISTER GLOBAL VARS
	// Author Martin Horwath [horwath@dayside.net]

	// Makes available those super global arrays that are made available in versions of PHP after v4.1.0
	if (phpversion() <= "4.1.0") {

		$_SERVER = &$HTTP_SERVER_VARS;
		$_GET = &$HTTP_GET_VARS;
		$_POST = &$HTTP_POST_VARS;
		$_COOKIE = &$HTTP_COOKIE_VARS;
		$_FILES = &$HTTP_POST_FILES;
		$_ENV = &$HTTP_ENV_VARS;

		// _SESSION is the only superglobal which is conditionally set
		if (isset($HTTP_SESSION_VARS))
		{
			$_SESSION = &$HTTP_SESSION_VARS;
		}

	}

	// PHP5 with register_long_arrays off?
	if (!isset($HTTP_POST_VARS) && isset($_POST))
	{
		$HTTP_POST_VARS = &$_POST;
		$HTTP_GET_VARS = &$_GET;
		$HTTP_SERVER_VARS = &$_SERVER;
		$HTTP_COOKIE_VARS = &$_COOKIE;
		$HTTP_ENV_VARS = &$_ENV;
		$HTTP_POST_FILES = &$_FILES;

		// _SESSION is the only superglobal which is conditionally set
		if (isset($_SESSION))
		{
			$HTTP_SESSION_VARS = &$_SESSION;
		}
	}

	if (!isset($_REQUEST)) {
		/* Register post,get and cookie variables into $_REQUEST */
		$_REQUEST = array_merge($_GET, $_POST, $_COOKIE);
	}

	// register globals
	$types_to_register = array('GET','POST','SERVER','COOKIE','SESSION');
	foreach ($types_to_register as $global_type) {
		$arr = @${'_' . $global_type };
		if (@count($arr) > 0) {
			// echo "<pre>\$_$global_type:"; print_r ($arr); echo "</pre>";
			extract($arr, EXTR_OVERWRITE);
		}
	}

	// save memory
	unset ($types_to_register, $global_type, $arr );

?>
-> http://contenido.org/forum/viewtopic.php?p=36020#36020
kann dann ebenso geändert werden. da dies dann die globals_off.inc.php mit erledigt...

diese änderung ist wirklich low risk und sorgt für mehr kombatibilität...

man könnte sogar noch soweit gehen und die datei in setup/index.php mit einbinden...

bitte teste das mal, das funkt einwandfrei...
*** make your own tools (wishlist :: thx)

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

Beitrag von emergence » Sa 22. Jan 2005, 14:24

ach ja da fehlt noch ne kleinigkeit...

[22-Jan-2005 14:19:15] PHP Fatal error: Call to undefined function: getparentareaid() in e:\contenido\contenido-cvs-2005-01-21.tar\contenido_sources\contenido\includes\include.system_subnav.php on line 19

[22-Jan-2005 14:18:33] PHP Fatal error: Call to undefined function: getparentareaid() in e:\contenido\contenido-cvs-2005-01-21.tar\contenido_sources\contenido\includes\include.mycontenido_subnav.php on line 16

ähm innerhalb der beiden subnav files sollte

Code: Alles auswählen

$parentarea = getParentAreaID($area);
auf

Code: Alles auswählen

$parentarea = $perm->getParentAreaID($area);
geändert werden...
*** make your own tools (wishlist :: thx)

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

Beitrag von emergence » Sa 29. Jan 2005, 12:02

ach ja
contenido-cvs-2005-01-21.tar.bz2,
contenido-cvs-2005-01-28.tar.bz2
und
contenido-cvs-2005-02-04.tar.bz2
sind 100% ident...
Zuletzt geändert von emergence am Sa 5. Feb 2005, 10:07, insgesamt 1-mal geändert.
*** make your own tools (wishlist :: thx)

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

Beitrag von timo » Sa 29. Jan 2005, 21:26

ja, liegt daran, daß wir umziehen und deshalb auch der CVS-Server abgeschalten wurde...sobald alles wieder läuft mache ich nen neuen Snapshot ;)

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

Beitrag von emergence » Sa 5. Feb 2005, 15:01

ich spiele mich gerade etwas mit der class.ui.php
class UI_List

jedenfalls beim rendern wird ja diese datei für die liste verwendet...
template.generic_list.html

Code: Alles auswählen

<table cellspacing="0" cellpadding="{CELLPADDING}" style="border: {BORDER}px; border-color:{BORDERCOLOR}; border-style: solid;">

    <!-- BEGIN:BLOCK -->
    <tr bgcolor="{BGCOLOR}" {EXTRA}>
    	{ROWS}
    </tr>
    <!-- END:BLOCK -->
    

</table>
so und jetzt hab ich versucht mittels
$list->setWidth("100%");
die breite der tabelle zu bestimmen...

das geht nicht da ich in der klasse etwas wie das hier habe

Code: Alles auswählen

		if ($this->width)
		{
			$tpl->set('s', 'EXTRA', 'width: '.$this->width.';');
		}
das kann so leider nicht gehen...

ich poste hier mit absicht keine änderungen da ich nicht weiss wo überall ihr das einsetzt...
*** make your own tools (wishlist :: thx)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 6. Feb 2005, 14:07

In Bereichen, die cWidgetMultiToggleButton-Elemente einsetzen (z.B. Administration -> Frontend) ergibt sich ein JS-Fehler, wenn der Bereich angezeigt wird. Gemeckert wird über eine fehlende }, die wirklich fehlt.

Einfache Lösung:
In class.widgets.buttons.php in der Klasse cWidgetMultiToggleButton in der Funktion render() in der Variable $updateLinks jeweils am Ende ein Leerzeichen einfügen:

Code: Alles auswählen

$updateLinks  = "this.linked = new Array($linkItems); ";
		$updateLinks .= "this.toggle = 1; ";
		$updateLinks .= "for (var i=0; i < this.linked.length; ++i) ";
		$updateLinks .= "{ ";
		$updateLinks .= "   var item = this.linked[i]; ";
		$updateLinks .= "   if (this.id != item) ";
		$updateLinks .= "   { ";
		$updateLinks .= "   	$resetRegularState";
		$updateLinks .= "   } ";
		$updateLinks .= "} ";
		$updateLinks .= "$newhint ";
Dies funktioniert nicht:

Code: Alles auswählen

$updateLinks  = "this.linked = new Array($linkItems);";
		$updateLinks .= "this.toggle = 1;";
		$updateLinks .= "for (var i=0; i < this.linked.length; ++i)";
		$updateLinks .= "{";
		$updateLinks .= "   var item = this.linked[i];";
		$updateLinks .= "   if (this.id != item)";
		$updateLinks .= "   {";
		$updateLinks .= "   	$resetRegularState";
		$updateLinks .= "   }";
		$updateLinks .= "}";
		$updateLinks .= "$newhint ";
Da "verschwindet" die letzte } (warum auch immer).

Witzig finde ich, dass JS diesen Ausdruck tatsächlich auswertet:

Code: Alles auswählen

for (var i=0; i < this.linked.length; ++i){
So kommt "for (var i=0; i < this.linked.length; ++i){" nämlich auf der Seite an, faszinierend...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 6. Feb 2005, 17:25

In der class.frontenend.users.php muss in der Funktion create die Zeile $item = parent::create(); direkt vor das erste $item->set gesetzt werden, da sonst ein "leerer" User angelegt wird, wenn ein User gleichen Namens bereits existiert.

Code: Alles auswählen

	function create ($username, $password = "")
	{
		global $client, $auth;
		
		/* Check if the username already exists */
		$this->select("idclient='$client' AND username='".urlencode($username)."'");

		if ($this->next())
		{
			return $this->create($username."_".substr(md5(rand()),0,10), $password);
				
		}
		$item = parent::create();
		$item->set("idclient", $client);
		$item->set("username", $username);
		$item->set("password", $password);
		$item->set("created", date("Y-m-d H:i:s"), false);
		...
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

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

Beitrag von timo » Mo 7. Feb 2005, 19:17

emergence hat geschrieben: so und jetzt hab ich versucht mittels
$list->setWidth("100%");
die breite der tabelle zu bestimmen...

das geht nicht da ich in der klasse etwas wie das hier habe

Code: Alles auswählen

		if ($this->width)
		{
			$tpl->set('s', 'EXTRA', 'width: '.$this->width.';');
		}
das kann so leider nicht gehen...

ich poste hier mit absicht keine änderungen da ich nicht weiss wo überall ihr das einsetzt...
Ähm das hab ich nicht ganz verstanden - ich habe es jetzt nicht getestet, aber das EXTRA steht doch in einer Style-Angabe, und $this->width wird über setWidth gesteuert?

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

Beitrag von timo » Mo 7. Feb 2005, 19:21

HerrB hat geschrieben:Da "verschwindet" die letzte } (warum auch immer).
Ich habe das korrigiert - aber aufgefallen ist mir der Fehler noch nie (vielleicht ein IE only problem?)
Witzig finde ich, dass JS diesen Ausdruck tatsächlich auswertet:

Code: Alles auswählen

for (var i=0; i < this.linked.length; ++i){
Das hat mir mal jemand von den Mozilla-Entwicklern erklärt: Da HTML ja für JavaScript nur eine Containersprache ist, muß der Browser zuerst alle Entity-Ersetzungen vornehmen und dann an den JS-Interpreter schicken - deshalb funktioniert das. Bei JS kommt also wirklich das an, was du unten geschrieben hast. Soweit ich weiß, kann man das Konstrukt aber nicht in ein externes JS-File auslagern, da < dann nicht funktioniert ;)

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

Beitrag von timo » Mo 7. Feb 2005, 19:22

HerrB hat geschrieben:In der class.frontenend.users.php muss in der Funktion create die Zeile $item = parent::create(); direkt vor das erste $item->set gesetzt werden, da sonst ein "leerer" User angelegt wird, wenn ein User gleichen Namens bereits existiert.
Auch das habe ich soeben eingebaut ;)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mo 7. Feb 2005, 19:25

Ich habe das korrigiert - aber aufgefallen ist mir der Fehler noch nie (vielleicht ein IE only problem?)
Nein, das Problem taucht auch im Firefox auf, die } wird wirklich nicht übertragen. Es sind auch nur die neueren Snapshots betroffen, die älteren gehen problemlos.
Ähm das hab ich nicht ganz verstanden - ich habe es jetzt nicht getestet, aber das EXTRA steht doch in einer Style-Angabe, und $this->width wird über setWidth gesteuert?
Um emergence beizuspringen (er hat den Code ja immerhin gleich mitgepostet), nein:

Code: Alles auswählen

<table cellspacing="0" cellpadding="{CELLPADDING}" style="border: {BORDER}px; border-color:{BORDERCOLOR}; border-style: solid;">

    <!-- BEGIN:BLOCK -->
    <tr bgcolor="{BGCOLOR}" {EXTRA}>
       {ROWS}
    </tr>
    <!-- END:BLOCK -->
   

</table>
Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

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

Beitrag von timo » Mo 7. Feb 2005, 19:37

Ähm also bei mir schaut das so aus:

template.generic_list.html

Code: Alles auswählen

<table cellspacing="0" cellpadding="{CELLPADDING}" style="border: {BORDER}px; border-color:{BORDERCOLOR}; border-style: solid; {EXTRA}">

    <!-- BEGIN:BLOCK -->
    <tr bgcolor="{BGCOLOR}" {EXTRA}>
    	{ROWS}
    </tr>
    <!-- END:BLOCK -->
    

</table>

Die Datei ist vom 30.12.2003...also schon Ewigkeiten nicht geändert worden?

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

Beitrag von emergence » Di 8. Feb 2005, 12:13

hab mir gerade nochmal die datei aus dem snapshot angesehen...

das ist definitiv ne andere datei wie du sie vor dir hast timo ;-)
*** make your own tools (wishlist :: thx)

Gesperrt