diff --git a/presentation/lookAndFeel/knowledgeTree/administration/permissions/manageFieldsets.php b/presentation/lookAndFeel/knowledgeTree/administration/permissions/manageFieldsets.php new file mode 100644 index 0000000..0643132 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/administration/permissions/manageFieldsets.php @@ -0,0 +1,177 @@ +loadTemplate("ktcore/manage_fieldsets"); + $aTemplateData = array( + "fieldsets" => $aFieldSets, + ); + return $oTemplate->render($aTemplateData); + } + + function handleOutput($data) { + global $main; + $main->bFormDisabled = true; + $main->setCentralPayload($data); + $main->render(); + } + + /** assumption: this particular path is NOT followed by plugins. This sets */ + function do_newFieldset() { + $name = KTUtil::arrayGet($_REQUEST, 'name'); + $namespace = KTUtil::arrayGet($_REQUEST, 'namespace'); + if (empty($name) || empty($namespace)) { + return $this->errorRedirectToMain("Both a human name and a namespace are required and not given"); + } + $oFieldSet = DocumentFieldSet::createFromArray(array( + 'name' => $name, + 'namespace' => $namespace, + 'mandatory' => 0, /* user-created fieldsets can be deleted by users. */ + )); + global $default; + $default->log->debug('Trying to create a new fieldset.' . $oFieldSet->bMandatory); + $oFieldSet = $oFieldSet->create(); + if (PEAR::isError($oFieldSet)) { + return $this->errorRedirectToMain("Error creating fieldset"); + } + /** FIXME: why is this errorRedirectToMain */ + return $this->errorRedirectToMain("Fieldset created"); + } + + + function do_deleteFieldset() { + $id = KTUtil::arrayGet($_REQUEST, 'id'); + if (empty($id)) { + return $this->errorRedirectToMain("No id specified."); + } + $oFieldSet= DocumentFieldSet::get($id); + if (PEAR::isError($oFieldSet)) { + return $this->errorRedirectToMain("Error finding fieldset"); + } + if ($oFieldSet->getMandatory() === true) { + return $this->errorRedirectToMain("Can't delete a mandatory permission"); + } + $res = $oFieldSet->delete(); + if (PEAR::isError($res)) { + return $this->errorRedirectToMain("Error deleting fieldset"); + } + return $this->errorRedirectToMain("FieldSet deleted"); + } + + function do_editFieldset() { + $id = KTUtil::arrayGet($_REQUEST, 'id'); + $oTemplating = new KTTemplating; + $oFieldSet =& DocumentFieldSet::get($id); + if (PEAR::isError($oFieldSet)) { + return $this->errorRedirectToMain("No such fieldset."); + } + $childFields =& DocumentField::getList('parent_fieldset = ' . $id); + $freeFields =& DocumentField::getList('parent_fieldset IS NULL'); + $oTemplate = $oTemplating->loadTemplate("ktcore/edit_fieldset"); + $aTemplateData = array( + 'setId' => $id, + 'children' => $childFields, + 'freefields' => $freeFields, + 'fieldSet' => $oFieldSet, + ); + return $oTemplate->render($aTemplateData); + } + + function do_addToFieldset() { + $id = KTUtil::arrayGet($_REQUEST, 'id'); + $fieldsToAdd = KTUtil::arrayGet($_REQUEST, 'fieldsToAdd'); + if (empty($id)) { + return $this->errorRedirectToMain("No id specified."); + } + if (empty($fieldsToAdd)) { + return $this->errorRedirectToMain("No fields specified."); + } + $oFieldSet= DocumentFieldSet::get($id); + if (PEAR::isError($oFieldSet)) { + return $this->errorRedirectToMain("Error finding fieldset"); + } + // DEBUG LOGGING + //global $default; + // we now have a working fieldset, and need to go through + // each added item, and set this to be its parent_fieldset. + if (is_array($fieldsToAdd)) // multiple passed in + { + foreach ($fieldsToAdd as $fieldToAdd) + { + $addField =& DocumentField::get($fieldToAdd); + $addField->setParentFieldset($id); + $addField->update(); + //$default->log->debug('MASSADD TO FIELDSET: ' . $addField->getParentFieldset()); + } + } + else + { + $addField =& DocumentField::get($fieldsToAdd); + $addField->setParentFieldset($id); + $addField->update(); + //$default->log->debug('ADD TO FIELDSET: ' . $addField->getParentFieldset()); + } + + return $this->errorRedirectToMain("Fields added."); + } + + function do_removeFromFieldset() { + $id = KTUtil::arrayGet($_REQUEST, 'id'); + $fieldsToRemove = KTUtil::arrayGet($_REQUEST, 'fieldsToRemove'); + global $default; + $default->log->debug('PREREMOVE: ' . $fieldsToRemove); + if (empty($id)) { + return $this->errorRedirectToMain("No id specified."); + } + if (empty($fieldsToRemove)) { + return $this->errorRedirectToMain("No fields specified."); + } + $oFieldSet= DocumentFieldSet::get($id); + if (PEAR::isError($oFieldSet)) { + return $this->errorRedirectToMain("Error finding fieldset"); + } + // DEBUG LOGGING + global $default; + // we now have a working fieldset, and need to go through + // each added item, and set this to be its parent_fieldset. + if (is_array($fieldsToRemove)) // multiple passed in + { + foreach ($fieldsToRemove as $fieldToRemove) + { + $addField =& DocumentField::get($fieldToRemove); + $addField->setParentFieldset(null); + $addField->update(); + $default->log->debug('MASSREMOVE FROM FIELDSET: ' . $addField->getParentFieldset()); + } + } + else + { + $addField =& DocumentField::get($fieldsToRemove); + $addField->setParentFieldset(null); + $addField->update(); + $default->log->debug('REMOVE FROM FIELDSET: ' . $addField->getParentFieldset()); + } + + return $this->errorRedirectToMain("Fields removed."); + } + + function do_addConditions() { + $fieldset_id = KTUtil::arrayGet($_REQUEST, 'fieldset_id'); + } + +} + +$oDispatcher = new ManageFieldsetsDispatcher(); +$oDispatcher->dispatch(); + +?>