show link between events on the signature level

pull/61/head
Christophe Vandeplas 2012-02-20 19:46:37 +01:00
parent eef982d18a
commit b0bb827261
3 changed files with 35 additions and 12 deletions

View File

@ -47,6 +47,14 @@ class EventsController extends AppController {
$this->set('event', $this->Event->read(null, $id));
$this->set('relatedEvents', $this->Event->getRelatedEvents());
$related_signatures = array();
$this->loadModel('Signature');
foreach ($this->Event->data['Signature'] as $signature) {
$related_signatures[$signature['id']] = $this->Signature->getRelatedSignatures($signature);
}
$this->set('relatedSignatures', $related_signatures);
}
function add() {

View File

@ -191,17 +191,20 @@ class Signature extends AppModel {
}
// function getRelatedEvents($signature) {
// // LATER write this getRelatedEvents() function
// $conditions = array('Signature.value =' => $signature['value'],
// 'Signature.id !=' => $signature['id'],
// 'Signature.type =' => $signature['type'], );
function getRelatedSignatures($signature) {
// LATER getRelatedSignatures($signature) this might become a performance bottleneck
$conditions = array('Signature.value =' => $signature['value'],
'Signature.id !=' => $signature['id'],
'Signature.type =' => $signature['type'], );
// $fields = array('Event.*');
$fields = array('Signature.*');
// $similar_events = $this->find('all',array('conditions' => $conditions,
// 'fields' => $fields )
// );
// return $similar_events;
// }
$similar_events = $this->find('all',array('conditions' => $conditions,
'fields' => $fields,
'order' => 'Signature.event_id DESC', )
);
return $similar_events;
}
}

View File

@ -49,7 +49,10 @@
<h3><?php __('Related Events');?></h3>
<ul>
<?php foreach ($relatedEvents as $relatedEvent): ?>
<li><?php echo $this->Html->link($relatedEvent['Event']['date'], array('controller' => 'events', 'action' => 'view', $relatedEvent['Event']['id']));?></li>
<li><?php
$link_text = $relatedEvent['Event']['date'].' ('.$relatedEvent['Event']['id'].')';
echo $this->Html->link($link_text, array('controller' => 'events', 'action' => 'view', $relatedEvent['Event']['id']));
?></li>
<?php endforeach; ?>
</div>
<?php endif; ?>
@ -76,7 +79,16 @@
<tr<?php echo $class;?>>
<td><?php echo $signature['type'];?></td>
<td><?php echo nl2br(Sanitize::html($signature['value']));?></td>
<td></td>
<td>
<?php
if (null != $relatedSignatures[$signature['id']]) {
foreach ($relatedSignatures[$signature['id']] as $relatedSignature) {
echo $this->Html->link($relatedSignature['Signature']['event_id'], array('controller' => 'events', 'action' => 'view', $relatedSignature['Signature']['event_id']));
echo ' ';
}
}
?>
</td>
<td><?php echo $signature['to_ids'] ? 'Yes' : 'No';?></td>
<td class="actions" style="text-align:right;">
<?php