WikiSmileys
Files
Discussion
WikiSmileys allow graphical smileys to be inserted into documents. Markups such as :-) are converted to graphical images like
. The complete set of defined smileys are:
| Enter markup | to display this smiley |
| :) or :-) or {:) or {:-) | |
| ;) or ;-) or {;) or {;-) | |
| :( or :-( or {:( or {:-( | |
| :p or :-p or {:p or {:-p | |
| :o or :-o or {:o or {:-o | |
| :D or :-D or {:D or {:-D | |
| {cool} | |
| {confused} | |
| {eek} | |
| {angry} | |
| {rolleyes} |
Installation
Unpack the smileys.zipΔ file into your pmwiki directory. The smileys.php file should go in your cookbook/ directory and the smiley images should go into pub/smileys/ (mind the pub/smileys directory attributes are 755 — else the image is not displayed, only the "alt" text). Then add the line
include_once("cookbook/smileys.php");
to your local/config.php file. That should do it for most installations. If you end up with broken images in the output instead of smileys, you may need to set the value of $SmileysFolder to be the URL prefix to where the smileys images are located. (Do this before loading the script with include_once.)
Add smiley buttons to the GUI buttons
You can add the smileys as buttons to the edit window, and have the smiley inserted with a click of the button. Add to config.php:
# smiley gui-edit buttons
$GUIButtons ['spacer7'] = array(700, '', '', '',
'$GUIButtonDirUrlFmt/spacer.gif');
$GUIButtons['happy'] = array(710, ' \{happy\}', '', '',
'$GUIButtonDirUrlFmt/happy.gif"$[Happy]"');
$GUIButtons ['pixspace1'] = array(711, '', '', '',
'$GUIButtonDirUrlFmt/pixspace.gif');
$GUIButtons['wink'] = array(720, ' \{wink\}', '', '',
'$GUIButtonDirUrlFmt/wink.gif"$[Wink]"');
$GUIButtons ['pixspace2'] = array(721, '', '', '',
'$GUIButtonDirUrlFmt/pixspace.gif');
$GUIButtons['cool'] = array(730, ' \{cool\}', '', '',
'$GUIButtonDirUrlFmt/cool.gif"$[Cool]"');
$GUIButtons ['pixspace3'] = array(731, '', '', '',
'$GUIButtonDirUrlFmt/pixspace.gif');
$GUIButtons['confused'] = array(740, ' \{confused\}', '', '',
'$GUIButtonDirUrlFmt/confused.gif"$[Confused]"');
$GUIButtons ['pixspace4'] = array(741, '', '', '',
'$GUIButtonDirUrlFmt/pixspace.gif');
$GUIButtons['eek'] = array(750, ' \{eek\}', '', '',
'$GUIButtonDirUrlFmt/eek.gif"$[Eek]"');
$GUIButtons ['pixspace5'] = array(751, '', '', '',
'$GUIButtonDirUrlFmt/pixspace.gif');
$GUIButtons['rolleyes'] = array(760, ' \{rolleyes\}', '', '',
'$GUIButtonDirUrlFmt/rolleyes.gif"$[Roll eyes]"');
$GUIButtons ['pixspace6'] = array(761, '', '', '',
'$GUIButtonDirUrlFmt/pixspace.gif');
$GUIButtons['sad'] = array(770, ' \{sad\}', '', '',
'$GUIButtonDirUrlFmt/sad.gif"$[Sad]"');
$GUIButtons ['pixspace7'] = array(771, '', '', '',
'$GUIButtonDirUrlFmt/pixspace.gif');
$GUIButtons['mad'] = array(780, ' \{mad\}', '', '',
'$GUIButtonDirUrlFmt/mad.gif"$[Mad]"');
$GUIButtons ['pixspace8'] = array(781, '', '', '',
'$GUIButtonDirUrlFmt/pixspace.gif');
$GUIButtons['biggrin'] = array(790, ' \{biggrin\}', '', '',
'$GUIButtonDirUrlFmt/biggrin.gif"$[Big grin]"');
Copy the smiley images into pub/guiedit/.
Download Attach:pixspace.gifΔ and copy to pub/guiedit/.
This is used as a simple spacer between the smiley guibuttons.
Contributors
Comments, Bugs
How can one set a link to a "smiley"? [[{cool}->Cookbook.WikiSmileys]] does not work and results in {cool}. Any idea to make it run?. Armin
Add this markup to your smiley script, or config:
Markup('smiley_icon2','<links','/\\{(\\w+)\\}/e',
"Keep(\"<img src='".$SmileysFolder."/$1.gif' border='0' alt=' ' title=' ' class='smiley' />\")");
then you can use smileys of type {cool}, {eek}, etc, but not the others. Normal smiley markup is rendered much later than links, so that other markup is not ruined. - HansB October 13, 2009, at 06:42 AM
- Thank you for the quick and competent answer! Armin P.S.: and of course: it works perfect.
- Look at the source and you'll see how to add additional smileys to your markup. There are several sources on the net for images. Klonk
- 06-Dec-2004 I fixed a bug that occured with numbered lists Klonk
- 06-Dec-2004 I switched the script around so that smileys.php goes in the cookbook/ directory instead of local/. Pm
- 18-Feb-2005 Fixed bug. Now valid XHTML code is produced Klonk
- 08-Mar-2005 Few enhancements by CB. With this code, you can insert a smiley specifying its file name. Exemple : {003} will insert
. It doesn't work on this server because this version (smileys-V20050308.php) is not installed. If you want, you can use this markup (:php_List_Smileys:) to list in a page all installed smileys (but beware, it can overload your web server) :
function List_Smileys() {
$dir = "name/of/the/directory"; // or $SmileysFolder if global
$pattern = '/(.*)\.gif/';
$source = "";
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (preg_match($pattern, $file, $matches)) {
$source = $source . sprintf("{%s}", $matches[1]);
}
}
closedir($dh);
return $source;
}
}
}
Markup('php_List_Smileys', 'directives', '/\\(:php_List_Smileys:\\)/e', "List_Smileys()");
|
- 21-April-2005 Bugs correction by CB
- 07-Jul-2005 Changed original version. It now requires one or more space characters before the smiley. This should fix some displaying issues. Klonk
- 11-Oct-2005 Needs minor modification in smileys.php to work with WikiFarms .
Change:$SmileysFolder = "$FarmPubDirUrl/smileys";
To:SDV($FarmPubDirUrl,$PubDirUrl);$SmileysFolder = "$FarmPubDirUrl/smileys";
Then the usual$FarmDinclude path modification withinclude_once("will work. --GToye$FarmD/cookbook/smileys.php"); - 05-Nov-2005: It seems that :) for some reason doesn't work on my page, while :-) does. As as user service on my page, I therefore added the smileys as $GUIButtons['happy'] = array(620, ':-)', '', '', '$GUIButtonDirUrlFmt/happy.gif"$[Happy]"'); in the config.php. Works great and my users seem to like it better than to have to type :-). I have copies of the smileys both in guiedit and smileys dir now, though, but if it ain't broken, don't fix it... Jakob Mark
Bugreports
- 30-Mar-2005 I just found a problem with (:loginform:) because of the bracket at the end. This kind of markup does not function. I just modified the code to "/\s+{?:-?\)/"," but I am still a newbie in PHP. Please check it.
(Holger)
- Even if I set $SmileysFolder to point to local/smilies/ it searches for the smilies in pub/smileys/ (Petra)
You have to set $SmileysFolder before including the script. --Pm
- 1-Apr-2005 I figured out one way of fixing the interaction of smileys and comments, which is to require a "nose", i.e. a - sign, between the eyes and grin of the standard smiley, i.e. :) doesn't work, but :-) does. To do that, replace /\{?:-?\)/ with /\{?:-\)/. - David A. Spitzley
- 20-Apr-2005 I found a random sorting of the Markups, because everything went to the "block" section. If the CB extension is used and the "icon" markup is randomly first, the {angry} smiley wasn't shown, because the icon is "mad.gif". I changed all markup except icon from "block" to "<icon" and this will avoid this behaviour. I didn't check any other problems with this new markup sorting. Henry
- 21-April-2005 Corrected I hope with the new version (20050421) CB
- I found a problem: I pasted the smileys table above to one of my wiki pages as a documentation. It works only in preview mode, not when the page is saved (shows the code). smileys in normal text are displayed correct. (Stephan)
- 25-May-2011 The smileys alone in a table cell do not work for me || :D || , although they do work like this: || test: :D || . Any idea how to make it work in empty cells? (a non-breaking space did not seem to help.) Thanks, Jonne.