ConLite/conlite/classes/widgets/class.widgets.tableedit.php

184 Zeilen
5.2 KiB
PHP

<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
*
*
* Requirements:
* @con_php_req 5.0
*
*
* @package Contenido Backend classes
* @version 1,0
* @author Unknown
* @copyright four for business AG <www.4fb.de>
* @license http://www.contenido.org/license/LIZENZ.txt
* @link http://www.4fb.de
* @link http://www.contenido.org
*
* {@internal
* created
*
* $Id$:
* }}
*
*/
if (!defined('CON_FRAMEWORK')) {
die('Illegal call');
}
class cWidgetTableEdit {
function __construct($metaobject, $title) {
$this->_metaobject = $metaobject;
$this->_title = $title;
if ($_GET["edit"] == get_class($this->_metaobject->_payloadObject)) {
$this->_metaobject->processEdit();
}
}
function render() {
global $cfg, $sess, $action, $area, $frame;
if ($this->_metaobject->_objectInvalid) {
return;
}
$this->_metaobject->defineFields();
$form = new cHTMLForm;
$form->setVar("contenido", $sess->id);
/* Fetch the edit action from the metaobject */
$editaction = $this->_metaobject->getAction($this->_metaobject->_editAction);
$form->setVar("action", $editaction->_namedAction);
$form->setVar("area", $area);
$form->setVar("frame", $frame);
$form->setVar("edit", get_class($this->_metaobject->_payloadObject));
$form->setVar($this->_metaobject->_payloadObject->primaryKey, $this->_metaobject->_payloadObject->get($this->_metaobject->_payloadObject->primaryKey));
$table = new cHTMLTable;
$table->setStyle("border: 1px solid " . $cfg['color']['table_border'] . ";");
$row = new cHTMLTableRow;
$row->setContent($this->renderHeader());
$out = "";
if (count($this->_metaobject->_fields) == 1) {
foreach ($this->_metaobject->_fields as $key => $value) {
$out .= $this->renderRows($key, $this->_iconWidth + 6);
}
} else {
foreach ($this->_metaobject->_fields as $key => $value) {
$out .= $this->renderGroup($key);
}
}
$out .= $this->renderButtons();
$table->setContent($row->render() . $out);
$form->setContent($table);
return ($form->render());
}
function renderHeader() {
global $cfg;
$td = new cHTMLTableData;
$td->setColSpan(2);
$td->setVerticalAlignment("middle");
/* Check for icon */
if ($this->_metaobject->getIcon() != "") {
$img = new cHTMLImage;
$img->setSrc($this->_metaobject->getIcon());
$img->applyDimensions();
$this->_iconWidth = $img->_width;
$img->setAlignment("absmiddle");
$image = $img->render();
}
$td->setStyle("padding-left: 2px;");
$a = new cHTMLAlignmentTable($image, '<b style="margin: 0px 4px 0px 4px;">' . $this->_title . "</b>");
$td->setContent($a);
$td->setHeight(18);
$td->setBackgroundColor($cfg['color']['table_header']);
return ($td);
}
function renderGroup($group) {
return renderRows($group);
}
function renderRows($group, $padding = 2) {
global $cfg;
foreach ($this->_metaobject->_fields[$group] as $field => $parameters) {
$this->_darkShading = !$this->_darkShading;
$c = new cHTMLTableRow;
$b = new cHTMLTableData;
$l = new cHTMLTableData;
$r = new cHTMLTableData;
$l->setContent($parameters["name"]);
$paramname = get_class($this->_metaobject) . "_" . $field;
$widget = new $parameters["editwidget"]($paramname, $parameters["parameters"]);
$r->setContent($widget);
$r->setStyle("padding: 2px; border-top: 1px solid " . $cfg["color"]["table_border"]);
$l->setStyle("padding: 4px; padding-left: {$padding}px; border-top: 1px solid " . $cfg["color"]["table_border"] . "; border-right: 1px solid " . $cfg["color"]["table_border"]);
$l->setVerticalAlignment("top");
if ($this->_darkShading) {
$l->setBackgroundColor($cfg["color"]["table_dark"]);
$r->setBackgroundColor($cfg["color"]["table_dark"]);
} else {
$l->setBackgroundColor($cfg["color"]["table_light"]);
$r->setBackgroundColor($cfg["color"]["table_light"]);
}
$c->setContent(array($l, $r));
$out .= $c->render();
}
return $out;
}
function renderButtons() {
global $cfg;
$c = new cHTMLTableRow;
$b = new cHTMLTableData;
$b->setStyle("padding: 2px; border-top: 1px solid " . $cfg["color"]["table_border"]);
$b->setAlignment("right");
$submit = new cHTMLButton("submit");
$submit->setMode("image");
$submit->setAccessKey("s");
$submit->setImageSource("images/buttons/but_ok.gif");
$submit->setStyle("margin: 0px 1px 0px 1px;");
$submit->setAlt(i18n("Save changes"));
$b->setColSpan(2);
$b->setContent($submit);
$c->setContent($b);
return ($c->render());
}
}