I had the same problem after upgrading to ModX Evo v1.0.15 and even tried reinstalling with mxCalendar v0.1.3plb. No success.
To fix the issue, I edited mxCalendar.class.php on lines 1245, 2070 and 2078 changing '`repeat`' to 'repeat'. Code is below:
<?php
if(!class_exists("mxCal_APP_CLASS")){
class mxCal_APP_CLASS {
var $version = '0.1.3b';
var $user_id;
var $params = array();
var $config = array();
var $default_limit;
var $output;
var $tables;
var $tooltip;
//-- Messages
var $message;
var $config_message;
var $debug = false;
var $userWebUserGroups = array();
function __construct() {
//-- Form tooltips
$this->tooltip = array(
'title'=>_mxCalendar_gl_tt_title,
'link'=>_mxCalendar_gl_tt_link,
'location' => _mxCalendar_gl_tt_location,
'event_occurance_rep' => _mxCalendar_gl_tt_repeatCount
);
//--Store short list of full table names
$this->tables=array(
'events'=>'mxcalendar_events',
'pastevents'=>'mxcalendar_pastevents',
'categories'=>'mxcalendar_categories',
'config'=>'mxcalendar_config'
);
$this->params = $_REQUEST;
$this->_buildConfig();
$this->default_limit = 100;
$this->name = __CLASS__;
}
// Get an array of tables
function get_tables($like='') {
global $modx;
$tables = array();
$db = $modx->db->config['dbase'];
$pre = $modx->db->config['table_prefix'];
if($like) { $like = "LIKE '{$like}'"; }
$tables_sql = "SHOW TABLES FROM {$db} {$like};";
$result = $modx->db->query($tables_sql);
while($row = $modx->db->getRow($result)) {
$tables[] = current($row);
}
return $tables;
}
// Get an array of columns
function get_columns($table='') {
global $modx;
$columns = array();
$db = $modx->db->config['dbase'];
$pre = $modx->db->config['table_prefix'];
$col_sql = "SHOW COLUMNS FROM ".$modx->getFullTableName($table).";";
$result = $modx->db->query($col_sql);
while($row = $modx->db->getRow($result, 'assoc')) {
$columns[] = array($row['Field'],$row['Type'],$row['Extra']);
}
return $columns;
}
//-- Upgrade Installation
function _upgrade_mxCalendar(){
global $modx;
if(file_exists($modx->config['base_path'].'assets/modules/mxCalendar/includes/install/'.$this->version.'.upgrade.mysql')){
$pre = $modx->db->config['table_prefix'];
$sql_installer = trim(str_replace('#__', $pre,file_get_contents($modx->config['base_path'].'assets/modules/mxCalendar/includes/install/'.$this->version.'.upgrade.mysql')));
if($sql_installer){
$cnt = 0;
foreach(explode('##',$sql_installer) AS $sql){
if(!empty($sql)){
$cnt ++;
//echo '('.$cnt.')<pre><code>'.$sql.'</pre></code>';
$result = $modx->db->query($sql);
}
}
$this->output .= '<div class="fm_message"><h2>'.$this->version.' Update completed</h2><form method="post" action=""><input type="submit" name="submit" value="Continue" /></form></div>';
//Install Completed
$modx->logEvent(0, 3, '<p><strong>Upgrade to mxCalendar '.$this->version.' via install file ('.$modx->config['base_path'].'assets/modules/mxCalendar/includes/install/'.$this->version.'.upgrade.mysql)</strong></p>');
$fh = fopen( $modx->config['base_path'].'assets/modules/mxCalendar/config/config.xml', 'w+') or die("Unable to save configuration file. Please make sure write permission is granted on the folder (".$modx->config['base_path']."assets/modules/mxCalendar/config/)");
$stringData = '<?xml version="1.0" encoding="UTF-8"?>'."\n".'<mxCalendar>'."\n".'<setup>Yes</setup>'."\n".'<date>'.DATE('l jS \of F Y h:i:s A').'</date><version>'.$this->version.'</version>'."\n".'</mxCalendar>';
fwrite($fh, $stringData);
fclose($fh);
} else {
$modx->logEvent(0, 3, '<p><strong>Unable to upgrade mxCalendar tables via install file ('.$modx->config['base_path'].'assets/modules/mxCalendar/includes/install/'.$this->version.'.upgrade.mysql)</strong></p>');
$this->output .= '<div class="fm_error">Unable to complete the upgrade, please check the system log.</div>';
}
return $this->output;
}else{
return '<strong>Error: </strong>Upgrade is not supported for this version, please back up your database and remove your "_mxCalendar" tables and "/assets/mxCalendar/config/config.xml" file and try again.<br /><br />Your Current Version is: '.$this->_getConfigVersion();
}
}
//-- Installation
function _install_mxCalendar(){
global $modx;
$db_setup = 0;
$user = $modx->db->config['user'];
$db = $modx->db->config['dbase'];
$pre = $modx->db->config['table_prefix'];
$tables = $this->get_tables("{$pre}mxcalendar%");
$installer = 'mxCalendar.mysql.install.inc';
if(!count($tables)){
$sql_installer = str_replace('#__', $pre,file_get_contents($modx->config['base_path'].'assets/modules/mxCalendar/includes/install/'.$installer));
if($sql_installer){
foreach(explode('##',$sql_installer) AS $sql){
if($sql){
$result = $modx->db->query($sql);
//$this->output .= $sql;
if($result){
$theTable = preg_match('/CREATE TABLE IF NOT EXISTS `(.*)`/', $sql, $matches);
if(!empty($matches[1]))
$this->output .= '<h2>'.$matches[1].' table created successfully</h2>';
$db_setup++;
}
}
}
} else {
$modx->logEvent(0, 3, '<p><strong>Unable to locate mxCalendar sql install file ('.$modx->config['base_path'].'assets/modules/mxCalendar/includes/install/'.$installer.')</strong></p>');
$this->output .= 'Unable to load the installer file. ('.$modx->config['base_path'].'assets/modules/mxCalendar/includes/install/'.$installer.')';
}
}
if($db_setup) { $tables = $this->get_tables("{$pre}mxcalendar%"); }
if(count($tables) != 4){
//Error Maker
$modx->logEvent(0, 3, "<p><strong>"._mxCalendar_gl_installFailTable."</strong></p><p>Missing tables. Give CREATE TABLE rights to user {$user} or run the following SQL as a user with CREATE TABLE permissions</p>", $source='Module: mxCalendar');
$this->output.=_mxCalendar_gl_installFail."<br />\n";
} else {
//Install Completed
$fh = fopen( $modx->config['base_path'].'assets/modules/mxCalendar/config/config.xml', 'w') or die("Unable to save configuration file. Please make sure write permission is granted on the folder (".$modx->config['base_path']."assets/modules/mxCalendar/config/)");
$stringData = '<?xml version="1.0" encoding="UTF-8"?>'."\n".'<mxCalendar>'."\n".'<setup>Yes</setup>'."\n".'<date>'.DATE('l jS \of F Y h:i:s A').'</date><version>'.CAL_VERSION.'</version>'."\n".'</mxCalendar>';
fwrite($fh, $stringData);
fclose($fh);
$this->output.= '<strong><font color="green">'._mxCalendar_gl_installSucceess."</font></strong><br /><form method='POST' action=''><input type='submit' value='Start now ...' /></form>\n";
}
return $this->output;
}
//-- Build config params
function _buildConfig(){
global $modx;
$tables = $this->get_tables($modx->db->config['table_prefix']."mxcalendar%");
if(!empty($tables)){
$results = $modx->db->query('SELECT * FROM '.$modx->db->config['table_prefix'].$this->tables['config']);
while($row = $modx->db->getRow($results, 'assoc')) {
$this->config[$row['param']]=$row['value'];
}
}
}
//***********************//
//**** Manager Views ****//
//***********************//
function ListEvents($params = false){
global $modx;
//-- Perform delete prior to new listing @postback
if(isset($_POST['fmeid']) & $_POST['fmaction'] == 'delete') {
$modx->db->delete($modx->getFullTableName($this->tables['events']), 'id='.$_POST['fmeid']);
$this->output .= '<h3 style="color:#ff0000;">Removed event.</h3>';
}
//-- setup filters [fmfiltermatch fmfiltertime]
$filter = array();
$filter_or=array();
switch($_REQUEST['fmfiltertime']){
case "0":
default:
//-- none (all events) as this is the default config
$filter_or[] = ' E.startdate >= \''.date("Y-m-d").'\' ';
$filter_or[] = ' E.`lastrepeat` >= \''.date("Y-m-d").'\'';
$filter_or[] = ' E.enddate > \''.date("Y-m-d").'\'';
break;
case "1":
//--
$filter[] = ' E.startdate <= \''.date("Y-m-d").'\' ';
$filter[] = ' E.`lastrepeat` <= \''.date("Y-m-d").'\'';
$filter[] = ' E.enddate < \''.date("Y-m-d").'\'';
break;
case "all":
//-- all events
$filter[] = ' E.active=1';
break;
}
$fmCat = $_REQUEST['CategoryId'];
switch($fmCat){
default:
//-- Add any category filtering
if(!empty($fmCat))
$filter[] = ' E.category = '.(int)$fmCat;
break;
}
if(!empty($_REQUEST['fmfiltermatch']))
$filter[] = ' title REGEXP \''.$modx->db->escape($_REQUEST['fmfiltermatch']).'\' OR description REGEXP \''.$modx->db->escape($_REQUEST['fmfiltermatch']).'\'';
$result = $this->_getEventsPagination($_REQUEST['fmeventlistpagelimit'],(isset($_REQUEST['pg']) ? $_REQUEST['pg'] : 0 ), $filter, $filter_or);
$pagination = $result[1];
$result = $result[0];
$mgr_PagerSizeLimits_dl = array(10,25,50,75,100,250,'ALL');
$html_mgr_PagerSizeDL='';
foreach($mgr_PagerSizeLimits_dl AS $limiter)
$html_mgr_PagerSizeDL .= '<option value="'.$limiter.'" '.((string)$limiter == (string)$_REQUEST['fmeventlistpagelimit'] ? 'selected=selected' : '').'>'.$limiter.'</option>';
$html_mgr_CateogryFilter = $this->mxcGetCategoryListUIFilter('select',true);
$_mxCal_cont_col = explode(',',_mxCalendar_gl_columns);
if($modx->db->getRecordCount($result) > 0) {
$this->output .= "<table><tbody>
<tr><td colspan='7' align='left'><form method='POST' action='' style='float:left;width:auto;'><input type='submit' name='submit' value='Add New Event' onclick=\"document.cookie='webfxtab_tabPanel=1;path=/;'\"></form><form method='POST' action='' style='float:left;width:auto;'> <input type='text' value='".$_REQUEST['fmfiltermatch']."' name='fmfiltermatch'/><select name='fmfiltertime'><option value='0' ".($_REQUEST['fmfiltertime']==0 ? 'selected="selected"' : '' ).">Upcoming Events</option><option value='1' ".($_REQUEST['fmfiltertime']==1 ? 'selected="selected"' : '' ).">Past Events</option><option value='all' ".($_REQUEST['fmfiltertime']=='all' ? 'selected="selected"' : '' ).">All Events</option></select>".$html_mgr_CateogryFilter."<input type='submit' name='submit' value='"._mxCalendar_btn_go."' onclick=\"document.cookie='webfxtab_tabPanel=0;path=/;'\"> <select name='fmeventlistpagelimit'>".$html_mgr_PagerSizeDL."</select>"._mxCalendar_gl_pagesite."</form></td></tr>
<tr><td colspan='7' align='center'>".$pagination." </td></tr>
<tr>";
foreach(explode(',', _mxCalendar_el_labels) AS $label)
$this->output .= "<th>".trim($label)."</th>";
$this->output .= "<th></th></tr>";
$records = $modx->db->makeArray($result);
$evodbg = ' style="background-color:#ccc" ';
foreach( $records as $event ) {
$timeFormat = $this->config['mgrAddClockTwentryFourHour'] == true ? 'Y-m-d G:i:s' : _mxCalendar_el_timeformat;
$evodbg = ($evodbg) ? '' : ' style="background-color:#ccc" ';
$evLastOccurance = explode(',',$event['repeat']);
$this->output .='
<tr'.$evodbg.'>
<td>'.$event['eid'].'</td>
<td>'.$event['title'].'</td>
<td>'.$event['category'].'</td>
<td>'.date($timeFormat, strtotime($event['start'])).'</td>
<td>'.date($timeFormat, strtotime($event['end'])).'</td>
<td>'.(!empty($event['repeat']) ? date(_mxCalendar_el_timeformat_date, strtotime($evLastOccurance[count($evLastOccurance)-1])) : '').'</td>
<td><form method="post" action="" onSubmit=""><input type="hidden" name="fmeid" value="'.$event['eid'].'" ><input type="submit" name="fmaction" value="'._mxCalendar_gl_btnEdit.'" onclick="document.cookie=\'webfxtab_tabPanel=1;path=/;\'"><input type="submit" name="fmaction" value="'._mxCalendar_gl_btnDelete.'" onClick="document.cookie=\'webfxtab_tabPanel=0;path=/;\'; return confirm(\''._mxCalendar_gl_btnConfirm.'\')"></form></td>
</tr>
';
}
$this->output .= "<tr><td colspan='7' align='center'>".$pagination."</td></tr></tbody></table>";
} else {
$this->output .="<form method='POST' action='' style='float:left;width:auto;'><input type='submit' name='submit' value='Add New Event' onclick=\"document.cookie='webfxtab_tabPanel=1;path=/;'\"></form><form method='POST' action='' style='float:left;width:auto;'> <input type='text' value='".$_REQUEST['fmfiltermatch']."' name='fmfiltermatch'/><select name='fmfiltertime'><option value='0' ".($_REQUEST['fmfiltertime']==0 ? 'selected="selected"' : '' ).">Upcoming Events</option><option value='1' ".($_REQUEST['fmfiltertime']==1 ? 'selected="selected"' : '' ).">Past Events</option><option value='all' ".($_REQUEST['fmfiltertime']=='all' ? 'selected="selected"' : '' ).">All Events</option></select><input type='submit' name='submit' value='Go' onclick=\"document.cookie='webfxtab_tabPanel=0;path=/;'\"></form>".'<div class="clear"></div><h2>'._mxCalendar_gl_noevents.'</h2>';
$this->output .='<h3>'._mxCalendar_gl_quicklist.'</h3>';
$result = $this->_getNEvents();
}
return $this->output;
}
//-- Manager::Add New
function _mgrAddEdit(){
$this->message = '';
if($_POST['fmaction'] == _mxCalendar_btn_addEvent || $_POST['fmaction'] == _mxCalendar_btn_updateEvent ){
$saved=$this->_saveEvent($_POST['fmaction']);
if($saved)
$this->message .= $this->_makeMessageBox(str_replace("|*rec*|", $saved, _mxCalendar_ae_success)); //$saved
else
$this->message .= $this->_makeMessageBox(str_replace("|*rec*|", $saved, _mxCalendar_ae_fail),1);
}
}
//-- Manager::Add New Event Form/Actions
function AddEvent($params=false){
global $modx;
$this->output = $this->message;
$this->message='';
//-- Form action and label properties
$fmAction = (!isset($_REQUEST['fmeid'])) ? 'save' : 'update';
$fmActionLabel = (!isset($_REQUEST['fmeid'])) ? _mxCalendar_btn_save : _mxCalendar_btn_update;
if(!empty($_REQUEST['fmeid'])){
//-- Get record to edit
$result = $modx->db->select('id,title,description,category,restrictedwebusergroup,link,linkrel,linktarget,location,displayGoogleMap,start,startdate,starttime,end,enddate,endtime,event_occurance,event_occurance_rep,_occurance_properties,lastrepeat,customFields', $modx->getFullTableName($this->tables['events']),'id = '.$_REQUEST['fmeid'] );
if( $modx->db->getRecordCount( $result ) ) {
$output .= '<ul>';
$editArr = $modx->db->getRow( $result );
}
} else { $editArr = array(); }
$this->output .= '<h1>'.(isset($_REQUEST['fmeid']) ? _mxCalendar_ae_headingEdit.' '.$editArr['title'] : _mxCalendar_ae_headingAdd).'</h1>';
//-- Get the custom field type
$arr_customFieldTypes = json_decode($this->config['mxcCustomFieldTypes'],true);
//-- Create custom field types
$dyn_form_output = '';
$dyn_form_vals = json_decode($editArr['customFields'], TRUE);
$dyn_form_vals = count($dyn_form_vals) ? $dyn_form_vals : $arr_customFieldTypes;
if(count($arr_customFieldTypes[0])){
foreach($dyn_form_vals AS $cft){
if($cft['name'] && $cft['label']){
$dyn_form_tpl = '<div class="fm_row"><label>%1$s</label><div><small style="color:blue;">[+mxc%3$s+]</small><br />%2$s</div></div>';
if($this->debug) $dyn_form_output .= '<pre><code>'.var_dump($cft).'</code></pre>';
SWITCH($cft['type']){
case 'text':
$dyn_form_output .= sprintf(
$dyn_form_tpl,
htmlentities($cft['label']),
sprintf( '<input type="text" name="mxcft_%1$s" value="%2$s">',htmlentities($cft['name']),($cft['val'] ? $cft['val'] : htmlentities($cft['default'])) ),
$cft['name']
);
break;
case 'datetime':
case 'date':
case 'time':
$dyn_form_output .= sprintf(
$dyn_form_tpl,
htmlentities($cft['label']),
str_replace('tvmxcft_'.$cft['name'],'mxcft_'.$cft['name'],$this->renderRTE($cft['type'],'mxcft_'.$cft['name'],($cft['val'] ? $cft['val'] : $cft['default']),'')),
$cft['name']
);
break;
case 'image':
$dyn_form_output .=sprintf(
$dyn_form_tpl,
htmlentities($cft['label']),
'<script type="text/javascript">
var lastImageCtrl;
var lastFileCtrl;
function OpenServerBrowser(url, width, height ) {
var iLeft = (screen.width - width) / 2 ;
var iTop = (screen.height - height) / 2 ;
var sOptions = \'toolbar=no,status=no,resizable=yes,dependent=yes\' ;
sOptions += \',width=\' + width ;
sOptions += \',height=\' + height ;
sOptions += \',left=\' + iLeft ;
sOptions += \',top=\' + iTop ;
var oWindow = window.open( url, \'FCKBrowseWindow\', sOptions ) ;
}
function BrowseServer(ctrl) {
lastImageCtrl = ctrl;
var w = screen.width * 0.7;
var h = screen.height * 0.7;
OpenServerBrowser(\'/modxevo/manager/media/browser/mcpuk/browser.html?Type=images&Connector=/modxevo/manager/media/browser/mcpuk/connectors/php/connector.php&ServerPath=/modxevo/\', w, h);
}
function BrowseFileServer(ctrl) {
lastFileCtrl = ctrl;
var w = screen.width * 0.7;
var h = screen.height * 0.7;
OpenServerBrowser(\'/modxevo/manager/media/browser/mcpuk/browser.html?Type=files&Connector=/modxevo/manager/media/browser/mcpuk/connectors/php/connector.php&ServerPath=/modxevo/\', w, h);
}
function SetUrl(url, width, height, alt){
if(lastFileCtrl) {
var c = document.cal_form[lastFileCtrl];
if(c) c.value = url;
lastFileCtrl = \'\';
} else if(lastImageCtrl) {
//alert(\'New Image: \'+lastImageCtrl+\' == URL: \'+url);
var c = document.cal_form[lastImageCtrl];
var p = document.getElementById(\'_pv'.$cft['name'].'\').src = \'/modxevo/\'+url;
if(c) c.value = url;
lastImageCtrl = \'\';
} else {
return;
}
}
</script><input type="text" id="'.$cft['name'].'" name="mxcft_'.$cft['name'].'" value="'.($cft['val'] ? $cft['val'] : $cft['default']).'" style="" onchange="documentDirty=true;" /> <input type="button" value="Insert" onclick="BrowseServer(\''.$cft['name'].'\')" />
'.'<label> </label><img name="_pv'.$cft['name'].'" id="_pv'.$cft['name'].'" src="../'.($cft['val'] ? $cft['val'] : $cft['default']).'" alt="" />', $cft['name']);
break;
case 'select':
$opt_arr = explode(',', $cft['options']);
if(is_array($opt_arr) && count($opt_arr)){
$opts='';
foreach($opt_arr AS $o){
$opts .= '<option value="'.$o.'" '.($cft['val'] == $o ? "selected=selected" : '').'>'.$o.'</option>';
}
$dyn_form_output .= sprintf(
$dyn_form_tpl,
htmlentities($cft['label']),
'<select name="mxcft_'.$cft['name'].'">'.$opts.'</select>',
$cft['name']
);
}
break;
case 'resource':
$resc_list = $modx->getAllChildren((!empty($cft['default']) && is_numeric($cft['default'])?(int)$cft['default']:0), 'menuindex', 'ASC', 'id, alias, menutitle');
$opts = '<option value=""></option>';
foreach($resc_list AS $v){
$opts .= '<option value="'.$v['id'].'" '.($cft['val'] == $v['id'] ? 'selected="selected"' : '').'>['.$v['id'].'] '.(!empty($v['menutitle']) ? $v['menutitle'] : $v['alias']).'</option>';
}
$dyn_form_output .= sprintf(
$dyn_form_tpl,htmlentities($cft['label']),
'<select name="mxcft_'.$cft['name'].'" onChange="">'.$opts.'</select>',
$cft['name']
);
//** Set the UI render to use the resource fields as placeholders for the mxCalendar ?? title override - how to make that happen...
break;
default:
//-- Do nothing
//var_dump($cft);
break;
}
}
}
}
//-- Get language file labels
$fm_label = explode(',', _mxCalendar_ae_labels);
$fm_columns = $this->get_columns($this->tables['events']);
$this->output .= '<form id="fm_bsApp" name="cal_form" method="post" action="">'."\n";
if(!empty($dyn_form_output)) $this->output .= '<fieldset><legend>'._mxCalendar_con_mscCustomFieldLegend.'</legend>'.$dyn_form_output.'</fieldset>';
$x=0;
foreach($fm_columns as $key=>$val){
//-- List of excluded table columns [DO NOT EDIT]
$excluded = array('id','active','start','end', 'repeat', 'event_occurance', '_occurance_wkly', 'event_occurance_rep', 'lastrepeat', '_occurance_properties','lastrepeat','customFields');
//-- Make sure it's not an excluded column
if(!in_array($val[0], $excluded)){
$tooltip = ($this->tooltip[$val[0]]) ? '<img title="'.$this->tooltip[$val[0]].'" src="'.$modx->config['base_url'].'manager/media/style/'.$modx->config['manager_theme'].'/images/icons/information.png" class="Tips1" />' : '';
SWITCH ($val[1]){
case 'text':
if($val[0] == 'description'){
$this->output .= "\t".'<div class="fm_row"><label>'.$fm_label[$x].'</label><div class="fm_entry">'.$this->renderRTE('richtext','fm'.$val[0],$editArr[$val[0]],'').$tooltip.'</div></div>'."\n";
} else {
$this->output .= "\t".'<div class="fm_row"><label>'.$fm_label[$x].'</label><div class="fm_entry"><input type="text" name="fm'.$val[0].'" value="'.$editArr[$val[0]].'" />'.$tooltip.'</div></div>'."\n";
}
break;
case 'date':
if($val[0] == 'startdate'){
$editSD = ($editArr['start'] != '0000-00-00 00:00:00' && !empty($editArr['start']) ? strftime('%Y-%m-%d %H:%M', strtotime($editArr['start'])) : strftime('%Y-%m-%d %H:%M')); //$editArr['start'];
$editSDF = $editArr['start'];
$dateCSSClass = 'mxcStartDate';
}
elseif($val[0]=='enddate'){
$editSD = ($editArr['end'] != '0000-00-00 00:00:00' && !empty($editArr['end']) ? strftime('%Y-%m-%d %H:%M', strtotime($editArr['end'])) : strftime('%Y-%m-%d %H:%M')); //$editArr['end'];
$editSDF = $editArr['end'];
$dateCSSClass = 'mxcEndDate';
}
else{
$editSD = null;
$dateCSSClass = '';
}
$advancedDateEntry=$this->config['mxcAdvancedDateEntry'];
if($advancedDateEntry){
$this->output .= "\t<div class=\"fm_row\"><label>".$fm_label[$x]."</label><div class='fm_entry'><input type=\"text\" value=\"".$editSD."\" name=\"fm".$val[0]."\">".$tooltip."</div></div>";
} else {
$this->output .= "\t".$this->_makeDateSelector($val[0], $fm_label[$x], $tooltip, $editSD, $dateCSSClass)."\n";
$this->output .= "\t</div>"; //-- Fixed broken HTML tags cuasing tabs after Events to not display
}
break;
case 'time':
//-- We'll use the date picker field and extract the time
break;
default:
if($val[0] == 'category'){
foreach($this->getCategories() as $cats){
foreach($cats as $catsKey=>$catsVal){
$selected = ($editArr[$val[0]] == $catsKey) ? 'selected=selected' : '';
$selected = ((empty($editArr[$val[0]]) && $catsVal[1] == 1) ? 'selected=selected' : $selected );
$thisSDL .= '<option value="'.$catsKey.'" '.$selected.'>'.$catsVal[0].'</option>';
}
}
$this->output .= "\t".'<div class="fm_row"><label>'.$fm_label[$x].'</label><div class="fm_entry"><select name="fm'.$val[0].'">'.$thisSDL.'</select>'.$tooltip.'</div></div>'."\n";
} elseif($val[0] == 'displayGoogleMap'){
$this->output .= "\t".'<div class="fm_row"><label>'.$fm_label[$x].'</label><div class="fm_entry"><input type="checkbox" id="fm'.$val[0].'" name="fm'.$val[0].'" value="1" '.($editArr[$val[0]] ? 'checked="checked"' : "").' />'.$tooltip.'</div></div>'."\n";
} elseif($val[0] == 'restrictedwebusergroup'){
//-- Temporary Fix for Display Mode for Web User Group
$param['mxcMgrWUGSelectionMode'] = 'checkbox';
//-- Selection Mode Default Option Values
$thisWUGDL_defaultCombo = '<option value="" '.( empty($editArr[$val[0]]) ? 'selected=selected' : '' ).'>'._mxCalendar_con_PublicView.'</option>';
$thisWUGDL_defaultCheckbox = '<input name="fm'.$val[0].'[]" type="checkbox" value="" '.( empty($editArr[$val[0]]) ? 'checked="yes"' : '' ).'>'._mxCalendar_con_PublicView.'<br />';
//-- Loop through the web user groups and build the selection list
foreach($this->getWebGroups() AS $group){
SWITCH($param['mxcMgrWUGSelectionMode']){
case 'checkbox':
$selected = (in_array($group['id'], explode(',',$editArr[$val[0]])) ) ? 'checked="yes"' : '';
$thisWUGDL .= '<input name="fm'.$val[0].'[]" type="checkbox" value="'.$group['id'].'" '.$selected.'>'.$group['name'].'<br />'.PHP_EOL;
break;
default:
$selected = (in_array($group['id'], explode(',',$editArr[$val[0]])) ) ? 'selected=selected' : '';
$thisWUGDL .= '<option value="'.$group['id'].'" '.$selected.'>'.$group['name'].'</option>';
break;
}
}
$mgrModeHTML = ($param['mxcMgrWUGSelectionMode'] == 'checkbox' ? $thisWUGDL_defaultCheckbox.$thisWUGDL : '<select name="fm'.$val[0].'[]" multiple="multiple">'.$thisWUGDL_defaultCombo.$thi