27.4. How to display HTML code in a FAQ

Figure 27-3. Administration panel: FAQ.

Administration panel: FAQ.

Using standard tools of a Linux system, like sed and awk, you can automate code generation for some highly repetitive code fragments, like the one in the following example:

Suppose you want to display a table of smilies that are available on your system. Each row should show the smiley and the code needed to insert it in an article. The code that does the job is phpnuke-faq-code-1, for only one smiley, icon_smile.gif:

<table width='100%' border='0' cellspacing='0' cellpadding='3'>
<tr><td>
<a> <img src="./modules/Forums/images/smiles/icon_smile.gif"> </a>
</td><td><b>
&a& &img src="./modules/Forums/images/smiles/icon_smile.gif"& &/a&
</b></td></tr>
</table>

To automate the code generation process for all the smilies you have, do:

cd /usr/local/httpd/htdocs/nuke6/html
ll modules/Forums/images/smiles/* | awk '{print $9}' > smilies

That is, you change to the html directory, list all smilies from the modules/Forums/images/smiles directory and let awk print the 9th field of each line - this is the file name of the smiley. The output is redirected to the smilies file, which will thus contain a list of all smiley filenames.

Create a sed script that produces the HTML code for the smilies and put it in a file named “sedscr” (for sed script):

s/\(^.*$\)/<tr><td><a> <img src="\1"> <\/a>\
<\/td><td><b>\
\&a\& \&img src="\1"\& \&\/a\&\
<\/b><\/td><\/tr>\
/

and run sed on the previously created smilies file, using the above script as the “sed script”. For this, just run the runsed script:

runsed sedscr smilies

(runsed accepts two arguments: the sed script and the file to operate on). This produces the right code for our FAQ. You just have to add

<table width='100%' border='0' cellspacing='0' cellpadding='3'>
<tr><td>

at the beginning and

</table>

at the end.