Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X

Thứ ba - 05/07/2022 06:49
Đối với khu vực ngoài site, mặc định nếu như admin có quyền và đã đăng nhập quản trị viên, bên ngoài site dữ liệu của trình soạn thảo cũng đã được gọi sẵn, còn thành viên hoặc khách thông thường thì không có
Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X
Thêm trình soạn thảo Ckeditor vào một module NukeViet 4X
Nếu ứng dụng cần thiết đọc nội dung HTML sẵn có từ CSDL thì ta tiến hành lệnh SQL để đọc dữ liệu, giả sử dữ liệu đọc được lưu vào biến $array['documentation']. Sau khi đọc nội dung HTML vào biến $array['documentation'], ta tiến hành chuyển ký tự <br /> sang nl (Ký tự xuống dòng) bằng lệnh
$array['documentation'] = nv_editor_br2nl( $array['documentation'] );
Để xử lý dữ liệu HTML sang dữ liệu của trình soạn thảo ta cần gọi ra thư viện của trình soạn thảo. Cách gọi trong admin và ngoài site là khác nhau, trong admin, mặc định (nếu không bị cấm) file xử lý dữ liệu của trình soạn thảo luôn được gọi do dó để gọi ra ta chỉ cần kiểm tra xem dữ liệu của trình soạn thảo đã có chưa, nếu không có thì gọi
if ( defined( 'NV_EDITOR' ) )
{
 require_once ( NV_ROOTDIR . '/' . NV_EDITORSDIR . '/' . NV_EDITOR . '/nv.php' );
}
Đối với khu vực ngoài site, mặc định nếu như admin có quyền và đã đăng nhập quản trị viên, bên ngoài site dữ liệu của trình soạn thảo cũng đã được gọi sẵn, còn thành viên hoặc khách thông thường thì không có, dó đó có thể kiểm tra xem đối tượng truy cập hiện tại là admin hay thành viên hoặc khách thông thường, nếu thành viên hoặc khách thông thường ta cần tạo dữ liệu riêng cho trình soạn thảo. Ở đây tôi chọn cách tạo dữ liệu riêng cho trình soạn thảo bất kể là admin hay là thành viên hoặc khách thông thường. Sử dụng code
// Trinh soan thao
require_once (NV_ROOTDIR . '/' . NV_EDITORSDIR . '/ckeditor/ckeditor_php5.php');

function nv_simple_editor($textareaname, $width = "100%", $height = '450px', $val = '')
{
 global $module_name, $global_config;
 $editortoolbar = array( array('Link', 'Unlink', 'Image', 'Table', 'Font', 'FontSize', 'RemoveFormat'), array('Bold', 'Italic', 'Underline', 'StrikeThrough', '-', 'Subscript', 'Superscript', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', 'OrderedList', 'UnorderedList', '-', 'Outdent', 'Indent', 'TextColor', 'BGColor', 'Source'));
 $CKEditor = new CKEditor();
 $CKEditor->returnOutput = true;
 $CKEditor->config['skin'] = 'kama';
 $CKEditor->config['entities'] = false;
 $CKEditor->config['enterMode'] = 2;
 $CKEditor->config['language'] = NV_LANG_INTERFACE;
 $CKEditor->config['toolbar'] = $editortoolbar;
 $CKEditor->config['pasteFromWordRemoveFontStyles'] = true;
 $CKEditor->basePath = NV_BASE_SITEURL . NV_EDITORSDIR . '/ckeditor/';
 if (!empty($width))
 {
 $CKEditor->config['width'] = strpos($width, '%') ? $width : intval($width);
 }
 if (!empty($height))
 {
 $CKEditor->config['height'] = strpos($height, '%') ? $height : intval($height);
 }
 $CKEditor->textareaAttributes = array("cols" => 80, "rows" => 10);
 $CKEditor->config['filebrowserImageUploadUrl'] = NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=papi&uploadimage=1&tokend=" . md5( $global_config['sitekey'] . session_id() );
 $val = nv_unhtmlspecialchars($val);
 return $CKEditor->editor($textareaname, $val);
}
Chú ý, nếu ứng dụng của bạn không xây dựng một trình upload ảnh riêng thì ở code trên cần xóa dòng
$CKEditor->config['filebrowserImageUploadUrl'] = NV_BASE_SITEURL . "index.php?" . NV_LANG_VARIABLE . "=" . NV_LANG_DATA . "&" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=papi&uploadimage=1&tokend=" . md5( $global_config['sitekey'] . session_id() );
Sau khi có code xử lý ta mã hóa nội dung HTML bằng lệnh
if ( ! empty( $array['description'] ) ) $array['description'] = nv_htmlspecialchars( $array['description'] );
Gọi xử lý và xuất ta Template bằng lệnh
if ( defined( 'NV_EDITOR' ) and nv_function_exists( 'nv_aleditor' ) )
{
 $array['description'] = nv_aleditor( 'description', '100%', '200px', $array['description'] );
}
else
{
 $array['description'] = "<textarea style=\"width:100%; height:200px\" name=\"description\" id=\"description\">" . $array['description'] . "</textarea>";
}

$xtpl->assign( 'DESCRIPTION', $array['description'] );
Trong file TPL xuất nội dung trình soạn thảo bằng code
{DESCRIPTION}
Khi submit from, lấy dữ liệu submit được bằng code
$array['description'] = $nv_Request->get_editor( 'description', '', NV_ALLOWED_HTML_TAGS );
Chuyển ký tự xuống dòng sang ký tự <br />
$array['description'] = nv_editor_nl2br( $array['description'] );
Cuối cùng biến $array['description'] chính là dữ liệu HTML sẽ được lưu vào CSDL.

Tác giả: Hỗ Trợ Nukeviet

  Ý kiến bạn đọc

Thông báo

Tặng website chuyên nghiệp khi mua tên miền và hosting
Tham gia nhóm hỗ trợ trên Zalo tại đây 
Nộp tiền online kích hoạt ngay ở đây hoặc nạp qua các kênh

MOMO :  0904999955 
MBBANK: 0904999955 Phan Ngọc Anh / Quân đội MBBANK, Bắc Sài Gòn
Nội dung nạp tiền: ten_tai_khoan_nuke 
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây