function CreateControls()
 {
     require_once 'xhtml/forms/form-part.class.php';
     require_once 'xhtml/forms/textbox.class.php';
     $role = $this->GetDataObject();
     # add id
     $id_box = new TextBox('item', (string) $role->getRoleId());
     $id_box->SetMode(TextBoxMode::Hidden());
     $this->AddControl($id_box);
     # add name
     $name_box = new TextBox('name', $role->getRoleName(), $this->IsValidSubmit());
     $name_box->AddAttribute('maxlength', 100);
     $name = new FormPart('Role name', $name_box);
     $this->AddControl($name);
     # Permissions
     if (!$this->IsPostback() or $this->IsValidSubmit()) {
         $permissions = $role->Permissions()->ToArray();
         foreach ($permissions as $permission => $scopes) {
             foreach ($scopes as $scope => $ignore) {
                 if ($scope == PermissionType::GLOBAL_PERMISSION_SCOPE) {
                     $scope = "";
                 }
                 $this->permissions_editor->DataObjects()->Add(new IdValue($permission, $scope));
             }
         }
     }
     $this->AddControl(new FormPart("Permissions", $this->permissions_editor));
 }
 function CreateControls()
 {
     require_once 'xhtml/forms/form-part.class.php';
     require_once 'xhtml/forms/checkbox.class.php';
     require_once 'xhtml/forms/textbox.class.php';
     $this->AddCssClass('legacy-form');
     $user = $this->GetDataObject();
     # add id
     $id_box = new TextBox('item', (string) $user->GetId());
     $id_box->SetMode(TextBoxMode::Hidden());
     $this->AddControl($id_box);
     # add name
     $name_box = new TextBox('known_as', $user->GetName(), $this->IsValidSubmit());
     $name_box->AddAttribute('maxlength', 210);
     $name = new FormPart('Nickname', $name_box);
     $this->AddControl($name);
     # add first name
     $fname_box = new TextBox('name_first', $user->GetFirstName(), $this->IsValidSubmit());
     $fname_box->AddAttribute('maxlength', 100);
     $fname = new FormPart('First name', $fname_box);
     $this->AddControl($fname);
     # add last name
     $lname_box = new TextBox('name_last', $user->GetLastName(), $this->IsValidSubmit());
     $lname_box->AddAttribute('maxlength', 100);
     $lname = new FormPart('Last name', $lname_box);
     $this->AddControl($lname);
     # add email
     $email_box = new TextBox('email', $user->GetEmail(), $this->IsValidSubmit());
     $email_box->AddAttribute('maxlength', 100);
     $email = new FormPart('Email', $email_box);
     $this->AddControl($email);
     # Is account disabled?
     $this->AddControl(new CheckBox("disabled", "Account disabled", 1, $user->GetAccountDisabled(), $this->IsValidSubmit()));
     # Permissions
     if (!$this->IsPostback() or $this->IsValidSubmit()) {
         foreach ($user->Roles() as $role) {
             /* @var $role Role */
             $this->roles_editor->DataObjects()->Add($role);
         }
     }
     $this->AddControl(new FormPart("Roles", $this->roles_editor));
 }
 function CreateControls()
 {
     $this->AddCssClass('legacy-form');
     /* @var $team Team */
     /* @var $comp Competition */
     $season = $this->GetDataObject();
     /* @var $season Season */
     require_once 'xhtml/forms/form-part.class.php';
     require_once 'xhtml/forms/textbox.class.php';
     require_once 'xhtml/forms/radio-button.class.php';
     require_once 'xhtml/forms/checkbox.class.php';
     # Show fewer options for a new season than when editing, beacause a new season gets settings copied from last year to save time
     $b_is_new_season = !(bool) $season->GetId();
     # Add competition
     $comp = $season->GetCompetition();
     $competition = new TextBox($this->GetNamingPrefix() . 'competition', $comp->GetId());
     $competition->SetMode(TextBoxMode::Hidden());
     $this->AddControl($competition);
     # Make current short URL available, because then it can match the suggested one and be left alone
     $short_url = new TextBox($this->GetNamingPrefix() . 'ShortUrl', $season->GetShortUrl());
     $short_url->SetMode(TextBoxMode::Hidden());
     $this->AddControl($short_url);
     # add years
     $start_box = new TextBox('start', is_null($season->GetStartYear()) ? Date::Year(gmdate('U')) : $season->GetStartYear(), $this->IsValidSubmit());
     $start_box->AddAttribute('maxlength', 4);
     $start = new FormPart('Year season starts', $start_box);
     $this->AddControl($start);
     $summer = new RadioButton('summer', 'when', 'Summer season', 0);
     $winter = new RadioButton('winter', 'when', 'Winter season', 1);
     if ($season->GetEndYear() > $season->GetStartYear()) {
         $winter->SetChecked(true);
     } else {
         $summer->SetChecked(true);
     }
     $when = new XhtmlElement('div', $summer);
     $when->AddControl($winter);
     $when->SetCssClass('formControl');
     $when_legend = new XhtmlElement('legend', 'Time of year');
     $when_legend->SetCssClass('formLabel');
     $when_fs = new XhtmlElement('fieldset', $when_legend);
     $when_fs->SetCssClass('formPart');
     $when_fs->AddControl($when);
     $this->AddControl($when_fs);
     # add intro
     $intro_box = new TextBox('intro', $season->GetIntro(), $this->IsValidSubmit());
     $intro_box->SetMode(TextBoxMode::MultiLine());
     $intro = new FormPart('Introduction', $intro_box);
     $this->AddControl($intro);
     if (!$b_is_new_season) {
         # add types of matches
         if (!$this->IsPostback() or $this->b_saving_new and $this->IsValidSubmit()) {
             foreach ($season->MatchTypes()->GetItems() as $i_type) {
                 $this->match_types_editor->DataObjects()->Add(new IdValue($i_type, ucfirst(MatchType::Text($i_type))));
             }
         }
         $this->AddControl(new FormPart('Match types', $this->match_types_editor));
         # add results
         $result_container = new XhtmlElement('div');
         $result_box = new TextBox('results', $season->GetResults(), $this->IsValidSubmit());
         $result_box->SetMode(TextBoxMode::MultiLine());
         $result_container->AddControl($result_box);
         $result = new FormPart('Results', $result_container);
         $result->GetLabel()->AddAttribute('for', $result_box->GetXhtmlId());
         $this->AddControl($result);
         # Add rules table
         $rules = new XhtmlTable();
         $rules->SetCaption('Points for each result');
         $header = new XhtmlRow(array('Result', 'Points for home team', 'Points for away team'));
         $header->SetIsHeader(true);
         $rules->AddRow($header);
         foreach ($this->result_types as $result) {
             /* @var $result MatchResult */
             # Shouldn't ever need to assign points to a postponed match
             if ($result->GetResultType() == MatchResult::POSTPONED) {
                 continue;
             }
             # Populate result with points from season rule
             $season->PossibleResults()->ResetCounter();
             while ($season->PossibleResults()->MoveNext()) {
                 if ($season->PossibleResults()->GetItem()->GetResultType() == $result->GetResultType()) {
                     $result->SetHomePoints($season->PossibleResults()->GetItem()->GetHomePoints());
                     $result->SetAwayPoints($season->PossibleResults()->GetItem()->GetAwayPoints());
                     break;
                 }
             }
             # Create table row
             $home_box = new TextBox($this->GetNamingPrefix() . 'Result' . $result->GetResultType() . 'Home', $result->GetHomePoints(), $this->IsValidSubmit());
             $away_box = new TextBox($this->GetNamingPrefix() . 'Result' . $result->GetResultType() . 'Away', $result->GetAwayPoints(), $this->IsValidSubmit());
             $home_box->AddAttribute('class', 'pointsBox');
             $away_box->AddAttribute('class', 'pointsBox');
             $result_row = new XhtmlRow(array(MatchResult::Text($result->GetResultType()), $home_box, $away_box));
             $rules->AddRow($result_row);
         }
         $result_container->AddControl($rules);
         # Add points adjustments
         $this->adjustments_editor->SetTeams($season->GetTeams());
         if (!$this->IsPostback() or $this->b_saving_new and $this->IsValidSubmit()) {
             $this->adjustments_editor->DataObjects()->SetItems($season->PointsAdjustments()->GetItems());
         }
         $result_container->AddControl($this->adjustments_editor);
         # Show league table?
         $table = new CheckBox('showTable', 'Show results table', 1, $season->GetShowTable());
         $this->AddControl($table);
         $this->AddControl(new CheckBox('runsScored', 'Include runs scored', 1, $season->GetShowTableRunsScored()));
         $this->AddControl(new CheckBox('runsConceded', 'Include runs conceded', 1, $season->GetShowTableRunsConceded()));
         # add teams
         if (!$this->IsPostback() or $this->b_saving_new and $this->IsValidSubmit()) {
             $teams_in_season = array();
             foreach ($season->GetTeams() as $team) {
                 $teams_in_season[] = new TeamInSeason($team, $season, is_object($season->TeamsWithdrawnFromLeague()->GetItemByProperty('GetId', $team->GetId())));
             }
             $this->teams_editor->DataObjects()->SetItems($teams_in_season);
         }
         $this->AddControl(new FormPart('Teams', $this->teams_editor));
     }
 }