Commit df0c6dfd55990774fccf9f62712db89cbafdacf0
1 parent
f30954e1
Correctly populate field_behaviour_options, and restrict the shown items
to those not in field_behaviour_options already. git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3794 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
45 additions
and
9 deletions
presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/conditional/ajaxComplexConditionals.php
| ... | ... | @@ -38,16 +38,22 @@ class AjaxConditionalAdminDispatcher extends KTStandardDispatcher { |
| 38 | 38 | $oTemplating =& KTTemplating::getSingleton(); |
| 39 | 39 | $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/conditional/ajax_complex_get_item_list'); |
| 40 | 40 | |
| 41 | - $sMetadataTable = KTUtil::getTableName('metadata'); | |
| 42 | - $sVITable = KTUtil::getTableName('field_value_instances'); | |
| 43 | - $aQuery = array( | |
| 44 | - "SELECT M.id AS id, M.name AS name FROM $sMetadataTable AS M LEFT JOIN $sVITable AS V ON M.id = V.field_value_id WHERE M.document_field_id = ? AND V.id IS NULL", | |
| 45 | - array($field_id), | |
| 46 | - ); | |
| 47 | - $aRows = DBUtil::getResultArray($aQuery); | |
| 48 | 41 | $aValues = array(); |
| 49 | - foreach ($aRows as $aRow) { | |
| 50 | - $aValues[$aRow['id']] = $aRow['name']; | |
| 42 | + foreach ($oField->getValues() as $oValue) { | |
| 43 | + if (empty($parent_behaviour)) { | |
| 44 | + $oInstance = KTValueInstance::getByLookupSingle($oValue); | |
| 45 | + if (empty($oInstance)) { | |
| 46 | + $aValues[$oValue->getId()] = $oValue->getName(); | |
| 47 | + } | |
| 48 | + // No parent behaviour (thus master column), so any | |
| 49 | + // instance will do to prevent showing this value | |
| 50 | + continue; | |
| 51 | + } | |
| 52 | + | |
| 53 | + $iInstanceId = KTValueInstance::getByLookupAndParentBehaviour($oValue, $parent_behaviour, array('ids' => true)); | |
| 54 | + if (empty($iInstanceId)) { | |
| 55 | + $aValues[$oValue->getId()] = $oValue->getName(); | |
| 56 | + } | |
| 51 | 57 | } |
| 52 | 58 | $aData = array( |
| 53 | 59 | 'values' => $aValues, |
| ... | ... | @@ -114,12 +120,27 @@ class AjaxConditionalAdminDispatcher extends KTStandardDispatcher { |
| 114 | 120 | 'fieldid' => $field_id, |
| 115 | 121 | )); |
| 116 | 122 | |
| 123 | + $aValueInstanceIds = array(); | |
| 117 | 124 | foreach ($lookups_to_assign as $iLookupId) { |
| 118 | 125 | $res = $oValueInstance =& KTValueInstance::createFromArray(array( |
| 119 | 126 | 'fieldid' => $field_id, |
| 120 | 127 | 'behaviourid' => $oBehaviour->getId(), |
| 121 | 128 | 'fieldvalueid' => abs($iLookupId), |
| 122 | 129 | )); |
| 130 | + $aValueInstanceIds[] = $res->getId(); | |
| 131 | + } | |
| 132 | + | |
| 133 | + if ($parent_behaviour) { | |
| 134 | + $oParentBehaviour =& $this->oValidator->validateBehaviour($parent_behaviour); | |
| 135 | + $sTable = KTUtil::getTableName('field_behaviour_options'); | |
| 136 | + $aOptions = array('noid' => true); | |
| 137 | + foreach ($aValueInstanceIds as $iId) { | |
| 138 | + $res = DBUtil::autoInsert($sTable, array( | |
| 139 | + 'behaviour_id' => $oParentBehaviour->getId(), | |
| 140 | + 'field_id' => $field_id, | |
| 141 | + 'instance_id' => $iId, | |
| 142 | + ), $aOptions); | |
| 143 | + } | |
| 123 | 144 | } |
| 124 | 145 | |
| 125 | 146 | header('Content-type: application/xml'); |
| ... | ... | @@ -137,12 +158,27 @@ class AjaxConditionalAdminDispatcher extends KTStandardDispatcher { |
| 137 | 158 | |
| 138 | 159 | $oBehaviour =& $this->oValidator->validateBehaviour($parent_behaviour); |
| 139 | 160 | |
| 161 | + $aValueInstanceIds = array(); | |
| 140 | 162 | foreach ($lookups_to_assign as $iLookupId) { |
| 141 | 163 | $res = $oValueInstance =& KTValueInstance::createFromArray(array( |
| 142 | 164 | 'fieldid' => $field_id, |
| 143 | 165 | 'behaviourid' => $oBehaviour->getId(), |
| 144 | 166 | 'fieldvalueid' => abs($iLookupId), |
| 145 | 167 | )); |
| 168 | + $aValueInstanceIds[] = $res->getId(); | |
| 169 | + } | |
| 170 | + | |
| 171 | + if ($parent_behaviour) { | |
| 172 | + $oParentBehaviour =& $this->oValidator->validateBehaviour($parent_behaviour); | |
| 173 | + $sTable = KTUtil::getTableName('field_behaviour_options'); | |
| 174 | + $aOptions = array('noid' => true); | |
| 175 | + foreach ($aValueInstanceIds as $iId) { | |
| 176 | + $res = DBUtil::autoInsert($sTable, array( | |
| 177 | + 'behaviour_id' => $oParentBehaviour->getId(), | |
| 178 | + 'field_id' => $field_id, | |
| 179 | + 'instance_id' => $iId, | |
| 180 | + ), $aOptions); | |
| 181 | + } | |
| 146 | 182 | } |
| 147 | 183 | |
| 148 | 184 | header('Content-type: application/xml'); | ... | ... |