PDA

Zobacz pełną wersję : Komponent com_user i użycie funkcji raiseNotice



cellardoor_ncx
08-08-2011, 14:34
Witam,
moim celem jest stworzenie stylów dla wiadomości joomla. Domyślnie J 1.5.23 ma 3 typy wiadomości : message, warning, notice oraz dodatkowy error. Zauważyłem, że w komponencie com_user te funkcje używane są z dziwną logiką.

Dla przykładu : (kontroler komponentu : /components/com_user/controller.php, funkcja requestreset() ).

Jeśli przy próbie zresetowania hasła (używając łącza "Nie pamiętasz hasła ?") podamy e-mail który nie jest przypisany do żadnego z użytkowników, to zdarzenie obsłuży powyższa funkcja, tutaj kawałek z jej kodu :


if ($model->requestReset($email) === false)
{
$message = JText::sprintf('PASSWORD_RESET_REQUEST_FAILED', $model->getError());
$this->setRedirect('index.php?option=com_user&view=reset', $message);

return false;
}

Rezultatem jest otrzymanie wiadomości, a wydaje mi się, że powinno to być obsłużone przez raiseNotice. Wtedy przypisujemy różne style do :


#system-message dd.error
#system-message dd.notice
#system-message dd.message

i załatwione. Nie jest to jedyne miejsce gdzie występuje takie użycie.

Spotkaliście się z takim problemem, a może źle podchodzę do tego ?

kodhtml
09-08-2011, 14:12
Sprawdziłem dla przykładowej strony i dla tego komunikatu tagi dd, dt przypisane mają klasę "error", więc jest prawidłowo. Fakt dodatkowo jest klasa ".message" ale zawsze definiując klasę ".error" możesz nadpisać style z message używając np. "!important" albo definiując klasę ".error" za klasą ".message" (kolejność jest ważna).

cellardoor_ncx
09-08-2011, 14:35
I to by się zgadzało... u mnie wygląda to tak na standardowych plikach :
<dl id="system-message"> <dt class="message">Wiadomość</dt> <dd class="message message fade"> <ul> <li>Twoja prośba o zmianę hasła nie może być zrealizowana, ponieważ nie mamy konta z takim adresem poczty elektronicznej.</li> </ul> </dd> </dl>

Poradziłem sobie z problemem stosując właśnie zasady hierarchii css, ale mimo to u mnie podpina dwa razy klasę message. Sprawdzałeś to na 1.5.23 ?

kodhtml
09-08-2011, 14:52
Napisałeś o przypomnieniu hasła, a ja z pośpiechu przetestowałem dla próby logowania. Faktycznie występuje podwójnie klasa "message". Widocznie nikt nie zwracał na to uwagi.
Dla 1.5.23 możesz to zmienić w pliku:
/libraries/joomla/document/html/renderer/message.php :65
Na pocieszenie: w Joomli 1.7 dla tego komunikatu są już niepowtarzające się klasy "notice message" :)

cellardoor_ncx
09-08-2011, 14:54
Dzięki za potwierdzenie. Już sobie poradziłem z tym ;)

No właśnie, przy następnym projekcie trzeba będzie wziąć 1.7 pod uwagę, na JED coraz więcej dodatkow ;]