phpgroupware-cvs
[Top][All Lists]
Advanced

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

[Phpgroupware-cvs] phpgwapi/inc/class.jscalendar.inc.php, 1.7


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

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

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

Log Message:
new HEAD
=====================================================================
<?php
        /**
        * jsCalendar wrapper-class
        *
        * @author Ralf Becker <address@hidden>
        * @copyright Copyright (C) 2003,2004 Free Software Foundation, Inc. 
http://www.fsf.org/
        * @license http://www.fsf.org/licenses/gpl.html GNU General Public 
License
        * @package phpgwapi
        * @subpackage gui
        * @version $Id: class.jscalendar.inc.php,v 1.7 2004/12/30 06:47:30 
skwashd Exp $
        */

        /**
        * jsCalendar wrapper-class
        *
        * @package phpgwapi
        * @subpackage gui
        * @internal The constructor load the necessary javascript-files
        */
class jscalendar
{
        /*!
        @function jscalendar
        @syntax jscalendar( $do_header=True )
        @author ralfbecker
        @abstract constructor of the class
        @param $do_header if true, necessary javascript and css gets loaded, 
only needed for input
        */
        function jscalendar($do_header=True)
        {
                if(!is_object($GLOBALS['phpgw']->js))
                {
                        $GLOBALS['phpgw']->js = 
createObject('phpgwapi.javascript');
                }
                $GLOBALS['phpgw']->js->validate_file('jscalendar', 'calendar');
                $this->phpgw_js_url = 
$GLOBALS['phpgw_info']['server']['webserver_url'].'/phpgwapi/js';
                $this->dateformat = 
$GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'];

                if ($do_header && 
!strstr($GLOBALS['phpgw_info']['flags']['css'],'jscalendar'))
                {
                        $GLOBALS['phpgw_info']['flags']['css'] .= 
"-->\n</style>\n"
                                . '<link rel="stylesheet" type="text/css" 
media="all" href="'
                                . $this->phpgw_js_url
                                . '/jscalendar/calendar-win2k-cold-1.css" 
title="win2k-cold-1" />'
                                . "\n<style type=\"text/css\">\n<!--\n";

                        $GLOBALS['phpgw_info']['flags']['java_script'] .= "\n"
                                . '<script type="text/javascript" src="'
                                . 
$GLOBALS['phpgw']->link('/phpgwapi/js/jscalendar/jscalendar-setup.php')
                                ."\">\n</script>\n";
                }
        }

        /*!
        @function input
        @syntax input( $name,$date,$year=0,$month=0,$day=0 )
        @author ralfbecker
        @abstract creates an inputfield for the jscalendar (returns the 
necessary html and js)
        @param $name name and id of the input-field (it also names the id of 
the img $name.'-toggle')
        @param $date date as string or unix timestamp (in users localtime)
        @param $year,$month,$day if $date is not used
        @param $helpmsg a helpmessage for the statusline of the browser
        @param $options any other options to the inputfield
        */
        function 
input($name,$date,$year=0,$month=0,$day=0,$helpmsg='',$options='')
        {
                //echo "<p>jscalendar::input(name='$name', 
date='$date'='".date('Y-m-d',$date)."', year='$year', month='$month', 
day='$day')</p>\n";

                if ($date && (is_int($date) || is_numeric($date)))
                {
                        $year  = 
intval($GLOBALS['phpgw']->common->show_date($date,'Y'));
                        $month = 
intval($GLOBALS['phpgw']->common->show_date($date,'n'));
                        $day   = 
intval($GLOBALS['phpgw']->common->show_date($date,'d'));
                }
                if ($year && $month && $day)
                {
                        $date = 
date($this->dateformat,mktime(12,0,0,$month,$day,$year));
                }
                if ($helpmsg !== '')
                {
                        $options .= " 
onFocus=\"self.status='".addslashes($helpmsg)."'; return true;\"" .
                                " onBlur=\"self.status=''; return true;\"";
                }
                return
                '<input type="text" id="'.$name.'" name="'.$name.'" size="12" 
value="'.$date.'"'.$options.'/>
                <script type="text/javascript">
                document.writeln(\'<img id="'.$name.'-trigger" 
src="'.$GLOBALS['phpgw']->common->find_image('phpgwapi','cal').'" 
title="'.lang('Select date').'" style="cursor:pointer; cursor:hand;"/>\');
                Calendar.setup(
                        {
                                inputField  : "'.$name.'",
                                button      : "'.$name.'-trigger"
                        }
                );
                </script>
                ';
        }

        /*!
        @function input2date
        @syntax input2date( 
$datestr,$raw='raw',$day='day',$month='month',$year='year' )
        @author ralfbecker
        @abstract converts the date-string back to an array with year, month, 
day and a timestamp
        @param $datestr content of the inputfield generated by 
jscalendar::input()
        @param $raw key of the timestamp-field in the returned array or False 
of no timestamp
        @param $day,$month,$year keys for the array, eg. to set mday instead of 
day
        */
        function 
input2date($datestr,$raw='raw',$day='day',$month='month',$year='year')
        {
                if ($datestr === '')
                {
                        return False;
                }
                $fields = split('[./-]',$datestr);
                foreach(split('[./-]',$this->dateformat) as $n => $field)
                {
                        $date[$field] = intval($fields[$n]);
                        if($field == 'M')
                        {
                                for($i=1; $i <=12; $i++)
                                {
                                        if(date('M',mktime(0,0,0,$i,1,2000)) == 
$fields[$n])
                                        {
                                                $date['m'] = $i;
                                        }
                                }
                        }
                }
                $ret = array(
                        $year  => $date['Y'],
                        $month => $date['m'],
                        $day   => $date['d']
                );
                if ($raw)
                {
                        $ret[$raw] = 
mktime(12,0,0,$date['m'],$date['d'],$date['Y']);
                }
                //echo 
"<p>jscalendar::input2date('$datestr','$raw',$day','$month','$year') = "; 
print_r($ret); echo "</p>\n";

                return $ret;
        }
}




reply via email to

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