예제 #1
0
 /** @inheritdoc */
 public static function displayForm($value, &$settings, $model)
 {
     if (!is_array($value)) {
         $value = array('src' => $value);
     }
     $metadata = $model->metadata();
     $settings = static::settings($settings);
     $settings['label'] = isset($settings['label']) ? $settings['label'] : true;
     $settings['required'] = isset($settings['required']) ? $settings['required'] : false;
     $settings['errors'] = $model->getErrorsForField($settings['mapping']['fieldName']);
     $settings['has_errors'] = count($settings['errors']) > 0;
     $settings['model'] = $metadata->name;
     $preview_value = isset($value) && isset($value['src']) ? str_replace($settings['path'], '', $value['src']) : '';
     // Prepare the crop settings
     if ($settings['crop'] === true) {
         $settings['crop'] = array('main' => array('title' => 'Main Crop'));
     }
     if (is_array($settings['crop'])) {
         $crop_options = array();
         foreach ($settings['crop'] as $crop_id => $crop_settings) {
             if (is_string($crop_settings)) {
                 $crop_settings = array('title' => $crop_settings);
             }
             $crop_settings['id'] = $crop_id;
             $crop_options[] = $crop_settings;
         }
         $settings['crop'] = $crop_options;
     }
     $content = strval(\View::forge('admin/fields/image.twig', array('settings' => $settings, 'value' => $value, 'preview_value' => $preview_value), false));
     $attributes = array('class' => 'field-type-file image controls control-group' . ($settings['has_errors'] ? ' error' : ''), 'data-field-name' => $settings['mapping']['fieldName'], 'id' => 'field-' . \CMF::fieldId($settings['mapping']['fieldName']));
     if (!(isset($settings['wrap']) && $settings['wrap'] === false)) {
         $content = html_tag('div', $attributes, $content);
     }
     $output = array('content' => $content, 'widget' => false);
     $output['js_data'] = $settings;
     return $output;
 }