Nabend zusammen,
ich sollte diese Frage vielleicht eher in einem PHP-Forum stellen, aber ich dachte, vielleicht hat ja jemand hier bereits Erfahrungen in dem Bereich gesammelt:
Ich möchte die Extension tw_todolist dahingehend modifizieren, dass sie sobald ein ToDO-Punkt erstellt wurde und der Details-Button gedrückt wird nicht das Eingabeformular angezeigt wird, sondern eine Tabelle ohne Formular.
Jetzt kenne ich mich mit PHP nicht aus und denke, daran scheitert es. Folgendes habe ich bereits erfolglos versucht:
Subpart eingefügt ins Template:
<!-- ###TASK_TABLE_DETAILS### -->
<table bgcolor="red" cellspacing="0" cellpadding="0" border="0" id="detailstask">
<tr>
<td><h3>###TITEL_LABEL###</h3></td><td>###TITEL_VALUE###</td>
</tr>
<tr>
<td><h3>###DETAILS_LABEL###</h3></td><td>###DETAILS_VALUE###</td>
</tr>
<tr>
<td><h3>###ADMINS_LABEL###</h3></td><td>###ADMINS_VALUE###</td>
</tr>
<tr>
<td><h3>###PRIO_LABEL###</h3></td><td>###PRIO_VALUE###</td>
</tr>
<tr>
<td><h3>###STATUS_LABEL###</h3></td><td><img src="###STATUS_ICON###" />###STATUS_VALUE###</td>
</tr>
<tr>
<td><h3>###START_LABEL###</h3></td><td>###START_VALUE###</td>
</tr>
<tr>
<td><h3>###END_LABEL###</h3></td><td>###END_VALUE###</td>
</tr>
<form action="###FORM_URL###" method="POST" name="taskdetails" enctype="multipart/form-data" target="_top">
<tr>
<td><input type="submit" name="###BACK_NAME###" value="###BACK_LABEL###" /></td><td></td>
</tr>
</form>
</table>
<!-- ###TASK_TABLE_DETAILS### -->
Anschließend habe ich die class.tx_twtodolist_pi1.php-Datei untersucht. Hier der original-Code:
/**
* Return html content showing details of a task
*
* @param string the task id
* @return string the content
*/
function getShowTask($id='') {
$id = key($id);
if (!$id)
return $this->getList();
$task = $this->getTask($id);
if ($task) {
$t = array();
$t["total"] = $this->cObj->getSubpart($this->templateCode,"###TASK_TABLE_SHOW###");
$markerArray = array();
$markerArray["###TITEL_LABEL###"] = $this->pi_getLL('title','Title');
$markerArray["###DETAILS_LABEL###"] = $this->pi_getLL('details','Details');
$markerArray["###ADMINS_LABEL###"] = $this->pi_getLL('admins','Officer');
$markerArray["###PRIO_LABEL###"] = $this->pi_getLL('prio','Priority');
$markerArray["###STATUS_LABEL###"] = $this->pi_getLL('status','Status');
$markerArray["###START_LABEL###"] = $this->pi_getLL('start','Start');
$markerArray["###END_LABEL###"] = $this->pi_getLL('end','End');
$markerArray["###BACK_LABEL###"] = $this->pi_getLL('back','Back');
$markerArray["###BACK_NAME###"] = 'task[back]';
$markerArray["###TITEL_VALUE###"] = $task['title'];
$markerArray["###DETAILS_VALUE###"] = $task['details'];
$markerArray["###ADMINS_VALUE###"] = $this->getAdminList($task['admins']);
switch($task['priolevel']) {
case 0: $markerArray["###PRIO_VALUE###"] = $this->pi_getLL('prio_low','low');
break;
case 1: $markerArray["###PRIO_VALUE###"] = $this->pi_getLL('prio_normal','normal');
break;
case 2: $markerArray["###PRIO_VALUE###"] = $this->pi_getLL('prio_high','high');
break;
case 3: $markerArray["###PRIO_VALUE###"] = $this->pi_getLL('prio_important','important');
break;
}
$path = t3lib_extMgm::siteRelPath('tw_todolist');
switch($task['status']) {
case 0: $markerArray["###STATUS_ICON###"] = $path.'icon_status_new.gif';
$markerArray["###STATUS_VALUE###"] = $this->pi_getLL('status_new','new');
break;
case 1: $markerArray["###STATUS_ICON###"] = $path.'icon_status_progress.gif';
$markerArray["###STATUS_VALUE###"] = $this->pi_getLL('status_progress','in progress');
break;
case 2: $markerArray["###STATUS_ICON###"] = $path.'icon_status_cons.gif';
$markerArray["###STATUS_VALUE###"] = $this->pi_getLL('status_cons','in consultation');
break;
case 3: $markerArray["###STATUS_ICON###"] = $path.'icon_status_done.gif';
$markerArray["###STATUS_VALUE###"] = $this->pi_getLL('status_done','done');
break;
}
if ($task['lstart'] && $task['lstart']>0)
$markerArray["###START_VALUE###"] = $this->formatDate($task['lstart']);
else
$markerArray["###START_VALUE###"] ='';
if ($task['lend'] && $task['lend']>0)
$markerArray["###END_VALUE###"] = $this->formatDate($task['lend']);
else
$markerArray["###END_VALUE###"] = '';
$markerArray["###FORM_URL###"] = $this->cObj->stdWrap($this->pi_getPageLink($this->cObj->data['pid']),0);
$content = $this->pi_wrapInBaseClass($this->cObj->substituteMarkerArrayCached($t["total"],$markerArray, array(), array()));
return $content;
} else
return 'Could not load Task'.$this->getList();
}
Und meine Änderung:
/**
* Return html content showing details of a task
*
* @param string the task id
* @return string the content
*/
function getShowTask($id='') {
$id = key($id);
if (!$id)
return $this->getList();
$task = $this->getTask($id);
if ($task) {
$t = array();
$t["total"] = $this->cObj->getSubpart($this->templateCode,[u]"###TASK_TABLE_DETAILS###"[/u]);
$markerArray = array();
$markerArray["###TITEL_LABEL###"] = $this->pi_getLL('title','Title');
$markerArray["###DETAILS_LABEL###"] = $this->pi_getLL('details','Details');
$markerArray["###ADMINS_LABEL###"] = $this->pi_getLL('admins','Officer');
$markerArray["###PRIO_LABEL###"] = $this->pi_getLL('prio','Priority');
$markerArray["###STATUS_LABEL###"] = $this->pi_getLL('status','Status');
$markerArray["###START_LABEL###"] = $this->pi_getLL('start','Start');
$markerArray["###END_LABEL###"] = $this->pi_getLL('end','End');
$markerArray["###BACK_LABEL###"] = $this->pi_getLL('back','Back');
$markerArray["###BACK_NAME###"] = 'task[back]';
$markerArray["###TITEL_VALUE###"] = $task['title'];
$markerArray["###DETAILS_VALUE###"] = $task['details'];
$markerArray["###ADMINS_VALUE###"] = $this->getAdminList($task['admins']);
switch($task['priolevel']) {
case 0: $markerArray["###PRIO_VALUE###"] = $this->pi_getLL('prio_low','low');
break;
case 1: $markerArray["###PRIO_VALUE###"] = $this->pi_getLL('prio_normal','normal');
break;
case 2: $markerArray["###PRIO_VALUE###"] = $this->pi_getLL('prio_high','high');
break;
case 3: $markerArray["###PRIO_VALUE###"] = $this->pi_getLL('prio_important','important');
break;
}
$path = t3lib_extMgm::siteRelPath('tw_todolist');
switch($task['status']) {
case 0: $markerArray["###STATUS_ICON###"] = $path.'icon_status_new.gif';
$markerArray["###STATUS_VALUE###"] = $this->pi_getLL('status_new','new');
break;
case 1: $markerArray["###STATUS_ICON###"] = $path.'icon_status_progress.gif';
$markerArray["###STATUS_VALUE###"] = $this->pi_getLL('status_progress','in progress');
break;
case 2: $markerArray["###STATUS_ICON###"] = $path.'icon_status_cons.gif';
$markerArray["###STATUS_VALUE###"] = $this->pi_getLL('status_cons','in consultation');
break;
case 3: $markerArray["###STATUS_ICON###"] = $path.'icon_status_done.gif';
$markerArray["###STATUS_VALUE###"] = $this->pi_getLL('status_done','done');
break;
}
if ($task['lstart'] && $task['lstart']>0)
$markerArray["###START_VALUE###"] = $this->formatDate($task['lstart']);
else
$markerArray["###START_VALUE###"] ='';
if ($task['lend'] && $task['lend']>0)
$markerArray["###END_VALUE###"] = $this->formatDate($task['lend']);
else
$markerArray["###END_VALUE###"] = '';
$markerArray["###FORM_URL###"] = $this->cObj->stdWrap($this->pi_getPageLink($this->cObj->data['pid']),0);
$content = $this->pi_wrapInBaseClass($this->cObj->substituteMarkerArrayCached($t["total"],$markerArray, array(), array()));
return $content;
} else
return 'Could not load Task'.$this->getList();
}
Ich hab also nur den Subpartbereich anders bezeichnet.
Dazu muss man sagen, dass der eingefügte Subpart identisch ist mit dem anderen SHOW, bis auf die Hintergrundfarbe der Tabelle, die ID der Tabelle und dem Namen des Formulars, wollte ja erstmal testen, ob die Änderungen übernommen werden, werden sie aber nicht.
Hat jemand einen Tip?
Vielen Dank Gin