Thêm tính năng kiểm duyệt bài viết cho Bo-blog

8.343

Trên bo-blog người quản trị có thể thiết lập (cho phép hoặc không cho phép) các quyền hạn liên quan đến việc xem, đăng tải bài viết, quyền tìm kiếm, upload các tập tin lên blog và quyền quản lý blog,.. cho từng nhóm thành viên khác nhau. Tuy nhiên một điểm yếu của bo-blog là chưa cho phép người quản trị quyền kiểm duyệt nội dung bài viết trước khi cho thành viên đăng tải công khai trên blog.

Nếu blog của bạn chỉ do bạn viết bài hoặc chỉ cho phép những người đáng tin cậy quyền viết bài thì bạn không cần phải quan tâm đến chuyện kiểm duyệt nội dung, nhằm tránh khỏi những phiền toái từ bài viết của thành viên đăng tải (như nội dung xấu, cách trình bày không làm bạn hài long,..). Ngược lại với những blog muốn phát triển mạnh, hoặc hoạt động mở theo mô hình của diễn đàn thì không thể thiếu sự đóng góp bài viết tích cực của thành viên (Guest Post), người quản trị blog sẽ rất quan tâm đến tính năng kiểm duyệt này.

Đây từng là một vấn đề Minit quan tâm từ những ngày đầu mới tập làm blog và làm quen với bo-blog vào  khoảng cuối năm 2008. Lúc đó mình đã tìm hiểu và chỉnh sửa một ít code trong mã nguồn để đưa thêm tính năng kiểm duyệt bài viết vào và đã thành công. Sau này có vài bạn quan tâm và mình đã chia sẽ cho họ code đã chỉnh sửa và mình cũng đã hứa sẽ viết một bài hướng dẫn trên blog cho mọi người cùng làm nếu muốn. Tuy nhiên do thời gian đã quá lâu nên hầu như mình không nhớ chính xác là đã sửa những gì nên bây giờ phải làm lại từ đầu đồng thời viết luôn phần hướng dẫn trong quá trình thực hiện.
Cách thực hiện như sau:

Bước 1: Thêm quyền cho phép thành viên đăng bài công khai trên blog trong mục thiết lập quyền cho các nhóm user (thành viên).
Quyền này mình thêm vào trước quyền thêm tags , gọi là Quyền công khai bài viết . Để thêm được quyền này bạn cần mở file pref_usergroup.php trong thư mục admin và thêm dòng code sau vào dòng thứ 20 :  addpref(“r”, “Entryproperty|Công khai bài viết|{$lna[609]}|{$lna[610]}”);
(có thể dùng Dreamweaver hoặc EditPlus,… không nên dùng notepad của Windows để chỉnh sửa vì rất khó nhìn, dễ gây lỗi)

Bước 2: Ở bước này chùng ta phải kiểm tra xem thành viên có quyền công khai bài viết hay không để đưa ra danh sách thuộc tính bài viết cho thành viên chọn lựa.
Nếu thành viên đăng nhập không được cấp phép quyền công khai bài viết thì khi vào viết bài sẽ không thể đăng trực tiếp bài viết lên blog mà bài viết sẽ được chuyển vào hòm nháp chờ người quản lý kiểm duyệt trước khi đăng công khai. Ngược lại thành viên được cấp quyền công khai bài viết sẽ có quyền chọn lựa thuộc tính cho bài viết như bình thường (thuộc tính công khai bài viết, khóa bài viết, ẩn dấu bài viết, lịch trình).

Để làm được điều này bạn cần mở file cp_edit.php trong thư mục admin lên sau đó thay thế 2 dòng code ở line 87, 88 :
[codes=php]$arrayoption_property=array($lna[269], $lna[270], $lna[271], $lna[272], $lna[1111]);
$arrayvalue_property=array(0, 1, 2, 3, 4);
Bằng đoạn code sau và lưu lại:
if ($permission[‘Entryproperty’]==1){
$arrayoption_property=array($lna[269], $lna[270], $lna[271], $lna[272], $lna[1111]);
$arrayvalue_property=array(0, 1, 2, 3, 4);}
else {
$arrayoption_property=array($lna[272]);
$arrayvalue_property=array(3);}
[/codes]

Lưu ý: Mặc định sau khi viết bài với thuộc tính bài viết là bản nháp (chờ duyệt) thì bạn sẽ nhận được thông báo với 2 tùy chọn là vào hòm nháp hoặc viết tiếp bài mới nếu không chọn bạn sẽ được chuyển đến hòm nháp. Tuy nhiên đối với thành viên thông thường thì khi chuyển vào hòm nháp sẽ gặp thông báo lỗi.

Có 2 cách để giải quyết vần đề này như sau:

–  Cách thứ 1: Không cho hệ thống tự chuyển vào hòm nháp sau khi thành viên đăng bài mà chuyển về trang chủ , bằng  cách thay thế  đoạn code: $backtoaddnew=”{$lna[267]}|admin.php?go=edit_add”; (ở dòng 18) bằng đoạn:
[codes=php]if ($permission[‘Entryproperty’]==1) $backtodraft=”{$lna[325]}|admin.php?go=entry_draft”;
else $backtodraft=”{$lna[41]}|index.php”;[/codes]

–  Cách thứ 2: Cho phép thành viên được vào hòm nháp nhưng không được quyền xóa bài hoặc chuyển bài viết nháp thành công khai mà chỉ cho phép thành viên sửa lại bài  của chính họ.
Để làm được điều này bạn cần phải thay đổi vị trí một số câu lệnh kiểm tra điều kiện trong file cp_entry.php trong thư mục admin như sau:
Thay câu lệnh checkpermission(‘CP’);  ở dòng 20 bằng checkpermission(‘AddEntry’);
Ý nghĩa của sự thay thế này là: thay vì kiểm tra thành viên đó có quyền quản lý blog hay không? trước khi  được  thực hiện các quyền khác như: vào hòm nháp, quản lý bài viết , quản lý trang,.. (có thể xem đây như một điều kiện kiểm tra ban đầu, tổng quát), hệ thống chỉ cần kiểm tra thanh viên đó có quyền viết bài hay không? Sau đó nếu thực hiện tiếp các quyền khác hệ thống sẽ kiểm tra lại tùy theo trường hợp cụ thể mà điều kiện kiểm tra sẽ khác nhau.

Sau đây là một số chổ cần thêm vào lệnh checkpermission(‘CP’);  để kiểm tra tùy theo thao tác mà thành viên thực hiện. (Lưu ý: vị trí các dòng phía sau được tính khi đã thêm lệnh checkpermission(‘CP’);   vào bên dưới, số dòng có thể không chính xác tuyệt đối mà mà có thể lệch đi vài dòng)
[codes=php]if ($job==” || $job==”default”) {// dòng 30
if ($job==’batch’) {// dòng 117
if ($job==’deleteblog’ || $job==’deletedraft’) {// dòng 195
f ($job==’publish’) {// dòng 278
case ‘noreply’://dòng 293
case ‘notb’:// dòng 297
case ‘lock’:// dòng 301
case ‘unlock’:// dòng 305
case ‘sticky1’:// dòng 309 thêm vào checkpermission(‘PinEntry’); thay vì checkpermission(‘CP’);  
case ‘sticky2’:// dòng 313 thêm vào checkpermission(‘PinEntry’); thay vì checkpermission(‘CP’);  
case ‘sticky0’:// dòng 317 thêm vào checkpermission(‘PinEntry’); thay vì checkpermission(‘CP’);  
case ‘noread’://dòng 321
case ‘recountrep’://dòng 325
case ‘recounttb’://dòng 330
if ($job==”pagemanage”) {// dòng 358
if ($job==”deletepage”) {// dòng 398
[/codes]

Bước 3: Nếu bạn đã thực hiện thành công 2 bước trên thì có thể nói là bạn đã hoàn thành việc thêm tính năng kiểm duyệt bài viết cho bo-blog rồi đó. Tuy nhiên với mình như vậy thì chưa đủ vì mình cần chỉnh sửa thêm một số chổ đề hoàn thiện hơn như:
– Ẩn thanh menu chức năng đối với các nhóm thành viên không có quyền quản lí. Đồng thời thêm một số dòng thông báo vào phần viết bài.
– Việt hóa lại một số từ ngữ trong phiên bản tiếng việt để cho phù hợp hơn. Ví dụ như từ bản nháp sẽ được chuyển thành chờ duyệt,…
Để  loại bỏ thanh menu trong phần quản lý với nhóm thành viên thông thường bạn cần mở tập tin admin_header.php lên sau đó xóa đi phần code thì dòng 68 đến dòng 83 và save lại với tên admin_header_user.php

Tiếp theo bạn cần mở file admin.php (trong thư mục ngoài cùng – ngang hàng với file index.php) để thay thế đoạn code : include_once(“admin/admin_header.php”); ở dòng 39 bằng đoạn code sau:
[codes=php]if ($permission[‘CP’]==1){
include_once(“admin/admin_header.php”);}
else {
include_once(“admin/admin_header_user.php”);}[/codes]

Sau khi chỉnh sửa xong nhớ save lại nhé.
Để việt hóa lại bạn những từ bạn muốn bạn có thể chỉnh sửa trong file backend.php trong thư mục lang/vn hoặc thay đổi trong phần quản lý ngôn ngữ theo đường dẫn như: http://tenmiencuaban/admin.php?go=addon_langspec
Bây giờ bạn đã hoàn thành gần hết những việc cần làm rồi đó. Công việc cuối cùng bạn phải làm là upload lại những file đã chỉnh sửa lên host như: admin.php, admin_header_user.php, cp_edit.php , cp_entry.php, pref_usergroup.php , file  backend.php nếu có chỉnh sửa, sau đó vào thiết lập lại quyền cho các nhóm user. Nhớ là bật đầy đủ quyền cho nhóm quản lý nhé vì đã có thêm  quyền công khai bài viết.
Lưu ý: Hướng dẫn được thực hiện trên phiên bản bo-blog 2.1.1 đã cập nhật bản vá lỗi
Toàn bộ file cần thiết mình đã chỉnh sửa và upload lên đây bạn có thể download về tham khảo hoặc sử dụng luôn cũng được.
Download here
Chúc các bạn thực hiện thành công hướng dẫn này (mình ráng viết xong bài hướng dẫn này cho các bạn nên mệt quá rùi (:| )