public function getGridColumns($editable = false)
 {
     $gridColumns = array();
     $primaryKeys = array();
     foreach ($this->getPrimaryKeys() as $primaryKey) {
         $primaryKeys[] = sfInflector::underscore($primaryKey);
     }
     $form = $this->configuration->getForm();
     $formFields = $form->getWidgetSchema()->getFields();
     foreach ($this->configuration->getValue('list.display') as $name => $field) {
         $params = array();
         // type du champ: $field->getType()
         $extjsParams = $this->getExtjsParams($field);
         $params['header'] = 'mmw.getI18nColumnHeader(' . sfMmwExtjsUtil::addQuote(sfMmwExtjsUtil::getSfExtjsNameFromField($this->getSingularName(), $name)) . ', ' . sfMmwExtjsUtil::addQuote($field->getConfig('label')) . ')';
         // check if the field is a key. If yes, set it to hidden
         if (in_array($name, $primaryKeys)) {
             $params['hidden'] = true;
         }
         $params['width'] = isset($extjsParams['width']) ? $extjsParams['width'] : '75';
         if (isset($extjsParams['renderer'])) {
             $params['renderer'] = $extjsParams['renderer'];
         }
         if (isset($extjsParams['sortable'])) {
             $params['sortable'] = $extjsParams['sortable'] ? 'true' : 'false';
         } else {
             if (isset($formFields[$name])) {
                 $params['sortable'] = 'true';
             } else {
                 $params['sortable'] = 'false';
             }
         }
         $params['dataIndex'] = sfMmwExtjsUtil::getSfExtjsNameFromField($this->getSingularName(), $name, true);
         if (isset($formFields[$name])) {
             $widget = $form->getWidget($name);
             if ($editable) {
                 $validator = $form->getValidator($name);
                 $params['editor'] = $this->getExtjsField(true, $widget, $validator, $name);
             }
             switch (get_class($widget)) {
                 case 'sfWidgetFormDoctrineChoice':
                 case 'sfWidgetFormDoctrineSelect':
                     if ($editable) {
                         $params['renderer'] = 'function(value, metaData, record, rowIndex, colIndex) { return mmw.util.getRecordDisplayFieldValue(scope, colIndex, value); }';
                     }
                     break;
                 case 'sfWidgetFormInputCheckbox':
                     $params['renderer'] = 'function(value) { return scope.getRecordCheckboxDisplayImage(value); }';
                     break;
                 case 'sfWidgetFormDateTime':
                 case 'sfWidgetFormDate':
                     $params['renderer'] = 'function(value) { return scope.getRecordCorrectDateFormat(value); }';
                     break;
             }
         }
         $gridColumns[] = $this->getConfigArray($params);
     }
     return $this->toArray($gridColumns);
 }
Exemplo n.º 2
0
 public function getExtjsField($widget, $validator, $name, $label, $extjsParams = array())
 {
     $widgetOptions = $widget->getOptions();
     $result = array();
     $result['name'] = sfMmwExtjsUtil::getSfExtjsNameFromField($this->getSingularName(), $name, true);
     $result['itemId'] = $result['name'];
     $result['fieldLabel'] = sfMmwExtjsUtil::addQuote($label);
     $result['width'] = 250;
     if (!$validator->hasOption('required') || $validator->hasOption('required') && $validator->getOption('required') == true) {
         $result['allowBlank'] = 'false';
     } else {
         $result['allowBlank'] = 'true';
     }
     if ($validator->hasOption('max_length')) {
         $result['maxLength'] = $validator->getOption('max_length');
     }
     if ($validator->hasOption('min_length')) {
         $result['minLength'] = $validator->getOption('max_length');
     }
     // we get all parameters from the field, but for specific parameter, we may add it to extjs_params
     //$params = $field->getConfig('extjs_params', array());
     switch (get_class($widget)) {
         case 'sfWidgetFormInputHidden':
             $result['xtype'] = sfMmwExtjsUtil::addQuote('hidden');
             break;
         case 'sfWidgetFormInput':
             $result['xtype'] = sfMmwExtjsUtil::addQuote('textfield');
             break;
         case 'sfWidgetFormTextarea':
             $result['xtype'] = sfMmwExtjsUtil::addQuote('textarea');
             $result['width'] = isset($extjsParams['width']) ? $extjsParams['width'] : 230;
             $result['height'] = isset($extjsParams['height']) ? $extjsParams['height'] : 40;
             break;
             // single select
         // single select
         case 'sfWidgetFormDoctrineChoice':
             $model = sfMmwExtjsUtil::addQuote($widgetOptions['model']);
             $result['hiddenName'] = $result['name'];
             $result['name'] = sfMmwExtjsUtil::getSfExtjsNameFromField($this->getSingularName(), $name . '--name', true);
             $result['xtype'] = sfMmwExtjsUtil::addQuote('combo');
             $result['emptyText'] = sfMmwExtjsUtil::addQuote('Enter a value');
             $result['triggerAction'] = sfMmwExtjsUtil::addQuote('all');
             $result['mode'] = sfMmwExtjsUtil::addQuote('local');
             //				$result['store'] = 'new mmw.'.sfInflector::underscore($widgetOptions['model']).'Store';
             $result['store'] = 'new Ext.data.ArrayStore()';
             $result['displayField'] = 'mmw.baseSf' . ucfirst(sfInflector::underscore($widgetOptions['model'])) . 'Object.displayField';
             $result['valueField'] = 'mmw.baseSf' . ucfirst(sfInflector::underscore($widgetOptions['model'])) . 'Object.keyField';
             break;
         case 'sfWidgetFormInputCheckbox':
             $result['xtype'] = sfMmwExtjsUtil::addQuote('checkbox');
             break;
             // double select
         // double select
         case 'sfWidgetFormDoctrineChoiceMany':
             $model = sfMmwExtjsUtil::addQuote($widgetOptions['model']);
             $result['xtype'] = sfMmwExtjsUtil::addQuote('mmwItemSelector');
             $result['store'] = 'new mmw.' . sfInflector::underscore($widgetOptions['model']) . 'Store';
             $result['width'] = 450;
             break;
             /*
             case 'sfWidgetFormInputCheckbox':
             	$result['xtype'] = '';
             break;
             */
         /*
         case 'sfWidgetFormInputCheckbox':
         	$result['xtype'] = '';
         break;
         */
         case 'sfWidgetFormDateTime':
         case 'sfWidgetFormDate':
             $result['xtype'] = sfMmwExtjsUtil::addQuote('datefield');
             break;
         case 'sfWidgetFormInputFileEditable':
             $result['xtype'] = sfMmwExtjsUtil::addQuote('mmwFileUploadField');
             $result['emptyText'] = sfMmwExtjsUtil::addQuote('Select a file');
             $result['buttonText'] = sfMmwExtjsUtil::addQuote('');
             $result['buttonCfg'] = '{iconCls: \'upload-icon\'}';
             break;
         default:
             break;
     }
     switch (get_class($validator)) {
         case 'sfValidatorEmail':
             $result['vtype'] = sfMmwExtjsUtil::addQuote('email');
             break;
             //			case 'sfValidatorString':
             //				$result['vtype'] = sfMmwExtjsUtil::addQuote('alphanum');
             //			break;
         //			case 'sfValidatorString':
         //				$result['vtype'] = sfMmwExtjsUtil::addQuote('alphanum');
         //			break;
         case 'sfValidatorUrl':
             $result['vtype'] = sfMmwExtjsUtil::addQuote('url');
             break;
         case 'sfValidatorInteger':
             $result['vtype'] = sfMmwExtjsUtil::addQuote('num');
             break;
     }
     return $result;
 }
Exemplo n.º 3
0
Object;
		Ext.apply(this, this.initialConfig, {
			title: this.getLl('Title', new Array(this.sfObject.pluralHumanName, this.sfObject.pluralUpHumanName)<?php 
echo ($gridTitle = $this->configuration->getListTitle()) != null ? ', ' . sfMmwExtjsUtil::addQuote(addslashes($gridTitle)) : '';
?>
),
			line: Ext.data.Record.create([{}]),
			store: store,
			bbar: new Ext.PagingToolbar({
		        pageSize: 15,
		        store: store,
		        displayInfo: true,
		        displayMsg: this.getLl('PagerDisplayMsg', new Array(scope.sfObject.pluralHumanName, scope.sfObject.pluralUpHumanName, '{0}', '{1}', '{2}')<?php 
echo ($pagerCaption = $this->configuration->getListPagerCaption()) != null ? ', ' . sfMmwExtjsUtil::addQuote(addslashes($pagerCaption . ' {0} to {1} of {2}')) : '';
?>
),
		        emptyMsg: this.getLl('PagerEmptyMsg', new Array(scope.sfObject.humanName, scope.sfObject.upHumanName, '{0}', '{1}', '{2}')<?php 
echo ($pagerEmptyCaption = $this->configuration->getListPagerEmptyCaption()) != null ? ', ' . sfMmwExtjsUtil::addQuote(addslashes($pagerEmptyCaption)) : '';
?>
)
		    }),
			columns: <?php 
echo $this->getGridColumns(true);
?>
		});
		mmw.<?php 
echo $this->getSingularName();
?>
EditorGridPanel.superclass.initComponent.call(this);
	}
});