DocentBF · 16 февраля 2017, 09:51 На примере CSV. 1. Создаем кнопку, например, в верхнем баре: getTopBar: function() { return [{ text: '<i class="icon icon-chevron-up"></i> ' + _('modExtra_items_export'), handler: this.exportCSV, // функция-обработчик кнопки scope: this }] 2. Добавляем виджет-окно импорта с выбором файла: modExtra.window.ImportCSV = function(config) { config = config || {}; this.ident = config.ident || 'modextra'+Ext.id(); Ext.applyIf(config,{ title: _('modextra_items_import') ,id: this.ident ,fileUpload: true ,autoHeight: true ,width: 650 ,url: modExtra.config.connector_url ,action: 'mgr/item/import' // процессор загрузки и обработки файла, находится по пути modExtra/processors/mgr/item/import.class.php ,fields: [ { xtype: 'fileuploadfield', fieldLabel: _('modextra_window_import_file'), allowBlank: false } ] ,keys: [ { key: Ext.EventObject.ENTER ,shift: true ,fn: function() {this.submit() } ,scope: this } ] }); modExtra.window.ImportCSV.superclass.constructor.call(this,config); }; Ext.extend(modExtra.window.ImportCSV,MODx.Window); Ext.reg('modextra-window-import-csv',modExtra.window.ImportCSV);3. Создаете handler кнопки, расширяя grid: Ext.extend(modExtra.grid.Items, MODx.grid.Grid, { windows: {}, importCSV: function (btn, e) { if (!this.windows.ImportCSV) { this.windows.ImportCSV = MODx.load({ xtype: 'modextra-window-import-csv' ,listeners: { 'success': {fn:function(){this.refresh();},scope:this} ,'failure': {fn:function(){console.log("error")}} } }); } this.windows.ImportCSV.fp.getForm().reset(); this.windows.ImportCSV.show(e.target); }, ...4. Создаем процессор импорта (/core/components/modextra/processors/mgr/item/import.class.php): <?php /** * Import */ include_once MODX_CORE_PATH . 'model/modx/processors/browser/file/upload.class.php'; class modExtraImportProcessor extends modBrowserFileUploadProcessor { public $objectType = 'modExtraItem'; public $classKey = 'modExtraItem'; public $languageTopics = array('modExtra'); public function initialize() { $this->setDefaultProperties(array( 'source' => 0, 'path' => 'assets/components/modExtra/files/', )); if (!$this->getProperty('path')) return $this->modx->lexicon('file_folder_err_ns'); return true; } /** {inheritDoc} */ public function process(){ if (!$this->getSource()) { return $this->failure($this->modx->lexicon('permission_denied')); } $this->source->setRequestProperties($this->getProperties()); $this->source->initialize(); $this->source->setProperties(array('basePath'=>'')); if (!$this->source->checkPolicy('create')) { return $this->failure($this->modx->lexicon('permission_denied')); } $success = $this->source->uploadObjectsToContainer($this->getProperty('path'),$_FILES); $file_n = current($_FILES); $file = is_array($_FILES) ? $file_n['name'] : false; if (empty($success) || !$file) { $msg = ''; $errors = $this->source->getErrors(); foreach ($errors as $k => $msg) { $this->modx->error->addField($k,$msg); } return $this->failure($msg); } else { $file = $_SERVER['DOCUMENT_ROOT'].'/'.$this->getProperty('path').$file; if(($handle = fopen($file,"r"))) { while(($data = fgetcsv($handle,null,';'))) { /* Далее код разборки CSV и сохранение нового объекта $rec = $modx->newObject(); $rec->set('field', $data[$n]) $rec->save(); */ } @unlink($file); } } return $this->success(); } } return 'modExtraImportProcessor';Код написан на скорую руку, может быть кто-то поправит?) Вопросы / Знатоки ExtJS подскажите, загрузка файла 3 +1 2
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
1. Создаем кнопку, например, в верхнем баре:
2. Добавляем виджет-окно импорта с выбором файла:
3. Создаете handler кнопки, расширяя grid:
4. Создаем процессор импорта (/core/components/modextra/processors/mgr/item/import.class.php):
Код написан на скорую руку, может быть кто-то поправит?)