Logo Search packages:      
Sourcecode: dacode version File versions  Download package

html.php3

<?php
/**
 * HTML stuff for the printable theme
 *
 * daCode http://www.dacode.org
 * src/phplib/html.php3
 * $Id: html.php3,v 1.37.2.9 2002/11/05 22:58:32 ruffy Exp $
 *
 *    All HTML design will be put here
 *
 *    header($title)    Return the header with $title as title.
 *    footer()          Return footer.
 *    newsbox($title, $news, $icon, $urls, footer)    Return the box.
 *
 * Depends: Config Redirect Utils User
 */
00017 class Htmlprintable extends Html {
      
      /**
       * Session instance
       *@var object Session
       */
      var $session;

      /**
       * Redirect instance
       *@var object Redirect
       */
      var $redirect;

      /**
       * Hits instance
       *@var object Hits
       */
      var $hits;

      /**
       * Fortune instance
       *@var object Fortune
       */
      var $fortune;

      /**
       * Utils instance
       *@var object Utils
       */
      var $utils;

      /**
       * Class constructor
       */
      Function Htmlprintable() {
            global $config;

            $this->utils = LoadClass('Utils',$config);
            $this->session = LoadClass('Session',$config);
            $this->hits = LoadClass('Hits',$config);
            $this->redirect = LoadClass('Redirect',$config);
            $this->fortune = LoadClass('Fortunes',$config);
      }

      
      /**
       * Returns the HTML header 
       *@param string title of the page
       *@param boolean true if there shall be no banner on top of page
       *@return string the HTML for the header (including doctype)
       *@access public
       */
      Function header($title,$nobanner=false) {
            global $config;

            $title = (empty($title)) ? $config->titledefault : $title;
            $tmp = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" '.
                  '"DTD/xhtml1-transitional.dtd">';
            $tmp .= '<!-- This page has been generated at the following time: '.
                  date("d/m/Y H:j:s").' -->'."\n";
            $tmp .= "\n<html>\n<head>\n";
            $tmp .= '<title>'.$title.'</title>'."\n";
            $tmp .= '<link rel="stylesheet" type="text/css" href="'.
                  $this->session->href_theme('printable.css').'" />'."\n";
            if (isset($config->favicon)) {
                  $tmp .= '<link rel="icon" type="image/png" href="'.
                  $this->session->imgurl($config->favicon).'" />'."\n";
            }
            $tmp .= '<meta http-equiv="Content-Type" content="text/html; '.
                  'charset='.$config->encodingcharset.'" />'."\n";
            $tmp .= '</head>'."\n";
            $tmp .= '<body><div align="center">'.$config->titledefault."<br />\n";
            $tmp .= '<a name="top"></a>';
            $tmp .= '<table border="0" width="600"><tr><td>'."\n";
            return $tmp;
      }


      
      /**
       * Returns the footer
       *@param string text to add at the bottom of the page, if $nobanner is false
       *@param boolean if true, do nbot print standard footer
       *@return string the HTML for the footer
       *@access public
       */
      Function footer($text="",$nobanner=false) {
            global $config,$HTTP_SERVER_VARS;
            $tmp = '';
            if (!$nobanner) {
                  $out = '<table width="100%" border="0"><tr>';
                  $out .= '<td class="newstext"><ul>';
                  $out .= '<li>'.lecho("This website runs").
                        ' <a href="http://www.dacode.org/">';
                  $out .= 'daCode</a></li>'."\n";
                  $out .= '<li>'.
                        '<span class="newstext"><b>URL</b>: http://'.
                        $config->HTTP_HOST.$HTTP_SERVER_VARS['SCRIPT_URL'].'</span></li>';
                  $out .= '</ul></td>';
                  $out .= '</tr>';
                  $out .= '</table>';
                  $out .= '</td></tr></tbody></table>'."\n";
                  $out .= $text;
                  $tmp = $this->simplebox($out);
            }
            $tmp .= '</div></body>'."\n</html>\n";
            return $tmp;
      }

      
      /**
       * Return HTML code for side box with $text
       *@param string title of the box
       *@param string content of the box
       *@param string name of the box (for HTML comment, not displayed)
       *@return string the HTML for the box
       *@access public
       */
      Function sidebox($title,$text, $type="") {
            $tmp = '<!-- SIDEBOX '.$type.' -->'.
                  '<table border="0" cellspacing="0" cellpadding="0" width="100%">'.
                  '<tr><td class="blackbox" bgcolor="#000000">'.
                  '<table border="0" cellspacing="1" cellpadding="1" width="100%">'.
                  '<tr><td class="boxheader" bgcolor="grey">'.$title.'</td></tr>'.
                  '<tr><td class="boxtext" bgcolor="#ffffff">'.$text.'</td></tr></table>'.
                  '</td></tr></table><br />'.
                  '<!-- /SIDEBOX '.$type.' -->'."\n";
            return $tmp;
      }

      
      /**
       * Return HTML code for simple box with $text
       *@param string content of the box
       *@return string the HTML for the box
       *@access public
       */
      Function simplebox($text) {
            $tmp = '<!-- SIMPLEBOX -->'."\n";
            $tmp .= '<table border="0" cellspacing="0" cellpadding="1" width="100%" '.
                  'bgcolor="#736199">'."\n<tbody>\n";
            $tmp .= '  <tr><td>'."\n";
            $tmp .= '    <table border="0" cellspacing="0" cellpadding="0" '.
                  'width="100%" bgcolor="#eaeaea">'."\n<tbody>\n";
            $tmp .= '      <tr><td class="newstext">'."\n";
            $tmp .= '        '.$text."\n";
            $tmp .= '      </td></tr>'."\n";
            $tmp .= '    </tbody></table>'."\n";
            $tmp .= '  </td></tr>'."\n";
            $tmp .= '</table><br />'."\n";
            $tmp .= '<!-- /SIMPLEBOX -->'."\n";
            return $tmp;
      }

      
      /**
       * Return HTML code for news box with $row from news table
       *@param array row from news table
       *@param integer if 1, special mode for preview (?!)
       *@return string the HTML for news box
       *@access public
       */
      Function newsbox($row,$preview=0) {
            global $section,$topic;
            global $config;

            // Title is referenced by a <a name>
            if (isset ($row['id'])) {
                  $title = '<a name="n'.$row['id'].'">'.
                        ((empty($row['title'])) ? htmlentities($config->newstitledefault) :
                        htmlentities($row['title'])).'</a>';
            } else {
                  $title = ((empty($row['title']))?htmlentities($config->newstitledefault):
                        htmlentities($row['title']));
            }
            $body=(empty($row['body'])) ? htmlentities($config->newsbodydefault) :
                  (($row['content_type']=="text/plain") ?
                  nl2br(htmlentities($row['body'])) : $row['body']);

            $departement=(empty($row['departement']))
                  ? htmlentities($config->newsdepartementdefault) :
                  htmlentities($row['departement']);
            $row['section'] = (empty($row['section'])) ? "nosection" :
                  htmlentities($row['section']);
            $row['topic'] = (empty($row['topic'])) ? "notopic" :
                  htmlentities($row['topic']);

            // Let's do HTML code
            $tmp = '<!-- NEWSBOX '.(isset($row['id'])?$row['id']:'').' -->'."\n";
            $tmp .= '<br /><span class="newstext" style="text-align:center">'.$title.
                  '</span><br />'.
                  '<table border="0" cellspacing="0" cellpadding="1" width="100%" '.
                  'bgcolor="#736199"><tr><td valign="bottom">'.
                  '<table border="0" bgcolor="#eaeaea" cellspacing="0" '.
                  'cellpadding="3" width="100%"><tr><td class="newsinfo">';

            $tmp .= $this->newsbox_posted_by($row,$preview);

            if (!empty($departement)) {
                  $tmp .= '<br />'."\n".ucfirst(lecho("dept")).': <b>'.$departement.'</b>';
            }
            $tmp .= '<br />'.lecho("Topic").': <b>'.$row['topic'].'</b>';
            $tmp .= "\n      </td>\n     </tr>\n     <tr>\n";
            $tmp .= '<td class="newstext">';
            $tmp .= $body."\n</td>\n";
            $tmp .= "</tr>\n     <tr>\n";
            $tmp .= '<td class="newslink">'."\n";
            $tmp .= $this->newsbox_show_links($row,$preview);
            $tmp .= "</td>\n     </tr>\n     ";

            if (isset ($row['id'])) {
                  $tmp .= "<tr>\n";
                  $tmp .= '<td class="newsinfo" valign="middle">'."\n";

                  $tmp .= '<table width="100%" border="0" cellpadding="0" cellspacing="0">'.
                        '<tr><td class="newsinfo">';

                  ereg("^([0-9]{4})([0-9]{2})([0-9]{2})", $row['timestamp'], $regs);
                  $tmp .= $this->newsbox_count_comments($row,$row['section'],$row['topic'],$regs[1],$regs[2],$regs[3]);
                  $tmp .= '</td><td align="right">'."\n";
                  $tmp .= $this->newsbox_show_attachments($row);
                  $tmp .= '</td></tr></table>'."\n";

                  $tmp .= "\n     </td>\n     </tr>\n    ";
            }
            $tmp .= "</table>\n   </td>\n  </tr>\n</table>\n<br />\n";
            $tmp .= '<!-- /NEWSBOX -->'."\n";
            return $tmp;
      }


      /**
       * Function to print comment top banner
       *@param integer the score threshold
       *@param integer the type of resource
       *@return string the HTML code
       *@access public
       */
      Function commentbanner ($score, $res_type) {
            global $config,$news;
            global $section,$topic;
            global $HTTP_GET_VARS,$news_id, $HTTP_SERVER_VARS;

            $this->comments = LoadCLass('Comments');

            // Get information to get timestamp + news
            $path = ereg_replace('^/'.$config->htmldir, '/',
                  $HTTP_SERVER_VARS['PATH_INFO']);
            if (ereg("^(.*)\\.(html|$config->php)", $path, $res)) {
                  $path = $res[1];
            }
            if (ereg('^([^,]*)(,.+)$', $path, $res)) {
                  $path = $res[1];
            }
            if (ereg("^/([0-9]{4})/([0-9]{2})/([0-9]{2})/([0-9]+)$", $path, $res)) {
                  $year = $res[1];
                  $month= $res[2];
                  $day  = $res[3];
            } else {
                  $ts = $this->utils->gettimestampnews($news_id);
                  $year = $ts[0];
                  $month= $ts[1];
                  $day  = $ts[2];
            }

            if (isset($HTTP_GET_VARS['score'])) {
                  $score = $HTTP_GET_VARS['score'];
            }
            $out = '';
            $out .= '<table width="100%" border="0" cellspacing="1"'.
                        ' cellpadding="2">'."\n";
            $out .= '<tr><td class="commentbox"><a name="banner" href="'.
                  $this->session->newsurls($news_id,'','',$year,$month,$day,$score).
                  '"><font color="#ffffff">'."\n";
            if (is_object($news)) {
                  $out .= $news->show_title($news_id);
            }
            $out .= '</font></a> | ';
            if (!$this->session->checked) {
                  $out .= '<a href="'.$config->basehref.
                        'users/?a=na"><font color="#ffffff">'.lecho("New Account").
                        '</font></a> | ';
                  }
            $out .= '<b>';
            $counttmp = $this->comments->count_comments($news_id, $res_type);
            $out .= $counttmp . '</b> ';
            if ($counttmp <= 1) {
                  $out .= lecho("comment")."\n";
            } else {
                  $out .= lecho("comments")."\n";
            }


            $out .= '</td></tr>'."\n";
            $out .= '<tr><td class="commentboxmiddle">'."\n";
            $out .= '<form method="post" action="'.$config->basehref.
                  $config->commaddfile.'">'."\n";
            $out .= '<input type="hidden" name="news_id" value="'.$news_id.'" />'."\n";
            $out .= '<input type="hidden" name="year" value="'.$year.'" />'."\n";
            $out .= '<input type="hidden" name="month" value="'.$month.'" />'."\n";
            $out .= '<input type="hidden" name="day" value="'.$day.'" />'."\n";
            $out .= '<input type="hidden" name="res_type" value="'.$res_type.'" />'.
                  "\n";

            $out .= '<input type="hidden" name="section" value="';
            $out .= !empty($section) ? $section : "0";
            $out .= '" />'."\n";

            $out .= '<input type="hidden" name="topic" value="';
            $out .= !empty($topic) ? $topic : "0";
            $out .= '" />'."\n";

            $out .= lecho("Hide signatures").
                  ': <input type="checkbox" name="hide_sig"';
            if ($config->hide_sig == "1") {
                  $out .= ' checked="checked"';
            }
            $out .= ' />'."\n";

            $out .= lecho("Score").': <select name="score">'."\n";
            $score_comment = (array) $this->comments->count_comments_array($news_id,
            $res_type);

            if ($config->moderation_type == 1) {
                  for ($i=-1;$i<6;$i++) {
                        $counttmp = $score_comment['n'.$news_id]['s'.$i];
                        $out .= '<option value="'.$i.'"';

                        if ($i == $score || (!isset($score) && $this->session->score == $i)) {
                              $out .= ' selected="selected"';
                        }

                        $out .= '>'.$i.': '.$counttmp.' ';
                        if ($counttmp <= 1) {
                              $out .= lecho("comment")."\n";
                        } else {
                              $out .= lecho("comments")."\n";
                        }
                        $out .= '</option>';
                  }
            } else {

                  $ok_tmp = 0;
                  for ($i=-1;$i<6;$i++) {
                        $counttmp = $score_comment['n'.$news_id]['s'.$i];


                        $out .= '<option value="'.$i.'"';
                        if ($i == $config->oldscore || (!isset($config->oldscore) && $this->session->score == $i)) {
                              $out .= ' selected="selected"';
                        }

                        switch ($i) {
                              case "-1":
                                    $out .= ">".lecho("all");
                                    break;
                              case 0:
                                    $out .= ">0";
                                    break;
                              case 1:
                                    $out .= ">".$config->last_week_score;
                                    break;
                              case 2:
                                    $out .= ">".(2*$config->last_week_score);
                                    break;
                              case 3:
                                    $out .= ">".(3*$config->last_week_score);
                                    break;
                              case 4:
                                    $out .= ">".(4*$config->last_week_score);
                                    break;
                              case 5:
                                    $out .= ">".(5*$config->last_week_score);
                                    break;
                        }

                        $out .= ': '.$counttmp.' ';
                        if ($counttmp <= 1) {
                              $out .= lecho("comment")."\n";
                        } else {
                              $out .= lecho("comments")."\n";
                        }
                        $out .= '</option>';

                  }

            }

            $out .= '</select>';
            $out .= '<input type="submit" name="op"'.
                        ' value="'.lecho("Change").'" />'."\n";
            $out .= '<input type="submit" name="op"'.
                        ' value="'.lecho("Reply").'" />'."\n</form></td></tr>\n";
            $out .= '<tr><td class="commentbox">'."\n";
            $out .= lecho("<b>The fine print</b>: The following comments are owned by whoever posted them.").' ';
            $out .= lecho("We are not responsible for what they say.")."\n";
            $out .= '</td></tr></table><br /><br />'."\n";

            return $out;
      }

      /**
       * The 'posted by' header in a news box
       *@param array a row of news table
       *@param integer if 1, displays Proposed instead of Approved
       *@return string the HTML for the header.
       *@access public
       */
      Function newsbox_posted_by($row,$preview) {
            global $config;

            $name = $row['name'];
            $contact = $row['contact'];

            $out = lecho("Posted by")." ";
            $out .= $name;
            if (isset($contact) && !empty($contact)) {
                  $out .= " - ".$contact;
            }

            if ($preview=='1') {
                  $out .= ". " . lecho("Proposed on") . " " .
                  $this->utils->stamp2date($row['timestamp'],"long",2);
            } else {
                  $out .= ". " . lecho("Approved on") . " " .
                  $this->utils->stamp2date($row['timestamp'],"long");
            }

            return $out;
      }

      /**
       * Creates the html for news links
       *@param array a row of news table
       *@param integer if 1, displays Proposed instead of Approved
       *@return stringthe HTML for the links.
       */

      Function newsbox_show_links($row,$preview) {
            global $config;

            $out = '';
            if ($preview) {
                  $out .= '<ul>'."\n";
                  for ($k=0;$k<$config->numberoflinks;$k++) {
                        if (empty($row['url'.$k])) {
                              break;
                        }
                        $lank = ereg_replace('^[0-9]+:', '', $row['lan'.$k]);
                        $out .= '<li> ['.$lank.'] - ';
                        $out .= '<a href="'.$row['url'.$k].'">'.$row['nom'.$k].'</a></li>';
                  }
                  $out .= '</ul>'."\n";
            } elseif (gettype($row['links']) == "array" && count($row['links']) > 0) {
                  $out .= '<ul>'."\n";
                  reset($row['links']);
                  while($urls = current($row['links'])) {
                        $out .= '<li> ['.$urls['lang'].'] - ';
                        $out .= $this->hits->make($urls) . '</li>';
                        next($row['links']);
                  }
                  $out .= '</ul>'."\n";
            } else {
                  $out .= '&nbsp;';
            }
            return $out;
      }
}
?>

Generated by  Doxygen 1.6.0   Back to index