quote(str_replace('__','|',$name)));
$sth = $db->query($sql);
if ($sth === false) return false;
$row = $sth->fetch();
if ($row === false) return false;
if ($row['edit'] == '0')
return false;
return true;
}
function build_form($name, $mask)
{
global $jscode;
$ret = array();
$jscode[] = "var form_check = {};";
$ret[] = '
';
return $ret;
}
function build_grid($name, $mask, $gridname = false)
{
$jscode = array();;
$ret = array();
if ($gridname == false) {
$gridname = 'grid';
$opts = array("click: gridDrillDown");
} else {
$name = $name . '__' . $gridname;
$opts = array();
if (array_key_exists('onclick', $mask)) $opts[] = 'click: ' . $mask['onclick'];
}
$opts[] = "onscroll: gridOnScroll";
$opts[] = "menuEvent: 'contextmenu'";
$opts[] = "highlightElem: 'menuRow'";
if (array_key_exists('maxprint', $mask)) $opts[] = 'maxPrint: ' . $mask['maxprint'];
else $opts[] = 'maxPrint: 100000';
if (array_key_exists('rows', $mask)) $opts[] = 'visibleRows: ' . $mask['rows'];
if (array_key_exists('sort', $mask)) $opts[] = 'sortCol: ' . $mask['sort'];
if (isset($mask['prefetch']) && $mask['prefetch'] === false) $opts[] = 'prefetchBuffer: false';
# $opts[] = 'frozenColumns: ' . count($mask['list']);
$opts[] = 'saveColumnInfo: {width: true, filter: true, sort: true}';
$ret[] = sprintf('', $name);
$ret[] = ' ';
$specs = array();
$fields = array();
foreach ($mask['list'] as $field => $data) {
$ret[] = sprintf(' %s | ', $data['name']);
$s = array(sprintf("FieldName: 'input_%s'", $field),
sprintf("ColName: 'input_%s'", $data['name']));
$s = array();
if (isset($data['visible']) && $data['visible'] === false) $s[] = 'visible: false';
if (isset($data['width']) && $data['width'] > 0) $s[] = 'width: ' . $data['width'];
if (array_key_exists('type', $data)) $s[] = "type: '" . $data['type'] . "'";
if (array_key_exists('specs', $data)) $s[] = $data['specs'];
if (array_key_exists('control', $data)) $s[] = 'control: ' . $data['control'];
$specs[] = '{' . implode(', ', $s) . '}';
if (array_key_exists('sql', $data))
$fields[] = $data['sql'] . ' AS ' . $field;
else
$fields[] = $field;
}
grid_sql($name, $mask);
$ret[] = '
';
$ret[] = '
';
$ret[] = '';
$ret[] = sprintf('
Datensatz 0
', $name);
if ($gridname == 'grid')
$ret[] = '
';
$ret[] = '
';
$ret[] = '
';
$opts[] = 'columnSpecs: [' . implode(', ', $specs) . ']';
if (strstr($opts[count($opts)-1], 'filterUI') !== false) $opts[] = 'FilterLocation: -1';
$jscode[] = sprintf('var %s;', $gridname);;
$jscode[] = 'Rico.onLoad( function() {';
$jscode[] = sprintf("var %s_opts = {\n %s\n};", $name, implode(",\n ", $opts));
$jscode[] = sprintf("%s = new Rico.LiveGrid ('grid_%s', new Rico.Buffer.AjaxSQL('ajax/ricoXMLquery.php'), %s_opts);", $gridname, $name, $name);
$jscode[] = sprintf("%s.menu = new Rico.GridMenu();", $gridname);
$jscode[] = sprintf("%s.edit = new Rico.TableEdit(%s);", $gridname, $gridname);
if ($gridname == 'grid') {
$jscode[] = sprintf("%s.menu.options.dataMenuHandlerOriginal = %s.menu.options.dataMenuHandler;", $gridname, $gridname);
$jscode[] = sprintf("%s.menu.options.dataMenuHandler = grid_dataMenuHandler;", $gridname);
}
$jscode[] = '});';
return array($ret, $jscode);
}
function build_details($name, $details)
{
$ret = array();
$ret[] = '';
$ret[] = sprintf('
%s
', $details['title']);
if (array_key_exists('subtitle', $details))
$ret[] = sprintf('
%s
', $details['subtitle']);
if (array_key_exists('html',$details)) {
$ret[] = $details['html'];
} elseif (array_key_exists('list',$details)) {
$ret[] = '
';
foreach ($details['list'] as $name => $info) {
$ret[] = sprintf('- %s:
', $info['name'], $name);
}
$ret[] = '
';
}
$ret[] = '
';
return $ret;
}
function build_select($name, $details)
{
$ret = array();
$ret[] = '';
return $ret;
}
function build_mask($name, $mask)
{
global $jscode;
$jscode[] = 'Rico.writeDebugMsg = function(msg, resetFlag) {};';
if (array_key_exists('list', $mask)) {
$jscode[] = "Rico.acceptLanguage('de-de,de;q=0.8,en;q=0.5,en-us;q=0.3');";
$jscode[] = "Rico.loadModule('Effect','Calendar','LiveGridForms','LiveGridAjax','LiveGridMenu');";
if (array_key_exists('second', $mask) && !array_key_exists('rows', $mask))
$mask['rows'] = "'parent'";
list($grid,$js) = build_grid($name, $mask);
$grid = array_merge(array(''), $grid, array('
'));
if (array_key_exists('second', $mask)) {
$mask['second']['prefetch'] = false;
list($second,$secondjs) = build_grid($name, $mask['second'], 'second');
$jscode = array_merge($jscode, $secondjs);
$grid[] = '';
$close = '
';
$title = array_key_exists('title', $mask['second']) ? $mask['second']['title'] : '';
$grid[] = sprintf('
%s%s
', $title, $close);
$grid = array_merge($grid, array('
'), $second, array('
'));
$grid[] = '
';
}
$jscode = array_merge($jscode, $js);
if ($mask['rows'] == "'parent'")
$jscode[] = 'Rico.onLoad(function() {resize_grids()});';
} else
$grid = array();
if (array_key_exists('details', $mask))
$details = build_details($name, $mask['details']);
else
$details = array();
if (array_key_exists('select', $mask))
$select = build_select($name, $mask['select']);
else
$select = array();
if (array_key_exists('edit', $mask) && check_edit($name))
$edit = build_form($name, $mask);
else
$edit = array();
$title = $mask['title'];
if (array_key_exists('subtitle', $mask))
$title .= ' – ' . $mask['subtitle'];
$head = array();
$head[] = sprintf('%s
', $title);
if (array_key_exists('html', $mask) &&
!array_key_exists('details', $mask) &&
!array_key_exists('select', $mask) &&
!array_key_exists('edit', $mask))
return array_merge($head,
array($mask['html']),
array('
'));
if (empty($details) && empty($select) && empty($edit))
return array_merge($head,
array(''),
$grid,
array('
'));
else
return array_merge($head,
array(''),
$grid,
array('
',''),
$details,
$select,
$edit,
array('
'));
}
function mask($name)
{
global $jsfiles;
global $mask;
$ret = array();
if (load_mask($name) === false)
return;
$jsfiles[] = 'lib/functions.js';
$jsfiles[] = 'lib/rico/rico.js';
if (array_key_exists('table',$mask))
$ret = build_mask($name, $mask);
return sprintf('%s', $_GET['mask'])
. implode("\n", $ret);
}
?>