Archive for category News

CShout 3 Release

The new version of CShout has been renovated quite a lots with many long waited features. As in previous versions, it requires no database but a text file for storing shouts. Following are key important features:

  • Use flat-file database, easy for setup and backup
  • Support emoticons, flooding control (spam protection), bad words filtering.
  • Display timestamp and ip address via tooltip.
  • Timezone adjusting.
  • Allow the admin to delete unwanted shouts on the fly.
  • Search shouts by date, time, shouter, message, and ip address.
  • Page navigation.
  • AJAX-Ready.
  • Support any language/charset.
  • Extremely easy for customising and supporting themes. NEW
  • Support integration with other CMS/Forums where users must log in to shout. Their usernames will be used. NEW
  • Auto-refresh. Easy to turn into a chat box (rev28: allow admin to force this feature always on). NEW

Click here to download the latest package of CShout. Since version 3, CShout’s source code is Subversion controlled at http://code.google.com/p/cshout/source/checkout. View full change log.

If you have any suggestion or have found any bugs, please create a new issue or submit a comment here. For more information, please visit the wiki.

7 Comments

CShout’s wishlist

Hi guys, all your wanted/suggested features have been heard. Please understand that I have been having limited time for personal projects. As promised recently, I will be reviewing CShout and make some significant changes to it due to lots of your interests.
Please suggest or remind me of the features that you would like to be included in the next version of CShout. Those considered ideas will be listed here and guaranteed to be implemented as described.
To be implemented/upgraded features:
  • Auto refresh (with options for admin and users). With optional sound alert upon new messages arrival.
  • New CShout will not support non-javascript browser and use no iframe.
  • Better GUI for management and control
  • Source code will be Subversion controlled
  • Support integration into existing CMS framework for user management.

2 Comments

Web 2.0 goes live

My site is now rebuilt with AJAX. I decide to let it go live so that I can get feedback from you. This site should be displayed all right in those browsers that do not support ajax or have javascript turned off.
If there is any problem browsing my site, please feel free to send me your opinions. Thanks.

No Comments

CShout 2.0 Release

This shoutbox completely needs no database at all. It uses a text file as its database. I have created it since I realised that I would need one for my own. Before that, I used the free shoutbox service at http://www.shoutboxes.com from which I adopted the idea. I started with a free tutorial on the internet which was really really basic and simple.
You can download, unrar and enjoy it straight away as well as using it with phpwcms as a mod. I don’t know if this is considered as a mod but it does something different to the orginial copy of phpwcms. It is my little contribution to phpwcms community. This mod will add a shoutbox into your phpwcms site using phpwcms custom replacement tag.
If you would not mind, please let me know the website that you use this shoutbox. Put a link in to my shoutbox so that others can have different live demos of this shoutbox.
Features:
  • Use flat-file database, easy for setup and backup
  • Support emoticons, flooding control (spam protection), bad words filtering.
  • Display timestamp and ip address via tooltip.
  • Timezone adjusting.
  • Allow the admin to delete unwanted shouts on the fly.
  • Search shouts by date, time, shouter, message, and ip address.
  • Page navigation.
  • New version 2.0 implements AJAX.
  • Support any language/charset.
Websites link to this shoutbox:
Websites use this shoutbox:
CShout 2.x
Install instruction:
- Please refer to installation.html in the CShout 2.0 package.
Versions:
2.0: released on 28 September, 2006 with AJAX implementation but still be compatible with browsers that do not support JavaScript or AJAX. It’s now called CShout 2.0
Download CShout 2.0.1
Shoutbox 1.x
Notes:
Version 1.x is out of date and no longer get updated or fixed. It is recommended to install the latest version.REMEMBER that the replacement tag for phpwcms only works with version 1.x, for newer versions please refer to its installation notes. The replacement tag should be decompressed into/phpwcms_template/inc_script/frontend_render then you can use the tag {SHOUTBOX:‹width›x‹height›} in your articles.
Versions:
1.05: released on 17 June, 2006 with bug fixed and new features. Check the change log in the source code. For those who would like to update from old versions, you only need to replace the file shout.php and off you go.
1.02: released on 06 June, 2005 with features added: flooding control, smiley selection panel and paging navigation.
1.01: released on 05 June, 2005 with updating of timezone settings. Now it does not matter where you host your website, just set the timezone setting in the shoutbox to exactly where you are in the world it will tell you the right time of those shouts. Stop the mouse over a shout, it will tell you when and where (date, time and ip address) it was posted.

2 Comments

How to write your own GDownloadUrl function

While doing the javascript calendar with ajax, I figured that I would need a wrapper function like GDownloadUrl() as you may see in Google Map API. The point is how to pass your custom function to this GDownloadUrl() to process returned xml data.

The Code

A few Google searches gave me the idea of how to do it. I would say this function will do exactly what GDownloadUrl does. In that regard, I name it CDownloadUrl.

Now have a look at the code, explanation will be followed.

/*
method : POST/GET
url    : Call url
func   : custom function which is used to process returned data,
take only one parameter
*/
function CDownloadUrl(method, url, func) {
tvar httpObj;
tvar browser = navigator.appName;
tif(browser.indexOf("Microsoft") > -1)
tthttpObj = new ActiveXObject("Microsoft.XMLHTTP");
telse httpObj = new XMLHttpRequest();
tthttpObj.open(method, url, true);
thttpObj.onreadystatechange = function() {
ttif(httpObj.readyState == 4){
tttif (httpObj.status == 200) {
ttttvar contenttype = httpObj.getResponseHeader('Content-Type');
ttttif (contenttype.indexOf('xml')>-1) {
tttttfunc(httpObj.responseXML);
tttt} else {
tttttfunc(httpObj.responseText);
tttt}
ttt} else {
ttttfunc('Error: '+httpObj.status);
ttt}
tt}
t};
thttpObj.send(null);
}

The function will take 3 parameters which specify method (GET or POST), url and a function taking return data as its parameter. I will give a example of this custom function later.

From line 8 to 13, it is all about setting up variables and instantate an XML object depending on the kind of browser (Microsoft or Non-Microsoft).

After openning a connection on line 15, a handler is defined for onreadystatechange event up to line 29.

The handler actually runs as all the operations are completed (readyState = 4). The early version of this handler was like this:

httpObj.onreadystatechange = function() {
tif(httpObj.readyState == 4){
ttfunc(httpObj.responseXML);
t}
};

It lacks of some essential error checking. The handler needs to check if the request was successful (status code 200 means OK), otherwise it will return Error: plus status code.

Now it seems okie to retrieve data, you may get them from responseXML or responseText. By checking its ‘Content-Type’ header, it knows what to return. Finally, it just pass the data to your custom function.

The last statement is just send the request away.

Example

Many people would find it hard to understand the code without some examples. The following will demonstrate how to use CDownloadUrl to request some text and display it into a div element. Assuming the getsometext.php script return some raw text.

document.write('<div id="test">Old text</div>');
CDownloadUrl('get', 'getsometext.php', function(text) {
tdocument.getElementById('test').innerHTML = text;
});

It can be rewritten in another way as below which is clearer and easy to understand.

document.write('<div id="test">Old text</div>');
function showText(text) {
tdocument.getElementById('test').innerHTML = text;
}
CDownloadUrl('get', 'getsometext.php', showText);

That’s it. I hope you understand and apply it into your own application. If you have any questions or comments, please feel free to shout it in my shoutbox or the form below.

No Comments

New Calendar and Google map pages

Finally, I have finished a solar/lunar calendar of which I am quite happy. It supports displaying events (single or multiple occurrences) based on solar or lunar calendar system. Lunar events calendar is pretty useful for those who want it to remind them death anniversaries (đám giỗ). This calendar is developed from an original version written by Mr. Ho Ngoc Duc at http://come.to/duc. A very big thank to him for his generosity of making the code free to everyone. As soon as this calendar is stable to use, I will make it available for download to anyone who is interested in.
A Google map module has just also been added to make the site a little bit more interesting. If you find the information in my Google map section offensive or incorrect, please let me know so I can put it in the right context.

No Comments

My Yahoo 360°

Someone would wonder why I need this thing while I have already have my own website here. The reason is that my friends and I are keeping in touch on Yahoo Messenger. Yahoo 360° creates a friends network which you cannot resist to be involved. Have a look at http://360.yahoo.com/coolersport and you might find more of me in there.

No Comments

New online file storage

A new only file storage has been set up after a long time without doing anything for my website. This online file system uses MySQL database as its primary file storage. It can basically store anything in it and supports tree directory. Check it out

No Comments

Online again

Due to hard drive failure, my web site has been inaccessible for the last 24 hours. All data has been transfered to a new hard drive and running ok now. Fortunately, the tech guy realised the problem before the hard drive totally died. Hehe, I don’t need to do any backup at all.
You know what, I had backed up MySQL databases just a few minutes before this thing happened. Wow. However, people cannot access the new COLORCODE replacement tag for phpwcms which I had just introduced in my portfolio section.
Anyway, welcome back everyone!

No Comments

New replacement tag for phpwcms

Have you ever wanted to display some code in your articles? Can you just copy and paste them into the article with plain text format? That is not a good idea at all.
This replacement tag will allow you to insert colourised code snippets into your articles. It should be only used withphpwcms.
Code is colourised by GeSHi at http://qbnz.com/highlighter. View the source file ctag_colorcode.php for more information.
Click here for online demo.
Install instruction:
- Unrar all the files/folders into /phpwcms_template/inc_script/frontend_render
- Copy and paste the css code in codecolorizer/geshi.css into your css file.
- Now you can use the tag [COLOR CODE:][/COLOR CODE] in your article.

No Comments