Collabtive milestoneview erweitert
26 05 2008Um das Arbeiten Mit Collabtive zu vereinfachen habe ich der Milestoneansicht eine Liste mit allen noch anstehenden Milestones hinzugefügt. Ihr könnt euch die Dateien direkt aus dem Datenraum herunterladen.
Ich übernehme ganz klar keine Verantwortung für irgendwelche Schäden die bei auftreten könnten. Hab das nach bestem gewissen gemacht und jut.
Um die Änderungen selbst vorzunehmen (weil vielleicht schon selbst Änderungen vorgenommen wurden und es einfach alles kaputt machen würde wenn ihr das da einfach rausfkopiert) schreibe ich hier einfach mal den Weg auf den ich genommen habe:
Als allererstes müsst ihr im root-Verzeichnis von collabtive die Datei managemilestone.php gehen und dieseein wenig erweitern. Sucht dazu den Abschnitt mit elseif ($action == “showproject”).
nun fügt ihr unterhalb von $latestones = $milestone->formatdate($latestones); (etwa Zeile 160)
$miles = $milestone->getProjectMilestones($project, 0);
ein. Unter $template->assign(“timestr”, $timestring); (etwa Zeile 179) muss zusätzlich:
$template->assign("milestones", $miles);
Damit übergebt ihr dem Template die Milestones, die aufgelistet werden sollen. Das reicht aber noch nicht ganz.
Weiter gehts in der Datei templates/projectmilestones.tpl. In dieser muss innerhalb des Section Milestones new Abschnitts eine Liste eingefügt werden. Ich habe dazu einfach die der fertigen kopiert und verändert.
Geht also an die Stelle nach dem {*Add Mile End*} (Das schließende </div> muss bleiben. Also erst danach einfügen!) und fügt folgendes ein.
<div class="in"> <div class="headline"> <h2><a href="javascript:void(0);" id="milehead_listed_toggle" class="win_block" onclick = "toggleBlock(‘milehead_listed’);"><img src="./templates/standard/img/symbols/miles.png" alt="" /> <span>{#listedmilestones#}</span></a> </h2> </div> <div id = "milehead_listed" style = ""> <div class="table_head"> <table cellpadding="0" cellspacing="0"> <tr> <td class="a"></td> <td class="b"></td> <td class="c"></td> <td class="d"></td> <td class="e"></td> </tr> </table> </div> <div class="table_body"> <div id = "accordion_listedmiles" > <ul> {section name=stone loop=$milestones} {*Color-Mix*} {if $smarty.section.stone.index % 2 == 0} <li class="bg_a"> {else} <li class="bg_b"> {/if} <div class ="marker_all"> <div id = "listedmiles_{$milestones[stone].ID}" class="focus_off"> <table class="line" cellpadding="0" cellspacing="0"> <tr> <td class="a">{if $adminstate > 0}<a class="butn_checked" href="managemilestone.php?action=open&mid={$milestones[stone].ID}&id={$project.ID}" title="{#open#}"></a>{/if}</td> <td class="b"></td> <td class="c"></td> <td class="d"></td> <td class="tools"><a class="tool_edit" href="managemilestone.php?action=editform&mid={$milestones[stone].ID}&id={$project.ID}" {if $adminstate < 1}style = "visibility:hidden;"{/if} title="{#editmilestone#}"></a> <a class="tool_del" href="javascript:confirmit(‘{#confirmdel#}’,'managemilestone.php?action=del&mid={$milestones[stone].ID}&id={$project.ID}’);" {if $adminstate < 1}style = "visibility:hidden;"{/if} title="{#delete#}"></a></td> </tr></table> <div class="link_in_toggle"><a href="managemilestone.php?action=showmilestone&msid={$milestones[stone].ID}&id={$project.ID}">{$milestones[stone].name|truncate:30:"…":true}</a></div> <div class="accordion_toggle"> <a class="open" href="javascript:void(0);" onclick = "switchClass(‘listedmiles_{$milestones[stone].ID}’,'focus_off’,'focus_on’);"></a> </div> {*Accordeon_Toggle End*} <div class="accordion_content"> <table class="description" cellpadding="0" cellspacing="0"> <tr valign="top"> <td class="a"></td> <td class="descript"> {$milestones[stone].desc} {section name=task loop=$milestones[stone].tasks} {if $smarty.section.task.first == TRUE} <br/><br/><b>{#tasklists#}:</b> {/if} <a href = "managetasklist.php?action=showtasklist&tlid={$milestones[stone].tasks[task].ID}&id={$project.ID}">{$milestones[stone].tasks[task].name}</a>, {/section} </td> </tr> </table> </div> {*Accordion_Content End*} </div> {*Focus End*} </div> {*Marker End*} </li> {/section} </ul> </div> {*Accordion End*} </div> {*Table_Body End*} <div class="clear_both"></div> {*required … do not delete this row*} </div>{*milehead end*} </div> {*IN end*} {*Listedmilestones End*}
Das dürft ihr dann auch so speichern. Die Ungeduldigen werden jetzt feststellen das noch nichts außer einem neuen aber leeren Header zu sehen ist. Das kommt daher weil wir in der managemilestone.php die Methode getProjectMilestones($project, 0); aufrufen. Wir befehlen der Methode 0 Milestones zum Project $project zu finden. Was aber eigentlich passieren soll ist, dass alle Milestones angezeigt werden sollen. Dazu müssen wir noch etwas in der Klasse milestone etwas ändern.
Dazu die Datei include/class.milestone.php öffnen und zu der Funktion getProjectMilestones(); scrollen. Die SQL-Abfrage (ca. Zeile 449) nun durch folgendem Ersetzen:
if($lim != 0 ) $sql = "SELECT * FROM milestones WHERE project = $project AND end > $now AND status = 1 ORDER BY end ASC LIMIT $lim"; else $sql = "SELECT * FROM milestones WHERE project = $project AND end > $now AND status = 1 ORDER BY end ASC";
Das war auch schon der ganze Trick. Nun habt ihr die komplette Liste direkt auf der Seite. Ich hoffe ihr ersparrt euch dadurch viel gesuche.






Erklär deiner armen Schwester doch mal worum es hier eigentlich geht verstehe kein Wort. Was ist ein Milestone? Lass mich bitte nicht dum sterben.
Hallo,
wir von Collabtive freuen uns, dass du eine Erweiterung zu unserer Software geschrieben hast!
Im Übrigen wird’s in der nächsten Version bezüglich der Milestonesansicht eine Verbesserung geben, nach der viele Leute in unserem Forum gefragt haben:
Es wird dann möglich sein, zwischen der aktuell implementierten kalenderartigen Ansicht und einer Listenansicht hin und her zu schalten. Dann kann man also die Ansicht wählen, die einem besser gefällt.
Viele Grüße,
Eva Kranz