Quickreply ir tāda iespēja, ka, nospiežot uz ieraksta vai komentāra komentēšanas saites, zem tā tiek izvadīta forma, kas ļauj rakstīt atbildi uz šo ierakstu vai komentāru uzreiz, neatverot parasto komentēšanas lapu. Tas gan (diemžēl) darbojas tikai ieraksta lapā, no draugu lapas pa tiešo komentēt gan nevarēs.
Sagribējās sava žūrnāla stilam ieviest quickreply fīču. Pirms laba laika manīju to LiveJournal, pirms kāda laika pamanīju arī vienam stilam Cibā. Tagad nu man arī to savajadzējās. Tā kā nekādas pamācības, kā to pareizi iedabūt kodā, neatradu, tad nācās vien pašam mēģināt. Un vakar vakarā beidzot sanāca arī. Tādu vispārīgu veidu, kā to ieviest kodā, es neatradu, tāpēc vienkārši paskaidrošu, kā es to izdarīju.
Ir divas funkcijas – Page::print_reply_container(string{} opts)
un Page::print_reply_link(string{}
opts)
. Tās arī visu izdara, ir tikai jāizsauc pareizajās vietās. Ir
divas iespējas – vai nu izmantot quickreply gan ierakstam, gan komentāriem
(kā to izdarīju es), vai arī tikai komentāriem.
Vispirms par ierakstu. Man visus ierakstus izvada funkcija Page::print_entry(Entry
e)
. No tās īstajā vietā tiek izsaukta funkcija, kas izvada komentāru
saites gan lasīšanai, gan rakstīšanai:
if ($e.comments.enabled) {
$e.comments->print();
}
Eh.. Tūlīt būs kaut kas sarežģīts. No šīs funkcijas (CommentInfo::print()
)
savukārt tiek izsaukta CommentInfo::print_postlink()
, kas izvada
linku uz komentēšanas lapu. Nu, lūk. Šajā funkcijā ir svarīgas divas rindiņas:
var Page p = get_page();
$p->print_reply_link( { "target" => "qrentry", "linktext" => $*text_post_comment, "reply_url" => "$.post_url" } );
Page::print_entry()
funkcijā (kas izvada katru ierakstu) es īstajā
vietā (zem teksta) ierakstīju šo kodu:
$this->print_reply_container({"target" => "qrentry"});
Tātad – nelielas izmaiņas komentēšanas linka kodā un viena rindiņa tai vietā,
kur zem ieraksta būtu jāparādās quickreply formai. Galvenais, kam
jābūt – jāsakrīt target
vērtībai, nosaukumu tur var izvēlēties
pēc savas gaumes, tikai abās vietās tam jābūt vienādam, kā šeit tas ir "qrentry".
Lai dabūtu quickreply komentāriem, man bija jāpamaina tikai viena
funkcija – EntryPage::print_comment (Comment c)
, kas izvada katru
komentāru (pilno komentāru). Vispirms komentāra komentēšanas links:
$c->print_reply_link( { "linktext" => $*text_comment_reply, "reply_url" => "$c.reply_url" } );
Pēc tam jāizvēlas vieta, kur parādīsies quickreply forma (parasti jau nu zem komentāra) un jāieliek tur šis te:
$c->print_reply_container();
Šeit nekādus target
nevajag, viss notiek automātiski. It kā pie
parametriem komentēšanas saitei var pielikt arī title
, kas to
arī linkam nozīmē, taču man tas kaut kādā veidā tika ignorēts.
Nu, tas arī viss. Saprotams, ka komentāriem to pielikt ir vienkāršāk. Neko sakarīgi gan neizskaidroju, taču ceru, ka kaut kādu skaidrību devu. Ja kas, jautājiet, varbūt varēšu atbildēt.
Starp citu. tidliibums nesen interesējās, kā iespējams apvienot ReplyForm ar style=mine. Tad nu lūk – ja izmanto style=mine, tad, komentējot no quickreply formas, lietotājs atgriezīsies tajā pašā lapā ar visu style=mine.