Commit b83bc18929e206dd5a9d582cedf299f15b242e55
1 parent
8d88cb6c
finish up with document fieldset editing.
git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@5922 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
6 changed files
with
171 additions
and
29 deletions
lib/dispatcher.inc.php
| ... | ... | @@ -180,6 +180,27 @@ class KTDispatcher { |
| 180 | 180 | } |
| 181 | 181 | $this->redirectTo($event, $sQuery); |
| 182 | 182 | } |
| 183 | + | |
| 184 | + function errorRedirectToParent($error_message) { | |
| 185 | + if ($this->bTransactionStarted) { | |
| 186 | + $this->rollbackTransaction(); | |
| 187 | + } | |
| 188 | + | |
| 189 | + $_SESSION['KTErrorMessage'][] = $error_message; | |
| 190 | + redirect($this->sParentUrl); | |
| 191 | + exit(0); | |
| 192 | + } | |
| 193 | + | |
| 194 | + function successRedirectToParent($info_message) { | |
| 195 | + if ($this->bTransactionStarted) { | |
| 196 | + $this->commitTransaction(); | |
| 197 | + } | |
| 198 | + if (!empty($info_message)) { | |
| 199 | + $_SESSION['KTInfoMessage'][] = $info_message; | |
| 200 | + } | |
| 201 | + redirect($this->sParentUrl); | |
| 202 | + exit(0); | |
| 203 | + } | |
| 183 | 204 | |
| 184 | 205 | function redirectTo($event, $sQuery = "") { |
| 185 | 206 | // meld persistant options | ... | ... |
lib/widgets/forms.inc.php
| ... | ... | @@ -212,6 +212,11 @@ class KTForm { |
| 212 | 212 | return $this->renderContaining($sWidgets . ' ' . $sButtons); |
| 213 | 213 | } |
| 214 | 214 | |
| 215 | + function renderPage($sTitle) { | |
| 216 | + $pageval = $this->render(); | |
| 217 | + return sprintf('<h2>%s</h2> %s', $sTitle, $pageval); | |
| 218 | + } | |
| 219 | + | |
| 215 | 220 | function renderWidgets() { |
| 216 | 221 | if (empty($this->_widgets)) { |
| 217 | 222 | return ' '; | ... | ... |
plugins/ktcore/KTValidators.php
| ... | ... | @@ -22,7 +22,9 @@ class KTStringValidator extends KTValidator { |
| 22 | 22 | $this->sMinLengthWarning = KTUtil::arrayGet($aOptions, 'min_length_warning', |
| 23 | 23 | sprintf(_kt('You must provide a value which is at least %d characters long.'), $this->iMinLength)); |
| 24 | 24 | $this->sMaxLengthWarning = KTUtil::arrayGet($aOptions, 'max_length_warning', |
| 25 | - sprintf(_kt('You must provide a value which is at most %d characters long.'), $this->iMaxLength)); | |
| 25 | + sprintf(_kt('You must provide a value which is at most %d characters long.'), $this->iMaxLength)); | |
| 26 | + | |
| 27 | + $this->bTrim = KTUtil::arrayGet($aOptions, 'trim', true, false); | |
| 26 | 28 | } |
| 27 | 29 | |
| 28 | 30 | function validate($data) { |
| ... | ... | @@ -33,6 +35,10 @@ class KTStringValidator extends KTValidator { |
| 33 | 35 | // otherwise, its ok. |
| 34 | 36 | $val = KTUtil::arrayGet($data, $this->sInputVariable); |
| 35 | 37 | |
| 38 | + if ($this->bTrim) { | |
| 39 | + $val = trim($val); | |
| 40 | + } | |
| 41 | + | |
| 36 | 42 | $l = strlen($val); |
| 37 | 43 | if ($l < $this->iMinLength) { |
| 38 | 44 | $errors[$this->sBasename] = $this->sMinLengthWarning; | ... | ... |
plugins/ktcore/admin/documentFieldsv2.php
| ... | ... | @@ -267,6 +267,129 @@ class KTDocumentFieldDispatcher extends KTAdminDispatcher { |
| 267 | 267 | )); |
| 268 | 268 | return $oTemplate->render(); |
| 269 | 269 | } |
| 270 | + | |
| 271 | + function do_delete() { | |
| 272 | + $this->startTransaction(); | |
| 273 | + $res = $this->oFieldset->delete(); | |
| 274 | + $this->oValidator->notErrorFalse($res, array( | |
| 275 | + 'redirect_to' => array('main', ''), | |
| 276 | + 'message' => _kt('Could not delete fieldset'), | |
| 277 | + )); | |
| 278 | + $this->successRedirectToMain(_kt('Fieldset deleted')); | |
| 279 | + } | |
| 280 | + | |
| 281 | + function form_edit() { | |
| 282 | + $oForm = new KTForm; | |
| 283 | + $oForm->setOptions(array( | |
| 284 | + 'identifier' => 'ktcore.fieldsets.edit', | |
| 285 | + 'label' => _kt("Change Fieldset Details"), | |
| 286 | + 'submit_label' => _kt('Update Fieldset'), | |
| 287 | + 'cancel_action' => 'edit', | |
| 288 | + 'fail_action' => 'editfieldset', | |
| 289 | + 'action' => 'savefieldset', | |
| 290 | + 'context' => $this, | |
| 291 | + )); | |
| 292 | + | |
| 293 | + | |
| 294 | + // construct the widget set. | |
| 295 | + // we use a slight variation here, because "type" is only present in certain circumstances. | |
| 296 | + $widgets = array( | |
| 297 | + array('ktcore.widgets.string',array( | |
| 298 | + 'label' => _kt("Fieldset Name"), | |
| 299 | + 'name' => 'name', | |
| 300 | + 'required' => true, | |
| 301 | + 'description' => _kt("Each fieldset needs a unique name."), | |
| 302 | + 'value' => $this->oFieldset->getName(), | |
| 303 | + )), | |
| 304 | + array('ktcore.widgets.text',array( | |
| 305 | + 'label' => _kt("Description"), | |
| 306 | + 'name' => 'description', | |
| 307 | + 'required' => true, | |
| 308 | + 'description' => _kt("In order to ensure that the data that users enter is useful, it is essential that you provide a good example."), | |
| 309 | + 'value' => $this->oFieldset->getDescription(), | |
| 310 | + )), | |
| 311 | + ); | |
| 312 | + | |
| 313 | + $widgets[] = array('ktcore.widgets.boolean',array( | |
| 314 | + 'label' => _kt("Generic"), | |
| 315 | + 'name' => 'generic', | |
| 316 | + 'description' => _kt("A generic fieldset is one that is available for every document by default. These fieldsets will be available for users to edit and add for every document in the document management system."), | |
| 317 | + 'value' => $this->oFieldset->getIsGeneric(), | |
| 318 | + )); | |
| 319 | + | |
| 320 | + $oForm->setWidgets($widgets); | |
| 321 | + | |
| 322 | + // similarly, we construct validators here. | |
| 323 | + $validators = array( | |
| 324 | + array('ktcore.validators.string', array( | |
| 325 | + 'test' => 'name', | |
| 326 | + 'output' => 'name', | |
| 327 | + )), | |
| 328 | + array('ktcore.validators.string', array( | |
| 329 | + 'test' => 'description', | |
| 330 | + 'output' => 'description', | |
| 331 | + )), | |
| 332 | + array('ktcore.validators.boolean', array( | |
| 333 | + 'test' => 'generic', | |
| 334 | + 'output' => 'generic', | |
| 335 | + )), | |
| 336 | + ); | |
| 337 | + | |
| 338 | + $oForm->setValidators($validators); | |
| 339 | + | |
| 340 | + return $oForm; | |
| 341 | + } | |
| 342 | + | |
| 343 | + function do_editfieldset() { | |
| 344 | + $oForm = $this->form_edit(); | |
| 345 | + return $oForm->renderPage(_kt("Edit Fieldset")); | |
| 346 | + } | |
| 347 | + | |
| 348 | + function do_savefieldset() { | |
| 349 | + $oForm = $this->form_edit(); | |
| 350 | + $res = $oForm->validate(); | |
| 351 | + | |
| 352 | + $data = $res['results']; | |
| 353 | + $errors = $res['errors']; | |
| 354 | + $extra_errors = array(); | |
| 355 | + if ($data['name'] != $this->oFieldset->getName()) { | |
| 356 | + $oOldFieldset = KTFieldset::getByName($data['name']); | |
| 357 | + if (!PEAR::isError($oOldFieldset)) { | |
| 358 | + $extra_errors['name'][] = _kt("A fieldset with that name already exists."); | |
| 359 | + } | |
| 360 | + } | |
| 361 | + | |
| 362 | + if (!empty($errors) || !empty($extra_errors)) { | |
| 363 | + return $oForm->handleError(null, $extra_errors); | |
| 364 | + } | |
| 365 | + | |
| 366 | + $this->startTransaction(); | |
| 367 | + | |
| 368 | + $this->oFieldset->setName($data['name']); | |
| 369 | + $this->oFieldset->setDescription($data['description']); | |
| 370 | + $bGeneric = $data['generic']; | |
| 371 | + if ($bGeneric != $this->oFieldset->getIsGeneric() && $bGeneric == true) { | |
| 372 | + // delink it from all doctypes. | |
| 373 | + $aTypes = $oFieldset->getAssociatedTypes(); | |
| 374 | + foreach ($aTypes as $oType) { | |
| 375 | + $res = KTMetadataUtil::removeSetsFromDocumentType($oType, $oFieldset->getId()); | |
| 376 | + if (PEAR::isError($res)) { | |
| 377 | + $this->errorRedirectTo('edit', _kt('Could not save fieldset changes')); | |
| 378 | + exit(0); | |
| 379 | + } | |
| 380 | + } | |
| 381 | + } | |
| 382 | + | |
| 383 | + $this->oFieldset->setIsGeneric($data['generic']); | |
| 384 | + | |
| 385 | + $res = $this->oFieldset->update(); | |
| 386 | + if (PEAR::isError($res)) { | |
| 387 | + $this->errorRedirectTo('edit', _kt('Could not save fieldset changes')); | |
| 388 | + exit(0); | |
| 389 | + } | |
| 390 | + | |
| 391 | + return $this->successRedirectTo('edit', _kt("Fieldset details updated.")); | |
| 392 | + } | |
| 270 | 393 | } |
| 271 | 394 | |
| 272 | 395 | ?> | ... | ... |
plugins/ktcore/admin/fieldsets/basic.inc.php
| ... | ... | @@ -512,31 +512,6 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher { |
| 512 | 512 | } |
| 513 | 513 | // }}} |
| 514 | 514 | |
| 515 | - // {{{ do_removeFields | |
| 516 | - function do_removeFields() { | |
| 517 | - $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']); | |
| 518 | - foreach ($_REQUEST['fields'] as $iFieldId) { | |
| 519 | - $oField =& DocumentField::get($iFieldId); | |
| 520 | - $oField->delete(); | |
| 521 | - } | |
| 522 | - $this->successRedirectTo('edit', _kt('Fields removed'), 'fFieldsetId=' . $oFieldset->getId()); | |
| 523 | - exit(0); | |
| 524 | - } | |
| 525 | - // }}} | |
| 526 | - | |
| 527 | - // {{{ do_delete | |
| 528 | - function do_delete() { | |
| 529 | - $oFieldset =& $this->oValidator->validateFieldset($_REQUEST['fFieldsetId']); | |
| 530 | - $res = $oFieldset->delete(); | |
| 531 | - $this->oValidator->notErrorFalse($res, array( | |
| 532 | - 'redirect_to' => array('main', ''), | |
| 533 | - 'message' => _kt('Could not delete fieldset'), | |
| 534 | - )); | |
| 535 | - $this->successRedirectToMain(_kt('Fieldset deleted')); | |
| 536 | - } | |
| 537 | - // }}} | |
| 538 | - | |
| 539 | - | |
| 540 | 515 | // {{{ TREE |
| 541 | 516 | // create and display the tree editing form. |
| 542 | 517 | function do_managetree() { |
| ... | ... | @@ -772,6 +747,15 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher { |
| 772 | 747 | return $actionStr; |
| 773 | 748 | } |
| 774 | 749 | |
| 750 | + function do_deletefield() { | |
| 751 | + $res = $this->oField->delete(); | |
| 752 | + if (PEAR::isError($res)) { | |
| 753 | + $this->errorRedirectToParent(sprintf(_kt("Unable to delete field: %s"), $res->getMessage())); | |
| 754 | + } | |
| 755 | + | |
| 756 | + $this->successRedirectToParent(_kt("Field deleted.")); | |
| 757 | + } | |
| 758 | + | |
| 775 | 759 | } |
| 776 | 760 | |
| 777 | 761 | ?> | ... | ... |
templates/ktcore/metadata/admin/basic_overview.smarty
| ... | ... | @@ -9,8 +9,8 @@ of related information.{/i18n}</p> |
| 9 | 9 | <thead> |
| 10 | 10 | <tr> |
| 11 | 11 | <th>{i18n}Field Name{/i18n}</th> |
| 12 | - <th>{i18n}Edit{/i18n}</th> | |
| 13 | - <th>{i18n}Delete{/i18n}</th> | |
| 12 | + <th class="centered">{i18n}Edit{/i18n}</th> | |
| 13 | + <th class="centered">{i18n}Delete{/i18n}</th> | |
| 14 | 14 | <th>{i18n}Type Description{/i18n}</th> |
| 15 | 15 | </tr> |
| 16 | 16 | </thead> |
| ... | ... | @@ -20,9 +20,12 @@ of related information.{/i18n}</p> |
| 20 | 20 | <td class="title"> |
| 21 | 21 | {$oField->getName()|escape} |
| 22 | 22 | </td> |
| 23 | - <td> | |
| 23 | + <td class="centered"> | |
| 24 | 24 | <a href="{addQS context=$context}fieldset_action=managefield&fFieldId={$oField->getId()}{/addQS}" class="ktAction ktEdit">{i18n}edit{/i18n}</a> |
| 25 | 25 | </td> |
| 26 | + <td class="centered"> | |
| 27 | + <a href="{addQS context=$context}fieldset_action=deletefield&fFieldId={$oField->getId()}{/addQS}" class="ktAction ktDelete">{i18n}delete{/i18n}</a> | |
| 28 | + </td> | |
| 26 | 29 | <td> |
| 27 | 30 | <span class="descriptiveText">{$oField->getTypeDescription()}</span> |
| 28 | 31 | </td> | ... | ... |