Commit 89e61faa5ad20a1963d44bf03900b94de7380ba8

Authored by Neil Blakey-Milner
1 parent ff48660e

Group document-specific metadata display by fieldset.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3925 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/documentmanagement/viewUI.inc
@@ -169,34 +169,58 @@ function renderTypeSpecificMetaData($oDocument, $bEditable) { @@ -169,34 +169,58 @@ function renderTypeSpecificMetaData($oDocument, $bEditable) {
169 $aDocuments[] = $iVersionID; 169 $aDocuments[] = $iVersionID;
170 } 170 }
171 171
172 - /*ok*/ $sQuery = "SELECT DF.name AS name, DFL.value AS value " . 172 + $sParam = DBUtil::paramArray($aDocuments);
  173 + $sQuery = "SELECT D.id AS document_id, DF.id AS field_id, DFL.value AS value, F.id AS fieldset_id " .
173 "FROM $default->documents_table AS D INNER JOIN document_fields_link AS DFL ON D.id = DFL.document_id " . 174 "FROM $default->documents_table AS D INNER JOIN document_fields_link AS DFL ON D.id = DFL.document_id " .
174 "INNER JOIN $default->document_fields_table AS DF ON DF.ID = DFL.document_field_id " . 175 "INNER JOIN $default->document_fields_table AS DF ON DF.ID = DFL.document_field_id " .
175 - "WHERE D.id = ? " . 176 + "INNER JOIN $default->fieldsets_table AS F ON F.id = DF.parent_fieldset " .
  177 + "WHERE D.id IN ($sParam) " .
176 "AND DF.name NOT LIKE 'Category' " . 178 "AND DF.name NOT LIKE 'Category' " .
177 "AND DF.is_generic = 0"; 179 "AND DF.is_generic = 0";
178 -  
179 - $iDocumentsLen = count($aDocuments);  
180 - $map = array();  
181 - $iDocumentCount = 0;  
182 - foreach ($aDocuments as $iDocumentID) {  
183 - $map['Metadata Version'] = KTUtil::arrayGet($map, 'Metadata Version', array_fill(0, $iDocumentsLen, null));  
184 - $oThisDocument =& Document::get($iDocumentID);  
185 - if (PEAR::isError($oThisDocument)) {  
186 - continue; 180 + $aParam = $aDocuments;
  181 +
  182 + $aResults = DBUtil::getResultArray(array($sQuery, $aParam));
  183 +
  184 + $aMap = array();
  185 + foreach ($aResults as $aResult) {
  186 + $fieldset_id = $aResult['fieldset_id'];
  187 + $field_id = $aResult['field_id'];
  188 + $document_id = $aResult['document_id'];
  189 + $aMyFieldset = KTUtil::arrayGet($aMap, $fieldset_id);
  190 + if (empty($aMyFieldset)) {
  191 + $aMap[$fieldset_id]["fieldset"] = KTFieldset::get($fieldset_id);
  192 + $aMap[$fieldset_id]["fields"] = array();
187 } 193 }
188 - if ($oThisDocument === false) {  
189 - continue; 194 + $aMyField = KTUtil::arrayGet($aMap[$fieldset_id]['fields'], $field_id);
  195 + if (empty($aMyField)) {
  196 + $aMap[$fieldset_id]['fields'][$field_id] = array();
  197 + $aMap[$fieldset_id]['fields'][$field_id]['field'] = DocumentField::get($field_id);
  198 + $aMap[$fieldset_id]['fields'][$field_id]['values'] = array();
190 } 199 }
191 - $map['Metadata Version'][$iDocumentCount] = $oThisDocument->getMetadataVersion();  
192 - $aTDRows = DBUtil::getResultArray(array($sQuery, array($iDocumentID)));  
193 - foreach ($aTDRows as $aRow) {  
194 - $newarray = KTUtil::arrayGet($map, $aRow['name'], array_fill(0, $iDocumentsLen, null));  
195 - $newarray[$iDocumentCount] = $aRow['value'];  
196 - $map[$aRow['name']] = $newarray; 200 + $aMap[$fieldset_id]['fields'][$field_id]['values'][$document_id] = $aResult['value'];
  201 + }
  202 + $oTemplating =& KTTemplating::getSingleton();
  203 + $oTemplate = $oTemplating->loadTemplate('ktcore/document_specific_metadata');
  204 + $sToRender = $oTemplate->render(array(
  205 + 'aDocumentIds' => $aDocuments,
  206 + 'map' => $aMap,
  207 + ));
  208 + return $sToRender;
  209 +
  210 + print "<pre>";
  211 + foreach ($aMap as $k => $v) {
  212 + print $v['fieldset']->getName() . "\n";
  213 + foreach ($v['fields'] as $k => $aField) {
  214 + print $aField['field']->getName() . ": ";
  215 + foreach ($aField['values'] as $document_id => $sValue) {
  216 + print "$document_id => $sValue";
  217 + }
  218 + print "\n";
197 } 219 }
198 - $iDocumentCount++; 220 + print "\n\n";
199 } 221 }
  222 + exit(0);
  223 +
200 224
201 $oTemplating =& KTTemplating::getSingleton(); 225 $oTemplating =& KTTemplating::getSingleton();
202 $oTemplate = $oTemplating->loadTemplate('ktcore/document_specific_metadata'); 226 $oTemplate = $oTemplating->loadTemplate('ktcore/document_specific_metadata');
templates/ktcore/document_specific_metadata.smarty
1 -<table class="prettysw" cellpadding="0" cellspacing="0">  
2 -<caption colspan="{$map|count}"><b>Type Specific Meta Data</b></caption>  
3 -{ foreach key=k item=values from=$map }  
4 -<tr>  
5 - <th>{$k}</th>  
6 - { foreach item=v from=$values }  
7 - { cycle values="odd,compare" name=$k assign="class" }  
8 - <td class="{$class}" style="width: 10em">{$v|default:"&nbsp;"}</td>  
9 - { /foreach }  
10 -</tr>  
11 -{ /foreach }  
12 -</table>  
13 -  
14 -{ if $editable }  
15 -{$editable}  
16 -{ /if } 1 +{foreach key=fieldset_id item=fieldset_info from=$map}
  2 + {assign var=fieldset value=$fieldset_info.fieldset}
  3 + <fieldset>
  4 + <legend>{$fieldset->getName()}</legend>
17 5
  6 + <table class="prettysw" cellpadding="0" cellspacing="0">
  7 + {foreach key=field_id item=field_info from=$fieldset_info.fields}
  8 + <tr>
  9 + {assign var=field value=$field_info.field}
  10 + <th>{$field->getName()}</th>
  11 + {assign var=values value=$field_info.values}
  12 + {foreach item=iDocumentId from=$aDocumentIds}
  13 + <td>{$values.$iDocumentId}</td>
  14 + {/foreach}
  15 + </tr>
  16 + {/foreach}
  17 + </table>
  18 + </fieldset>
  19 +{/foreach}