<commit_before># Laravolt Mural

Laravolt Mural bertujuan menyediakan fitur komentar yang siap dipakai dan mudah diintegrasikan ke dalam aplikasi berbasis Laravel.

Package ini masih dalam tahap pengembangan dan belum dianjurkan untuk digunakan dalam produksi.

## Instalasi

### Update composer.json

Bisa dengan menjalankan perintah:

	composer require laravolt/mural
	
Atau menambahkan deklarasi berikut ke file composer.json:

    "require": {
        ...
        "laravolt/mural": "^1.0@dev"
    },
	
### Service Provider

    Laravolt\Mural\ServiceProvider::class,	
### Facade

    'Mural'  => Laravolt\Mural\Facade::class,    
    
### Migration

	php artisan vendor:publish
	php artisan migrate
	
Ini akan menambahkan file migrasi baru `2015_08_17_101000_create_comments_table.php` sekaligus menjalan migrasi tersebut.	Tabel baru bernama `comments` akan ditambahkan ke basisdata.
    
## Penggunaan

Untuk setiap model yang bisa dikomentari, tambahkan `trait` seperti berikut:

```php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Laravolt\Mural\CommentableTrait;

class Post extends Model
{
    use CommentableTrait;
}
``` 


Penambahan CommentableTrait otomatis akan menjadikan model Post memiliki relasi `morphMany` terhadap `Laravolt\Mural\Comment`. Karena ini relasi eloquent biasa, maka Anda bisa melakukan hal-hal berikut ini:

```php
// mendapatkan semua komentar
Post::find(1)->comments;

// melakukan paginasi komentar
Post::find(1)->comments()->paginate();

// atau aksi apapun, sama seperti relasi Eloquent biasa
Post::find(1)->comments()->orderBy('created_at', 'desc');
```

### Shortcut

#### Menampilkan Widget Komentar

Untuk menampilkan widget komentar, seperti yang biasa ditemui di kebanyakan blog, tambahkan kode berikut di view Anda:

	$post = App\Models\Post::find(1);
    {!! Mural::render($post) !!}
    
Selesai, `laravolt/mural` sudah dilengkapi dengan `Model`, `Controller`, dan `View` yang siap pakai, hasilnya seperti dibawah ini:

![](https://dl.dropboxusercontent.com/u/21271348/laravolt_mural.png)    

Anda juga bisa mengelompokkan komentar berdasar `room` tertentu, sehingga untuk satu konten bisa memiliki banyak kelompok komentar.

    {!! Mural::render($post, 'collaborator') !!}
    {!! Mural::render($post, 'you-can-put-anything-here') !!}    

Untuk masalah tampilan, saat ini skin yang didukung adalah [semantic-ui](http://semantic-ui.com/). Bootstrap segera menyusul (yang berminat bisa kirim Pull Request).

#### Menambah Komentar

	Mural::addComment($post, 'komentar');  // room = null
	Mural::addComment($post, 'komentar lagi', 'collaborator'); // room = collaborator

#### Mendapatkan Komentar
	Mural::getComments($post, 'room', []);

## Event

| Nama event         | Kapan dipanggil                         | Parameter
| -------------      | -------------                           | ---
| mural.render       | Ketika widget mural ditampilkan di view | $content
| mural.comment.add  | Ketika ada komentar baru                | $comment, $user

## Requirement
* jquery
* semantic-ui
<commit_msg>update dokumentasi 'readonly'<commit_after># Laravolt Mural

Laravolt Mural bertujuan menyediakan fitur komentar yang siap dipakai dan mudah diintegrasikan ke dalam aplikasi berbasis Laravel.

Package ini masih dalam tahap pengembangan dan belum dianjurkan untuk digunakan dalam produksi.

## Instalasi

### Update composer.json

Bisa dengan menjalankan perintah:

	composer require laravolt/mural
	
Atau menambahkan deklarasi berikut ke file composer.json:

    "require": {
        ...
        "laravolt/mural": "^1.0@dev"
    },
	
### Service Provider

    Laravolt\Mural\ServiceProvider::class,	
### Facade

    'Mural'  => Laravolt\Mural\Facade::class,    
    
### Migration

	php artisan vendor:publish
	php artisan migrate
	
Ini akan menambahkan file migrasi baru `2015_08_17_101000_create_comments_table.php` sekaligus menjalan migrasi tersebut.	Tabel baru bernama `comments` akan ditambahkan ke basisdata.
    
## Penggunaan

Untuk setiap model yang bisa dikomentari, tambahkan `trait` seperti berikut:

```php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Laravolt\Mural\CommentableTrait;

class Post extends Model
{
    use CommentableTrait;
}
``` 


Penambahan CommentableTrait otomatis akan menjadikan model Post memiliki relasi `morphMany` terhadap `Laravolt\Mural\Comment`. Karena ini relasi eloquent biasa, maka Anda bisa melakukan hal-hal berikut ini:

```php
// mendapatkan semua komentar
Post::find(1)->comments;

// melakukan paginasi komentar
Post::find(1)->comments()->paginate();

// atau aksi apapun, sama seperti relasi Eloquent biasa
Post::find(1)->comments()->orderBy('created_at', 'desc');
```

### Shortcut

#### Menampilkan Widget Komentar

Untuk menampilkan widget komentar, seperti yang biasa ditemui di kebanyakan blog, tambahkan kode berikut di view Anda:

	$post = App\Models\Post::find(1);
    {!! Mural::render($post) !!}
    
Selesai, `laravolt/mural` sudah dilengkapi dengan `Model`, `Controller`, dan `View` yang siap pakai, hasilnya seperti dibawah ini:

![](https://dl.dropboxusercontent.com/u/21271348/laravolt_mural.png)    

Anda juga bisa mengelompokkan komentar berdasar `room` tertentu, sehingga untuk satu konten bisa memiliki banyak kelompok komentar.

    {!! Mural::render($post, 'collaborator') !!}
    {!! Mural::render($post, 'you-can-put-anything-here') !!}    

	// readonly, user tidak bisa submit komentar
	{!! Mural::render($post, 'room', ['readonly' => true]) !!}        

Untuk masalah tampilan, saat ini skin yang didukung adalah [semantic-ui](http://semantic-ui.com/). Bootstrap segera menyusul (yang berminat bisa kirim Pull Request).

#### Menambah Komentar

	Mural::addComment($post, 'komentar');  // room = null
	Mural::addComment($post, 'komentar lagi', 'collaborator'); // room = collaborator

#### Mendapatkan Komentar
	Mural::getComments($post, 'room', []);

## Event

| Nama event         | Kapan dipanggil                         | Parameter
| -------------      | -------------                           | ---
| mural.render       | Ketika widget mural ditampilkan di view | $content
| mural.comment.add  | Ketika ada komentar baru                | $comment, $user

## Requirement
* jquery
* semantic-ui

{'fraction_non_alphanumeric': 0.11996817820206841, 'fraction_numerical': 0.008910103420843278, 'mean_word_length': 3.827956989247312, 'pattern_counts': {'":': 4, '<': 5, '<?xml version=': 0, '>': 16, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2383203', 'n_tokens_mistral': 2353, 'n_tokens_neox': 2206, 'n_words': 560}