, London, UK * Copyright (c) 2003-2006 Platon Group, http://platon.sk/ * All rights reserved. * * See README file for more information about this software. * See COPYING file for license information. * * Download the latest version from * http://platon.sk/projects/phpMyEdit/ */ /* $Platon: phpMyEdit/extensions/phpMyEdit-calpopup.class.php,v 1.10 2007-09-02 22:37:11 nepto Exp $ */ /* WARNING ------- This extension is OBSOLETE. Use integrated phpMyEdit-mce-cal extension instead. OVERVIEW -------- NOTE...This extension will not work with the CVS version of PME calPopup extends the standard phpMyEdit class to allow a calendar popup helper to be put on any text field. This extension uses the free jsCalendar code from http://dynarch.com/mishoo/calendar.epl website. REQUIREMENTS ------------ The requirement is a properly installed jsCalendar script. All browsers supported by jsCalendar are supported by this extension. USAGE ----- This extension enables the display of a popup calendar selection against selected fields. In order to use it, you should: 1. Load the jsCalendar scripts in the ... section of your phpMyEdit calling program, substituting the correct paths: 2. Choose your preferred jsCalendar CSS file (see jsCalendar documentation) and add the following in the ... section of your phpMyEdit calling program, substituting the correct path: NOTE: To avoid an unwanted side effect in the CSS style produced by phpMyEditSetup.php, add a 'width:auto' property into the '.calendar table' entry in your selected jsCalendar style sheet. 3. Call to phpMyEdit-calPopup.class.php instead of phpMyEdit.class.php. Example: require_once 'extensions/phpMyEdit-calpopup.class.php'; new phpMyEdit_calpopup($opts); 4. Add 'calendar' parameter to the field definitions where you want a calendar popup in your phpMyEdit calling program. Example: $opts['fdd']['col_name'] = array( 'name' => 'Column', 'select' => 'T', 'options' => 'ACPVD', 'required' => true, 'calendar' => true ); This is will display a button next to the field which pops up a calendar when clicked. If that field has a 'strftimemask' parameter set, it will use this for the date format. For more advanced usage, you can set the 'calendar' parameter to an array of valid jsCalendar Calendar.setup options (see jSCalendar document for details). Note that not all of these options make sense to use in phpMyEdit, and some of them will actively break the function. Example: $opts['fdd']['col_name'] = array( 'name' => 'Column', 'select' => 'T', 'options' => 'ACPVD', 'required' => true, 'calendar' => array( 'ifFormat' => '%Y/%m/%d', // defaults to the ['strftimemask'] 'firstDay' => 1, // 0 = Sunday, 1 = Monday 'singleClick' => true, // single or double click to close 'weekNumbers' => true, // Show week numbers 'showsTime' => false, // Show time as well as date 'timeFormat' => '24', // 12 or 24 hour clock 'label' => '...', // button label (used by phpMyEdit) 'date' => '2003-12-19 10:00' // Initial date/time for popup // (see notes below) ) ); NOTES ----- 1. The popup will normally set the initial value to the current field value or to current date/time. 'date' option will always override this, even if there is a current date/time value in the field. If you want a default value only if the field is currently empty, use the phpMyEdit 'default' option. 2. Only the options listed above may be set by the user, any other options will be ignored. SEARCH KEYWORD -------------- Search for "CalPopup" string in this source code, to find all extension related modifications. */ require_once dirname(__FILE__).'/../phpMyEdit.class.php'; class phpMyEdit_calpopup extends phpMyEdit { /* CalPopup mod start */ /* Array for collecting list of fields with calendar popups */ var $calendars; /* Array of valid options for passing to Calendar.setup */ var $valid_opts = array( 'button','ifFormat','singleClick','firstDay', 'weekNumbers','showsTime','timeFormat','date' ); /** * Checks to see if the calendar parameter is set on the field * * @param k current field name * @param curval current value of field (set to null for default) * * If the calendar parameter is set on the field, this function displays * the button. It then pushes the Calendar.setup parameters into an array, * including the user specified ones in the calling program is they exist. * This array is then added to the $calendars array indexed by the field * name. This allows for multiple fields with calendar popups. */ function CalPopup_helper($k, $curval) /* {{{ */ { if (@$this->fdd[$k]['calendar']) { $cal_ar['ifFormat'] = '%Y-%m-%d %H:%M'; $cal_ar['showsTime'] = true; $cal_ar['singleClick'] = false; if (isset($curval)) { if (substr($curval, 0, 4) != '0000') $cal_ar['date'] = $curval; } if (isset($this->fdd[$k]['strftimemask'])) { $cal_ar['ifFormat'] = $this->fdd[$k]['strftimemask']; } if (is_array($this->fdd[$k]['calendar'])) { foreach($this->fdd[$k]['calendar'] as $ck => $cv) { $cal_ar[$ck] = $cv; } } $cal_ar['button'] = 'pme_calpopup_button_'.$this->fds[$k]; $this->calendars[$this->fds[$k]] = $cal_ar; $label = @$this->fdd[$k]['calendar']['label']; strlen($label) || $label = '...'; echo ''; } } /* }}} */ /* CalPopup mod end */ function display_add_record() /* {{{ */ { for ($tab = 0, $k = 0; $k < $this->num_fds; $k++) { if (isset($this->fdd[$k]['tab']) && $this->tabs_enabled() && $k > 0) { $tab++; echo '',"\n"; echo '',"\n"; echo '
',"\n"; echo '',"\n"; } if (! $this->displayed[$k]) { continue; } if ($this->hidden($k)) { echo $this->htmlHidden($this->fds[$k], $row["qf$k"]); continue; } $css_postfix = @$this->fdd[$k]['css']['postfix']; $css_class_name = $this->getCSSclass('input', null, 'next', $css_postfix); echo '',"\n"; echo '',"\n"; echo '',"\n"; if ($this->guidance) { $css_class_name = $this->getCSSclass('help', null, true, $css_postfix); $cell_value = $this->fdd[$k]['help'] ? $this->fdd[$k]['help'] : ' '; echo '',"\n"; } echo '',"\n"; } } /* }}} */ function display_change_field($row, $k) /* {{{ */ { $css_postfix = @$this->fdd[$k]['css']['postfix']; $css_class_name = $this->getCSSclass('input', null, true, $css_postfix); echo '',"\n"; } /* }}} */ function form_end() /* {{{ */ { if ($this->display['form']) { echo '',"\n"; /* CalPopup mod start */ /* Add script calls to the end of the form for all fields with calendar popups. */ if (isset($this->calendars)) { echo '',"\n"; }; /* CalPopup mod end */ }; } /* }}} */ } ?>
',$this->fdd[$k]['name'],'getColAttributes($k),">\n"; if ($this->col_has_values($k)) { $vals = $this->set_values($k); $selected = @$this->fdd[$k]['default']; $multiple = $this->col_has_multiple_select($k); $readonly = $this->readonly($k); $strip_tags = true; $escape = true; echo $this->htmlSelect($this->fds[$k], $css_class_name, $vals, $selected, $multiple, $readonly, $strip_tags, $escape); } elseif (isset ($this->fdd[$k]['textarea'])) { echo '',"\n"; } else { // Simple edit box required $size_ml_props = ''; $maxlen = intval($this->fdd[$k]['maxlen']); $size = isset($this->fdd[$k]['size']) ? $this->fdd[$k]['size'] : min($maxlen, 60); $size && $size_ml_props .= ' size="'.$size.'"'; $maxlen && $size_ml_props .= ' maxlength="'.$maxlen.'"'; /* CalPopup mod start */ if (@$this->fdd[$k]['calendar']) { $size_ml_props .= ' id="pme_calpopup_input_'.$this->fds[$k].'"'; } /* CalPopup mod end */ echo 'readonly($k) ? 'disabled ' : ''),' name="',$this->fds[$k],'"'; echo $size_ml_props,' value="'; echo htmlspecialchars($this->fdd[$k]['default']),'">'; /* CalPopup mod start */ /* Call CalPopup helper function */ $this->CalPopup_helper($k, null); /* CalPopup mod end */ } echo '',$cell_value,'
getColAttributes($k),">\n"; if ($this->col_has_values($k)) { $vals = $this->set_values($k); $multiple = $this->col_has_multiple_select($k); $readonly = $this->readonly($k); $strip_tags = true; $escape = true; echo $this->htmlSelect($this->fds[$k], $css_class_name, $vals, $row["qf$k"], $multiple, $readonly, $strip_tags, $escape); } elseif (isset($this->fdd[$k]['textarea'])) { echo '',"\n"; } else { $size_ml_props = ''; $maxlen = intval($this->fdd[$k]['maxlen']); $size = isset($this->fdd[$k]['size']) ? $this->fdd[$k]['size'] : min($maxlen, 60); $size && $size_ml_props .= ' size="'.$size.'"'; $maxlen && $size_ml_props .= ' maxlength="'.$maxlen.'"'; /* CalPopup mod start */ if (@$this->fdd[$k]['calendar']) { $size_ml_props .= ' id="pme_calpopup_input_'.$this->fds[$k].'"'; } /* CalPopup mod end */ echo 'readonly($k) ? 'disabled ' : ''),'name="',$this->fds[$k],'" value="'; echo htmlspecialchars($row["qf$k"]),'" ',$size_ml_props,'>',"\n"; /* CalPopup mod start */ /* Call CalPopup helper function */ $this->CalPopup_helper($k, htmlspecialchars($row["qf$k"])); /* CalPopup mod end */ } echo '