-
-
Save cmcintosh/e16835459a317b7791b7 to your computer and use it in GitHub Desktop.
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\comment_timer\Plugin\Field\FieldWidget\NumberWidget. | |
| */ | |
| namespace Drupal\comment_timer\Plugin\Field\FieldWidget; | |
| use Drupal\Core\Field\FieldItemListInterface; | |
| use Drupal\Core\Field\FieldDefinitionInterface; | |
| use Drupal\Core\Field\WidgetBase; | |
| use Drupal\Core\Form\FormStateInterface; | |
| /** | |
| * Plugin implementation of the 'comment_timer' widget. | |
| * | |
| * @FieldWidget( | |
| * id = "comment_timer", | |
| * label = @Translation("Comment Timer"), | |
| * field_types = { | |
| * "integer" | |
| * } | |
| * ) | |
| */ | |
| class CommentTimerWidget extends WidgetBase { | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function isApplicable(FieldDefinitionInterface $field_definition) { | |
| return ($field_definition->getTargetEntityTypeID() === 'comment'); | |
| } | |
| public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) { | |
| // $element += array( | |
| // '#type' => 'number', | |
| // '#default_value' => $value, | |
| // '#placeholder' => $this->getSetting('placeholder'), | |
| // '#attached' => array( | |
| // 'library' => array( | |
| // 'comment_timer/comment_timer' | |
| // ) | |
| // ) | |
| // ); | |
| $element += array( | |
| '#type' => 'fieldset', | |
| '#prefix' => '<div class="container-inline">', | |
| '#suffix' => '</div>', | |
| '#collapsible' => TRUE, | |
| '#collapsed' => FALSE, | |
| '#tree' => TRUE, | |
| '#title' => t('Comment timer'), | |
| '#attached' => array( | |
| 'library' => array( | |
| 'comment_timer/comment_timer' | |
| ) | |
| ) | |
| ); | |
| $element['seconds'] = array( | |
| '#type' => 'textfield', | |
| '#description' => t('Time to store (hh:mm:ss)'), | |
| '#size' => '8', | |
| '#default_value' => '', | |
| ); | |
| $element['elapsed'] = array( | |
| '#type' => 'textfield', | |
| '#description' => t('Time spent (hh:mm:ss)'), | |
| '#size' => '8', | |
| '#default_value' => _comment_timer_seconds_to_hms($seconds), | |
| // This is the ID the JS works on. | |
| '#id' => 'edit-comment-timer-counter', | |
| ); | |
| $element['status'] = array( | |
| '#type' => 'select', | |
| '#default_value' => $status, | |
| '#options' => array( | |
| 1 => t('Include in node time'), | |
| 0 => t('Exclude from node time'), | |
| ), | |
| ); | |
| $element['reset'] = array( | |
| '#type' => 'button', | |
| '#value' => t('Reset'), | |
| // This is the ID the JS works on. | |
| '#id' => 'edit-comment-timer-reset', | |
| ); | |
| $element['pause'] = array( | |
| '#type' => 'button', | |
| '#value' => t('Pause'), | |
| // This is the ID the JS works on. | |
| '#id' => 'edit-comment-timer-pause', | |
| ); | |
| // Set the step for floating point and decimal numbers. | |
| switch ($this->fieldDefinition->getType()) { | |
| case 'decimal': | |
| $element['#step'] = pow(0.1, $field_settings['scale']); | |
| break; | |
| case 'float': | |
| $element['#step'] = 'any'; | |
| break; | |
| } | |
| // Set minimum and maximum. | |
| if (is_numeric($field_settings['min'])) { | |
| $element['#min'] = $field_settings['min']; | |
| } | |
| if (is_numeric($field_settings['max'])) { | |
| $element['#max'] = $field_settings['max']; | |
| } | |
| // Add prefix and suffix. | |
| if ($field_settings['prefix']) { | |
| $prefixes = explode('|', $field_settings['prefix']); | |
| $element['#field_prefix'] = $this->fieldFilterXss(array_pop($prefixes)); | |
| } | |
| if ($field_settings['suffix']) { | |
| $suffixes = explode('|', $field_settings['suffix']); | |
| $element['#field_suffix'] = $this->fieldFilterXss(array_pop($suffixes)); | |
| } | |
| return array('value' => $element); | |
| } | |
| } |
[Tue Jan 27 06:37:13 2015] [error] [client 192.168.50.1] Uncaught PHP Exception Drupal\Core\Entity\EntityStorageException: "SQLSTATE[42S22]: Column not found: 1054 Unknown column 'comment_timer' in 'field list': INSERT INTO {comment_field_data} (cid, comment_type, langcode, pid, entity_id, subject, uid, name, mail, homepage, hostname, created, changed, status, thread, entity_type, field_name, comment_timer, default_langcode) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11, :db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14, :db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17, :db_insert_placeholder_18); Array\n(\n [:db_insert_placeholder_0] => 15\n [:db_insert_placeholder_1] => comment\n [:db_insert_placeholder_2] => en\n [:db_insert_placeholder_3] => 0\n [:db_insert_placeholder_4] => 1\n [:db_insert_placeholder_5] => 1\n [:db_insert_placeholder_6] => 1\n [:db_insert_placeholder_7] => cmcintosh\n [:db_insert_placeholder_8] => \n [:db_insert_placeholder_9] => \n [:db_insert_placeholder_10] => 192.168.50.1\n [:db_insert_placeholder_11] => 1422340632\n [:db_insert_placeholder_12] => 1422340632\n [:db_insert_placeholder_13] => 1\n [:db_insert_placeholder_14] => 0c/\n [:db_insert_placeholder_15] => node\n [:db_insert_placeholder_16] => comment\n [:db_insert_placeholder_17] => 1\n [:db_insert_placeholder_18] => 1\n)\n" at /var/www/article_work/sandbox/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php line 913, referer: http://sandbox.dev/comment/reply/node/1/comment
Uncaught PHP Exception Drupal\Component\Plugin\Exception\PluginException: "Plugin (comment_timer) instance class "Drupal\comment_timer\Plugin\Field\FieldWidget\CommentTimerWidget" does not exist." at /var/www/article_work/sandbox/core/lib/Drupal/Component/Plugin/Factory/DefaultFactory.php