diff --git a/code/AssetAdmin.php b/code/AssetAdmin.php index 3d4725b2..1067f4a3 100755 --- a/code/AssetAdmin.php +++ b/code/AssetAdmin.php @@ -310,6 +310,8 @@ HTML; $form->makeReadonly(); } + $this->extend('updateEditForm', $form); + return $form; } } diff --git a/code/CMSMain.php b/code/CMSMain.php index f584db12..85ed7daf 100755 --- a/code/CMSMain.php +++ b/code/CMSMain.php @@ -457,6 +457,8 @@ JS; $readonlyFields = $form->Fields()->makeReadonly(); $form->setFields($readonlyFields); } + + $this->extend('updateEditForm', $form); return $form; } if ($id == 0) { @@ -467,6 +469,9 @@ JS; } $form = new Form($this, "EditForm", $fields, $siteConfig->getFormActions()); $form->loadDataFrom($siteConfig); + + $this->extend('updateEditForm', $form); + return $form; } else if($id) { return new Form($this, "EditForm", new FieldSet( diff --git a/code/GroupImportForm.php b/code/GroupImportForm.php new file mode 100644 index 00000000..b5f55eab --- /dev/null +++ b/code/GroupImportForm.php @@ -0,0 +1,68 @@ +(Allowed extensions: *.csv)' + ) + ) + ); + $fileField->setAllowedExtensions(array('csv')); + } + + if(!$actions) $actions = new FieldSet( + new FormAction('doImport', _t('SecurityAdmin_MemberImportForm.BtnImport', 'Import')) + ); + + if(!$validator) $validator = new RequiredFields('CsvFile'); + + + parent::__construct($controller, $name, $fields, $actions, $validator); + } + + function doImport($data, $form) { + $loader = new GroupCsvBulkLoader(); + + // load file + $result = $loader->load($data['CsvFile']['tmp_name']); + + // result message + $msgArr = array(); + if($result->CreatedCount()) $msgArr[] = sprintf( + _t('GroupImportForm.ResultCreated', 'Created %d groups'), + $result->CreatedCount() + ); + if($result->UpdatedCount()) $msgArr[] = sprintf( + _t('GroupImportForm.ResultUpdated', 'Updated %d groups'), + $result->UpdatedCount() + ); + if($result->DeletedCount()) $msgArr[] = sprintf( + _t('GroupImportForm.ResultDeleted', 'Deleted %d groups'), + $result->DeletedCount() + ); + $msg = ($msgArr) ? implode(',', $msgArr) : _t('MemberImportForm.ResultNone', 'No changes'); + + $this->sessionMessage($msg, 'good'); + + Director::redirectBack(); + } + +} +?> \ No newline at end of file diff --git a/code/SecurityAdmin.php b/code/SecurityAdmin.php index d97656e9..516b9818 100644 --- a/code/SecurityAdmin.php +++ b/code/SecurityAdmin.php @@ -26,7 +26,9 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider { 'MemberForm', 'EditForm', 'MemberImportForm', - 'memberimport' + 'memberimport', + 'GroupImportForm', + 'groupimport', ); /** @@ -59,13 +61,37 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider { public function getEditForm($id) { $record = null; + // Root form if (($id == 'root' || $id == 0)) { - $form = $this->RootForm(); - $this->extend('augmentRootForm', $form); + $fields = new FieldSet( + new TabSet( + 'Root', + new Tab('Import', _t('SecurityAdmin.TABIMPORT', 'Import'), + new LiteralField( + 'GroupImportFormIframe', + sprintf( + '', + $this->Link('groupimport') + ) + ) + ) + ), + // necessary for tree node selection in LeftAndMain.EditForm.js + new HiddenField('ID', false, 0) + ); + + $actions = new FieldSet(); + + $form = new Form( + $this, + 'EditForm', + $fields, + $actions + ); return $form; } - + if($id && $id != 'root') { $record = DataObject::get_by_id($this->stat('tree_class'), $id); } @@ -74,16 +100,27 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider { $fields = $record->getCMSFields(); + if($fields->hasTabSet()) { + $fields->findOrMakeTab('Root.Import',_t('Group.IMPORTTABTITLE', 'Import')); + $fields->addFieldToTab('Root.Import', + new LiteralField( + 'MemberImportFormIframe', + sprintf( + '', + $this->Link('memberimport') + ) + ) + ); + } + $actions = new FieldSet( new FormAction('addmember',_t('SecurityAdmin.ADDMEMBER','Add Member')), new FormAction('save',_t('SecurityAdmin.SAVE','Save')) ); - + $form = new Form($this, "EditForm", $fields, $actions); $form->loadDataFrom($record); - - if(!$record->canEdit()) { $readonlyFields = $form->Fields()->makeReadonly(); $form->setFields($readonlyFields); @@ -92,7 +129,7 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider { // Filter permissions $permissionField = $form->Fields()->dataFieldByName('Permissions'); if($permissionField) $permissionField->setHiddenPermissions(self::$hidden_permissions); - + return $form; } @@ -124,6 +161,33 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider { return $form; } + + public function groupimport() { + Requirements::clear(); + Requirements::css(SAPPHIRE_DIR . '/css/Form.css'); + Requirements::css(CMS_DIR . '/css/typography.css'); + Requirements::css(CMS_DIR . '/css/cms_right.css'); + + Requirements::javascript(CMS_DIR . '/javascript/MemberImportForm.js'); + + return $this->renderWith('BlankPage', array( + 'Form' => $this->GroupImportForm() + )); + } + + /** + * @see SecurityAdmin_MemberImportForm + * + * @return Form + */ + public function GroupImportForm() { + $form = new GroupImportForm( + $this, + 'GroupImportForm' + ); + + return $form; + } public function AddRecordForm() { $m = Object::create('MemberTableField',