i have wrote a five star plugin for tiddlywiki. i want to find someone help me to make it much better.
you can find it at: http://sinojelly.blog.51cto.com/attachment/200909/479153_1251819194.rar or at: http://sinojelly.blog.51cto.com/479153/197110 /*** |''Name''|FiveStarPlugin| |''Description''|Five star rating system for tiddlywiki| |''Icon''|<...>| |''Author''|Jelly Chen| |''Contributors''|<...>| |''Version''|0.1.0| |''Date''|Sep 1 2009| |''Status''|stable| |''Source''|http://sinojelly.TiddlySpot.com/#FiveStarPlugin| |''CodeRepository''|<...>| |''Copyright''|Guodong Workshop. 2009-2019. All rights reserved.| |''License''|GPL2| |''CoreVersion''|2.1.0| |''Requires''|<...>| |''Overrides''|<...>| |''Feedback''|[email protected]| |''Documentation''|http://sinojelly.blog.51cto.com/479153/197110| |''Keywords''|FiveStar, vote, rating| !Description Five star rating system for tiddlywiki, the rating info associate with one tiddler are stored in a tiddler named *_filestar_rating, * is tiddler name. The rating info tiddler associate with "FiveStarPlugin" looks like this: tiddler title: FiveStarPlugin_filestar_rating |!rating|16|!votes|4| |!user|!ip|!rating|!time| |Jelly Chen|127.0.0.1|5|Tue Sep 01 2009 22:15:24 GMT+0800| |Jelly Chen|127.0.0.1|4|Tue Sep 01 2009 22:19:07 GMT+0800| |Jelly Chen|127.0.0.1|4|Tue Sep 01 2009 22:21:54 GMT+0800| |Jelly Chen|127.0.0.1|3|Tue Sep 01 2009 22:22:10 GMT+0800| !Notes Only one rating macro in a tiddler and in SinglePageMode. First vote a tiddler, save it, and then flush, you'll find the new auto created tiddler. After voting a tiddler, then display the associated *_fivestar_rating tiddler, you'll find the last voting info in the last line. Thanks to FND for answering my question on Google TiddlyWikiDev Group. !Usage You can add macro invoke in the tiddler as follows. {{{ <<rating>> }}} Also, if you want to add fivestar to every tiddlers, you should modify ViewTemplate as follows: modify: {{{ <div class='viewer' macro='view text wikified'></div> }}} to: {{{ <div class='viewer'><div><span macro='view text wikified'></ div><div><span macro='rating'/></div><br/></div> }}} !!Parameters None !!Examples See the footer of this tiddler. !Configuration Options None !Revision History !!v0.0.1 (2009-08-27) Client OK. * View fivestar ok. * Can be clicked to vote, but not any rating info stored. !!v0.1.0 (2009-09-01) Write rating info tiddler OK. * Rating info store in *_fivestar_rating tiddler. !To Do # Load the rating info while displying a tiddler and display the rating info as "(Rated 4 with 176 votes)". # Using lock to protect a *_fivestar_rating tiddler being broken by more than one user at the same time to vote the same tiddler. # Get the real IP address. # Auto save and upload rating info after voting. # Fix the Bug: when more than one tiddler in place, while mouse over the second fivestar, but the fist fivestar highlight. # Tag the rating info tiddler as shadowed. # Use tag to avoid some tiddler to be voted. # How to get all the tiddlers with the same rating? # Avoid the *_fivestar_rating tiddlers to be voted. # Fix the Bug: Sometimes, the stars still unhighlighted after voting. (if alert a message box such as alert(n), no problem. Message box avoid mouse rollover the stars.) You're welcome to make these ToDo's implemented.I have no more time now. !Code ***/ //{{{ //var set=false; var v=1; // initial value is average??? (Rated 4 with 176 votes) var RatingLevel = new Array("poor", "below average", "average", "above average", "excellent", "       "); function loadStars() { star1 = new Image(); star1.src = "star1.png"; star2 = new Image(); star2.src= "star2.png"; //setStar(v); // something wrong } function highlight(x) { //if (set==false) { y=x*1+1; for (i=1;i<y;i++) { document.getElementById(i).src= star2.src; } document.getElementById('vote').innerHTML=RatingLevel[x - 1]; } } function losehighlight(x) { //if (set==false) { for (i=1;i<6;i++) { document.getElementById(i).src=star1.src; document.getElementById('vote').innerHTML=RatingLevel[5];//"" } } } function setStar(n) { y = n * 1 + 1; for (i=1;i<y;i++) { document.getElementById(i).src= star2.src; } } function saveStar(n, tiddlerTitle) { v = n; // should be new average ? setStar(v); //set=true; document.getElementById('vote').innerHTML="Thank you for your vote!"; title = tiddlerTitle+"_fivestar_rating"; var tiddler = store.createTiddler(title); if (tiddler.text == "") { tiddler.text = "|!rating|0|!votes|0|\n"; tiddler.text += "|!user|!ip|!rating|!time|\n"; } ratinginfo=tiddler.text.substr(0,40); // should be less than 40 ratingnums = ratinginfo.split("|"); // split to array ratingnums.shift(); //first "" ratingnums.shift(); //second "!rating" ratingnum1 = ratingnums.shift(); ratingnums.shift(); //fourth "!votes" ratingnum2 = ratingnums.shift(); regexhead= "|!rating|"+ratingnum1 +"|!votes|"+ratingnum2+"|"; ratingnum1 = Number(ratingnum1) + Number(n); ratingnum2 = Number(ratingnum2) + 1; tiddler.text = tiddler.text.replace(regexhead, "|! rating|"+ratingnum1 + "|!votes|"+ratingnum2+"|"); var now = new Date(); tiddler.text += "|"+config.options.txtUserName +"|"+getHostIp() +"|"+n+"|"+now+"|\n"; alert(n); } function getHostIp() { if((navigator.appName == "Microsoft Internet Explorer") && ((navigator.appVersion.indexOf('3.') != -1) || (navigator.appVersion.indexOf('4.') != -1))) { //document.write("Not with MS IE 3.0/4.0"); return "Not with MS IE 3.0/4.0"; } else { window.onerror=null; yourAddress=java.net.InetAddress.getLocalHost(); yourAddress2=java.net.InetAddress.getLocalHost(); yhost=yourAddress.getHostName(); yip=yourAddress.getHostAddress(); //document.write("Host Nameļ¼"+yhost); //document.write("<br>IP:"+yip); return yip; } } config.macros.rating = { handler: function(place, macroName, params, wikifier, paramString, tiddler) { loadStars(); wikify('<html><img src="star1.png" onmouseover="highlight (this.id)" onclick="setStar(this.id)" onmouseout="losehighlight (this.id)" onmouseup="saveStar(id,title)" id="1" title='+tiddler.title +' style="width:30px; height:30px; float:left;" /><img src="star1.png" onmouseover="highlight(this.id)" onclick="setStar(this.id)" onmouseout="losehighlight(this.id)" onmouseup="saveStar(id,title)" id="2" title='+tiddler.title+' style="width:30px; height:30px; float:left;" /><img src="star1.png" onmouseover="highlight(this.id)" onclick="setStar(this.id)" onmouseout="losehighlight(this.id)" onmouseup="saveStar(id,title)" id="3" title='+tiddler.title+' style="width:30px; height:30px; float:left;" /><img src="star1.png" onmouseover="highlight(this.id)" onclick="setStar(this.id)" onmouseout="losehighlight(this.id)" onmouseup="saveStar(id,title)" id="4" title='+tiddler.title+' style="width:30px; height:30px; float:left;" /><img src="star1.png" onmouseover="highlight(this.id)" onclick="setStar(this.id)" onmouseout="losehighlight(this.id)" onmouseup="saveStar(id,title)" id="5" title='+tiddler.title+' style="width:30px; height:30px; float:left;" /><div id="vote">       </div></html>', place); } }; //}}} --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TiddlyWikiDev" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/tiddlywikidev?hl=en -~----------~----~----~----~------~----~------~--~---
