[TYPO3-german] wt_cart ignoriert Nachkommastellen auf ungecachten Seiten
Oliver Westerheide
oliver at westerheide-media.de
Tue May 21 15:00:33 CEST 2013
*Schluck*
Jetzt sind wir an einem Punkt, welcher meine Kenntnisse (noch) übersteigt:)
Also:
Es kann in den Konstanten von wt_cart diverses eingestellt werden, z.B.
Decimal (e.g. 2). This setting will...[plugin.wtcart.main.decimal]
oder
Decimal symbol (e.g. , or .). This ...[plugin.wtcart.main.dec_point]
Das Trennsymbol lässt sich durch jedes beliebige Zeichen ersetzen, wenn
ich bei der Anzahl der Dezimalstellen aber eine 0 eintrage, sollten nach
meinem Verständnis gar keine Nachkommstellen angezeigt werden oder?
Anscheinend ist es aber egal, was ich dort für eine Zahl eingebe, das
Output ist immer gleich, z.B. 11,75 €
Offensichtlich liegt hier der Hase im Pfeffer. Hier ist noch die
Funktion, von der ich glaube, dass sie den Betrag zusammenzimmert:
/**
* number Format for typoscript
*
* @return string formatted number
*/
public function user_wtcart_numberFormat($content = '', $conf = array()) {
global $TSFE;
$local_cObj = $TSFE->cObj; // cObject
if (!$content)
{
$conf = $conf['userFunc.']; // TS configuration
$content = $local_cObj->cObjGetSingle($conf['number'],
$conf['number.']); // get number
}
return number_format(doubleval($content), $conf['decimal'],
$conf['dec_point'], $conf['thousands_sep']);
}
Und meine Suche nach sprintf hat mich unter Anderem hierhin geführt:
public function beforeClearSessionHook(array $field = array(), $form,
$mail = NULL, Tx_Powermail_Controller_FormsController $controller =
NULL, Tx_WtCart_Forms $cartController = NULL,
Tx_Powermail_Domain_Repository_MailsRepository $mailsRepository = NULL){
$errorNumber = 0;
if
(isset($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['beforeClearSession']))
{
$session = $GLOBALS['TSFE']->fe_user->getKey('ses', 'wt_cart_' .
$GLOBALS['TSFE']->id);
if ($session) {
foreach
($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey]['beforeClearSession']
as $userFunc) {
$params = array(
'field' => $field,
'form' => $form,
'mail' => $mail,
'mailController' => $controller,
'mailsRepository' => $mailsRepository,
'cart' => unserialize($session),
'cartController' => $cartController
);
$errorNumber = t3lib_div::callUserFunction($userFunc, $params, $this);
//ignore class/method/function not found debug message
if($errorNumber === FALSE) $errorNumber = 0;
if ($errorNumber > 0) {
if (TYPO3_DLOG) {
$msg = sprintf("Aborting clear session because \"%s\" threw
error(%d).", $userFunc, $errorNumber);
t3lib_div::devLog($msg, $this->extKey);
}
break;
}
}
}
}
return $errorNumber;
}
Am 21.05.13 13:49, schrieb David Bruchmann:
> Am 21.05.13 11:36, schrieb David Bruchmann:
>>>> Dann würde ich es mal als Bug posten.
>>>> Ein Rundungsproblem wie Du es beschrieben hast wird ja schon durch ein
>>>> einfaches
>>>> intval() oder (int) Value
>>>> hervorgerufen, wenn die Zahl anschließend mit zwei Nullstellen
>>>> formatiert wird, siehts halt anders aus aber bleibt falsch.
>>>
>>
>> da ja die Nachkommastellen abgeschnitten werden würde ich mal das
>> Trennzeichen unter die Lupe nehmen. Im Deutschen wird da ja auch
>> abweichend zum üblichen Handling das Komma statt eines Punktes
>> verwendet. Kommas wiederum werden häufig als Trennzeichen für Listen
>> benutzt.
>> meine erste Idee bei der Problembeschreibung war: da wird nur der Teil
>> vor dem Komma benutzt und direkt für/in(?) der Ausgabe addiert (evtl.
>> sogar im Javascript?)
>>
>> beim Speichern wird wohl wieder Float benutzt und dann die Summe für
>> die gecachte Seite aus den float-Zahlen korrekt berechnet.
>>
>> bernd
>
> unter diesem Aspekt mal die EInstelluneg für sprintf() bzw.
> entsprechende wrapper-funktion prüfen, evtl. läßt sich das in der
> Erweiterung per TypoScript einstellen - oder die Funktion verwendet
> globale Einstellungen dafür aus den locals oder aus dem TypoScript-Setup
More information about the TYPO3-german
mailing list