first import

This commit is contained in:
Bachir Soussi Chiadmi
2015-04-08 11:40:19 +02:00
commit 1bc61b12ad
8435 changed files with 1582817 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
<?php
/**
* @file
* Base plugin implementation.
*/
/**
* Parent class for all handlers.
*/
class draggableviews_handler {
/**
* Get the weight value.
*
* @param object $field
* Draggableviews field handler. View is $field->view,
* to get a row $field->view->result[$index].
* @param int $index
* Index of the row.
*
* @return int
* Weight value.
*/
public function get($field, $index) {}
/**
* Save weight value.
*
* @param $form_state
* Attay of form state of the form.
* View object $form_state['values']['view'].
*/
public function set($form_state) {}
/**
* Form with settings of the handler.
*
* @param object $field
* Draggableviews field handler.
*
* @return array
* Form array.
*/
public function options_form($field) {}
/**
* Settings form default values.
*
* @return array
* Array with default values.
*/
public function option_definition() {}
}

View File

@@ -0,0 +1,116 @@
<?php
/**
* @file
* Field API handler plugin.
*/
$plugin = array(
'label' => 'FieldAPI',
'handler' => array(
'class' => 'draggableviews_handler_fieldapi',
),
);
class draggableviews_handler_fieldapi extends draggableviews_handler {
/**
* Set default value of field option.
*/
public function option_definition() {
return array('field' => '');
}
/**
* Add field options for handler.
*/
function options_form($field) {
$form = array();
$options = array('' => t('- Select -'));
// Check all the sortings added to a view. Hope there is
// better way to determine them. Need to research.
foreach ($field->view->display_handler->display->display_options['sorts'] as $sort_option) {
$field_name = $sort_option['field'];
// Field should be like "field_name_value".
if (strpos($field_name, 'field_') === FALSE || strpos($field_name, '_value') === FALSE) {
continue;
}
// Remove "_value" from field name and try to load the field.
$field_name = drupal_substr($field_name, 0, drupal_strlen($field_name) - 6);
if ($field_info = field_info_field($field_name)) {
if ($field_info['type'] == 'number_integer') {
$views_field_data = field_views_field_default_views_data($field_info);
$options[$sort_option['table'] . ':' . $sort_option['field']] = filter_xss($views_field_data[$sort_option['table']][$sort_option['field']]['title']);
}
}
}
// If options are emtpy, show warning message.
if (count($options) == 1) {
$form['field_warning'] = array(
'#markup' => '<div class="messages warning">' . t('Add weight integer field to sorts so it can be selected.') . '</div>',
);
}
$form['field'] = array(
'#type' => 'select',
'#title' => t('Field'),
'#options' => $options,
'#default_value' => $field->options['draggableviews']['draggableviews_handler_fieldapi']['field'],
'#description' => t('Please select field that contains weight. It should be integer type and already added to sorts of the view.'),
);
return $form;
}
function get($field, $index) {
// Get the name of selected field.
$field_option = $field->options['draggableviews']['draggableviews_handler_fieldapi']['field'];
list($field_table, $field_name) = explode(':', $field_option);
// Current row.
$row = $field->view->result[$index];
// Check whether key has table name and field name in it.
foreach ($row as $key => $value) {
if (strpos($key, $field_table) !== FALSE && strpos($key, $field_name) !== FALSE) {
return $value;
}
}
}
function set($form_state) {
$fv = $form_state['values'];
$view = $form_state['build_info']['args'][0];
$view_name = $view->name;
$view_display = $view->current_display;
// View arguments.
$arguments = $view->args;
if (isset($view->exposed_raw_input)) {
$arguments += $view->exposed_raw_input;
ksort($arguments);
// Redirect view to the same page with exposed filters set.
$form_state['redirect'] = array(current_path(), array('query' => $view->exposed_raw_input));
}
$base_table = $view->base_table;
$entity_info_all = entity_get_info();
$entity_type = '';
foreach ($entity_info_all as $entity_name_key => $entity_info) {
if ($entity_info['base table'] == $view->base_table) {
$entity_type = $entity_name_key;
break;
}
}
$options_field = $view->field['draggableviews']->options['draggableviews']['draggableviews_handler_fieldapi']['field'];
list($field_tabe, $field_column) = explode(':', $options_field);
// Remove '_value' from column name to get field name.
$field_name = drupal_substr($field_column, 0, drupal_strlen($field_column) - 6);
// Save the values of the field.
foreach ($fv['draggableviews'] as $item) {
$entity_wrapper = entity_metadata_wrapper($entity_type, $item['id']);
$entity_wrapper->{$field_name}->set($item['weight']);
$entity_wrapper->save();
}
}
}

View File

@@ -0,0 +1,61 @@
<?php
/**
* @file
* Native handler plugin.
*/
$plugin = array(
'label' => 'Native',
'handler' => array(
'class' => 'draggableviews_handler_native',
),
);
class draggableviews_handler_native extends draggableviews_handler {
public function get($field, $index) {
$row = $field->view->result[$index];
return (isset($row->draggableviews_structure_weight)) ? $row->draggableviews_structure_weight : 0;
}
function set($form_state) {
$fv = $form_state['values'];
$view = $form_state['build_info']['args'][0];
$view_name = $view->name;
$view_display = $view->current_display;
// View arguments.
$arguments = $view->args;
if (isset($view->exposed_raw_input)) {
$arguments += $view->exposed_raw_input;
ksort($arguments);
// Redirect view to the same page with exposed filters set.
$form_state['redirect'] = array(current_path(), array('query' => $view->exposed_raw_input));
}
// Give other modules a chance to alter saved arguments.
drupal_alter('draggableviews_handler_native_arguments', $arguments, $view, $fv['draggableviews']);
$args_string = json_encode($arguments);
// Save records to our custom table.
foreach ($fv['draggableviews'] as $item) {
// Delete previous order record.
db_delete('draggableviews_structure')
->condition('view_name', $view_name)
->condition('view_display', $view_display)
->condition('args', $args_string)
->condition('entity_id', $item['id'])
->execute();
// Create new order record.
$record = array(
'view_name' => $view_name,
'view_display' => $view_display,
'args' => $args_string,
'entity_id' => $item['id'],
'weight' => $item['weight'],
);
drupal_write_record('draggableviews_structure', $record);
}
}
}