Klik x untuk menutup hasil pencarianCari di situs SABDASpace

Javascript - Solusi Masalah Comment Page?

<p>Iseng-iseng analisis dan utak atik link komentar di blog yang lagi rame, <br /><br />Ini dari komentar di halaman pertama<br /><em>http://www.sabdaspace.org/gereja_0#comment-65903 </em>kucoba akses pake <em><br />http://www.sabdaspace.org/gereja_0?page=0#comment-65903 </em>(bisa, komentar SF &quot;Lentin: Tolong baca baik-baik&quot;)<br /><br />Ini dari komentar di halaman kedua<br /><em>http://www.sabdaspace.org/gereja_0#comment-65950</em> (gagal untuk sampai ke komentar) lalu kucoba akses pake <br /><em>http://www.sabdaspace.org/gereja_0?page=1#comment-65950</em> (bisa, komentar y-control &quot;gebyah uyah&quot;)</p><p>Untuk komentar di halaman pertama, link menuju komentar ditambah ?page=0 tetap bisa diakses.</p><p>Sedangkan untuk mengakses komentar yang ada di halaman berikutnya cukup ditambah &quot;?page=1&quot; atau &quot;?page=2&quot;, dst.</p><p>Kesimpulan : hanya butuh tambah &quot;?page=0&quot;, &quot;?page=1&quot; atau &quot;?page=2&quot;, dst di dalam URL komentar (link title/judul komentar)</p><p>Kucoba cari lagi di forum drupal, kebanyakan yang dulu-dulu banyak mencoba patching ke core drupalnya, tapi solusi ini bisa berbahaya dan not recommended.</p><p>Trus ketemu yg baru di sini yang coba pake javascript</p><p>http://drupal.org/node/26966#comment-2428472,&nbsp; ada yang coba dan berhasil di</p><p>http://drupal.org/node/26966#comment-2429398</p><p>trus baca lagi sampe komentar dibawah2nya.</p><p>Buat core-core user, monggo dianalisis .. apalagi yang jago script. Kayaknya solusi ini jauh lebih aman daripada nerapin patch di core drupalnya.</p>

Daniel's picture

usul bagus

 nah, jadi core user yang seperti ini dong, gak cuma bengak-bengok usul ini-itu, tapi juga mencoba mencari dan menawarkan solusi :)

good job Ari... wah, para core user makin keren nih, jadi ikut semangat!

terus terang saya belum sempat baca semuanya, panjang banget & pake bahasa linggis jadi rada susah, tapi dari yang saya tangkap tetap perlu sedikit patching juga, dan ada sedikit masalah dengan efisiensi waktu untuk menemukan halaman yang tepat...

tapi layak juga dicoba daripada tidak ada solusi lain... silakan dicoba di lokal dulu...

walcott's picture

OK Ari..

Ok, Ari. gw coba. Thx

bennylin's picture

Ini kode yang ditawarkan

Ini kode yang ditawarkan oleh link yang diberikan Ari. Sekilas tampaknya ini cara bodon untuk mencari komentar satu-persatu di tiap halaman. Tidak heran salah satu komentarnya (link yang diberikan Ari) bilang kalau sudah sampai halaman 10-15 (kalau komentarnya banyak) ngos-ngosan skripnya akibatnya loadingnya lama. Theo tampaknya sedang mengujinya di server lokal, semoga hasilnya bisa segera keluar apakah skrip ini layak untuk dipakai. Dari diskusi dengan Theo, saya melihat beberapa pertanyaan yang akan ditimbulkan:

1. Idealnya berapa komentar per halaman?

2. Bagaimana nasib "nested comments" yang berada di paling bawah sebelum pergantian halaman

3. Apakah bisa bekerja dengan relatif cepat untuk komentar-komentar di blog SS yang panjang (>100 komentar)

Berikut ini javascriptnya (http://winhlp.com/drupalcommentsearch.js)

// Version 2010-01-02. Copyright © 2009-2010 Hans-Georg Michna
(function () {
  (function waitForDomComplete() {
    // Keep preexisting handler and append own handler:
    var precedingOLHandler = window.onload;
    window.onload = function () {
      if (precedingOLHandler) precedingOLHandler();
      // Remove own handler:
      window.onload = null;
      commentLink();
    }
  }());

  function commentLink() {
    // #comment-N?
    if (!/#comment-\d+$/.test(location.hash)) return;
    var el;
    if (el = document.getElementById(location.hash.substr(1)))
        return;
    var sa = location.search.substr(1).split("&");
    var cs = +removeSearchValue("cs", sa);
    // If this is the same page as the previous one, break off:
    if (cs && document.getElementById("comment-" + cs)) return;
    var page = +removeSearchValue("page", sa);
    if (page >= 99) return; // Endless loop paranoia (:-)
    var firstCommentNumber = getFirstCommentNumber(document.body);
    if (firstCommentNumber) {
      var url = location.href.match(/.*?(?=\?|#|$)/) +
          "?page=" + (page + 1) +
          "&cs=" + firstCommentNumber +
          (sa + "" ? "&" + sa.join("&") : "") +
          location.hash;
      if (cs) location.replace(url); else location = url;
    }
  }
 
  function getFirstCommentNumber(el) {
    for (var child in el.childNodes) {
      var childNode = el.childNodes[child];
      if (childNode.id && childNode.id.substr(0, 8) === "comment-")
          return +childNode.id.substr(8);
      var n = getFirstCommentNumber(childNode);
      if (n) return n;
    }
  }
 
  function removeSearchValue(searchParam, searchArray) {
    for (var i = 0; i < searchArray.length; i++) {
      var searchItem = searchArray[i].split("=");
      if (searchItem[0] === searchParam) {
        searchArray.splice(i, 1);
        return (searchItem.length >= 1) ? searchItem[1] : "";
      }
    }
    return "";
  }
}());
 

Ari_Thok's picture

Tes Dulu Dua Javascriptnya

Tes dulu aja lah dua js nya, mana yang lebih juoss, nanti pertanyaan2 Benny bisa terjawab :)

*yuk comment tapi jangan nyampah*


*yuk ngeblog tapi jangan nyampah*

bennylin's picture

Hasil

Hasil dari skrip yang ditunjukkan Ari:

-1 blog ada 91 artikel, mencari komentar ke 91 (mis. sabdaspace.org/test#comment-6000)

-klo satu halaman 90 komentar maka waktu yang dibutuhkan 6 detik

-klo satu halaman 10 komentar, maka waktu yang dibutuhkan 46 detik

-kesimpulan, mencari 1 halaman (dan pergi ke halaman berikutnya kalau tidak ditemukan) dibutuhkan waktu 5 detik

-cara kerja skrip: setelah halaman sabdaspace.org/test#comment-6000 selesai di-load, selama 5 detik berikutnya halaman hanya diam saja, lalu detik ke 6-10 ke halaman 1 http://sabdaspace.org/test?page=1&cs=63726#comment-6000, diam lagi dan mencari selama 5 detik, kemudian ke halaman berikutnya, dst. Selama mencari di window tidak terlihat perubahan apa-apa kecuali di address bar setiap 5 detik. Tidak ada tanda-tanda loading atau semacamnya. Di status bar (bagian bawah) cuma ada tulisan "waiting sabdaspace.org..."

-Selama waktu itu pengguna biasa mungkin akan celingukan tidak tahu bahwa ia harus menunggu 5 detik. Itu aja di komputer yang lumayan cepat koneksinya. klo lemot mungkin lebih lama lagi, belum klo pake HP.

Skrip kedua:

-Sekilas cara kerja dan waktu yang dibutuhkan sama, cuma perbedaannya ketika tidak ditemukan di satu halaman, maka pencarian di halaman berikutnya sama seperti kalau klik (ada ikon yang berputar, judul window diganti menjadi "Loading...", status bar ada tanda "waiting sabdaspace.org" dst.")

-Iseng-iseng mencoba memasukkan nomor ID yang random (misalnya #comment-1) maka kodenya tidak bisa tahu (karean tidak bisa mengakses database tentu saja) bahwa nomor komentar itu tidak sah/tidak eksis, lalu mencari hingga halaman 21 sebelum saya stop. Klo skrip pertama dibatasi "hanya" mencari hingga 99 halaman, entah bagaimana skrip kedua.

 

Terima kasih untuk Theo yang sudah mencobanya di server lokal.

dennis santoso a.k.a nis's picture

PIYE

guys.... PIYE? masalah ini udah case-closed atau gimana?

Daniel's picture

anybody home?

mesti ditanyakan ke mereka yang sedang melakukan uji coba di server lokal.

minggu lalu sepertinya mereka sedang sibuk menyelesaikan CD SABDA versi 4.0, tapi kelihatannya sekarang sudah selesai dan siap mengerjakan yang lain... tapi itu cuma dugaan saya saja lho, saya juga belum dengar kabar apa2 lagi dari dalam...

halo?

joli's picture

Joli bantuin..

sini Joli bantuin   atau  

 THEO, BENNY..        

bennylin's picture

Kesimpulan

Jadi, skripnya sudah dicoba dan walaupun bisa jalan (mencari komentar di halaman ke-x) namun memakan waktu yang relatif lama (sekitar 5 detik untuk berpindah ke halaman berikutnya). Kita kurang puas dengan pilihan-pilihan yang ada saat ini.

Pilihannya:

  1. kita menunggu ada skrip yang bisa bekerja lebih efisien lagi, atau
  2. kita coba dulu pasang di SS.org buat teman-teman sekalian coba

Mau pilih yang mana?

dennis santoso a.k.a nis's picture

execute aja

ok, sementara belum ada solusi laen, gue setuju no. 2, pasang di SS.org.

nanti kalo ada script yg lebih efisien, ganti script ini dan coba lagi di SS.org.

gitu aja terus sampe ada solusi yang nggak koboi2-an kayak gini :-)

walcott's picture

Sudah saya pasang

Sudah saya pasang, saya menggunakan script yang ada di forum drupal. Thx for Dennis, Ari, Beny, Joli, Daniel, SF dll yang telah ikut membantu :)

Terima kasih

Karena bagiku hidup adalah Kristus dan mati adalah keuntungan (Filipi 1:21)