PDA

View Full Version : Tính năng mới của DDTH



vikhoa
08-08-2006, 09:25
Do đường truyền ở VN không ổn định nên các bạn thường hay gặp trường hợp bị mất bài ngay khi gửi bài mới hoặc trả lời giống 1 số bạn ở đây:

http://www.ddth.com/showthread.php?t=97278

Vì vậy, vikhoa đã bổ sung thêm 1 tính năng nữa, cho phép bài viết tự động được copy ngay vào clipboard của Windows khi bạn nhấn nút Submit.

Nếu có bị lỗi đường truyền mà không post được hoặc mất bài, bạn chỉ cần Ctrl+V để paste nội dung vào form để submit lại.

*Lưu ý:
1/ Do clipboard của Windows chỉ có thể lưu 1 nội dung tại 1 thời điểm nên bạn không được Copy (Ctrl+C) bất kỳ thứ gì khác kể từ sau khi nhấn submit, nếu không bài viết của bạn sẽ bị mất luôn cả trong clipboard.

2/ Nếu bạn có gì quan trọng đang giữ trong clipboard, vui lòng paste hoặc xử lý xong trước khi click nút submit hoặc preview bài viết trên DDTH.

3/ Hiện tại tính năng này chỉ hoạt động trên IE 4.0 trở lên (và các browser sử dụng IE engine), chưa thử nghiệm trên FireFox hoặc các trình duyệt khác

Nếu bạn có ý kiến đóng góp gì về tính năng mới này, xin mời post vào đây.

vikhoa
08-08-2006, 10:49
Nhiều bạn hỏi share code này, thật ra cũng đơn giản thôi mà tại lúc trước tôi ...chưa nghĩ ra để làm. Nhu cầu phát sinh thì mới bắt đầu tìm giải pháp :emlaugh:

Code này dành riêng cho VBB, các bạn muốn modify để dùng ở nơi khác thì tự "chế biến" thêm nhé.



<SCRIPT LANGUAGE="JavaScript">
function ClipBoard()
{
Copied = formID.{$editorid}_textarea.createTextRange();
Copied.execCommand("Copy");
// Created by vikhoa @ DDTH.com - 08/08/2006
}
</SCRIPT>


Với Quick Reply thì formID là qrform.

EditPost, NewPost, NewReply thì chưa có formID, bạn tự add vào, tôi thì để là epform, npform, nrform.

{$editorid}_textarea là 1 biến của VBB, bạn cứ giữ nguyên như vậy trong template là được, VBB sẽ tự động thay thế biến tương ứng vào cho bạn.

Sau đó thì add phần onclick="ClipBoard()" vào mỗi button submit là xong.

Code này được dựa trên lệnh execCommand được hỗ trợ từ IE4 trở đi. Tôi đang tìm xem có lệnh tương ứng với FireFox hay không. Còn với các browser khác thì chắc là khó làm được (Opera, NS etc.)

Tôi chưa rõ cách này có làm được với dạng WYSIWYG editor hay không, bạn nào làm thử thì hãy chia sẻ kinh nghiệm lên đây với nhé.

kcreative
08-08-2006, 11:10
cái này hay thật, mà vikhoa cưới vợ rồi à? :D
thấy avatar là hình cưới :D

lee_huynh306
08-08-2006, 11:17
Chuyện này không quan trọng bằng chuyện em phải click hơn 20 lần vào cái câu đáng ghét "Click vào đây để đến nội dung cần xem" mới vào được cái thread này.
Sao chưa bao giờ thấy anh vikhoa trả lời mem về chuyện này nhỉ?

vikhoa
08-08-2006, 11:25
Em thử xóa cookies, tắt hết browser rồi vào lại xem sao. Có thể máy em bị lỗi cookies. Anh và rất nhiều người khác không bị -> chỉ có 1 vài trường hợp đặc biệt bị chứ không phải do lỗi forum.

Ngoài ra, máy có ZoneAlarm đôi lúc cũng không vào được DDTH khi không cho lưu Cookies hoặc có 1 số ngăn chặn khác.

all4country
08-08-2006, 11:51
Nếu bạn sử dụng máy cá nhân thì có thể tích vào "Lưu thông tin đăng nhập" lần sau vào bạn sẽ không bao giờ bị hỏi mà sẽ được chuyển thẳng đến bài có nội dung cần xem :)

Chuyện này không quan trọng bằng chuyện em phải click hơn 20 lần vào cái câu đáng ghét "Click vào đây để đến nội dung cần xem" mới vào được cái thread này.
Sao chưa bao giờ thấy anh vikhoa trả lời mem về chuyện này nhỉ?

bluesky
08-08-2006, 12:13
Được gửi bởi lee_huynh306
Chuyện này không quan trọng bằng chuyện em phải click hơn 20 lần vào cái câu đáng ghét "Click vào đây để đến nội dung cần xem" mới vào được cái thread này.

Hôm wa em cũng bị tương tự như vậy nhưng em chỉ click gần chục lần là bỏ cuộc, em cũng nghĩ là do máy nên ko cố gắng nữa, hôm nay vào bình thương rồi.
1 vấn đề nữa là cái bbcode của phần trả lời nhanh này em ko click vào đc, cuối cùng phải quote bằng tay, ko biết lại do máy hay sao??? :)

VnComputerJobs
08-08-2006, 12:50
Tôi thấy tự động copy vào ClipBoard là không nên, nó sẽ làm cho người dùng mất data trong ClipBoard và làm sai đi quy tắc sử dụng thông thường (một mình Vietkey đã gây nên khó chịu rồi) :D

Ah, còn trường hợp nào không submit được thì nhấn back rồi submit lại có sao đâu.

lybang
08-08-2006, 13:57
Chuyện này không quan trọng bằng chuyện em phải click hơn 20 lần vào cái câu đáng ghét "Click vào đây để đến nội dung cần xem" mới vào được cái thread này.
Sao chưa bao giờ thấy anh vikhoa trả lời mem về chuyện này nhỉ?
chắc là bác đang sài firefox + noscript phải không ,đúng là trước đây thì không bị như vậy ,nhưng bây giờ bác phải bảo noscript "allow ddth.com" trước đả rồi mới vào được

RuiLeonhart
08-08-2006, 15:17
Anh Khoa thử làm theo 1 hướng khác giống Yahoo! 360° xem sao. Sau khi gửi blog entry đi mà bị lỗi, back lại nó sẽ có đoạn Recover ở góc trên bên phải. Hình như nó lưu vào cookie...

nguoimoi
08-08-2006, 18:00
Ah, còn trường hợp nào không submit được thì nhấn back rồi submit lại có sao đâu.

Bác chưa hiểu vấn đề rồi, quan trọng là khi back lại thì công sức đôi lúc đã đi toi rồi.

lytamhoana6cntt
08-08-2006, 18:51
Thì cũng rứa!
Yahoo 360° nó cũng lưu. và cho recover Nhưng tui thấy thằng Google nó còn dùng Ajax để auto save. Làm thế hay hơn

lee_huynh306
09-08-2006, 00:10
3 cái trình duyệt cái nào cũng bị hết chứ không riêng gì FireFox. Dùng ở nhà nên lúc nào cũng allow cookies, cũng chẳng có firewall nào cả, chỉ BKAV+Windows Defender. Kể từ sau khi post cái bài trước đến bây giờ mới chui vô đây được nè.
Chuyện thật lạ vì ban đêm(gần 0h) vào một cái rẹt là xong còn ban ngày... ức chế vãi! Cũng có thể do lỗi đường truyền (đang xài Mega xì tin).
Ah uh, cái script mới của anh vikhoa không hoạt động được trên FireFox và Opera. Em test rồi.

quatimkhomauu
09-08-2006, 02:25
Mình có chút ý kiến về việc sử dùng AutoSave function. Tốt nhất là nên dùng Ajax tại client side để gọi *.php code tại server side mang theo data of user vào trong để autosave trong Session. Dưới đây là algorithm of AutoSave function:

- Ở cái index.php file:
1. Check parameter of url để xem có phải user đang thực hiện newpost, newreply, hoặc gì đó lien quan đến posting, thì turn on cái AutoSave function.
2. Khi đang posting mà user click qua trang khác thì turn off AutoSave.
- Khi user đang post bài thì AutoSave function sẽ được gọi mỗi 30 seconds. Dùng Ajax để gọi php file kèm theo những thông tin of user (nickname, bài viết, id of bài viết, title, etc...). Rồi ở php file, create Session hoặc Cookie để store những thông tin of user vào đó.
- If user submited successfully, then turn off AutoSave function and reset Session hoac Cookie
Else, enable "some button" to recover data from Session and then turn off AutoSave function and reset Session

Bất tiện cho việc sử dụng Session là khi user đóng Browser lại thì data of họ sẽ mất hết. Còn Cookie thì mình có thể lấy lại bất cứ lúc nào. Nó sẽ work trên tat cả Browsers.

Cách này sẽ không liên lụy gì đến Clipboard hết, nhiều khi user muốn lấy lại data trước đó of họ thì cũng chịu chết.

Mình có AutoSave in Ajax code (cũng đơn giản không có gì phức tạp lắm), nếu bạn nào muốn tham khảo thêm thì liên hệ với mình tại quatimkhomauu@gmail.com, hoặc mình sẽ post lên đây.

Bạn nào có y kiến hay xin chỉ dẫn thêm.

vikhoa
09-08-2006, 10:23
Có 1 vấn đề cần đặt ra:

1/ Giải pháp này đưa ra để giải quyết vấn đề mất dữ liệu trong trường hợp "đường truyền bị ngắt". Nghĩa là đường truyền của bạn có vấn đề trong 1 khoảng thời gian khi bạn post bài.

Như vậy, giả sử từ lúc ta bắt đầu gõ bài cho đến khi ta nhấn submit, đường truyền đã bị ngắt. Như vậy có dùng Ajax cũng không ăn thua vì đâu có kết nối đến server được.

Bài toán chỉ được giải quyết khi ta làm hoàn toàn mọi thứ ở client-side. Trước mắt thì tôi dùng Javascript là nhanh và tiện lợi nhất. Sắp tới có thể xem xét dùng JS lưu vào cookies, nhưng liệu dùng cookies có phải là hay không ? Hiện DDTH đang dùng cookies để lưu 1 số thông tin về user, và lưu cả 1 session để anti-DDoS mà 1 số người cũng đang gặp rắc rối với nó.

Có thể tôi sẽ làm thêm 1 button để mọi người tự copy vào clipboard nếu muốn. Ai không muốn thì thôi, cứ submit bình thường :)

lee_huynh306
09-08-2006, 11:26
Mọi người ko cần phải save nếu dùng Opera. Tự thân Opera sẽ save tất cả những gì mình đã gõ. Không cần quan tâm gì hết. Có điều tiếng Việt trong Opera ẹ quá.

vikhoa
09-08-2006, 11:30
Tôi đã phát hiện ra nguyên nhân khiến 1 số bạn vào DDTH mà cứ phải bấm "Click vào đây" mãi.

Đó là các bạn dùng Internet tại công ty/dịch vụ và ở đó sử dụng Proxy server. Do các bạn phải dùng Internet qua proxy nên không tạo cookies trên máy được.

Cái này thì chắc các bạn phải tự khắc phục bằng cách liên hệ admin tại đó.

lybang
09-08-2006, 21:39
Tôi đã phát hiện ra nguyên nhân khiến 1 số bạn vào DDTH mà cứ phải bấm "Click vào đây" mãi.

Đó là các bạn dùng Internet tại công ty/dịch vụ và ở đó sử dụng Proxy server. Do các bạn phải dùng Internet qua proxy nên không tạo cookies trên máy được.

Cái này thì chắc các bạn phải tự khắc phục bằng cách liên hệ admin tại đó.
tui sài ở nhà mà củng bị mấy hôm nay

ninhpk
10-08-2006, 23:28
Có 1 cách là thêm 1 checkbox "Save to clipboard" hoặc "Save to cookie" bên trên cửa sổ reply, đặt default là checked (lưu giá trị checkbox này cho lần sau). Nên save to cookie vì không ảnh hưởng đến clipboard đang dùng.
Có cách khác không dùng cookie:
Trong ASP.NET hay dùng viewstate để nó lưu dữ liệu của control vào 1 hidden input field, áp dụng được cho tất cả mọi browser. Khi page load khởi tạo giá trị fields bằng javascript.
Search thêm "Using Hidden Fields to Save State" để biết cách làm trong PHP. Tui không chuyên viết web lắm nên gợi ý vậy thôi.

The Old Man
11-08-2006, 00:46
Tôi đã phát hiện ra nguyên nhân khiến 1 số bạn vào DDTH mà cứ phải bấm "Click vào đây" mãi.

Đó là các bạn dùng Internet tại công ty/dịch vụ và ở đó sử dụng Proxy server. Do các bạn phải dùng Internet qua proxy nên không tạo cookies trên máy được.

Cái này thì chắc các bạn phải tự khắc phục bằng cách liên hệ admin tại đó.
Không phải tại Proxy server đâu.
Tôi bị lỗi này trọn nguyên ngày không vào được DDTH dù đã lick "Click vào đây" cả chục lần. Chợt nhớ lại vào Internet options - delete hết cookies và delete hết file IE Temp và off line là vào dược ngay mà không bị "Click vào đây" nửa.

PhongTranT
11-08-2006, 03:08
Giải pháp lợi cả đôi đường, các bác nên chuyển qua dùng Opera, bác có làm gì, khi back lại vẫn còn y nguyên nội dung bài viết, tốc độ lại nhanh hơn nhiều so với IE

Không được! Chẳng nhẽ chỉ vì vấn đề này mà chuyển hẳn sang dùng trình duyệt mới à? Nó còn tùy thuộc và thói quen của người dùng nữa chứ.

Theo tôi thì nên chọn phương pháp lưu vào cookies là tốt nhất, vừa support cho tất cả trình duyệt, vừa không bị vấn đề clipboard như mọi người đã thảo luận ở trên.

Cụ thể:
- Khi bấm vào submit thì lưu nội dung đã gõ xuống cookies.
- Nếu submit thành công thì xóa luôn nội dung của cookies đó (trong module add data vào DB)
- Khi bị lỗi (rớt mạng, treo máy,...) thì lần post sau sẽ check content của cookies lưu nội dung. Nếu khác null thì cho hiển thị 1 button "Paste" nội dung cũ vào editor.

Bên trên là ý kiến của riêng tôi. Mong mọi người cho ý kiến.

ninhpk
11-08-2006, 09:20
Tui mới phát hiện ra khi vào trang showthread.php gõ vào ô reply sau đó đi qua trang khác khi nhấn Back về nó sẽ xóa mất nội dung đã gõ. Trong khi đó trang newreply.php không bị hiện tượng này.

Nguyên nhân: file showthread.php include file vbulletin_quick_reply có gọi hàm qr_init()

function qr_init()
{
qr_disable_controls();
qr_init_buttons(fetch_object('posts'));
}

function qr_disable_controls()
{
if ....
else{
vB_Editor[QR_EditorID].write_editor_contents('');
}
......
}

Hàm write_editor_contents đã xóa sạch nội dung ô nhập trả lời. Không biết viêc này nhằm mục đích gì nhưng chỉ cần bỏ dòng trên đi, bạn có thể nhấn Back để lấy lại nội dung đã nhập trong quickr eply rồi.

KINYO
11-08-2006, 12:02
Đối với FF có vẻ chưa OK lắm, khi submit post thì nó bắt save một file PHP blank có tên là newreply.

NDThuan
12-08-2006, 11:09
phức tạp thế :D

kinh nghiệm của tớ khi xài net là trước khi submit những đoạn text dài đều copy hết vào notepad cho chắc :D

ninhpk
12-08-2006, 17:41
Nếu ai trước khi submit cũng nhấn copy hoặc gõ trước bằng notepad thì đâu còn gì để nói nữa. Trang web phải đạt mục tiêu thuận lợi tối đa cho người dùng chứ.

Nói ngoài lề chút xíu:
Không phải ai cũng thuộc tag b,i,u... trong khi phần trợ giúp chưa được việt hóa và chẳng ai muốn đọc nó trước khi cảm hứng post bài biến mất. Bà con vô web chỉ toàn chat chit vớ vẩn bằng những đoạn ngắn nên số article hay trên diễn đàn chẳng có bao nhiêu. Muốn trình bày bài viết cho đẹp phải cho hỗ trợ dùng nhiều tính năng hơn. Hiện giờ editor của diễn đàn còn quá đơn giản. Có thể admin không muốn đưa ra nhiều chức năng vì lo sợ user viết lung tung gây lộn xộn diễn đàn. Cuối cùng thì diễn đàn tin học này chỉ là nơi giải trí linh tinh giết thời gian mà thôi, tôi đã nghe vài người nói như vậy.

Các cách sửa dùng clipboard, cookie chỉ là giải pháp tạm thời không khắc phục root cause. Cái lỗi mất bài viết này phải sửa source code diễn đàn mới xong (ít nhất phải sửa các javascript để khắc phục nguyên nhân đã nói ở trên).

kimchammong
12-08-2006, 22:40
Có vấn đề với ddth đấy là pop up thể hiện nội dung ở phần tin tức annoucement có vẻ không đúng. Ví dụ, nội dung Paypal chẳng hạn luôn có 2 nội dung paypal dù đã trỏ chuột sang mục sau đó. Chán như con gián.

Mà có bác nào biết về cái này không chỉ em với. Chắc em không dùng hàng Việt Nam nên chẳng bác nào thèm chỉ em cả. Hic

http://www.ddth.com/showthread.php?p=582390#post582390

heinz6
13-08-2006, 06:29
thanks!y kien xay dung cua moi nguoi!

nino
15-08-2006, 07:47
Không được! Chẳng nhẽ chỉ vì vấn đề này mà chuyển hẳn sang dùng trình duyệt mới à? Nó còn tùy thuộc và thói quen của người dùng nữa chứ.

Theo tôi thì nên chọn phương pháp lưu vào cookies là tốt nhất, vừa support cho tất cả trình duyệt, vừa không bị vấn đề clipboard như mọi người đã thảo luận ở trên.

Cụ thể:
- Khi bấm vào submit thì lưu nội dung đã gõ xuống cookies.
- Nếu submit thành công thì xóa luôn nội dung của cookies đó (trong module add data vào DB)
- Khi bị lỗi (rớt mạng, treo máy,...) thì lần post sau sẽ check content của cookies lưu nội dung. Nếu khác null thì cho hiển thị 1 button "Paste" nội dung cũ vào editor.

Bên trên là ý kiến của riêng tôi. Mong mọi người cho ý kiến.
Bác lkn nói đúng đó, không phải chuyển hẳn mà là.. xài thêm 1 trình duyệt web nữa thôi mà... đâu cần bỏ hẳn IE đâu??

VnOi
16-08-2006, 02:03
Các pác bị sao ý chứ em chả thấy có việc gì cả. Thậm chí vào luôn DDTH mà chẳng phải bấm vào "Bấm vào đây..." gì gì đó...
Vào một phát là vào luôn .. Ặc ặc . Không biết cơ chế chống DDOS của DDTH bị lỗi gì

lytamhoana6cntt
25-08-2006, 19:58
Thực ra có gì đâu. Một mặt dùng JS để hiển thị cái vừa post -> hiển thị tức thời. Mặt khác vẫn chạy file php để lưu dữ liệu và Database.

shinichikudo0686
08-09-2006, 11:31
Không biết cái tính năng mới này của bác vikhoa có chạy được trên firefox không? Em cũng có làm cái này bằng asp mà nghe nói firefox đã khóa tính năng này vì lý do bảo mật.Không biết có cách nào để khắc phục vấn đề này của firefox không hả mấy bác?