12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?php
- class flag_lists_handler_field_ops extends views_handler_field {
- function option_definition() {
- $options = parent::option_definition();
- $options['flo'] = array(
- 'contains' => array(
- 'force_single' => array('default' => FALSE),
- 'operation' => array('default' => 'flag'),
- ),
- );
- return $options;
- }
- function options_form(&$form, &$form_state) {
- parent::options_form($form, $form_state);
- $form['flo'] = array(
- '#type' => 'fieldset',
- '#title' => t('Flag lists operations'),
- '#collapsible' => FALSE,
- '#collapsed' => FALSE,
- );
- $form['flo']['force_single'] = array(
- '#type' => 'checkbox',
- '#title' => t('Force single'),
- '#default_value' => $this->options['flo']['force_single'],
- '#description' => t('Check this box to restrict selection to a single value.'),
- );
- $form['flo']['operation'] = array(
- '#type' => 'radios',
- '#title' => t('Operation'),
- '#default_value' => $this->options['flo']['operation'],
- '#description' => t('The flag lists operation for this selection.'),
- '#options' => array(
- 'flag' => 'Add to list',
- 'unflag' => 'Remove from list',
- ),
- '#required' => TRUE,
- );
- }
- /**
- * If the view is using a table style, provide a
- * placeholder for a "select all" checkbox.
- */
- function label() {
- if ($this->view->style_plugin instanceof views_plugin_style_table && !$this->options['flo']['force_single']) {
- return '<!--flag-lists-ops-select-all-->';
- }
- else {
- return parent::label();
- }
- }
- function render($values) {
- return '<!--form-item-' . $this->options['id'] . '--' . $this->view->row_index . '-->';
- }
- function views_form(&$form, &$form_state) {
- // The view is empty, abort.
- if (empty($this->view->result)) {
- return;
- }
- $form[$this->options['id']] = array(
- '#tree' => TRUE,
- );
- // At this point, the query has already been run, so we can access the results
- // in order to get the base key value (for example, nid for nodes).
- foreach ($this->view->result as $row_index => $row) {
- $entity_id = $this->get_value($row);
- if ($this->options['flo']['force_single']) {
- $form[$this->options['id']][$row_index] = array(
- '#type' => 'radio',
- '#parents' => array($this->options['id']),
- '#return_value' => $entity_id,
- );
- }
- else {
- $form[$this->options['id']][$row_index] = array(
- '#type' => 'checkbox',
- '#return_value' => $entity_id . (isset($row->flag_lists_flags_fid) ? ('-' . $row->flag_lists_flags_fid) : ''),
- '#default_value' => FALSE,
- '#attributes' => array('class' => array('flo-select')),
- );
- }
- }
- }
- }
|