Vietnamese Typing Module works with Drupal 6

Events happening in the community are now at Drupal community events on www.drupal.org.
vph's picture

Tôi đã điều chỉnh Vietnamese Typing module (http://drupal.org/project/viet_typing) để có thể dùng được trong Drupal 6. Hiện giờ dùng với Drupal 6beta3 không có trở ngại .

Module này sử dụng AVIM của Hieu Dang.

Xin hỏi ở đây mọi người dùng cách nào để viết tiếng Việt ở Drupal.

Comments

Cảm ơn anh, ở các

thehong's picture

Cảm ơn anh, ở các website cá nhân, công ty, khách hàng, TH chỉ sử dụng Unikey để nhập liệu các ký tự Việt ngữ.

Thế Hồng

Hình như câu hỏi là

jcisio's picture

Hình như câu hỏi là "dùng kiểu gõ nào để viết..."
Tôi dùng TELEX. Theo ước lượng của tôi thì : VNI chỉ dùng ở miền Nam, TELEX được toàn bộ miền Bắc và 1/3 - 1/2 miền Nam dùng. Ở nước ngoài (lâu năm) thì VNI hoặc VIQR.

Nhân tiện cho hỏi luôn Drupal có cách nào ghép các script lại không (như làm với *.css) ?

Tin tức CNTT, điện tử, viễn thông...
http://thongtincongnghe.com

ca'm on Thehong va

vph's picture

ca'm on Thehong va jsicio.

Toi muon biet cac ban dung cach nao de viet tieng Viet duoc. Toi nghi o VN da so computer co install software de viet tieng Viet, nen khong can nhung module nhu Vietnamese Typing.

O nuoc ngoai computer trong so lam khong co install software viet tieng Viet. O nha thi thuong cung khong, nen nhung forum thuong co cach de giup thanh vien viet tieng Viet.

À, đã hiểu câu hỏi

jcisio's picture

À, đã hiểu câu hỏi :) Dùng Firefox + AVIM addon thể gõ tiếng Việt ở 99% các trang web. Nếu không dùng Firefox:
- Windows : Unikey không cần cài đặt
- Linux : xvnkb
- Mac OS X : Tiger về trước dùng bộ gõ của Gero Herrmann (không hỗ trợ kiểu TELEX mới), từ Leopard dùng bộ gõ Unikey tích hợp

Đó là các giải pháp của riêng tôi.

Tin tức CNTT, điện tử, viễn thông...
http://thongtincongnghe.com

Chào anh VPH, TH vừa xem

thehong's picture

Chào anh VPH, TH vừa xem lại soucrce code của anh thì có góp ý:

Cách tạo nội dung của block của anh là viết thẳng HTML code. Cách này giải quyết được vấn đề: nhúng control vào dược giao diện web. Nhưng lại gặp một trở ngại: control của anh sẽ bị lạc lỏng với theme của người dùng. Do đó, anh cần chuyển cách tạo nội dung thông qua Form API. Tuy nhiên, khi chuyển sang sử dụng Form API, anh phải chuyển sự kiện onclick sang một file riêng.

Source code hiện tại của anh:

<?php
...
  else if(
$op == 'view') {
   
$path = base_path() . drupal_get_path('module', 'viet_typing') . '/avim20071102.js';
   
$block['subject'] = t('');
   
$block['content'] =
     
'<INPUT id=him_auto onclick=setMethod(0); type=radio name=viet_method>Auto ' .
     
'<INPUT id=him_telex onclick=setMethod(1); type=radio name=viet_method>Telex ' .
     
'<INPUT id=him_vni onclick=setMethod(2); type=radio name=viet_method>VNI <br>' .
     
'<INPUT id=him_viqr onclick=setMethod(3); type=radio name=viet_method>VIQR &nbsp;' .
     
'<INPUT id=him_viqr2 onclick=setMethod(4); type=radio name=viet_method>VIQR* ' .
     
'<INPUT id=him_off onclick=setMethod(-1); type=radio name=viet_method>Off<br>' .
     
' &nbsp; F12: on/off. F9: switch'
     
. '<br><script type="text/javascript" src="'.$path.'"></script>';
    ;
   
    return
$block;
  }
...
?>

Chuyển sang sử dụng Form API, code sẽ có dạng sau:

<?php
...
  else if(
$op == 'view') {
    return array (
     
'subject' => '',
     
'content' => drupal_get_form ('viet_typing_control_form')
    );
  }
...

function
viet_typing_control_form () {
 
$path = drupal_get_path ('module', 'viet_typing');
 
drupal_add_js ($path.'/viet_typing.js');
 
drupal_add_js ($path.'/avim20071102.js');
  return array (
   
'viet_typing' => array (
     
'#type' => 'radios',
     
'#description' => theme ('item_list', array (
       
t('F12: on/off'),
       
t('F9: switch')
      )),
     
'#options' => array (
       
0 => t('Auto'),
       
1 => t('Telex'),
       
2 => t('VNI'),
       
3 => t('VIQR'),
       
4 => t('VIQR*'),
        -
1 => t('Off'),
      )
    )
  );
}
?>

Nội dung file viet_typing.js khi đó:

$(function(){
  $('#viet-typing-control-form .form-radio').each(function(){
    $(this).click(function(){
      setMethod($(this).val());
    });
  });
});

Thế Hồng

TH chưa biết tạo

thehong's picture
  • TH chưa biết tạo patch
  • Code chưa test nên nhờ anh check lại.

Thế Hồng

Có cách nào gán sự

jcisio's picture
  • Có cách nào gán sự kiện vào các element của form mà không cần dùng thêm 1 tập tin js ngoài không ?
  • drupal_add_js nên gán thêm scope=footer theo đúng khuyến cáo của tác giả AVIM.

Tin tức CNTT, điện tử, viễn thông...
http://thongtincongnghe.com

Sử dụng cách cũ của

thehong's picture
  • Sử dụng cách cũ của anh vph
  • Cú pháp: drupal_add_js ($data = NULL, $type = 'module', $scope = 'header', $defer = FALSE, $cache = TRUE, $preprocess = TRUE). Theo yêu cầu của anh thì chúng ta sẽ gán, $type = 'inline', $scope = 'footer' (yêu cầu theme phải được thiết kế đúng chuẩn).

Thế Hồng

Ca'm o*n TheHong go'p y'.

vph's picture

Ca'm o*n TheHong go'p y'. Code nay to^i lo^i tu Drupal 4.7 dden nay, chi? thay ddoi so so. Toi se~ chi?nh la.i theo go'p y' cua TH. Nhu vay chi?nh hon la dung HTML trong code cu?.

Da thu roi nhung khong hoan

vph's picture

Da thu roi nhung khong hoan hao. Ly do la moi radio can phai co mot "id" (vi du: him_auto, him_telex, hin_viqr, ...), nhung form API chi cho phep mot id chung cho tat ca cac radio thoi.

Toi khong ranh form API lam nen chua biet lam cach nao.

Lúc đầu TH cũng nghĩ

thehong's picture

Lúc đầu TH cũng nghĩ sẽ có vấn đề khi bỏ ID của các elements ra. File js sửa lại sẽ từa tựa thế này:

$(function(){
  $('#viet-typing-control-form .form-radio').each(function(i){
    switch (i) {
      case 0:
        $(this).attr('id', 'him_auto');
        break;
      case 1:
        $(this).attr('id', 'him_telex');
        break;
      case 2:
        $(this).attr('id', 'him_vni');
        break;
      case 3:
        $(this).attr('id', 'him_viqr');
        break;
      case 4:
        $(this).attr('id', 'him_viqr2');
        break;
      case 5:
        $(this).attr('id', 'him_off');
        break;
    }
    $(this).click(function(){
      setMethod($(this).val());
    });
  });
});

Thế Hồng

sao mhd dùng module

mhd's picture

sao mhd dùng module viet_typing này trong firefox với IE 7 thì cứng ngắc ko gõ gì được ở Title field í nhỉ? body field mà không bật rich text thì cũng không gõ được.

hmm.. hình như tại cái

mhd's picture

hmm.. hình như tại cái editor TinyMCE mình dùng, qua drupalvn thì thấy gõ không có vấn đề gì cả.

hi anh vph, tôi

sandman1970's picture

hi anh vph, tôi vào
http://drupal.org/project/viet_typing
download và làm nhu anh chi? da^~n

nhu+ng không làm duoc buoc thu 2 cua anh:

"2. Sau khi mở module vào admin/block để thấy Vietnamese Typing block. Có thể set up block hiện ra ở trang nào theo ý mình muốn"

PS: toi dùng drupal 6.1, chi tim thay admin/build/block va trong do khong thay V typing block dau ca.

thx for your time.

Tôi cũng không thấy block, nhưng...

Sr.o-D's picture

Tôi cũng không thấy block Viet Typing trong danh sách các block. (Tôi đang dùng Drupal 6.2)
Nhưng trong khi chờ sửa lỗi, bạn có thể sử dụng module Viet_Typing bằng cách tự tạo một block tạm thời với body sau:

<INPUT id=him_auto onclick=setMethod(0); type=radio name=viet_method>Auto
<INPUT id=him_telex onclick=setMethod(1); type=radio name=viet_method>Telex
<INPUT id=him_vni onclick=setMethod(2); type=radio name=viet_method>VNI <br>
<INPUT id=him_viqr onclick=setMethod(3); type=radio name=viet_method>VIQR
<INPUT id=him_viqr2 onclick=setMethod(4); type=radio name=viet_method>VIQR*
<INPUT id=him_off onclick=setMethod(-1); type=radio name=viet_method>Off<br>
&nbsp; F12: on/off. F9: switch
<br><script type="text/javascript" src="modules/viet_typing/avim20071102.js"></script>

Input Format thì chọn Full HTML

Trong phần Show block on specific pages thì chọn Show on only the listed pages (ô chọn thứ 2) và trong Pages bạn điền:

node/add/
node/
/edit
admin/
user/
/edit
search/
comment/reply/

Vậy là đã có block mới, bạn vào admin/built/block để chọn nơi hiển thị cho nó.


Hoà

chao anh, em bi loi access denied

phuoctan's picture

chào anh, em đang tìm hiểu drupal, em viết module mà mỗi khi chạy là báo lỗi access denied nên không hiện nội dung module ra, mà vẫn chưa tìm được cách khắc phục, mong anh giúp em.. em đang sử dụng ver 6.12
==> sau đây là code:
=>nếu thấy tiện anh có thể chỉ dẫn hoặc liện hiện với em qua mail: phuoctan1303@gmail.com , cám ơn anh trước

<?php
function mymenu_menu()
{
 
$items=array();
   
/////////////////////
 
  
$items['mymenu']=array(
         
'title'=>t('Getting'),
         
'path'=>'mymenu',
          
'callback'=>'mymenu_hello',
        
'access'=>TRUE
           
);
/*
     $timestamp=format_date(time(),'small');
      $items[]=array(
            'title'=>t('Stock Quote at @time',array('@time'=>$timestamp)),
         'path'=>'stockquote',
           'callback'=>'memu_stock_quote',
         'access'=>TRUE
            );
*/ 
          
return $items;     
}
/////////////////////////////////////
function mymenu_hello($name=NULL)
{
if(!isset(
$name))
{
     
$name=t('good luky');
    }
  return
t('hello @name!',array('@name'=>$name));
}
?>

=================
em xin bổ sung thêm hình ảnh, để tiện quan sát, nhưng mà có thể truy xuất trong content, em cũng không biết lỗi gi, code có vấn đề gi không nữa...T.T

Mong cac anh nhiet tinh giup em

phuoctan's picture

Mong cac anh nhiet tinh giup em giai quyet van de nay, vi em dang can biet cach su dung drupal gap

Vui lòng tạo thread

thehong's picture

Vui lòng tạo thread mới.

The Hong