Commit 969703e209689233a9e65fb18da4b7787acda770
1 parent
ba4562d5
KTS-3215
"It should be possible to edit and rename lookup values form the administration section" Fixed. Added an edit icon. Removed the sanitizetosql on saving to the DB. Committed by: Megan Watson Reviewed by: Jonathan Byrne git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@8349 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
3 changed files
with
87 additions
and
22 deletions
lib/documentmanagement/MetaData.inc
| @@ -7,36 +7,35 @@ | @@ -7,36 +7,35 @@ | ||
| 7 | * KnowledgeTree Open Source Edition | 7 | * KnowledgeTree Open Source Edition |
| 8 | * Document Management Made Simple | 8 | * Document Management Made Simple |
| 9 | * Copyright (C) 2004 - 2008 The Jam Warehouse Software (Pty) Limited | 9 | * Copyright (C) 2004 - 2008 The Jam Warehouse Software (Pty) Limited |
| 10 | - * | 10 | + * |
| 11 | * This program is free software; you can redistribute it and/or modify it under | 11 | * This program is free software; you can redistribute it and/or modify it under |
| 12 | * the terms of the GNU General Public License version 3 as published by the | 12 | * the terms of the GNU General Public License version 3 as published by the |
| 13 | * Free Software Foundation. | 13 | * Free Software Foundation. |
| 14 | - * | 14 | + * |
| 15 | * This program is distributed in the hope that it will be useful, but WITHOUT | 15 | * This program is distributed in the hope that it will be useful, but WITHOUT |
| 16 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 16 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| 17 | * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | 17 | * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
| 18 | * details. | 18 | * details. |
| 19 | - * | 19 | + * |
| 20 | * You should have received a copy of the GNU General Public License | 20 | * You should have received a copy of the GNU General Public License |
| 21 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 21 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 22 | - * | 22 | + * |
| 23 | * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place, | 23 | * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place, |
| 24 | * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com. | 24 | * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com. |
| 25 | - * | 25 | + * |
| 26 | * The interactive user interfaces in modified source and object code versions | 26 | * The interactive user interfaces in modified source and object code versions |
| 27 | * of this program must display Appropriate Legal Notices, as required under | 27 | * of this program must display Appropriate Legal Notices, as required under |
| 28 | * Section 5 of the GNU General Public License version 3. | 28 | * Section 5 of the GNU General Public License version 3. |
| 29 | - * | 29 | + * |
| 30 | * In accordance with Section 7(b) of the GNU General Public License version 3, | 30 | * In accordance with Section 7(b) of the GNU General Public License version 3, |
| 31 | * these Appropriate Legal Notices must retain the display of the "Powered by | 31 | * these Appropriate Legal Notices must retain the display of the "Powered by |
| 32 | - * KnowledgeTree" logo and retain the original copyright notice. If the display of the | 32 | + * KnowledgeTree" logo and retain the original copyright notice. If the display of the |
| 33 | * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices | 33 | * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices |
| 34 | - * must display the words "Powered by KnowledgeTree" and retain the original | ||
| 35 | - * copyright notice. | 34 | + * must display the words "Powered by KnowledgeTree" and retain the original |
| 35 | + * copyright notice. | ||
| 36 | * Contributor( s): ______________________________________ | 36 | * Contributor( s): ______________________________________ |
| 37 | */ | 37 | */ |
| 38 | 38 | ||
| 39 | -require_once(KT_LIB_DIR . "/util/sanitize.inc"); | ||
| 40 | 39 | ||
| 41 | class MetaData extends KTEntity { | 40 | class MetaData extends KTEntity { |
| 42 | 41 | ||
| @@ -80,8 +79,8 @@ class MetaData extends KTEntity { | @@ -80,8 +79,8 @@ class MetaData extends KTEntity { | ||
| 80 | } | 79 | } |
| 81 | 80 | ||
| 82 | function getID() { return $this->iId; } | 81 | function getID() { return $this->iId; } |
| 83 | - function getName() { return sanitizeForSQLtoHTML($this->sName); } | ||
| 84 | - function setName($sNewValue) { $this->sName = sanitizeForSQL($sNewValue); } | 82 | + function getName() { return $this->sName; } |
| 83 | + function setName($sNewValue) { $this->sName = $sNewValue; } | ||
| 85 | function getDocFieldId() { return $this->iDocFieldId; } | 84 | function getDocFieldId() { return $this->iDocFieldId; } |
| 86 | function setDocFieldId($iNewValue) { $this->iDocFieldId = $iNewValue; } | 85 | function setDocFieldId($iNewValue) { $this->iDocFieldId = $iNewValue; } |
| 87 | function getTreeParent() { return $this->iTreeParent; } | 86 | function getTreeParent() { return $this->iTreeParent; } |
plugins/ktcore/admin/fieldsets/basic.inc.php
| @@ -416,12 +416,41 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher { | @@ -416,12 +416,41 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher { | ||
| 416 | function do_managelookups() { | 416 | function do_managelookups() { |
| 417 | $this->oPage->setBreadcrumbDetails(_kt('manage lookup values')); | 417 | $this->oPage->setBreadcrumbDetails(_kt('manage lookup values')); |
| 418 | 418 | ||
| 419 | - $oTemplate =& $this->oValidator->validateTemplate("ktcore/metadata/admin/manage_lookups"); | 419 | + // Add javascript to create the edit form |
| 420 | + $sJavaScript = "\nfunction editLookup(id)\n | ||
| 421 | + {\n | ||
| 422 | + var div = document.getElementById(id);\n | ||
| 423 | + var value = div.innerHTML; | ||
| 424 | + | ||
| 425 | + <!-- Replace all double quotes with " -->\n | ||
| 426 | + matches = value.match(/\"/g);\n | ||
| 427 | + var newValue = value;\n | ||
| 428 | + if(matches){\n | ||
| 429 | + for(var i = 0; i < matches.length; i++){\n | ||
| 430 | + newValue = newValue.replace('\"', '"');\n | ||
| 431 | + }\n | ||
| 432 | + }\n\n | ||
| 433 | + | ||
| 434 | + var inner = '<input type=\"text\" name=\"lookup['+id+']\" id=\"lookup_'+id+'\" value=\"'+newValue+'\" />';\n | ||
| 435 | + inner += '<input type=\"hidden\" id=\"original_'+id+'\" value=\"'+newValue+'\" />';\n | ||
| 436 | + inner += '<input type=\"submit\" name=\"submit[edit]\" value=\""._kt('Save')."\" />';\n | ||
| 437 | + inner += '<input type=\"button\" onclick=\"javascript: closeLookupEdit('+id+');\" name=\"cancel\" value=\""._kt('Cancel')."\" />';\n | ||
| 438 | + div.innerHTML = inner;\n | ||
| 439 | + document.getElementById('lookup_'+id).focus();\n | ||
| 440 | + }\n\n | ||
| 441 | + | ||
| 442 | + function closeLookupEdit(id) | ||
| 443 | + {\n | ||
| 444 | + value = document.getElementById('original_'+id).value;\n | ||
| 445 | + document.getElementById(id).innerHTML = value;\n | ||
| 446 | + }\n\n"; | ||
| 447 | + | ||
| 448 | + $this->oPage->requireJSStandalone($sJavaScript); | ||
| 420 | 449 | ||
| 421 | $lookups =& MetaData::getByDocumentField($this->oField); | 450 | $lookups =& MetaData::getByDocumentField($this->oField); |
| 422 | - | ||
| 423 | $args = $this->meldPersistQuery("","metadataMultiAction", true); | 451 | $args = $this->meldPersistQuery("","metadataMultiAction", true); |
| 424 | 452 | ||
| 453 | + $oTemplate =& $this->oValidator->validateTemplate("ktcore/metadata/admin/manage_lookups"); | ||
| 425 | $oTemplate->setData(array( | 454 | $oTemplate->setData(array( |
| 426 | 'context' => $this, | 455 | 'context' => $this, |
| 427 | 'field_name' => $this->oField->getName(), | 456 | 'field_name' => $this->oField->getName(), |
| @@ -486,6 +515,40 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher { | @@ -486,6 +515,40 @@ class BasicFieldsetManagementDispatcher extends KTAdminDispatcher { | ||
| 486 | } | 515 | } |
| 487 | // }}} | 516 | // }}} |
| 488 | 517 | ||
| 518 | + /** | ||
| 519 | + * Save the edited lookup values | ||
| 520 | + * | ||
| 521 | + */ | ||
| 522 | + function lookup_edit(){ | ||
| 523 | + $aLookupValues = $_REQUEST['lookup']; | ||
| 524 | + | ||
| 525 | + if(empty($aLookupValues)){ | ||
| 526 | + $this->errorRedirectTo('managelookups', _kt('No lookups were selected for editing')); | ||
| 527 | + exit; | ||
| 528 | + } | ||
| 529 | + | ||
| 530 | + foreach ($aLookupValues as $iMetaDataId => $sValue){ | ||
| 531 | + $oMetaData = MetaData::get($iMetaDataId); | ||
| 532 | + if (PEAR::isError($oMetaData)) { | ||
| 533 | + $this->addErrorMessage(_kt('Invalid lookup selected').': '.$sValue); | ||
| 534 | + continue; | ||
| 535 | + //$this->errorRedirectTo('managelookups', _kt('Invalid lookup selected')); | ||
| 536 | + } | ||
| 537 | + if(empty($sValue)){ | ||
| 538 | + $this->addErrorMessage(_kt('Lookup cannot be empty').': '.$oMetaData->getName()); | ||
| 539 | + if(count($aLookupValues) == 1){ | ||
| 540 | + $this->redirectTo('managelookups'); | ||
| 541 | + } | ||
| 542 | + continue; | ||
| 543 | + } | ||
| 544 | + $oMetaData->setName($sValue); | ||
| 545 | + $oMetaData->update(); | ||
| 546 | + } | ||
| 547 | + | ||
| 548 | + $this->successRedirectTo('managelookups', _kt('Lookup values saved')); | ||
| 549 | + exit(0); | ||
| 550 | + } | ||
| 551 | + | ||
| 489 | // {{{ lookup_enable | 552 | // {{{ lookup_enable |
| 490 | function lookup_toggleenabled() { | 553 | function lookup_toggleenabled() { |
| 491 | $oFieldset =& $this->oValidator->validateFieldset($_REQUEST['fFieldsetId']); | 554 | $oFieldset =& $this->oValidator->validateFieldset($_REQUEST['fFieldsetId']); |
templates/ktcore/metadata/admin/manage_lookups.smarty
| @@ -3,9 +3,9 @@ | @@ -3,9 +3,9 @@ | ||
| 3 | <fieldset> | 3 | <fieldset> |
| 4 | <legend>{i18n}Manage Lookups{/i18n}</legend> | 4 | <legend>{i18n}Manage Lookups{/i18n}</legend> |
| 5 | 5 | ||
| 6 | -<p class="descriptiveText">{i18n}Over time, the lookup values which make sense will | 6 | +<p class="descriptiveText">{i18n}Over time, the lookup values which make sense will |
| 7 | change and evolve as your organisation does. You may thus need to change the lookup | 7 | change and evolve as your organisation does. You may thus need to change the lookup |
| 8 | -values associated with a given field. There are a number of different states | 8 | +values associated with a given field. There are a number of different states |
| 9 | that are possible for a given lookup{/i18n}:</p> | 9 | that are possible for a given lookup{/i18n}:</p> |
| 10 | 10 | ||
| 11 | <ul class="descriptiveText"> | 11 | <ul class="descriptiveText"> |
| @@ -13,10 +13,10 @@ that are possible for a given lookup{/i18n}:</p> | @@ -13,10 +13,10 @@ that are possible for a given lookup{/i18n}:</p> | ||
| 13 | as an option when editing or creating documents.{/i18n}</li> | 13 | as an option when editing or creating documents.{/i18n}</li> |
| 14 | <li>{i18n}<strong>Sticky</strong>, which is used if you have some external | 14 | <li>{i18n}<strong>Sticky</strong>, which is used if you have some external |
| 15 | plugin controlling this lookup set. This will then tell that plugin not to | 15 | plugin controlling this lookup set. This will then tell that plugin not to |
| 16 | - remove the "sticky" value, even if it no longer available in the remote source.{/i18n}</li> | ||
| 17 | - <li>{i18n}<strong>Deleted</strong>, which completely removes the selected items | 16 | + remove the "sticky" value, even if it no longer available in the remote source.{/i18n}</li> |
| 17 | + <li>{i18n}<strong>Deleted</strong>, which completely removes the selected items | ||
| 18 | from the lookup. Note that this may not be possible if some other aspect of the system | 18 | from the lookup. Note that this may not be possible if some other aspect of the system |
| 19 | - depends on a particular lookup.{/i18n}</li> | 19 | + depends on a particular lookup.{/i18n}</li> |
| 20 | </ul> | 20 | </ul> |
| 21 | <form method="POST" action="{$smarty.server.PHP_SELF}"> | 21 | <form method="POST" action="{$smarty.server.PHP_SELF}"> |
| 22 | 22 | ||
| @@ -29,17 +29,20 @@ that are possible for a given lookup{/i18n}:</p> | @@ -29,17 +29,20 @@ that are possible for a given lookup{/i18n}:</p> | ||
| 29 | <tr> | 29 | <tr> |
| 30 | <th> </th> | 30 | <th> </th> |
| 31 | <th>{i18n}Lookup Value{/i18n}</th> | 31 | <th>{i18n}Lookup Value{/i18n}</th> |
| 32 | - <th class="centered">{i18n}Enabled{/i18n}</th> | ||
| 33 | - <th class="centered">{i18n}Sticky{/i18n}</th> | 32 | + <th class="centered">{i18n}Enabled{/i18n}</th> |
| 33 | + <th class="centered">{i18n}Sticky{/i18n}</th> | ||
| 34 | + <th class="centered">{i18n}Edit{/i18n}</th> | ||
| 34 | </tr> | 35 | </tr> |
| 35 | </thead> | 36 | </thead> |
| 36 | <tbody> | 37 | <tbody> |
| 37 | {foreach from=$lookups item=oLookup} | 38 | {foreach from=$lookups item=oLookup} |
| 39 | + {assign var='id' value=$oLookup->getId()} | ||
| 38 | <tr> | 40 | <tr> |
| 39 | <td><input type="checkbox" name="metadata[]" value="{$oLookup->getId()}" /></td> | 41 | <td><input type="checkbox" name="metadata[]" value="{$oLookup->getId()}" /></td> |
| 40 | - <td>{$oLookup->getName()}</td> | 42 | + <td><div id="{$id}">{$oLookup->getName()}</div></td> |
| 41 | <td class="centered">{if (!$oLookup->getDisabled())}<span class="ktAction ktAllowed">{i18n}Yes{/i18n}</span>{else}<span class="ktAction ktDenied">{i18n}No{/i18n}</span>{/if}</td> | 43 | <td class="centered">{if (!$oLookup->getDisabled())}<span class="ktAction ktAllowed">{i18n}Yes{/i18n}</span>{else}<span class="ktAction ktDenied">{i18n}No{/i18n}</span>{/if}</td> |
| 42 | <td class="centered">{if ($oLookup->getIsStuck())}<span>{i18n}Yes{/i18n}</span>{else} {/if}</td> | 44 | <td class="centered">{if ($oLookup->getIsStuck())}<span>{i18n}Yes{/i18n}</span>{else} {/if}</td> |
| 45 | + <td class="centered"><a href="#" onclick="javascript: editLookup({$id});" class="ktAction ktEdit">{i18n}Edit value{/i18n}</a></td> | ||
| 43 | </tr> | 46 | </tr> |
| 44 | {/foreach} | 47 | {/foreach} |
| 45 | </tbody> | 48 | </tbody> |