Commit 1b8c4e103a1f240a68e62868815122eec4a4f140

Authored by bshuttle
1 parent 42aefd94

fix for KTS-387: cannot make a generic fieldset type-specific, and vice versa.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@5698 c91229c3-7414-0410-bfa2-8a42b809f60b
plugins/ktcore/admin/documentFields.php
... ... @@ -103,6 +103,8 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
103 103 $editFieldset[] = new KTStringWidget(_kt('Name'), _kt('A human-readable name, used in add and edit forms.'), 'name',$oFieldset->getName(), $this->oPage, true);
104 104 $editFieldset[] = new KTStringWidget(_kt('Namespace'), _kt('Every fieldset needs to have a system name (used internally by the document management system). For fieldsets which you create, this is automatically created by the system, but for fieldsets created by plugins, this controls how the fieldset works.'), 'namespace', $oFieldset->getNamespace(), $this->oPage, true);
105 105 $editFieldset[] = new KTTextWidget(_kt('Description'), _kt('A brief description of the information stored in this fieldset.'), 'description', $oFieldset->getDescription(), $this->oPage, true);
  106 + $editFieldset[] = new KTCheckboxWidget(_kt('Generic'), _kt('Whether this fieldset applies to all documents, or only those directly associated with it. Note that changing this setting will cause the fieldset to be removed from document types which are related to it.'), 'generic', $oFieldset->getIsGeneric(), $this->oPage, false);
  107 +
106 108 $createFields = array();
107 109 $createFields[] = new KTStringWidget(_kt('Name'), _kt('A human-readable name, used in add and edit forms.'), 'name',null, $this->oPage, true);
108 110 $createFields[] = new KTTextWidget(_kt('Description'), _kt('A brief description of the information stored in this field.'), 'description', null, $this->oPage, true);
... ... @@ -159,9 +161,27 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher {
159 161 $aErrorOptions['message'] = sprintf(_kt("The field '%s' is a required field"), _kt("Description"));
160 162 $sDescription = $this->oValidator->validateString($_REQUEST['description'], $aErrorOptions);
161 163  
  164 + $bGeneric = KTUtil::arrayGet($_REQUEST, 'generic', false);
  165 + if ($bGeneric !== false) { $bGeneric = true; }
  166 +
  167 + $this->startTransaction();
  168 +
  169 + if ($bGeneric != $oFieldset->getIsGeneric) {
  170 + // delink it from all doctypes.
  171 + $aTypes = $oFieldset->getAssociatedTypes();
  172 + foreach ($aTypes as $oType) {
  173 + $res = KTMetadataUtil::removeSetsFromDocumentType($oType, $oFieldset->getId());
  174 + if (PEAR::isError($res)) {
  175 + $this->errorRedirectTo('edit', _kt('Could not save fieldset changes'), 'fFieldsetId=' . $oFieldset->getId());
  176 + exit(0);
  177 + }
  178 + }
  179 + }
  180 +
162 181 $oFieldset->setName($sName);
163 182 $oFieldset->setNamespace($sNamespace);
164 183 $oFieldset->setDescription($sDescription);
  184 + $oFieldset->setIsGeneric($bGeneric);
165 185 $res = $oFieldset->update();
166 186 if (PEAR::isError($res) || ($res === false)) {
167 187 $this->errorRedirectTo('edit', _kt('Could not save fieldset changes'), 'fFieldsetId=' . $oFieldset->getId());
... ...
templates/ktcore/documenttypes/list.smarty
... ... @@ -77,10 +77,6 @@ its details, or use the enable/disable buttons to change its availability state.
77 77 {/if}
78 78 </td>
79 79  
80   -<td>
81   - <span class="descriptiveText">{$context->getFieldsetsForType($oDocumentType)}</span>
82   -</td>
83   -
84 80 </tr>
85 81 </tbody>
86 82 {/foreach}
... ...