phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] phpgwapi/inc/class.matrixview.inc.php, 1.13


From: nomail
Subject: [Phpgroupware-cvs] phpgwapi/inc/class.matrixview.inc.php, 1.13
Date: Thu, 30 Dec 2004 07:47:30 +0100

Update of /phpgwapi/inc
Added Files:
        Branch: 
          class.matrixview.inc.php

date: 2004/12/30 06:47:30;  author: skwashd;  state: Exp;  lines: +23 -32

Log Message:
new HEAD
=====================================================================
<?php
        /**
        * Matrix View Generator - creating matrix like timeframes for items
        * @author Marc Logemann <address@hidden>
        * @copyright Copyright (C) 2000,2001 Marc Logemann
        * @copyright Portions Copyright (C) 2004 Free Software Foundation, Inc. 
http://www.fsf.org/
        * @license http://www.fsf.org/licenses/lgpl.html GNU Lesser General 
Public License
        * @package phpgwapi
        * @subpackage gui
        * @version $Id: class.matrixview.inc.php,v 1.13 2004/12/30 06:47:30 
skwashd Exp $
        */

        /**
        * Matrix View Generator - creating matrix like timeframes for items
        * 
        * This matrix is having the days of actual month in the x-axis and the 
items, 
        * which could be projects, in the y-axis. You will see a top-down view 
of all 
        * items and their associated timeframes. You probably saw this in 
projectmanagement apps
        * @package phpgwapi
        * @subpackage gui
        */
        class matrixview
        {
                var $sumdays = 0;
                var $month = 0;
                var $monthname = '';
                var $year = 0;
                var $day = 0;

                var $items_content = array();
                var $items_count = 0;
        
                var $arr_second_dim = 0;
                var $image1pix = 'images/pix.gif';
        
                var $color_headerfield = '#FFFF33';
                var $color_emptyfield = '#CCCCCC';

                var $selection = 1;

                /**
                *
                * construtor: graphview class
                *
                * constructor waits for the desired month in 
                * integer presentation and the desired year also
                * in integer presentation 4 digits (ex. 2001)
                *
                * @param        int     month (for example: 02)
                * @param  int   year (for example: 2001)
                *
                */
                function matrixview ($month_int = 0, $year_int = 0)
                {
                        for($i;$i<32;$i++)
                        {
                                if(checkdate($month_int,$i,$year_int)) $days++;
                        }

                        $this->month = $month_int;
                        $this->year = $year_int;
                        
$this->set1PixelGif($GLOBALS['phpgw']->common->get_image_path('todo').'/pix.gif');
                }

                /**
                *
                * set a Period for a specified item
                *
                * setting a period for an element means to define
                * a fromDate and and a toDate together with the
                * item itself. This will store a timeframe associated
                * with an item for later usage
                *
                * @param        string  item for the timeframe
                * @param  date  fromdate in format yyyymmdd
                * @param  date          todate in format yyyymmdd
                *
                * @return boolean       false if item cannot be saved
                *                               otherwise true
                */
                function setPeriod ($item, $fromdate, $todate, $color='#990033')
                {
                        $fyear = substr($fromdate,0,4);
                        $fmonth = substr($fromdate,4,2);
                        $fday = substr($fromdate,6,2);

                        $tyear = substr($todate,0,4);
                        $tmonth = substr($todate,4,2);
                        $tday = substr($todate,6,2);

                        if(mktime(0,0,0, $tmonth, $tday, $tyear) < 
mktime(0,0,0, $this->month+1,0,$this->year))
                        {
                                $this->day = $tday;
                        }
                        else 
                        {
                                $dinfo = getdate(mktime(0,0,0, 
$this->month+1,0,$this->year));
                                $this->day = $dinfo[mday];
                        }

                        $go = 1;
                        $i = 0;
                        $z = 0;

                        while($go == 1)
                        {
                                // calculates fromdate
                                // echo date("d/m/Y", mktime(0,0,0, $fmonth, 
$fday+$i, $fyear)); echo "<br>";

                                $datinfo = getdate(mktime(0,0,0, $fmonth, 
$fday+$i, $fyear));
                        
                                if($datinfo['mon'] == $this->month
                                        && $datinfo['year'] == $this->year
                                        && $datinfo['mday'] <= $this->day)
                                {
                                        $t = $datinfo['mday'];
                                        
$this->items_content[$this->items_count][$t] = 'x';
                                }
                                
                                if (mktime(0,0,0, $fmonth, $fday+$i, $fyear) >= 
mktime(0,0,0, $this->month+1, 0, $this->year) ||
                                        mktime(0,0,0, $fmonth, $fday+$i, 
$fyear) >= mktime(0,0,0, $tmonth, $tday, $tyear))
                                {
                                        $go = 0;
                                }
                                $i++;
                        }
                
                        $this->items_content[$this->items_count][0] = $item;
                        $this->items_color[$this->items_count]      = $color;

                        // increase number of items in two-dimensional array
                        $this->items_count++;
                }

                /**
                *
                * sets the color for empty dayfields
                *
                * @param        string  color in hexadecimal (ex. "#336699")
                */
                function setEmptyFieldColor ($color)
                {
                        $this->color_emptyfield=$color;
                }

                /**
                *
                * sets the color for calendar day fields
                *
                * @param        string  color in hexadecimal (ex. "#336699")
                */
                function setHeaderFieldColor ($color)
                {
                        $this->color_headerfield=$color;
                }

                /**
                *
                * sets a new path for 1pixel (pix.gif) gif needed for the table
                * default is set actual script dir + /images
                *
                * @param        string  path and name to 1pixel gif
                */
                function set1PixelGif ($filepath)
                {
                        $this->image1pix=$filepath;
                }

                /**
                *
                * disable selection of new timeframe
                *
                */
                function disableSelection ()
                {
                        $this->selection=0;
                }

                /**
                *
                * return the html code for the matrix
                *
                * will return the complete html code for the matrix.
                * In the calling program you can do some other
                * operations on it, because it wont be echoed directly
                *
                * @return string        html code for the matrix
                */
                function out($form_link)
                {
                        // get days of desired month (month submitted in 
constructor)

                        $in = getdate(mktime(0,0,0, 
$this->month+1,0,$this->year));
                        $this->sumdays = $in[mday];
                        $this->monthname = $in[month];

                        $this->out_monthyear($form_link);

                        echo '<div align="center">' . "\n";
                        echo '<table border="0">' . "\n";

                        $this->out_header();

                        // loop through number of items
                        for($z=0;$z<$this->items_count;$z++)
                        {
                                // seperate color and name from first array 
element

                                $itemname  = $this->items_content[$z][0];
                                $itemcolor = $this->items_color[$z];

                                echo '<tr>' . "\n";
                                echo '<td>' . $itemname . '</td>' . "\n";

                                // loop through days of desired month
                                for($r=1;$r<$this->sumdays+1;$r++)
                                {
                                        if($this->items_content[$z][$r] == 'x')
                                        {
                                                $color = $itemcolor;
                                        }
                                        else
                                        {
                                                $color = 
$this->color_emptyfield;
                                        }
                                        echo '<td bgcolor="' . $color . 
'">&nbsp;</td>' . "\n";
                                }

                                echo '</tr>' . "\n";
                                $this->out_ruler();
                        }

                        echo '</table>';
                        echo '</div>' . "\n";
                }

                /**
                *
                * private class for out method
                *
                * should not be used from external
                *
                */
                function out_header ()
                {
                        echo '<tr>' . "\n";
                        echo '<td height="1" colspan="'; echo $this->sumdays+1; 
echo '" bgcolor="black"><img src="' . $this->image1pix . '"></td>' . "\n";
                        echo '</tr>' . "\n";
                        echo '<tr>' . "\n";
                        echo '<td>' . lang('Title') . '</td>' . "\n";

                        for($i=1;$i<$this->sumdays+1;$i++)
                        {
                                echo '<td bgcolor="'; echo 
$this->color_headerfield; echo '">' . sprintf("%02d",$i) . '</td>' . "\n";
                        }

                        echo '</tr>' . "\n";
                        echo '<tr>' . "\n";
                        echo '<td height="1" colspan="'; echo $this->sumdays+1; 
echo '" bgcolor="black"><img src="' . $this->image1pix . '"></td>' . "\n";
                        echo '</tr>' . "\n";
                }

                /**
                *
                * private class for out method
                *
                * should not be used from external
                *
                */
                function out_ruler ()
                {
                        echo '<tr>' . "\n";
                        echo '<td colspan="'; echo $this->sumdays+1; echo '" 
bgcolor="#999999"><img src="' . $this->image1pix .'"></td>' . "\n";
                        echo '</tr>' . "\n";
                }

                /**
                *
                * private class for out method
                *
                * should not be used from external
                *
                */
                function out_monthyear($form_link)
                {
                        echo '<form action="' . $form_link . '" method="post">' 
. "\n";
                        echo '<table border="0" width="100%" cellpadding="0" 
cellspacing="0">' . "\n";
                        echo '<tr>' . "\n";
                        echo '<td align="center"><h2>'; echo 
lang($this->monthname); echo ' '; echo $this->year; echo '</h2></td>' . "\n";

                        if($this->selection == 1)
                        {
                                echo '<td align="right">' . "\n";
                                echo '<select name="month"'; 

                                for($i=0;$i<13;$i++)
                                {
                                        if ($this->month == $i)
                                        {
                                                $sel = ' selected';
                                        }
                                        else
                                        {
                                                unset($sel);
                                        }
                                        echo '<option value="' . $i . '"' . 
$sel . '>' . $i . '</option>';
                                }

                                echo '</select>' . "\n";
                                echo '<select name="year"';

                                for($i = date('Y') -2;$i<date('Y')+5;$i++)
                                {
                                        if($this->year == $i)
                                        {
                                                $sel = ' selected';
                                        }
                                        else
                                        {
                                                unset($sel);
                                        }
                                        echo '<option value="' . $i . '"' . 
$sel . '>' . $i .'</option>'; 
                                }

                                echo '</select>' . "\n";
                                echo '&nbsp;&nbsp;<input type="submit" 
name="selection" value="' . lang('Filter') . '">&nbsp;&nbsp;';
                                echo '</td>' . "\n";
                        }

                        echo '</tr>' . "\n";
                        echo '</table>' . "\n";
                        echo '</form>' . "\n";
                }
        }
?>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]