filterField = $filterField; $this->managedClass = $managedClass; parent::__construct($name, $title, Permission::get_codes(true)); } function Field() { Requirements::css(SAPPHIRE_DIR . '/css/CheckboxSetField.css'); $source = $this->source; $values = array(); // Get values from the join, if available if(is_object($this->form)) { $record = $this->form->getRecord(); if ($record && $record->hasMethod($this->name)) { $funcName = $this->name; $join = $record->$funcName(); if($join) { foreach($join as $joinItem) { $values[] = $joinItem->Code; } } } } $odd = 0; $options = ''; if($source) { foreach($source as $categoryName => $permissions) { $options .= "
  • $categoryName
  • "; foreach($permissions as $code => $permission) { $key = $code; $value = $permission['name']; $odd = ($odd + 1) % 2; $extraClass = $odd ? 'odd' : 'even'; $extraClass .= ' val' . str_replace(' ', '', $key); $itemID = $this->id() . '_' . ereg_replace('[^a-zA-Z0-9]+', '', $key); $checked = ''; $checked = in_array($key, $values) ? ' checked="checked"' : ''; $title = $permission['help'] ? 'title="'.htmlentities($permission['help']).'" ' : ''; $options .= "
  • name[$key]\" type=\"checkbox\" value=\"$key\"$checked class=\"checkbox\" />
  • \n"; } } } return "\n"; } function saveInto(DataObject $record) { $fieldname = $this->name; $managedClass = $this->managedClass; $record->$fieldname()->removeAll(); if($fieldname && $record && ($record->has_many($fieldname) || $record->many_many($fieldname))) { $idList = array(); if($this->value) foreach($this->value as $id => $bool) { if($bool) { $perm = new $managedClass(); $perm->{$this->filterField} = $record->ID; $perm->Code = $id; $perm->write(); } } } } }