diff --git a/config/config.ini b/config/config.ini
index 533fffb..1899f9f 100644
--- a/config/config.ini
+++ b/config/config.ini
@@ -135,6 +135,9 @@ fakeMimetype = default
; "dot" command location
dot = dot
+; sort the metadata fields alphabetically
+metadata_sort = true
+
[i18n]
; Default language for the interface
defaultLanguage = en
@@ -197,7 +200,7 @@ uiUrl = ${rootUrl}/presentation/lookAndFeel/knowledgeTree
;dedicated feed url
;dedicatedrsstitle = RSS Feed Title
-;dedicatedrssurl =
+;dedicatedrssurl =
; files
stopwordsFile = ${fileSystemRoot}/config/stopwords.txt
diff --git a/lib/widgets/fieldsetDisplay.inc.php b/lib/widgets/fieldsetDisplay.inc.php
index c5ea77a..03bb154 100644
--- a/lib/widgets/fieldsetDisplay.inc.php
+++ b/lib/widgets/fieldsetDisplay.inc.php
@@ -5,32 +5,32 @@
* KnowledgeTree Open Source Edition
* Document Management Made Simple
* Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
- *
+ *
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 3 as published by the
* Free Software Foundation.
- *
+ *
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
- *
+ *
* You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
* Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
- *
+ *
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
- *
+ *
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "Powered by
- * KnowledgeTree" logo and retain the original copyright notice. If the display of the
+ * KnowledgeTree" logo and retain the original copyright notice. If the display of the
* logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
- * must display the words "Powered by KnowledgeTree" and retain the original
- * copyright notice.
+ * must display the words "Powered by KnowledgeTree" and retain the original
+ * copyright notice.
* Contributor( s): ______________________________________
*
*/
@@ -45,20 +45,20 @@
* "document_id" => $iDocumentId
*
*/
-
+
// boilerplate
-require_once(KT_LIB_DIR . "/templating/templating.inc.php");
-require_once(KT_LIB_DIR . "/database/dbutil.inc");
+require_once(KT_LIB_DIR . '/templating/templating.inc.php');
+require_once(KT_LIB_DIR . '/database/dbutil.inc');
-require_once(KT_LIB_DIR . "/documentmanagement/MDTree.inc"); // :(
+require_once(KT_LIB_DIR . '/documentmanagement/MDTree.inc'); // :(
// data acquisition
-require_once(KT_LIB_DIR . "/users/User.inc");
+require_once(KT_LIB_DIR . '/users/User.inc');
require_once(KT_LIB_DIR . '/documentmanagement/MetaData.inc');
-require_once(KT_LIB_DIR . "/widgets/FieldsetDisplayRegistry.inc.php");
-require_once(KT_LIB_DIR . "/widgets/fieldWidgets.php");
+require_once(KT_LIB_DIR . '/widgets/FieldsetDisplayRegistry.inc.php');
+require_once(KT_LIB_DIR . '/widgets/fieldWidgets.php');
/* it may be useful to move this to a factory, eventually? */
@@ -77,9 +77,9 @@ function getWidgetForMetadataField($field, $current_value, $page, $errors = null
if ($errors === null) {
$fieldErrors = array();
} else {
- $fieldErrors = $errors;
+ $fieldErrors = $errors;
}
-
+
// now we need to break, based on a few aspects of the oField (DocumentField)
if ($field->getHasLookup()) {
@@ -90,34 +90,47 @@ function getWidgetForMetadataField($field, $current_value, $page, $errors = null
// extract the lookup.
if ($vocab === null) { // allow override
$lookups = MetaData::getEnabledByDocumentField($field);
- $fieldOptions["vocab"] = array(); // FIXME handle lookups
- $fieldOptions['vocab'][''] = _kt('Select a value');
+ $fieldOptions['vocab'] = array(); // FIXME handle lookups
+ $fieldOptions['vocab'][''] = _kt('Select a value');
foreach ($lookups as $md) {
- $fieldOptions["vocab"][$md->getName()] = $md->getName();
+ $fieldOptions['vocab'][$md->getName()] = $md->getName();
}
} else {
- $fieldOptions["vocab"] = $vocab;
+ $fieldOptions['vocab'] = $vocab;
}
-
- $oField = new KTLookupWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions);
+
+ $oField = new KTLookupWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions);
} else {
// FIXME vocab's are _not_ supported for tree-inputs. this means conditional-tree-widgets are not unsupported.
-
+
// for trees, we are currently brutal.
$fieldTree = new MDTree();
$fieldTree->buildForField($field->getId());
$fieldTree->setActiveItem($current_value);
$fieldOptions['tree'] = $fieldTree->_evilTreeRenderer($fieldTree, $fieldName);
-
- $oField = new KTTreeWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions);
+
+ $oField = new KTTreeWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions);
}
} else {
- $oField = new KTBaseWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions);
+ $oField = new KTBaseWidget($fieldLabel, $fieldDescription, $fieldName, $fieldValue, $page, $fieldRequired, null, $fieldErrors, $fieldOptions);
}
return $oField;
}
+/**
+ * Compare the fields within a fieldset for alphabetising.
+ *
+ * @param object $a
+ * @param object $b
+ * @return integer
+ */
+function compareFieldSetField($a, $b)
+{
+ if ($a['field']->getName() == $b['field']->getName()) return 0;
+ if ($a['field']->getName() < $b['field']->getName()) return -1;
+ return 1;
+}
// FIXME need to establish some kind of api to pass in i18n information.
class KTFieldsetDisplay {
@@ -126,33 +139,33 @@ class KTFieldsetDisplay {
function KTFieldsetDisplay($oFieldset) {
$this->fieldset = $oFieldset;
}
-
+
function _dateHelper($dDate) {
$dColumnDate = strtotime($dDate);
- return date("Y-m-d H:i", $dColumnDate);
+ return date('Y-m-d H:i', $dColumnDate);
}
-
-
+
+
function _sizeHelper($size) {
$finalSize = $size;
$label = 'b';
-
+
if ($finalSize > 1000) { $label='Kb'; $finalSize = floor($finalSize/1000); }
if ($finalSize > 1000) { $label='Mb'; $finalSize = floor($finalSize/1000); }
return $finalSize . $label;
}
-
+
function _mimeHelper($iMimeTypeId) {
// FIXME lazy cache this.
// FIXME extend mime_types to have something useful to say.
$sQuery = 'SELECT * FROM mime_types WHERE id = ?';
$res = DBUtil::getOneResult(array($sQuery, array($iMimeTypeId)));
-
+
if (PEAR::isError($res)) {
return _kt('unknown type');
}
-
+
if (!empty($res['friendly_name'])) {
return _kt($res['friendly_name']);
} else {
@@ -160,19 +173,19 @@ class KTFieldsetDisplay {
}
}
-
-
+
+
// this should multiplex i18n_title
function getTitle() { return $this->sTitle; }
-
+
function render($aDocumentData) {
return '
Warning: Abstract Fieldset created.
';
}
-
+
function renderComparison($aDocumentData, $aComparisonData) {
return 'Not implemented: comparison rendering
';
}
-
+
// we need the $main to (potentially) add js, etc.
function renderEdit($document_data) {
return 'Not Implemented: fieldset editing.
';
@@ -188,29 +201,29 @@ class GenericFieldsetDisplay extends KTFieldsetDisplay {
// DON'T take anything.
function GenericFieldsetDisplay() {
-
+
}
-
+
function render($aDocumentData) {
// we do a fair bit of fetching, etc. in here.
- $document = $aDocumentData["document"];
+ $document = $aDocumentData['document'];
// creation
$creator =& User::get($document->getCreatorId());
if (PEAR::isError($creator)) {
- $creator_name = "" . _kt("Unable to find the document's creator") . "";
+ $creator_name = '' . _kt("Unable to find the document's creator") . '';
} else {
$creator_name = $creator->getName();
}
$owner =& User::get($document->getOwnerId());
if (PEAR::isError($owner)) {
- $owner_name = "" . _kt("Unable to find the document's owner") . "";
+ $owner_name = '' . _kt("Unable to find the document's owner") . '';
} else {
$owner_name = $owner->getName();
}
$modified_user =& User::get($document->getModifiedUserId());
if (PEAR::isError($modified_user)) {
- $modified_user_name = "" . _kt("Unable to find the document's modifier") . "";
+ $modified_user_name = '' . _kt("Unable to find the document's modifier") . '';
} else {
$modified_user_name = $modified_user->getName();
}
@@ -218,48 +231,48 @@ class GenericFieldsetDisplay extends KTFieldsetDisplay {
// last mod
$last_modified_date = $this->_dateHelper($document->getLastModifiedDate());
-
+
// document type // FIXME move this to view.php
- $document_type = $aDocumentData["document_type"]->getName();
+ $document_type = $aDocumentData['document_type']->getName();
$oWorkflow = KTWorkflowUtil::getWorkflowForDocument($document);
$oState = KTWorkflowUtil::getWorkflowStateForDocument($document);
-
-
- $oTemplating =& KTTemplating::getSingleton();
- $oTemplate = $oTemplating->loadTemplate("kt3/fieldsets/generic");
+
+
+ $oTemplating =& KTTemplating::getSingleton();
+ $oTemplate = $oTemplating->loadTemplate('kt3/fieldsets/generic');
$aTemplateData = array(
- "context" => $this,
- "document_data" => $aDocumentData,
- "document" => $aDocumentData["document"],
-
- "filename" => $document->getFileName(),
-
- "creator" => $creator_name,
- "owner" => $owner_name,
- "creation_date" => $creation_date,
-
- "last_modified_by" => $modified_user_name,
- "last_modified_date" => $last_modified_date,
-
- "document_type" => $document_type,
-
- "workflow_state" => $oState,
- "workflow" => $oWorkflow,
+ 'context' => $this,
+ 'document_data' => $aDocumentData,
+ 'document' => $aDocumentData['document'],
+
+ 'filename' => $document->getFileName(),
+
+ 'creator' => $creator_name,
+ 'owner' => $owner_name,
+ 'creation_date' => $creation_date,
+
+ 'last_modified_by' => $modified_user_name,
+ 'last_modified_date' => $last_modified_date,
+
+ 'document_type' => $document_type,
+
+ 'workflow_state' => $oState,
+ 'workflow' => $oWorkflow,
);
- return $oTemplate->render($aTemplateData);
+ return $oTemplate->render($aTemplateData);
}
-
+
function renderComparison($aDocumentData, $aComparisonData) {
// we do a fair bit of fetching, etc. in here.
- $document = $aDocumentData["document"];
- $comparison_document = $aComparisonData["document"];
+ $document = $aDocumentData['document'];
+ $comparison_document = $aComparisonData['document'];
// creation
$creator =& User::get($document->getCreatorId());
if (PEAR::isError($creator)) {
- $creator = "" . _kt("Unable to find the document's creator") . "";
+ $creator = '' . _kt("Unable to find the document's creator") . '';
} else {
$creator = $creator->getName();
}
@@ -268,30 +281,30 @@ class GenericFieldsetDisplay extends KTFieldsetDisplay {
// last mod
$last_modified_date = $this->_dateHelper($document->getVersionCreated());
$comparison_last_modified_date = $this->_dateHelper($comparison_document->getVersionCreated());
-
+
// document type // FIXME move this to view.php
- $document_type = $aDocumentData["document_type"]->getName();
- $comparison_document_type = $aComparisonData["document_type"]->getName();
-
+ $document_type = $aDocumentData['document_type']->getName();
+ $comparison_document_type = $aComparisonData['document_type']->getName();
+
$modified_user =& User::get($document->getVersionCreatorId());
if (PEAR::isError($modified_user)) {
- $modified_user = "" . _kt("Unable to find the document's modifier") . "";
+ $modified_user = "" . _kt("Unable to find the document's modifier") . '';
} else {
$modified_user = $modified_user->getName();
}
$owner_user =& User::get($document->getOwnerId());
if (PEAR::isError($owner_user)) {
- $owner_user = "" . _kt("Unable to find the document's owner") . "";
+ $owner_user = "" . _kt("Unable to find the document's owner") . '';
} else {
$owner_user = $owner_user->getName();
}
-
+
$comparison_modified_user =& User::get($comparison_document->getVersionCreatorId());
if (PEAR::isError($comparison_modified_user)) {
- $comparison_modified_user = "" . _kt("Unable to find the document's modifier") . "";
+ $comparison_modified_user = "" . _kt("Unable to find the document's modifier") . '';
} else {
$comparison_modified_user = $comparison_modified_user->getName();
}
@@ -300,59 +313,59 @@ class GenericFieldsetDisplay extends KTFieldsetDisplay {
$oState = KTWorkflowUtil::getWorkflowStateForDocument($document);
$oComparisonWorkflow = KTWorkflowUtil::getWorkflowForDocument($comparison_document);
$oComparisonState = KTWorkflowUtil::getWorkflowStateForDocument($comparison_document);
-
-
- $oTemplating =& KTTemplating::getSingleton();
- $oTemplate = $oTemplating->loadTemplate("kt3/fieldsets/generic_versioned");
+
+
+ $oTemplating =& KTTemplating::getSingleton();
+ $oTemplate = $oTemplating->loadTemplate('kt3/fieldsets/generic_versioned');
$aTemplateData = array(
- "context" => $this,
- "document_data" => $aDocumentData,
- "document" => $aDocumentData["document"],
-
- "title" => $document->getName(),
- "comparison_title" => $comparison_document->getName(),
-
- "filename" => $document->getFileName(),
- "comparison_filename" => $comparison_document->getFileName(),
-
- "creator" => $creator,
- "creation_date" => $creation_date,
- "owner" => $owner_user,
-
- "last_modified_by" => $modified_user,
- "last_modified_date" => $last_modified_date,
-
- "comparison_last_modified_by" => $comparison_modified_user,
- "comparison_last_modified_date" => $comparison_last_modified_date,
-
- "document_type" => $document_type,
- "comparison_document_type" => $comparison_document_type,
-
- "workflow_state" => $oState,
- "comparison_workflow_state" => $oComparisonState,
- "workflow" => $oWorkflow,
- "comparison_workflow" => $oComparisonWorkflow,
-
- "comparison_document" => $aComparisonData["document"],
+ 'context' => $this,
+ 'document_data' => $aDocumentData,
+ 'document' => $aDocumentData['document'],
+
+ 'title' => $document->getName(),
+ 'comparison_title' => $comparison_document->getName(),
+
+ 'filename' => $document->getFileName(),
+ 'comparison_filename' => $comparison_document->getFileName(),
+
+ 'creator' => $creator,
+ 'creation_date' => $creation_date,
+ 'owner' => $owner_user,
+
+ 'last_modified_by' => $modified_user,
+ 'last_modified_date' => $last_modified_date,
+
+ 'comparison_last_modified_by' => $comparison_modified_user,
+ 'comparison_last_modified_date' => $comparison_last_modified_date,
+
+ 'document_type' => $document_type,
+ 'comparison_document_type' => $comparison_document_type,
+
+ 'workflow_state' => $oState,
+ 'comparison_workflow_state' => $oComparisonState,
+ 'workflow' => $oWorkflow,
+ 'comparison_workflow' => $oComparisonWorkflow,
+
+ 'comparison_document' => $aComparisonData['document'],
);
-
- return $oTemplate->render($aTemplateData);
+
+ return $oTemplate->render($aTemplateData);
}
-
+
function renderEdit($document_data) {
global $main; // FIXME remove direct access to $main
- $oField = new KTBaseWidget(_kt("Document Title"),
+ $oField = new KTBaseWidget(_kt('Document Title'),
sprintf(_kt("The document title is used as the main name of a document throughout %s™."), APP_NAME),
- "generic_title", $document_data["document"]->getName(), $main, true, null, array());
+ 'generic_title', $document_data['document']->getName(), $main, true, null, array());
$aFields = array($oField); // its the only one editable from the basic set (currently).
-
- $oTemplating =& KTTemplating::getSingleton();
- $oTemplate = $oTemplating->loadTemplate("kt3/fieldsets/simple_editable");
+
+ $oTemplating =& KTTemplating::getSingleton();
+ $oTemplate = $oTemplating->loadTemplate('kt3/fieldsets/simple_editable');
$aTemplateData = array(
- "context" => $this,
- "fields" => $aFields,
- "title" => _kt("Generic Document Information"),
- "description" => sprintf(_kt("The information in this section is stored by %s™ for every document."), APP_NAME),
+ 'context' => $this,
+ 'fields' => $aFields,
+ 'title' => _kt('Generic Document Information'),
+ 'description' => sprintf(_kt("The information in this section is stored by %s™ for every document."), APP_NAME),
);
return $oTemplate->render($aTemplateData);
}
@@ -361,177 +374,184 @@ class GenericFieldsetDisplay extends KTFieldsetDisplay {
// The generic object
class SimpleFieldsetDisplay extends KTFieldsetDisplay {
-
+
function render($aDocumentData) {
// we do a fair bit of fetching, etc. in here.
- $document = $aDocumentData["document"];
-
+ $document = $aDocumentData['document'];
+
// we need to extract the fields.
$fields =& $this->fieldset->getFields();
-
-
+
+
// we now grab that subset of items which fit in here.
// FIXME link value -> lookup where appropriate.
// FIXME probably need to be more careful about the _type_ of field here.
$fieldset_values = array();
foreach ($fields as $oField) {
- $val = KTUtil::arrayGet($aDocumentData["field_values"], $oField->getId(), null);
- $fieldset_values[] = array("field" => $oField, "value" => $val, );
+ $val = KTUtil::arrayGet($aDocumentData['field_values'], $oField->getId(), null);
+ $fieldset_values[] = array('field' => $oField, 'value' => $val, );
+ }
+
+ // Alphabetise the metadata fields within a fieldset if set in config
+ $oKTConfig =& KTConfig::getSingleton();
+ $use_sort = $oKTConfig->get('ui/metadata_sort', false);
+
+ if($use_sort){
+ usort($fieldset_values, 'compareFieldSetField');
}
-
-
-
- $oTemplating =& KTTemplating::getSingleton();
- $oTemplate = $oTemplating->loadTemplate("kt3/fieldsets/simple");
+
+
+ $oTemplating =& KTTemplating::getSingleton();
+ $oTemplate = $oTemplating->loadTemplate('kt3/fieldsets/simple');
$aTemplateData = array(
- "context" => $this,
- "document_data" => $aDocumentData,
- "document" => $aDocumentData["document"],
- "fieldset" => $this->fieldset,
- "fieldset_values" => $fieldset_values,
- "description" => $this->fieldset->getDescription(),
+ 'context' => $this,
+ 'document_data' => $aDocumentData,
+ 'document' => $aDocumentData['document'],
+ 'fieldset' => $this->fieldset,
+ 'fieldset_values' => $fieldset_values,
+ 'description' => $this->fieldset->getDescription(),
);
- return $oTemplate->render($aTemplateData);
+ return $oTemplate->render($aTemplateData);
}
-
+
function renderComparison($aDocumentData, $aComparisonData) {
// we do a fair bit of fetching, etc. in here.
- $document = $aDocumentData["document"];
-
+ $document = $aDocumentData['document'];
+
// we need to extract the fields.
$fields =& $this->fieldset->getFields();
-
-
+
+
// we now grab that subset of items which fit in here.
// FIXME link value -> lookup where appropriate.
// FIXME probably need to be more careful about the _type_ of field here.
$fieldset_values = array();
foreach ($fields as $oField) {
- $curr_val = KTUtil::arrayGet($aDocumentData["field_values"], $oField->getId(), null);
- $old_val = KTUtil::arrayGet($aComparisonData["field_values"], $oField->getId(), null);
- $fieldset_values[] = array("field" => $oField, "current_value" => $curr_val, "previous_value" => $old_val);
+ $curr_val = KTUtil::arrayGet($aDocumentData['field_values'], $oField->getId(), null);
+ $old_val = KTUtil::arrayGet($aComparisonData['field_values'], $oField->getId(), null);
+ $fieldset_values[] = array('field' => $oField, 'current_value' => $curr_val, 'previous_value' => $old_val);
}
-
-
- $oTemplating =& KTTemplating::getSingleton();
- $oTemplate = $oTemplating->loadTemplate("kt3/fieldsets/simple_versioned");
+
+
+ $oTemplating =& KTTemplating::getSingleton();
+ $oTemplate = $oTemplating->loadTemplate('kt3/fieldsets/simple_versioned');
$aTemplateData = array(
- "context" => $this,
- "document_data" => $aDocumentData,
- "document" => $aDocumentData["document"],
- "fieldset" => $this->fieldset,
- "fieldset_values" => $fieldset_values,
+ 'context' => $this,
+ 'document_data' => $aDocumentData,
+ 'document' => $aDocumentData['document'],
+ 'fieldset' => $this->fieldset,
+ 'fieldset_values' => $fieldset_values,
);
- return $oTemplate->render($aTemplateData);
- }
-
+ return $oTemplate->render($aTemplateData);
+ }
+
function renderEdit($document_data) {
global $main; // FIXME remove direct access to $main
-
+
$aFields = array();
-
+
$fields =& $this->fieldset->getFields();
-
+
foreach ($fields as $oField) {
- $val = KTUtil::arrayGet($document_data["field_values"], $oField->getId(), null);
-
+ $val = KTUtil::arrayGet($document_data['field_values'], $oField->getId(), null);
+
$has_errors = KTUtil::arrayGet($document_data['errors'], $oField->getId(),false);
if ($has_errors !== false) {
// FIXME when the actual errors (meaningful) are passed out, fix this.
$errors = array(_kt('The system rejected your value for this field.'));
- } else {
+ } else {
$errors = null;
}
-
+
$aFields[] = getWidgetForMetadataField($oField, $val, $main, $errors); // FIXME handle errors
}
$fieldset_name = $this->fieldset->getName();
$fieldset_description = $this->fieldset->getDescription();
- $oTemplating =& KTTemplating::getSingleton();
- $oTemplate = $oTemplating->loadTemplate("kt3/fieldsets/simple_editable");
+ $oTemplating =& KTTemplating::getSingleton();
+ $oTemplate = $oTemplating->loadTemplate('kt3/fieldsets/simple_editable');
$aTemplateData = array(
- "context" => $this,
- "fields" => $aFields,
- "title" => $fieldset_name,
- "description" => $fieldset_description,
+ 'context' => $this,
+ 'fields' => $aFields,
+ 'title' => $fieldset_name,
+ 'description' => $fieldset_description,
);
-
-
+
+
return $oTemplate->render($aTemplateData);
}
-
+
}
// Handle the conditional case.
class ConditionalFieldsetDisplay extends SimpleFieldsetDisplay {
-
+
function renderEdit($document_data) {
global $main; // FIXME remove direct access to $main
$oPage =& $main;
-
+
// FIXME do this from inside the widgetry mojo.
$oPage->requireCSSResource('resources/css/kt-treewidget.css');
-
+
// FIXME this currently doesn't work, since we use NBM's half-baked Ajax on add/bulk ;)
$oPage->requireJSResource('resources/js/taillog.js');
$oPage->requireJSResource('resources/js/conditional_usage.js');
-
- $aFields = array();
+
+ $aFields = array();
$fields =& $this->fieldset->getFields();
$values = array();
$errors = $document_data['errors'];
$have_values = false;
foreach ($fields as $oField) {
- $val = KTUtil::arrayGet($document_data["field_values"], $oField->getId(), null);
+ $val = KTUtil::arrayGet($document_data['field_values'], $oField->getId(), null);
if ($val !== null) {
$have_values = true;
-
- }
-
+
+ }
+
$values[$oField->getId()] = $val;
- }
+ }
+
-
// now, we need to do some extra work on conditional widgets.
// how?
-
+
$fieldset_name = $this->fieldset->getName();
$fieldset_description = _kt($this->fieldset->getDescription()); // need a better approach. how do we handle database-resident translations?
- $fieldset_description .= _kt("Note that the options which are available depends on previous choices within this fieldset.");
-
+ $fieldset_description .= _kt('Note that the options which are available depends on previous choices within this fieldset.');
+
// FIXME handle the editable case _with_ values.
-
+
if ($have_values) {
- $oTemplating =& KTTemplating::getSingleton();
- $oTemplate = $oTemplating->loadTemplate("kt3/fieldsets/conditional_editable_values");
+ $oTemplating =& KTTemplating::getSingleton();
+ $oTemplate = $oTemplating->loadTemplate('kt3/fieldsets/conditional_editable_values');
$aTemplateData = array(
- "context" => $this,
- "fields" => $fields =& $this->fieldset->getFields(),
+ 'context' => $this,
+ 'fields' => $fields =& $this->fieldset->getFields(),
'fieldset_id' => $this->fieldset->getId(),
- "title" => $fieldset_name,
- "description" => $fieldset_description,
+ 'title' => $fieldset_name,
+ 'description' => $fieldset_description,
'values' => $values,
'errors' => $errors,
);
-
+
return $oTemplate->render($aTemplateData);
} // else {
-
- $oTemplating =& KTTemplating::getSingleton();
- $oTemplate = $oTemplating->loadTemplate("kt3/fieldsets/conditional_editable");
+
+ $oTemplating =& KTTemplating::getSingleton();
+ $oTemplate = $oTemplating->loadTemplate('kt3/fieldsets/conditional_editable');
$aTemplateData = array(
- "context" => $this,
- "field" => $oField, // first field, widget.
+ 'context' => $this,
+ 'field' => $oField, // first field, widget.
'fieldset_id' => $this->fieldset->getId(),
- "title" => $fieldset_name,
- "description" => $fieldset_description,
+ 'title' => $fieldset_name,
+ 'description' => $fieldset_description,
);
-
+
return $oTemplate->render($aTemplateData);
}
-
+
}
-?>
+?>
\ No newline at end of file
diff --git a/view.php b/view.php
index bd695e2..8713108 100755
--- a/view.php
+++ b/view.php
@@ -5,64 +5,64 @@
* KnowledgeTree Open Source Edition
* Document Management Made Simple
* Copyright (C) 2004 - 2007 The Jam Warehouse Software (Pty) Limited
- *
+ *
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 3 as published by the
* Free Software Foundation.
- *
+ *
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
- *
+ *
* You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place,
* Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com.
- *
+ *
* The interactive user interfaces in modified source and object code versions
* of this program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU General Public License version 3.
- *
+ *
* In accordance with Section 7(b) of the GNU General Public License version 3,
* these Appropriate Legal Notices must retain the display of the "Powered by
- * KnowledgeTree" logo and retain the original copyright notice. If the display of the
+ * KnowledgeTree" logo and retain the original copyright notice. If the display of the
* logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices
- * must display the words "Powered by KnowledgeTree" and retain the original
- * copyright notice.
+ * must display the words "Powered by KnowledgeTree" and retain the original
+ * copyright notice.
* Contributor( s): ______________________________________
*/
// boilerplate.
-require_once("config/dmsDefaults.php");
-require_once(KT_LIB_DIR . "/templating/templating.inc.php");
-require_once(KT_LIB_DIR . "/templating/kt3template.inc.php");
-require_once(KT_LIB_DIR . "/dispatcher.inc.php");
-require_once(KT_LIB_DIR . "/util/ktutil.inc");
-require_once(KT_LIB_DIR . "/database/dbutil.inc");
-require_once(KT_LIB_DIR . "/util/sanitize.inc");
+require_once('config/dmsDefaults.php');
+require_once(KT_LIB_DIR . '/templating/templating.inc.php');
+require_once(KT_LIB_DIR . '/templating/kt3template.inc.php');
+require_once(KT_LIB_DIR . '/dispatcher.inc.php');
+require_once(KT_LIB_DIR . '/util/ktutil.inc');
+require_once(KT_LIB_DIR . '/database/dbutil.inc');
+require_once(KT_LIB_DIR . '/util/sanitize.inc');
// document related includes
-require_once(KT_LIB_DIR . "/documentmanagement/Document.inc");
-require_once(KT_LIB_DIR . "/documentmanagement/DocumentType.inc");
-require_once(KT_LIB_DIR . "/documentmanagement/DocumentFieldLink.inc");
-require_once(KT_LIB_DIR . "/documentmanagement/documentmetadataversion.inc.php");
-require_once(KT_LIB_DIR . "/documentmanagement/documentcontentversion.inc.php");
-require_once(KT_LIB_DIR . "/metadata/fieldset.inc.php");
-require_once(KT_LIB_DIR . "/security/Permission.inc");
+require_once(KT_LIB_DIR . '/documentmanagement/Document.inc');
+require_once(KT_LIB_DIR . '/documentmanagement/DocumentType.inc');
+require_once(KT_LIB_DIR . '/documentmanagement/DocumentFieldLink.inc');
+require_once(KT_LIB_DIR . '/documentmanagement/documentmetadataversion.inc.php');
+require_once(KT_LIB_DIR . '/documentmanagement/documentcontentversion.inc.php');
+require_once(KT_LIB_DIR . '/metadata/fieldset.inc.php');
+require_once(KT_LIB_DIR . '/security/Permission.inc');
// widget includes.
-require_once(KT_LIB_DIR . "/widgets/portlet.inc.php");
-require_once(KT_LIB_DIR . "/widgets/fieldsetDisplay.inc.php");
-require_once(KT_LIB_DIR . "/widgets/FieldsetDisplayRegistry.inc.php");
-require_once(KT_LIB_DIR . "/actions/documentaction.inc.php");
-require_once(KT_LIB_DIR . "/browse/browseutil.inc.php");
+require_once(KT_LIB_DIR . '/widgets/portlet.inc.php');
+require_once(KT_LIB_DIR . '/widgets/fieldsetDisplay.inc.php');
+require_once(KT_LIB_DIR . '/widgets/FieldsetDisplayRegistry.inc.php');
+require_once(KT_LIB_DIR . '/actions/documentaction.inc.php');
+require_once(KT_LIB_DIR . '/browse/browseutil.inc.php');
class ViewDocumentDispatcher extends KTStandardDispatcher {
var $sName = 'ktcore.actions.document.displaydetails';
- var $sSection = "view_details";
+ var $sSection = 'view_details';
var $sHelpPage = 'ktcore/browse.html';
var $actions;
@@ -77,21 +77,21 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
function check() {
if (!parent::check()) { return false; }
-
+
$this->persistParams(array('fDocumentId'));
-
+
return true;
}
// FIXME identify the current location somehow.
function addPortlets($currentaction = null) {
$currentaction = $this->sName;
-
+
$actions = KTDocumentActionUtil::getDocumentActionsForDocument($this->oDocument, $this->oUser, 'documentinfo');
$oPortlet = new KTActionPortlet(sprintf(_kt('Document info')));
$oPortlet->setActions($actions, $currentaction);
- $this->oPage->addPortlet($oPortlet);
-
+ $this->oPage->addPortlet($oPortlet);
+
$this->actions = KTDocumentActionUtil::getDocumentActionsForDocument($this->oDocument, $this->oUser);
$oPortlet = new KTActionPortlet(sprintf(_kt('Document actions'), $this->oDocument->getName()));
$oPortlet->setActions($this->actions, $currentaction);
@@ -100,9 +100,9 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
function do_main() {
// fix legacy, broken items.
- if (KTUtil::arrayGet($_REQUEST, "fDocumentID", true) !== true) {
- $_REQUEST["fDocumentId"] = sanitizeForSQL(KTUtil::arrayGet($_REQUEST, "fDocumentID"));
- unset($_REQUEST["fDocumentID"]);
+ if (KTUtil::arrayGet($_REQUEST, 'fDocumentID', true) !== true) {
+ $_REQUEST['fDocumentId'] = sanitizeForSQL(KTUtil::arrayGet($_REQUEST, 'fDocumentID'));
+ unset($_REQUEST['fDocumentID']);
}
$document_data = array();
@@ -118,7 +118,7 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
return $this->do_error();
}
$document_id = $oDocument->getId();
- $document_data["document_id"] = $oDocument->getId();
+ $document_data['document_id'] = $oDocument->getId();
if (!KTBrowseUtil::inAdminMode($this->oUser, $oDocument->getFolderId())) {
@@ -143,20 +143,20 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
$this->oPage->setSecondaryTitle($oDocument->getName());
$aOptions = array(
- "documentaction" => "viewDocument",
- "folderaction" => "browse",
+ 'documentaction' => 'viewDocument',
+ 'folderaction' => 'browse',
);
$this->oDocument =& $oDocument;
$this->aBreadcrumbs = kt_array_merge($this->aBreadcrumbs, KTBrowseUtil::breadcrumbsForDocument($oDocument, $aOptions));
- $this->oPage->setBreadcrumbDetails(_kt("document details"));
- $this->addPortlets("Document Details");
+ $this->oPage->setBreadcrumbDetails(_kt('document details'));
+ $this->addPortlets('Document Details');
- $document_data["document"] = $oDocument;
- $document_data["document_type"] =& DocumentType::get($oDocument->getDocumentTypeID());
+ $document_data['document'] = $oDocument;
+ $document_data['document_type'] =& DocumentType::get($oDocument->getDocumentTypeID());
$is_valid_doctype = true;
- if (PEAR::isError($document_data["document_type"])) {
+ if (PEAR::isError($document_data['document_type'])) {
$this->oPage->addError(_kt('The document you requested has an invalid document type. Unfortunately, this means that we cannot effectively display it.'));
$is_valid_doctype = false;
}
@@ -171,7 +171,7 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
//var_dump($field_values);
- $document_data["field_values"] = $field_values;
+ $document_data['field_values'] = $field_values;
// Fieldset generation.
//
@@ -186,7 +186,9 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
$fieldsetDisplayReg =& KTFieldsetDisplayRegistry::getSingleton();
- foreach (KTMetadataUtil::fieldsetsForDocument($oDocument) as $oFieldset) {
+ $aDocFieldsets = KTMetadataUtil::fieldsetsForDocument($oDocument);
+
+ foreach ($aDocFieldsets as $oFieldset) {
$displayClass = $fieldsetDisplayReg->getHandler($oFieldset->getNamespace());
array_push($fieldsets, new $displayClass($oFieldset));
}
@@ -216,35 +218,35 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
$aViewletActions = KTDocumentActionUtil::getDocumentActionsForDocument($this->oDocument, $this->oUser, 'documentviewlet');
foreach ($aViewletActions as $oAction) {
$aInfo = $oAction->getInfo();
-
+
if ($aInfo !== null) {
- $aViewlets[] = $oAction->display_viewlet(); // use the action, since we display_viewlet() later.
+ $aViewlets[] = $oAction->display_viewlet(); // use the action, since we display_viewlet() later.
}
- }
-
- $viewlet_data = implode(" ", $aViewlets);
+ }
+
+ $viewlet_data = implode(' ', $aViewlets);
$viewlet_data = trim($viewlet_data);
-
+
$content_class = 'view';
if (!empty($viewlet_data)) {
$content_class = 'view withviewlets';
- }
+ }
$this->oPage->setContentClass($content_class);
-
-
+
+
$oTemplating =& KTTemplating::getSingleton();
- $oTemplate = $oTemplating->loadTemplate("ktcore/document/view");
+ $oTemplate = $oTemplating->loadTemplate('ktcore/document/view');
$aTemplateData = array(
- "context" => $this,
- "sCheckoutUser" => $checkout_user,
- "isCheckoutUser" => ($this->oUser->getId() == $oDocument->getCheckedOutUserId()),
- "canCheckin" => $bCanCheckin,
- "document_id" => $document_id,
- "document" => $oDocument,
- "documentName" => $oDocument->getName(),
- "document_data" => $document_data,
- "fieldsets" => $fieldsets,
+ 'context' => $this,
+ 'sCheckoutUser' => $checkout_user,
+ 'isCheckoutUser' => ($this->oUser->getId() == $oDocument->getCheckedOutUserId()),
+ 'canCheckin' => $bCanCheckin,
+ 'document_id' => $document_id,
+ 'document' => $oDocument,
+ 'documentName' => $oDocument->getName(),
+ 'document_data' => $document_data,
+ 'fieldsets' => $fieldsets,
'viewlet_data' => $viewlet_data,
);
//return '' . print_r($aTemplateData, true) . '
';
@@ -256,86 +258,86 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
// fDocumentId (document to compare against)
// fComparisonVersion (the metadata_version of the appropriate document)
function do_viewComparison() {
-
+
$document_data = array();
$document_id = sanitizeForSQL(KTUtil::arrayGet($_REQUEST, 'fDocumentId'));
if ($document_id === null) {
$this->oPage->addError(sprintf(_kt("No document was requested. Please browse for one."), KTBrowseUtil::getBrowseBaseUrl()));
return $this->do_error();
}
-
- $document_data["document_id"] = $document_id;
-
+
+ $document_data['document_id'] = $document_id;
+
$base_version = sanitizeForSQL(KTUtil::arrayGet($_REQUEST, 'fBaseVersion'));
-
+
// try get the document.
$oDocument =& Document::get($document_id, $base_version);
if (PEAR::isError($oDocument)) {
$this->oPage->addError(sprintf(_kt("The base document you attempted to retrieve is invalid. Please browse for one."), KTBrowseUtil::getBrowseBaseUrl()));
return $this->do_error();
}
-
+
if (!Permission::userHasDocumentReadPermission($oDocument)) {
// FIXME inconsistent.
$this->oPage->addError(_kt('You are not allowed to view this document'));
return $this->permissionDenied();
}
-
+
$this->oDocument =& $oDocument;
$this->oPage->setSecondaryTitle($oDocument->getName());
$aOptions = array(
- "documentaction" => "viewDocument",
- "folderaction" => "browse",
+ 'documentaction' => 'viewDocument',
+ 'folderaction' => 'browse',
);
-
+
$this->aBreadcrumbs = kt_array_merge($this->aBreadcrumbs, KTBrowseUtil::breadcrumbsForDocument($oDocument, $aOptions));
- $this->oPage->setBreadcrumbDetails(_kt("compare versions"));
-
+ $this->oPage->setBreadcrumbDetails(_kt('compare versions'));
+
$comparison_version = sanitizeForSQL(KTUtil::arrayGet($_REQUEST, 'fComparisonVersion'));
if ($comparison_version=== null) {
$this->oPage->addError(sprintf(_kt("No comparison version was requested. Please select a version."), KTUtil::addQueryStringSelf('action=history&fDocumentId=' . $document_id)));
return $this->do_error();
}
-
+
$oComparison =& Document::get($oDocument->getId(), $comparison_version);
if (PEAR::isError($oComparison)) {
$this->errorRedirectToMain(_kt('Invalid document to compare against.'));
}
$comparison_data = array();
$comparison_data['document_id'] = $oComparison->getId();
-
- $document_data["document"] = $oDocument;
+
+ $document_data['document'] = $oDocument;
$comparison_data['document'] = $oComparison;
-
- $document_data["document_type"] =& DocumentType::get($oDocument->getDocumentTypeID());
- $comparison_data["document_type"] =& DocumentType::get($oComparison->getDocumentTypeID());
-
+
+ $document_data['document_type'] =& DocumentType::get($oDocument->getDocumentTypeID());
+ $comparison_data['document_type'] =& DocumentType::get($oComparison->getDocumentTypeID());
+
// follow twice: once for normal, once for comparison.
$is_valid_doctype = true;
-
- if (PEAR::isError($document_data["document_type"])) {
+
+ if (PEAR::isError($document_data['document_type'])) {
$this->oPage->addError(_kt('The document you requested has an invalid document type. Unfortunately, this means that we cannot effectively display it.'));
$is_valid_doctype = false;
}
-
+
// we want to grab all the md for this doc, since its faster that way.
$mdlist =& DocumentFieldLink::getList(array('metadata_version_id = ?', array($oDocument->getMetadataVersionId())));
-
+
$field_values = array();
foreach ($mdlist as $oFieldLink) {
$field_values[$oFieldLink->getDocumentFieldID()] = $oFieldLink->getValue();
}
-
- $document_data["field_values"] = $field_values;
+
+ $document_data['field_values'] = $field_values;
$mdlist =& DocumentFieldLink::getList(array('metadata_version_id = ?', array($comparison_version)));
-
+
$field_values = array();
foreach ($mdlist as $oFieldLink) {
$field_values[$oFieldLink->getDocumentFieldID()] = $oFieldLink->getValue();
}
-
- $comparison_data["field_values"] = $field_values;
-
+
+ $comparison_data['field_values'] = $field_values;
+
// Fieldset generation.
//
// we need to create a set of FieldsetDisplay objects
@@ -343,47 +345,47 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
// to the view (i.e. ZX3). Unfortunately, we don't have
// any of the plumbing to do it, so we handle this here.
$fieldsets = array();
-
+
// we always have a generic.
array_push($fieldsets, new GenericFieldsetDisplay());
-
+
// FIXME can we key this on fieldset namespace? or can we have duplicates?
// now we get the other fieldsets, IF there is a valid doctype.
-
+
if ($is_valid_doctype) {
// these are the _actual_ fieldsets.
$fieldsetDisplayReg =& KTFieldsetDisplayRegistry::getSingleton();
-
+
// and the generics
$activesets = KTFieldset::getGenericFieldsets();
foreach ($activesets as $oFieldset) {
$displayClass = $fieldsetDisplayReg->getHandler($oFieldset->getNamespace());
array_push($fieldsets, new $displayClass($oFieldset));
}
-
+
$activesets = KTFieldset::getForDocumentType($oDocument->getDocumentTypeID());
foreach ($activesets as $oFieldset) {
$displayClass = $fieldsetDisplayReg->getHandler($oFieldset->getNamespace());
array_push($fieldsets, new $displayClass($oFieldset));
}
}
-
+
// FIXME handle ad-hoc fieldsets.
$this->addPortlets();
- $oTemplate = $this->oValidator->validateTemplate("ktcore/document/compare");
+ $oTemplate = $this->oValidator->validateTemplate('ktcore/document/compare');
$aTemplateData = array(
- "context" => $this,
- "document_id" => $document_id,
- "document" => $oDocument,
- "document_data" => $document_data,
- "comparison_data" => $comparison_data,
- "comparison_document" => $oComparison,
- "fieldsets" => $fieldsets,
+ 'context' => $this,
+ 'document_id' => $document_id,
+ 'document' => $oDocument,
+ 'document_data' => $document_data,
+ 'comparison_data' => $comparison_data,
+ 'comparison_document' => $oComparison,
+ 'fieldsets' => $fieldsets,
);
- //var_dump($aTemplateData["comparison_data"]);
+ //var_dump($aTemplateData['comparison_data']);
return $oTemplate->render($aTemplateData);
}
-
+
function do_error() {
return ' '; // don't actually do anything.
}
@@ -399,4 +401,4 @@ class ViewDocumentDispatcher extends KTStandardDispatcher {
$oDispatcher = new ViewDocumentDispatcher;
$oDispatcher->dispatch();
-?>
+?>
\ No newline at end of file