/** * {@inheritdoc} */ public function form(array $form, FormStateInterface $form_state) { $account = \Drupal::currentUser(); $form = parent::form($form, $form_state); $form['grade_letter_sets'] = array('#tree' => TRUE, '#weight' => -20); $form['grade_letter_sets']['letters'] = array('#type' => 'table', '#header' => array(t('Name'), t('Description'), t('Lowest'), t('Highest'), t('Weight'), t('Operations')), '#empty' => $this->t('No grade letters available. <a href=":grade-letter">Add a grade letter</a>', array(':grade-letter' => $this->url('grade_letter.letter_add', array('grade_letter_set' => $this->entity->id())))), '#attributes' => array('id' => 'grade_letter_sets'), '#tabledrag' => array(array('action' => 'order', 'relationship' => 'sibling', 'group' => 'grade-letter-weight'))); foreach ($this->entity->getGradeLetters() as $grade_letter) { $id = $grade_letter->id(); $form['grade_letter_sets']['letters'][$id]['#attributes']['class'][] = 'draggable'; $form['grade_letter_sets']['letters'][$id]['name'] = array('#type' => 'markup', '#markup' => $grade_letter->getTitle()); $form['grade_letter_sets']['letters'][$id]['description'] = array('#type' => 'markup', '#markup' => $grade_letter->getDescription()); $form['grade_letter_sets']['letters'][$id]['lowest'] = array('#type' => 'markup', '#markup' => $grade_letter->getLowest() . '%'); $form['grade_letter_sets']['letters'][$id]['highest'] = array('#type' => 'markup', '#markup' => $grade_letter->getHighest() . '%'); unset($form['grade_letter_sets']['letters'][$id]['name']['#access_callback']); $form['grade_letter_sets']['letters'][$id]['#weight'] = $grade_letter->getWeight(); $form['grade_letter_sets']['letters'][$id]['weight'] = array('#type' => 'weight', '#title' => t('Weight for @title', array('@title' => $grade_letter->getTitle())), '#title_display' => 'invisible', '#default_value' => $grade_letter->getWeight(), '#attributes' => array('class' => array('grade-letter-weight'))); $links['edit'] = array('title' => t('Edit'), 'url' => $grade_letter->toUrl()); $links['delete'] = array('title' => t('Delete'), 'url' => $grade_letter->toUrl('delete-form')); $form['grade_letter_sets']['letters'][$id]['operations'] = array('#type' => 'operations', '#links' => $links, '#access' => $account->hasPermission('administer grade letters')); } return $form; }
/** * Returns a form to add a new grade letter to a given set. * * @param \Drupal\gradebook\GradeLetterSetInterface $grade_letter_set * The grade letter set this grade letter will be added to. * * @return array * The grade letter add form. */ public function addForm(GradeLetterSetInterface $grade_letter_set) { $grade_letter = $this->entityManager()->getStorage('grade_letter')->create(array('grade_letter_set' => $grade_letter_set->id())); return $this->entityFormBuilder()->getForm($grade_letter, 'add'); }