示例#1
0
 private function _add($ds)
 {
     $data = $this->request->post();
     try {
         $type = $data['type'];
         unset($data['type']);
         $field = DataSource_Hybrid_Field::factory($type, $data);
         $field_id = DataSource_Hybrid_Field_Factory::create_field($ds->record(), $field);
     } catch (Validation_Exception $e) {
         Session::instance()->set('post_data', $this->request->post());
         Messages::errors($e->errors('validation'));
         $this->go_back();
     } catch (Kohana_Exception $e) {
         Messages::errors($e->getMessage());
         $this->go_back();
     }
     if (!$field_id) {
         $this->go_back();
     }
     Session::instance()->delete('post_data');
     if ($this->request->post('save_and_create') !== NULL) {
         $this->go(Route::get('datasources')->uri(array('controller' => 'field', 'directory' => 'hybrid', 'action' => 'add', 'id' => $ds->id())));
     } else {
         $this->go(Route::get('datasources')->uri(array('directory' => 'hybrid', 'controller' => 'field', 'action' => 'edit', 'id' => $field_id)));
     }
 }
示例#2
0
 /**
  * Получение списка объектов доступных в системе полей.
  * Используется в момент создания поля.
  * 
  * @return array array([TYPE] => [DataSource_Hybrid_Field], ... )
  */
 public static function get_empty_fields()
 {
     $filed_types = self::types();
     $fields = array();
     foreach ($filed_types as $type => $title) {
         if (is_array($title)) {
             foreach ($title as $type => $title) {
                 $fields[$type] = DataSource_Hybrid_Field::factory($type);
             }
         } else {
             $fields[$type] = DataSource_Hybrid_Field::factory($type);
         }
     }
     return $fields;
 }
示例#3
0
<?php

$fields = DataSource_Hybrid_Field_Factory::get_section_fields($ds_id);
$order_fields = array();
foreach ($doc_order as $data) {
    $order_fields[key($data)] = $data[key($data)];
}
$selected_fields = array();
$available_fields = array();
$fields[] = DataSource_Hybrid_Field::factory('primitive_string', array('family' => DataSource_Hybrid_Field::FAMILY_PRIMITIVE, 'name' => 'header', 'id' => 'header', 'header' => __('Header')));
$fields[] = DataSource_Hybrid_Field::factory('primitive_integer', array('family' => DataSource_Hybrid_Field::FAMILY_PRIMITIVE, 'name' => 'id', 'id' => 'id', 'header' => __('ID')));
$fields[] = DataSource_Hybrid_Field::factory('primitive_datetime', array('family' => DataSource_Hybrid_Field::FAMILY_PRIMITIVE, 'name' => 'created_on', 'id' => 'created_on', 'header' => __('Created on')));
foreach ($fields as $field) {
    if (!$field->is_sortable()) {
        continue;
    }
    if (!isset($order_fields[$field->id])) {
        $available_fields[$field->id] = $field->header;
    } else {
        $ids[$field->id] = $field->header;
    }
}
foreach ($doc_order as $data) {
    if (isset($ids[key($data)])) {
        $selected_fields[key($data)] = ($data[key($data)] == Model_Widget_Decorator::ORDER_ASC ? '+' : '-') . ' ' . $ids[key($data)];
    }
}
?>
<script>
$(function() {
	var sf = $('#sf'),
示例#4
0
 /**
  * Преобразование массива в объект поля
  * 
  * @see DataSource_Hybrid_Field_Factory::get_fields()
  * 
  * @param array $array
  * @return null|\DataSource_Hybrid_Field
  * @throws Kohana_Exception
  */
 public static function get_field_from_array(array $array = NULL)
 {
     if (empty($array) or !isset($array['type'])) {
         return NULL;
     }
     $class_name = 'DataSource_Hybrid_Field_' . $array['type'];
     if (!class_exists($class_name)) {
         return NULL;
     }
     if (isset($array['props'])) {
         $props = Kohana::unserialize($array['props']);
         unset($array['props']);
         if (is_array($props)) {
             $array = Arr::merge($array, $props);
         }
     }
     $result = DataSource_Hybrid_Field::factory($array['type'], $array);
     $result->set_id(Arr::get($array, 'id'));
     $result->set_ds(Arr::get($array, 'ds_id'));
     return $result;
 }