Skip to content

Commit

Permalink
merge yiidoc.
Browse files Browse the repository at this point in the history
  • Loading branch information
qiang.xue committed Nov 1, 2009
1 parent a2b63b1 commit 0a7a06a
Show file tree
Hide file tree
Showing 133 changed files with 2,837 additions and 513 deletions.
30 changes: 15 additions & 15 deletions docs/blog/pl/comment.admin.txt
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
Administrowanie komentarzami
=================

Administrowanie komentarzami zawiera aktualizowanie, usuwanie oraz zatwierdzanie komentarzy.
Administrowanie komentarzami zawiera aktualizowanie, usuwanie oraz zatwierdzanie komentarzy.
Operacja te są zaimplementowane jako akcje w klasie kontrolera `CommentController`.


Aktualizowanie i usuwanie komentarzami
------------------------------

Kod wygenerowany przez narzędzie `yiic` do aktualizowania oraz usuwania komentarzy
pozostaje w większej części niezmieniony. Ponieważ wspieramy podgląd komentarza
podczas aktualizacji komentarza, musimy tylko zmienić metodę `actionUpdate()`
Kod wygenerowany przez narzędzie `yiic` do aktualizowania oraz usuwania komentarzy
pozostaje w większej części niezmieniony. Ponieważ wspieramy podgląd komentarza
podczas aktualizacji komentarza, musimy tylko zmienić metodę `actionUpdate()`
kontrolera `CommentController` w następujący sposób:

~~~
Expand All @@ -23,7 +23,7 @@ public function actionUpdate()
{
$comment->attributes=$_POST['Comment'];
if(isset($_POST['previewComment']))
$comment->validate();
$comment->validate('update');
else if(isset($_POST['submitComment']) && $comment->save())
$this->redirect(array('post/show',
'id'=>$comment->postId,
Expand All @@ -40,8 +40,8 @@ Kod ten jest bardzo podobny do tego z PostController`.
Zatwierdzanie komentarzy
------------------

Kiedy komentarz jest nowo utworzony, oczekuje on na zatwierdzenie i musi zostać zatwierdzony
jeśli ma on być widoczny dla gości. Zatwierdzanie komentarza to przede wszystkim zmiana
Kiedy komentarz jest nowo utworzony, oczekuje on na zatwierdzenie i musi zostać zatwierdzony
jeśli ma on być widoczny dla gości. Zatwierdzanie komentarza to przede wszystkim zmiana
kolumny zawierającej status komentarza.

Utworzymy metodę `actionApprove()` w kontrolerze `CommentController` następująco:
Expand All @@ -63,12 +63,12 @@ public function actionApprove()
}
~~~

W powyższym kodzie, gdy akcja zatwierdzenia `approve` jest wywoływana poprzez żądanie
POST, wywołujemy metodę `approve()` zdefiniowaną w modelu komentarza `Comment` aby zmienić
status. Następnie przekierowujemy przeglądarkę użytkownika do strony wyświetlającej wiadomość,
W powyższym kodzie, gdy akcja zatwierdzenia `approve` jest wywoływana poprzez żądanie
POST, wywołujemy metodę `approve()` zdefiniowaną w modelu komentarza `Comment` aby zmienić
status. Następnie przekierowujemy przeglądarkę użytkownika do strony wyświetlającej wiadomość,
do której należy ten komentarz.

Modyfikujemy również metodę `actionList()` modelu komentarza `Comment` aby
Modyfikujemy również metodę `actionList()` modelu komentarza `Comment` aby
wyświetlała listę komentarzy, które czekają na zatwierdzenie.

~~~
Expand All @@ -91,8 +91,8 @@ public function actionList()
}
~~~

W widoku `list` wyświetlamy szczegóły każdego komentarza, który oczekuje na zatwierdzenie.
W szczególności, pokazujemy link do zatwierdzenia `approve` w następujący sposób:
W widoku `list` wyświetlamy szczegóły każdego komentarza, który oczekuje na zatwierdzenie.
W szczególności, pokazujemy link do zatwierdzenia `approve` w następujący sposób:

~~~
[php]
Expand All @@ -104,10 +104,10 @@ W szczególności, pokazujemy link do zatwierdzenia `approve` w następujący s
<?php endif; ?>
~~~

Używamy [CHtml::linkButton()] zamiast [CHtml::link()] ponieważ pierwsza powoduje wywołanie
Używamy [CHtml::linkButton()] zamiast [CHtml::link()] ponieważ pierwsza powoduje wywołanie
żądania POST, w odróżnieniu od drugiej, wywołującej żądanie GET.
Zaleca się aby żądania GET nie modyfikowały danych na serwerze. W przeciwnym przypadku
możemy mieć do czynienia z niebezpieczeństwem, że użytkownik nieumyślnie może zmienić
możemy mieć do czynienia z niebezpieczeństwem, że użytkownik nieumyślnie może zmienić
dane po stronie serwera parokrotnie jeśli będzie odświeżał stronę kilka razy.

<div class="revision">$Id: comment.admin.txt 1335 2009-08-15 20:34:36Z qiang.xue $</div>
36 changes: 18 additions & 18 deletions docs/blog/pl/comment.create.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ W części tej zaimplementujemy funkcje wyświetlania oraz tworzenia komentarzy.
Wyświetlanie komentarzy
-------------------

Zamiast osobnych stron do wyświetlania i tworzenia komentarzy użyjemy strony
wyświetlającej wiadomości. Poniżej wyświetlonej zawartości każdej wiadomości,
wyświetlimy listę komentarzy należących do tej wiadomości a pod nimi formularz
Zamiast osobnych stron do wyświetlania i tworzenia komentarzy użyjemy strony
wyświetlającej wiadomości. Poniżej wyświetlonej zawartości każdej wiadomości,
wyświetlimy listę komentarzy należących do tej wiadomości a pod nimi formularz
tworzenia komentarza.

W celu wyświetlenia komentarzy na stronie wiadomości, zmienimy metodę `actionShow()`
W celu wyświetlenia komentarzy na stronie wiadomości, zmienimy metodę `actionShow()`
kontrolera `PostController` w następujacy sposób:

~~~
Expand All @@ -27,12 +27,12 @@ public function actionShow()
}
~~~

Zauważ, że wyrażenie `$post->comments` jest poprawne ponieważ zdefiniowaliśmy relację
`comments` w klasie `Post`. Wywołanie tego wyrażenia uruchomi ukryte zapytanie
Zauważ, że wyrażenie `$post->comments` jest poprawne ponieważ zdefiniowaliśmy relację
`comments` w klasie `Post`. Wywołanie tego wyrażenia uruchomi ukryte zapytanie
JOIN do bazy danych, które zwróci komentarze należące do aktualnej wiadomości.
Funkcjonalność ta znana jest jako [leniwe zapytanie relacyjne](http://www.yiiframework.com/doc/guide/database.arr).

Zmodyfikujemy również widok `show` poprzez dołączenie wyświetlania komentarzy
Zmodyfikujemy również widok `show` poprzez dołączenie wyświetlania komentarzy
na końcu wyświetlania wiadomości, nad czym nie będziemy się tutaj zbytnio rozwodzić.

Tworzenie komentarzy
Expand Down Expand Up @@ -64,7 +64,7 @@ protected function newComment($post)
$comment->status=Comment::STATUS_PENDING;

if(isset($_POST['previewComment']))
$comment->validate();
$comment->validate('insert');
else if(isset($_POST['submitComment']) && $comment->save())
{
Yii::app()->user->setFlash('commentSubmitted','Thank you...');
Expand All @@ -75,12 +75,12 @@ protected function newComment($post)
}
~~~

W powyższym kodzie, wołamy metodę `newComment()` zanim wygenerujemy widok `show`.
W metodzie `newComment()` generujemy instancję komentarza `Comment` i sprawdzamy
W powyższym kodzie, wołamy metodę `newComment()` zanim wygenerujemy widok `show`.
W metodzie `newComment()` generujemy instancję komentarza `Comment` i sprawdzamy
czy formularz komentarza został przesłany. Formularz może zostać przesłany poprzez
kliknięcie zarówno przycisku submit lub też przycisku podglądu. Dla pierwszego
spróbujemy zapisać komentarz i wyświetlić migawkę (ang. flash message).
Migawka jest wyświetlana tylko raz, co oznacza zniknie ona, że jeśli odświeżymy stronę.
kliknięcie zarówno przycisku submit lub też przycisku podglądu. Dla pierwszego
spróbujemy zapisać komentarz i wyświetlić migawkę (ang. flash message).
Migawka jest wyświetlana tylko raz, co oznacza zniknie ona, że jeśli odświeżymy stronę.

Zmodyfikujemy również widok `show` poprzez dołączenie formularza tworzenia komentarza.

Expand All @@ -93,14 +93,14 @@ Zmodyfikujemy również widok `show` poprzez dołączenie formularza tworzenia k
)); ?>
~~~

Osadziliśmy formularz tworzenia komentarza w częściowym widoku `/wwwroot/blog/protected/views/comment/_form.php`.
Zmienna `$newComment` jest przekazywana do metody `actionShow`. Jej głównym zadaniem jest
przechowywanie informacji o danych wejściowych użytkownika. Zmienna `update`
ustawiona jest na wartość false, co oznacza, że formularz komentarza jest używany do
Osadziliśmy formularz tworzenia komentarza w częściowym widoku `/wwwroot/blog/protected/views/comment/_form.php`.
Zmienna `$newComment` jest przekazywana do metody `actionShow`. Jej głównym zadaniem jest
przechowywanie informacji o danych wejściowych użytkownika. Zmienna `update`
ustawiona jest na wartość false, co oznacza, że formularz komentarza jest używany do
tworzenia nowego komentarza.

W celu wsparcia podglądu komentarza, dodamy przycisk podglądu do formularza tworzenia
komentarza. Gdy przycisk podglądu zostanie kliknięty, podgląd komentarza jest wyświetlany
komentarza. Gdy przycisk podglądu zostanie kliknięty, podgląd komentarza jest wyświetlany
na górze strony. Poniżej znajduje się zaktualizowany kod formularza komentarza:

~~~
Expand Down
46 changes: 23 additions & 23 deletions docs/blog/pl/comment.model.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Dostosowywanie modelu komentarza
=========================

Tak jak model wiadomości `Post`, musimy dostosować metody `rules()`, `relations()`
oraz `safeAttributes()` dla modelu `Comment`. Dodatkowo potrzebujemy zmienić
Tak jak model wiadomości `Post`, musimy dostosować metody `rules()`, `relations()`
oraz `safeAttributes()` dla modelu `Comment`. Dodatkowo potrzebujemy zmienić
metodę `attributeLabels()` aby zdeklarować niestandardowe etykiety dla pewnych atrybutów.


Expand All @@ -28,24 +28,24 @@ public function rules()
~~~

W powyższym kodzie, określamy, że atrybuty: autor `author`, e-mail `email` oraz zawartość `content`
są atrybutami wymaganymi (nie mogą być puste); długość atrybutu autor `author`, e-mail `email` oraz adres URL `url`
nie może przekraczać 128 (znaków); atrybut e-maila `email` musi być poprawnym adresem mailowym;
atrybut adresu URL `url` musi być poprawnym adresem URL; a atrybut weryfikacji kodu `verifyCode`
są atrybutami wymaganymi (nie mogą być puste); długość atrybutu autor `author`, e-mail `email` oraz adres URL `url`
nie może przekraczać 128 (znaków); atrybut e-maila `email` musi być poprawnym adresem mailowym;
atrybut adresu URL `url` musi być poprawnym adresem URL; a atrybut weryfikacji kodu `verifyCode`
powinien zostać sprawdzony pod względem zgodności z kodem wygenerowanym przez [CAPTCHA](http://en.wikipedia.org/wiki/Captcha).

Powyższy atrybut `verifyCode` jest używany przede wszystkim do przechowywania kodu weryfikującego,
który użytkownik wprowadził aby dodać komentarz. Ponieważ nie jest on obecny w tabeli
Powyższy atrybut `verifyCode` jest używany przede wszystkim do przechowywania kodu weryfikującego,
który użytkownik wprowadził aby dodać komentarz. Ponieważ nie jest on obecny w tabeli
komentarzy `Comment`, musimy zadeklarować go bezpośrednio jako publiczną zmienną.
Do sprawdzania jego poprawności używamy specjalnego walidatora o nazwie `captcha`,
który reprezentuje klasę [CCaptchaValidator]. Ponadto sprawdzenie poprawności
odbędzie się podczas wstawiania (ang. insert) nowego komentarza (popatrz na opcję `on`).
Do sprawdzania jego poprawności używamy specjalnego walidatora o nazwie `captcha`,
który reprezentuje klasę [CCaptchaValidator]. Ponadto sprawdzenie poprawności
odbędzie się podczas wstawiania (ang. insert) nowego komentarza (popatrz na opcję `on`).
Dla uwierzytelnionych użytkowników nie ma potrzeby tego czynić (popatrz na opcję `allowEmpty`).


Dostosowywanie metody `safeAttributes()`
-------------------------------------

Następnie dostosowujemy metodę `safeAttributes()` aby zdefiniować, które atrybuty
Następnie dostosowujemy metodę `safeAttributes()` aby zdefiniować, które atrybuty
mogą być przypisywane grupowo.

~~~
Expand All @@ -64,7 +64,7 @@ Dostosowywanie metody `relations()`
--------------------------------

Podczas tworzenia portletu "ostatnich komentarzy", potrzebujemy wylistować ostatnie
komentarze wraz z odpowiadającymi im informacjami o wiadomościach. Dlatego też,
komentarze wraz z odpowiadającymi im informacjami o wiadomościach. Dlatego też,
musimy dostosować metodę `relations()` aby określić relację z wiadomością.

~~~
Expand All @@ -78,17 +78,17 @@ public function relations()
}
~~~

Zauważ, że typ złączenia dla relacji `post` to `INNER JOIN`. Dzieje się tak, ponieważ
Zauważ, że typ złączenia dla relacji `post` to `INNER JOIN`. Dzieje się tak, ponieważ
komentarz należy do wiadomości.


Dostosowywanie metody `attributeLabels()`
--------------------------------------

Na koniec potrzebujemy dostosować metodę `attributeLabels()` aby zdefiniować
Na koniec potrzebujemy dostosować metodę `attributeLabels()` aby zdefiniować
niestandardowe etykiety dla atrybutów. Metoda da zwraca tablicę zawierająca pary
nazwa-etykieta. Podczas wywoływania metody [CHtml::activeLabel()] w celu wyświetlenia
etykiety atrybutu, sprawdzi ona najpierw czy zadeklarowana niestandardową etykietę.
nazwa-etykieta. Podczas wywoływania metody [CHtml::activeLabel()] w celu wyświetlenia
etykiety atrybutu, sprawdzi ona najpierw czy zadeklarowana niestandardową etykietę.
Jeśli nie, użyje ona algorytmu do wygenerowania domyślnych etykiet.

~~~
Expand All @@ -104,25 +104,25 @@ public function attributeLabels()
}
~~~

> Tip|Wskazówka: Algorytm służący do generowania domyślnych etykiet oparty jest na
nazwach atrybutów. Najpierw dzieli nazwę na słowa biorąc po uwagę wielkość liter.
> Tip|Wskazówka: Algorytm służący do generowania domyślnych etykiet oparty jest na
nazwach atrybutów. Najpierw dzieli nazwę na słowa biorąc po uwagę wielkość liter.
Następnie zmienia pierwszą literę w każdym słowie na dużą literę. Na przykład,
nazwa `verifyCode` otrzyma domyślną etykietę `Verify Code`.


Dostosowywanie procesu zapisywania
--------------------------

Ponieważ chcemy przechowywać w wiadomości ilość komentarzy, gdy dodajemy lub usuwamy
komentarz, musimy poprawić odpowiadającą wiadomości ilość komentarzy. Uzyskujemy to
Ponieważ chcemy przechowywać w wiadomości ilość komentarzy, gdy dodajemy lub usuwamy
komentarz, musimy poprawić odpowiadającą wiadomości ilość komentarzy. Uzyskujemy to
poprzez nadpisanie metod `afterSave()` oraz `afterDelete()` dla modelu komentarza `Comment`.
Również nadpisujemy metodę `beforeValidate()` modelu, tak że możemy konwertować zawartość
Również nadpisujemy metodę `beforeValidate()` modelu, tak że możemy konwertować zawartość
z formatu Markdown do formatu HTML oraz zapisywać czas utworzenia.


~~~
[php]
protected function beforeValidate()
protected function beforeValidate($on)
{
$parser=new CMarkdownParser;
$this->contentDisplay=$parser->safeTransform($this->content);
Expand Down
Loading

0 comments on commit 0a7a06a

Please sign in to comment.