Делаем на перспективу - у проектов есть флаг "опубликован", но нету "текущий" или уже "прошел". То есть закрыть соревнования как бы нельзя. В разработке каких-нибудь "примочек" для JL такая опция, думаю, не помешает - знать прошли уже эти соревнования или ещё идут.
Итак, делаем бэкапы, берем отвертку и начинаем крутить:
1) Создаем поле `active` с таблице проектов:
ALTER TABLE `jos_joomleague` ADD `active` TINYINT(1) NOT NULL DEFAULT '0' AFTER `published`
2) Открываем /administrator/components/com_joomleague/templates/
edit_list_projects.tpl.phpищем
<th width="10%" align="center" nowrap="nowrap"><?php echo _JL_ADMIN_PUBLISHED;?></th>
под ней дописываем →
<th width="10%" align="center" nowrap="nowrap">Active</th>
[spoiler title=ищем ниже]<?php
$task = $row->published ? 'unpublish' : 'publish';
$img = $row->published ? 'tick.png' : 'publish_x.png';
?>
<td width="10%" align="center">
<a href="javascript: void(0);" onclick="return listItemTask('cb<?php echo $i;?>','<?php echo $task;?>')">
<img src="images/<?php echo $img;?>" width="12" height="12" border="0" alt="" />
</a>
</td>
<?php
$k = 1 - $k; } ?>[/spoiler]
[spoiler title=перепишем этот кусок вот как:]<?php
$task = $row->published ? 'unpublish' : 'publish';
$img = $row->published ? 'tick.png' : 'publish_x.png';
$task2 = $row->active ? 'unactive' : 'active';
$img2 = $row->active ? 'tick.png' : 'publish_x.png';
?>
<td width="10%" align="center">
<a href="javascript: void(0);" onclick="return listItemTask('cb<?php echo $i;?>','<?php echo $task;?>')">
<img src="images/<?php echo $img;?>" width="12" height="12" border="0" alt="" />
</a>
</td>
<td width="10%" align="center">
<a href="javascript: void(0);" onclick="return listItemTask('cb<?php echo $i;?>','<?php echo $task2;?>')">
<img src="images/<?php echo $img2;?>" width="12" height="12" border="0" alt="" /></a>
</td>
<?php
$k = 1 - $k; } ?>[/spoiler]
Теперь в списке проектов появилась ещё одна колонка "Active":
2) Открываем файл /administrator/components/com_joomleague/classes/
joomleague.class.phpИщем вверху
дописываем под этим
Например НАД
// Pagenavigation
function pagenav($jl_func,$rlimit, $current='',$user='', $mode='') {
напишем такую функцию
[spoiler title=включатель/выключатель] function active_array( $cid=null, $active=1, $myid=0 ) {
if (!is_array( $cid ) || count( $cid ) < 1) {
$this->_error = "No items selected.";
return false;
}
$id = $cid[0];
$this->_db->setQuery( "UPDATE $this->_tbl SET active='$active'"
. "\nWHERE id = $id"
);
print $this->_db->getQuery();
if (!$this->_db->query()) {
$this->_error = $this->_db->getErrorMsg();
return false;
}
if (count( $cid ) == 1) {
$this->checkin( $cid[0] );
}
$this->_error = '';
}
[/spoiler]
3) Напоследок открываем /administrator/components/com_joomleague/
admin.joomleague.phpищем
break;
case 'projects':
switch($task){
и ниже допишем
case 'active':
$row = new JoomLeague( $database );
$round = $row->active_array($cid, 1, $my->id);
mosRedirect(JL_ADMIN_COMPONENT_LINK."&act=$act");
break;
case 'unactive':
$row = new JoomLeague( $database );
$round = $row->active_array($cid, 0, $my->id);
mosRedirect(JL_ADMIN_COMPONENT_LINK."&act=$act");
break;
Всё. "Можете пользоваться" © Афоня.
Удачи в экспериментах, друзья!