Target:
To let user can order the teams of one certain group(like 超組) of a season.
Database Change
Tables: jos_bl_grteams
PHP Change
/administrator/components/com_joomsport/admin.joomsport.html.php
Change 'JS_getObj' function defination
Append:
// added by Vincent 23-Oct-2011
function VINZ_popOdreredTeam(formName, srcListName, hidInputName)
{
var form = eval( 'document.' + formName );
var srcList = eval( 'form.' + srcListName );
var hidInput = eval( 'form.' + hidInputName );
var teamIDs = "vince";
var srcLen = srcList.length;
for (var i=0; i < srcLen; i++)
{
teamIDs += "," + srcList.options[i].value;
}
hidInput.value = teamIDs;
//alert(teamIDs);
}
This will be invoked in the submit function in Group Save function.
Change 'bl_editGroup' function defination:
Insert lines: ----- add the javascript function to record the ordered team ids
// added by Vincent 23-Oct-2011
VINZ_popOdreredTeam('adminForm','teams_seasons', 'vin_order');
// end
To:
function submitbutton(pressbutton) {
var form = document.adminForm;
if (pressbutton == 'group_save' || pressbutton == 'group_apply') {
if(form.group_name.value != "" && form.s_id.value != 0){
if('<?php echo $row->id?>' != 0){
var srcListName = 'teams_seasons';
var srcList = eval( 'form.' + srcListName );
if(srcList){
var srcLen = srcList.length;
for (var i=0; i < srcLen; i++) {
srcList.options[i].selected = true;
}
}
}
// added by Vincent 23-Oct-2011
<?php
if($row->id && $row->s_id)
{
?>
VINZ_popOdreredTeam('adminForm','teams_seasons', 'vin_order');
// end
<?php
}
?>
submitform( pressbutton );
return;
}else{
alert("<?php echo JText::_( 'BLBE_JSMDNOT10' ); ?>");
}
}else{
submitform( pressbutton );
return;
}
}
Insert line: ---- add the hidden input field
<!-- order added by Vincent -->
<input type="hidden" name="vin_order" value="this is a test" />
<!-- end -->
To:
<?php
}
?>
<!-- order added by Vincent -->
<input type="hidden" name="vin_order" value="this is a test" />
<!-- end -->
<input type="hidden" name="option" value="<?php echo $option?>" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="id" value="<?php echo $row->id?>" />
<input type="hidden" name="boxchecked" value="0" />
<?php echo JHTML::_( 'form.token' ); ?>
</form>
/administrator/components/com_joomsport/admin.joomsport.php
Change 'BL_GroupEdit' function defination --------- Add 'ORDER' clause to the SELECT query
From:
if($is_id)
{
$query = "SELECT * FROM #__bl_teams as t, #__bl_season_teams as st WHERE st.season_id = ".$row->s_id." AND t.id = st.team_id";
$db->setQuery($query);
$teams = $db->loadObjectList();
$lists['teams'] = @JHTML::_('select.genericlist', $teams, 'teams_id', 'class="inputbox" size="10" multiple', 'id', 't_name', 0 );
$query = "SELECT t.id as id, t.t_name as t_name " .
"FROM #__bl_season_teams as st, #__bl_teams as t, #__bl_grteams as gr " .
"WHERE gr.t_id = t.id AND gr.g_id = "
.$row->id
." AND st.season_id = "
.$row->s_id
." AND t.id = st.team_id";
$db->setQuery($query);
$teams_season = $db->loadObjectList();
...
To:
if($is_id)
{
$query = "SELECT * FROM #__bl_teams as t, #__bl_season_teams as st WHERE st.season_id = ".$row->s_id." AND t.id = st.team_id ORDER BY t.id";
$db->setQuery($query);
$teams = $db->loadObjectList();
$lists['teams'] = @JHTML::_('select.genericlist', $teams, 'teams_id', 'class="inputbox" size="10" multiple', 'id', 't_name', 0 );
$query = "SELECT t.id as id, t.t_name as t_name, gr.vin_g_order as g_order " .
"FROM #__bl_season_teams as st, #__bl_teams as t, #__bl_grteams as gr " .
"WHERE gr.t_id = t.id AND gr.g_id = "
.$row->id
." AND st.season_id = "
.$row->s_id
." AND t.id = st.team_id ORDER BY g_order";
$db->setQuery($query);
$teams_season = $db->loadObjectList();
Change 'BL_GroupSave' function defination --------- Receive the 'vin_order' hidden input from front end and insert into database with order
From:
...
$teams_season = JRequest::getVar( 'teams_seasons', array(0), '', 'array' );
JArrayHelper::toInteger($teams_season, '');
if(count($teams_season)){
foreach($teams_season as $teams){
$query = "INSERT INTO #__bl_grteams(g_id,t_id) VALUES(".$row->id.",".$teams.")";
$db->setQuery($query);
$db->query();
}
}
...
To:
...
// added by Vincent 23-Oct-2011
$order_test = JRequest::getVar( 'vin_order', 'failed', '', 'String');
$team_ids = explode(",", $order_test);
array_shift($team_ids);
JArrayHelper::toInteger($team_ids, '');
if(count($team_ids)){
$vin_ord = 1;
foreach($team_ids as $teams){
$query = "INSERT INTO #__bl_grteams(g_id, t_id, vin_g_order) VALUES(" . $row->id . "," . $teams . "," . $vin_ord .")";
$db->setQuery($query);
$db->query();
$vin_ord++;
}
}
...
/components/com_joomsport/views/homevsaway/view.html.php
Change 'display' function defination ---- change the SELECT query with 'ORDER'
From:
...
$query = "SELECT t.id, t.t_name FROM #__bl_teams AS t, #__bl_grteams AS gt " .
"WHERE t.id = gt.t_id AND gt.g_id ="
.$gr_id;
...
To:
...
$query = "SELECT t.id, t.t_name FROM #__bl_teams AS t, #__bl_grteams AS gt " .
"WHERE t.id = gt.t_id AND gt.g_id ="
.$gr_id
." ORDER BY gt.vin_g_order";
...