示例#1
0
 public function __construct($name = null)
 {
     parent::__construct($name);
     $year = $name . '[year]';
     $month = $name . '[month]';
     $day = $name . '[day]';
     $year = Select::create($year, null, true);
     $month = Select::create($month, null, true);
     $day = Select::create($day, null, true);
     $yearOptions = [];
     for ($i = date('Y') - 100; $i < date('Y'); $i++) {
         $yearOptions[$i] = $i;
     }
     $monthOptions = [1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April', 5 => 'May', 6 => 'June', 7 => 'July', 8 => 'August', 9 => 'September', 10 => 'October', 11 => 'November', 12 => 'December'];
     $dayOptions = [];
     for ($i = 1; $i <= 31; $i++) {
         $dayOptions[$i] = $i;
     }
     $year->setOptions($yearOptions);
     $month->setOptions($monthOptions);
     $day->setOptions($dayOptions);
     $this->addField($year);
     $this->addField($month);
     $this->addField($day);
 }
示例#2
0
 public function testElements()
 {
     $e = new Form\Element\Button();
     $this->assertTrue($e->validate());
     $this->assertTrue(strpos($e->render(), 'button') !== false);
     $e = new Form\Element\Checkbox();
     $e->setCheckedValue('ten');
     $this->assertTrue($e->getCheckedValue() == 'ten');
     $this->assertTrue(strpos($e->render(), 'checkbox') !== false);
     $this->assertTrue(strpos($e->render(), 'checked') === false);
     $e->setValue(true);
     $this->assertTrue(strpos($e->render(), 'checked') !== false);
     $e->setValue('ten');
     $this->assertTrue(strpos($e->render(), 'checked') !== false);
     $e->setValue('fail');
     $this->assertTrue(strpos($e->render(), 'checked') === false);
     $e = new Form\Element\CheckboxGroup();
     $this->assertTrue(strpos($e->render(), 'group') !== false);
     $e = new Form\ControlGroup();
     $this->assertTrue(strpos($e->render(), 'group') !== false);
     $e = new Form\Element\Email();
     $this->assertTrue(strpos($e->render(), 'email') !== false);
     $e = new Form\Element\Select();
     $e->setOptions(array('key' => 'Val'));
     $html = $e->render();
     $this->assertTrue(strpos($html, 'select') !== false);
     $this->assertTrue(strpos($html, 'option') !== false);
     $this->assertTrue(strpos($html, 'key') !== false);
     $this->assertTrue(strpos($html, 'Val') !== false);
     $e = new Form\Element\Submit();
     $this->assertTrue($e->validate());
     $this->assertTrue(strpos($e->render(), 'submit') !== false);
     $e = new Form\Element\Text();
     $e->setValue('test');
     $this->assertTrue(strpos($e->render(), 'test') !== false);
     $e = new Form\Element\TextArea();
     $e->setRows(10);
     $this->assertTrue(strpos($e->render(), '10') !== false);
     $e = new Form\Element\Url();
     $this->assertTrue(strpos($e->render(), 'url') !== false);
 }
示例#3
0
 /**
  * Create add / edit project form.
  */
 protected function projectForm($values, $type = 'add')
 {
     $form = new Form();
     $form->setMethod('POST');
     $form->setAction(PHPCI_URL . 'project/' . $type);
     $form->addField(new Form\Element\Csrf('csrf'));
     $form->addField(new Form\Element\Hidden('pubkey'));
     $options = array('choose' => Lang::get('select_repository_type'), 'github' => Lang::get('github'), 'bitbucket' => Lang::get('bitbucket'), 'gitlab' => Lang::get('gitlab'), 'remote' => Lang::get('remote'), 'local' => Lang::get('local'), 'hg' => Lang::get('hg'), 'svn' => Lang::get('svn'));
     $field = Form\Element\Select::create('type', Lang::get('where_hosted'), true);
     $field->setPattern('^(github|bitbucket|gitlab|remote|local|hg|svn)');
     $field->setOptions($options);
     $field->setClass('form-control')->setContainerClass('form-group');
     $form->addField($field);
     $container = new Form\ControlGroup('github-container');
     $container->setClass('github-container');
     $field = Form\Element\Select::create('github', Lang::get('choose_github'), false);
     $field->setClass('form-control')->setContainerClass('form-group');
     $container->addField($field);
     $form->addField($container);
     $field = Form\Element\Text::create('reference', Lang::get('repo_name'), true);
     $field->setValidator($this->getReferenceValidator($values));
     $field->setClass('form-control')->setContainerClass('form-group');
     $form->addField($field);
     $field = Form\Element\Text::create('title', Lang::get('project_title'), true);
     $field->setClass('form-control')->setContainerClass('form-group');
     $form->addField($field);
     $field = Form\Element\TextArea::create('key', Lang::get('project_private_key'), false);
     $field->setClass('form-control')->setContainerClass('form-group');
     $field->setRows(6);
     $form->addField($field);
     $field = Form\Element\TextArea::create('build_config', Lang::get('build_config'), false);
     $field->setClass('form-control')->setContainerClass('form-group');
     $field->setRows(6);
     $form->addField($field);
     $field = Form\Element\Text::create('branch', Lang::get('default_branch'), true);
     $field->setClass('form-control')->setContainerClass('form-group')->setValue('master');
     $form->addField($field);
     $field = Form\Element\Select::create('group_id', 'Project Group', true);
     $field->setClass('form-control')->setContainerClass('form-group')->setValue(1);
     $groups = array();
     $groupStore = b8\Store\Factory::getStore('ProjectGroup');
     $groupList = $groupStore->getWhere(array(), 100, 0, array(), array('title' => 'ASC'));
     foreach ($groupList['items'] as $group) {
         $groups[$group->getId()] = $group->getTitle();
     }
     $field->setOptions($groups);
     $form->addField($field);
     $field = Form\Element\Checkbox::create('allow_public_status', Lang::get('allow_public_status'), false);
     $field->setContainerClass('form-group');
     $field->setCheckedValue(1);
     $field->setValue(0);
     $form->addField($field);
     $field = Form\Element\Checkbox::create('archived', Lang::get('archived'), false);
     $field->setContainerClass('form-group');
     $field->setCheckedValue(1);
     $field->setValue(0);
     $form->addField($field);
     $field = new Form\Element\Submit();
     $field->setValue(Lang::get('save_project'));
     $field->setContainerClass('form-group');
     $field->setClass('btn-success');
     $form->addField($field);
     $form->setValues($values);
     return $form;
 }
示例#4
0
 protected function userForm($values, $type = 'add')
 {
     $form = new FormElement();
     $form->setMethod('POST');
     if ($type == 'add') {
         $form->setAction($this->config->get('site.full_admin_url') . '/user/add');
     } else {
         $form->setAction($this->config->get('site.full_admin_url') . '/user/edit/' . $values['id']);
     }
     $form->setClass('smart-form');
     $fieldset = new Form\FieldSet('fieldset');
     $form->addField($fieldset);
     if (isset($values['id'])) {
         $field = new Form\Element\Hidden('id');
         $field->setRequired(true);
         $field->setValue($values['id']);
         $fieldset->addField($field);
     }
     $field = new Form\Element\Text('name');
     $field->setRequired(true);
     $field->setLabel('Name');
     $fieldset->addField($field);
     $field = new Form\Element\Email('email');
     $field->setRequired(true);
     $field->setLabel('Email Address');
     $fieldset->addField($field);
     $field = new Form\Element\Password('password');
     if ($type == 'add') {
         $field->setRequired(true);
     } else {
         $field->setRequired(false);
     }
     $field->setLabel('Password' . ($type == 'edit' ? ' (leave blank to keep current password)' : ''));
     $fieldset->addField($field);
     if ($this->currentUser->getIsAdmin()) {
         $field = new Form\Element\Select('is_admin');
         $field->setRequired(false);
         $field->setLabel('Administrator');
         $field->setOptions([0 => 'No', 1 => 'Yes']);
         $fieldset->addField($field);
     }
     $data = [&$form, &$values];
     Event::trigger('userForm', $data);
     list($form, $values) = $data;
     $fieldset = new Form\FieldSet('fieldset3');
     $form->addField($fieldset);
     $field = new Form\Element\Submit();
     $field->setValue('Save User');
     $field->setClass('btn-success');
     $fieldset->addField($field);
     $form->setValues($values);
     return $form;
 }
示例#5
0
 public function __construct($name = null)
 {
     parent::__construct($name);
     $this->setPattern('(male|female|other)');
     $this->setOptions(['male' => 'Male', 'female' => 'Female', 'other' => 'Other']);
 }
示例#6
0
 public function __construct($name = null)
 {
     parent::__construct($name);
     $this->setOptions($this->countries);
     $this->setValue('GB');
 }
 /**
  * Get the Basic settings form.
  * @param array $values
  * @return Form
  */
 protected function getBasicForm($values = array())
 {
     $form = new Form();
     $form->setMethod('POST');
     $form->setAction(PHPCI_URL . 'settings/basic');
     $field = new Form\Element\Select('language');
     $field->setRequired(true);
     $field->setLabel(Lang::get('language'));
     $field->setClass('form-control');
     $field->setContainerClass('form-group');
     $field->setOptions(Lang::getLanguageOptions());
     $field->setValue(Lang::getLanguage());
     $form->addField($field);
     $field = new Form\Element\Submit();
     $field->setValue(Lang::get('save'));
     $field->setClass('btn btn-success pull-right');
     $form->addField($field);
     $form->setValues($values);
     return $form;
 }
示例#8
0
 /**
  * Allows the user to edit their profile.
  * @return string
  */
 public function profile()
 {
     $user = $_SESSION['phpci_user'];
     if ($this->request->getMethod() == 'POST') {
         $name = $this->getParam('name', null);
         $email = $this->getParam('email', null);
         $password = $this->getParam('password', null);
         $currentLang = Lang::getLanguage();
         $chosenLang = $this->getParam('language', $currentLang);
         if ($chosenLang !== $currentLang) {
             setcookie('phpcilang', $chosenLang, time() + 10 * 365 * 24 * 60 * 60, '/');
             Lang::setLanguage($chosenLang);
         }
         $_SESSION['phpci_user'] = $this->userService->updateUser($user, $name, $email, $password);
         $user = $_SESSION['phpci_user'];
         $this->view->updated = 1;
     }
     $this->layout->title = $user->getName();
     $this->layout->subtitle = Lang::get('edit_profile');
     $values = $user->getDataArray();
     if (array_key_exists('phpcilang', $_COOKIE)) {
         $values['language'] = $_COOKIE['phpcilang'];
     }
     $form = new Form();
     $form->setAction(PHPCI_URL . 'user/profile');
     $form->setMethod('POST');
     $name = new Form\Element\Text('name');
     $name->setClass('form-control');
     $name->setContainerClass('form-group');
     $name->setLabel(Lang::get('name'));
     $name->setRequired(true);
     $form->addField($name);
     $email = new Form\Element\Email('email');
     $email->setClass('form-control');
     $email->setContainerClass('form-group');
     $email->setLabel(Lang::get('email_address'));
     $email->setRequired(true);
     $form->addField($email);
     $password = new Form\Element\Password('password');
     $password->setClass('form-control');
     $password->setContainerClass('form-group');
     $password->setLabel(Lang::get('password_change'));
     $password->setRequired(false);
     $form->addField($password);
     $lang = new Form\Element\Select('language');
     $lang->setClass('form-control');
     $lang->setContainerClass('form-group');
     $lang->setLabel(Lang::get('language'));
     $lang->setRequired(true);
     $lang->setOptions(Lang::getLanguageOptions());
     $form->addField($lang);
     $submit = new Form\Element\Submit();
     $submit->setClass('btn btn-success');
     $submit->setValue(Lang::get('save'));
     $form->addField($submit);
     $form->setValues($values);
     $this->view->form = $form;
     return $this->view->render();
 }
示例#9
0
 /**
  * @param View $view
  */
 protected function onPreRender(View &$view)
 {
     parent::onPreRender($view);
 }
示例#10
0
 /**
  * Create add / edit project form.
  */
 protected function projectForm($values, $type = 'add')
 {
     $form = new Form();
     $form->setMethod('POST');
     $form->setAction(PHPCI_URL . 'project/' . $type);
     $form->addField(new Form\Element\Csrf('csrf'));
     $form->addField(new Form\Element\Hidden('pubkey'));
     $options = array('choose' => 'Select repository type...', 'github' => 'Github', 'bitbucket' => 'Bitbucket', 'gitlab' => 'Gitlab', 'remote' => 'Remote URL', 'local' => 'Local Path', 'hg' => 'Mercurial');
     $field = Form\Element\Select::create('type', 'Where is your project hosted?', true);
     $field->setPattern('^(github|bitbucket|gitlab|remote|local|hg)');
     $field->setOptions($options);
     $field->setClass('form-control')->setContainerClass('form-group');
     $form->addField($field);
     $container = new Form\ControlGroup('github-container');
     $container->setClass('github-container');
     $field = Form\Element\Select::create('github', 'Choose a Github repository:', false);
     $field->setClass('form-control')->setContainerClass('form-group');
     $container->addField($field);
     $form->addField($container);
     $field = Form\Element\Text::create('reference', 'Repository Name / URL (Remote) or Path (Local)', true);
     $field->setValidator($this->getReferenceValidator($values));
     $field->setClass('form-control')->setContainerClass('form-group');
     $form->addField($field);
     $field = Form\Element\Text::create('title', 'Project Title', true);
     $field->setClass('form-control')->setContainerClass('form-group');
     $form->addField($field);
     $title = 'Private key to use to access repository (leave blank for local and/or anonymous remotes)';
     $field = Form\Element\TextArea::create('key', $title, false);
     $field->setClass('form-control')->setContainerClass('form-group');
     $field->setRows(6);
     $form->addField($field);
     $label = 'PHPCI build config for this project (if you cannot add a phpci.yml file in the project repository)';
     $field = Form\Element\TextArea::create('build_config', $label, false);
     $field->setClass('form-control')->setContainerClass('form-group');
     $field->setRows(6);
     $form->addField($field);
     $field = Form\Element\Text::create('branch', 'Default branch name', true);
     $field->setValidator($this->getReferenceValidator($values));
     $field->setClass('form-control')->setContainerClass('form-group')->setValue('master');
     $form->addField($field);
     $label = 'Enable public status page and image for this project?';
     $field = Form\Element\Checkbox::create('allow_public_status', $label, false);
     $field->setContainerClass('form-group');
     $field->setCheckedValue(1);
     $field->setValue(1);
     $form->addField($field);
     $field = new Form\Element\Submit();
     $field->setValue('Save Project');
     $field->setContainerClass('form-group');
     $field->setClass('btn-success');
     $form->addField($field);
     $form->setValues($values);
     return $form;
 }
示例#11
0
 public function __construct($name = null)
 {
     parent::__construct($name);
     $this->setPattern('(mr|mrs|miss|ms|dr|prof)');
     $this->setOptions(['mr' => 'Mr', 'mrs' => 'Mrs', 'miss' => 'Miss', 'ms' => 'Ms', 'dr' => 'Doctor', 'prof' => 'Professor']);
 }