Commit 2559cc0338737a1e63ca7aff21b7f4ebeff1667f

Authored by Neil Blakey-Milner
1 parent fc92d7c3

Conditional fieldset management, field values selection, and creation of

new fieldsets


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3710 c91229c3-7414-0410-bfa2-8a42b809f60b
presentation/lookAndFeel/knowledgeTree/administration/docfieldmanagement/documentFields.php
@@ -7,6 +7,7 @@ require_once(KT_LIB_DIR . '/templating/templating.inc.php'); @@ -7,6 +7,7 @@ require_once(KT_LIB_DIR . '/templating/templating.inc.php');
7 require_once(KT_LIB_DIR . '/documentmanagement/DocumentField.inc'); 7 require_once(KT_LIB_DIR . '/documentmanagement/DocumentField.inc');
8 require_once(KT_LIB_DIR . '/metadata/fieldset.inc.php'); 8 require_once(KT_LIB_DIR . '/metadata/fieldset.inc.php');
9 require_once(KT_LIB_DIR . '/metadata/metadatautil.inc.php'); 9 require_once(KT_LIB_DIR . '/metadata/metadatautil.inc.php');
  10 +require_once(KT_LIB_DIR . '/validation/dispatchervalidation.inc.php');
10 11
11 $sectionName = "Administration"; 12 $sectionName = "Administration";
12 require_once(KT_DIR . "/presentation/webpageTemplate.inc"); 13 require_once(KT_DIR . "/presentation/webpageTemplate.inc");
@@ -14,6 +15,7 @@ require_once(KT_DIR . "/presentation/webpageTemplate.inc"); @@ -14,6 +15,7 @@ require_once(KT_DIR . "/presentation/webpageTemplate.inc");
14 class KTDocumentFieldDispatcher extends KTStandardDispatcher { 15 class KTDocumentFieldDispatcher extends KTStandardDispatcher {
15 var $bAutomaticTransaction = true; 16 var $bAutomaticTransaction = true;
16 17
  18 + // {{{ do_main
17 function do_main () { 19 function do_main () {
18 $oTemplating =& KTTemplating::getSingleton(); 20 $oTemplating =& KTTemplating::getSingleton();
19 $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/listFieldsets'); 21 $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/listFieldsets');
@@ -22,7 +24,9 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher { @@ -22,7 +24,9 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher {
22 )); 24 ));
23 return $oTemplate; 25 return $oTemplate;
24 } 26 }
  27 + // }}}
25 28
  29 + // {{{ do_edit
26 function do_edit() { 30 function do_edit() {
27 $oTemplating =& KTTemplating::getSingleton(); 31 $oTemplating =& KTTemplating::getSingleton();
28 $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/editFieldset'); 32 $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/editFieldset');
@@ -32,7 +36,9 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher { @@ -32,7 +36,9 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher {
32 )); 36 ));
33 return $oTemplate; 37 return $oTemplate;
34 } 38 }
  39 + // }}}
35 40
  41 + // {{{ edit_object
36 function do_editobject() { 42 function do_editobject() {
37 $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']); 43 $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']);
38 $oFieldset->setName($_REQUEST['name']); 44 $oFieldset->setName($_REQUEST['name']);
@@ -42,10 +48,35 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher { @@ -42,10 +48,35 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher {
42 $this->errorRedirectTo('edit', 'Could not save fieldset changes', 'fFieldsetId=' . $oFieldset->getId()); 48 $this->errorRedirectTo('edit', 'Could not save fieldset changes', 'fFieldsetId=' . $oFieldset->getId());
43 exit(0); 49 exit(0);
44 } 50 }
45 - $this->errorRedirectTo('edit', 'Changes saved', 'fFieldsetId=' . $oFieldset->getId()); 51 + $this->successRedirectTo('edit', 'Changes saved', 'fFieldsetId=' . $oFieldset->getId());
46 exit(0); 52 exit(0);
47 } 53 }
  54 + // }}}
48 55
  56 + // {{{ do_new
  57 + function do_new() {
  58 + if (KTUtil::arrayGet($_REQUEST, 'generic')) {
  59 + $generic = true;
  60 + } else {
  61 + $generic = false;
  62 + }
  63 + $res = KTFieldset::createFromArray(array(
  64 + 'name' => $_REQUEST['name'],
  65 + 'namespace' => $_REQUEST['namespace'],
  66 + 'mandatory' => false,
  67 + 'isconditional' => false,
  68 + 'isgeneric' => $generic,
  69 + ));
  70 + if (PEAR::isError($res) || ($res === false)) {
  71 + $this->errorRedirectToMain('Could not create fieldset');
  72 + exit(0);
  73 + }
  74 + $this->successRedirectTo('edit', 'Fieldset created', 'fFieldsetId=' . $res->getId());
  75 + exit(0);
  76 + }
  77 + // }}}
  78 +
  79 + // {{{ do_newfield
49 function do_newfield() { 80 function do_newfield() {
50 $is_lookup = false; 81 $is_lookup = false;
51 $is_tree = false; 82 $is_tree = false;
@@ -68,10 +99,16 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher { @@ -68,10 +99,16 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher {
68 $this->errorRedirectTo('edit', 'Could not create field', 'fFieldsetId=' . $oFieldset->getId()); 99 $this->errorRedirectTo('edit', 'Could not create field', 'fFieldsetId=' . $oFieldset->getId());
69 exit(0); 100 exit(0);
70 } 101 }
71 - $this->errorRedirectTo('edit', 'Field created', 'fFieldsetId=' . $oFieldset->getId()); 102 + if ($is_lookup) {
  103 + $this->successRedirectTo('editField', 'Field created', 'fFieldsetId=' . $oFieldset->getId() . '&fFieldId=' . $oField->getId());
  104 + } else {
  105 + $this->successRedirectTo('edit', 'Field created', 'fFieldsetId=' . $oFieldset->getId());
  106 + }
72 exit(0); 107 exit(0);
73 } 108 }
  109 + // }}}
74 110
  111 + // {{{ do_editField
75 function do_editField() { 112 function do_editField() {
76 $oTemplating =& KTTemplating::getSingleton(); 113 $oTemplating =& KTTemplating::getSingleton();
77 $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/editField'); 114 $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/editField');
@@ -83,7 +120,27 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher { @@ -83,7 +120,27 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher {
83 )); 120 ));
84 return $oTemplate; 121 return $oTemplate;
85 } 122 }
  123 + // }}}
  124 +
  125 + // {{{ do_editFieldObject
  126 + function do_editFieldObject() {
  127 + $oTemplating =& KTTemplating::getSingleton();
  128 + $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/editField');
  129 + $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']);
  130 + $oField =& DocumentField::get($_REQUEST['fFieldId']);
  131 +
  132 + $oField->setName($_REQUEST['name']);
  133 + $res = $oField->update();
  134 + if (PEAR::isError($res) || ($res === false)) {
  135 + $this->errorRedirectTo('editField', 'Could not save field changes', 'fFieldsetId=' . $oFieldset->getId() . '&fFieldId=' . $oField->getId());
  136 + exit(0);
  137 + }
  138 + $this->successRedirectTo('editField', 'Changes saved', 'fFieldsetId=' . $oFieldset->getId() . '&fFieldId=' . $oField->getId());
  139 + exit(0);
  140 + }
  141 + // }}}
86 142
  143 + // {{{ do_addLookups
87 function do_addLookups() { 144 function do_addLookups() {
88 $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']); 145 $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']);
89 $oField =& DocumentField::get($_REQUEST['fFieldId']); 146 $oField =& DocumentField::get($_REQUEST['fFieldId']);
@@ -94,13 +151,102 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher { @@ -94,13 +151,102 @@ class KTDocumentFieldDispatcher extends KTStandardDispatcher {
94 $this->successRedirectTo('editField', 'Lookup added', 'fFieldsetId=' . $oFieldset->getId() . '&fFieldId=' . $oField->getId()); 151 $this->successRedirectTo('editField', 'Lookup added', 'fFieldsetId=' . $oFieldset->getId() . '&fFieldId=' . $oField->getId());
95 exit(0); 152 exit(0);
96 } 153 }
  154 + // }}}
  155 +
  156 + // {{{ do_removeLookups
  157 + function do_removeLookups() {
  158 + $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']);
  159 + $oField =& DocumentField::get($_REQUEST['fFieldId']);
  160 + foreach ($_REQUEST['metadata'] as $iMetaDataId) {
  161 + $oMetaData =& MetaData::get($iMetaDataId);
  162 + $oMetaData->delete();
  163 + }
  164 + $this->successRedirectTo('editField', 'Lookups removed', 'fFieldsetId=' . $oFieldset->getId() . '&fFieldId=' . $oField->getId());
  165 + exit(0);
  166 + }
  167 + // }}}
  168 +
  169 + // {{{ do_becomeconditional
  170 + function do_becomeconditional() {
  171 + $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']);
  172 + $oFieldset->setIsConditional(true);
  173 + $res = $oFieldset->update();
  174 + if (PEAR::isError($res) || ($res === false)) {
  175 + $this->errorRedirectTo('edit', 'Could not become conditional', 'fFieldsetId=' . $oFieldset->getId());
  176 + exit(0);
  177 + }
  178 + $this->successRedirectTo('edit', 'Became conditional', 'fFieldsetId=' . $oFieldset->getId());
  179 + exit(0);
  180 + }
  181 + // }}}
  182 +
  183 + // {{{ do_removeconditional
  184 + function do_removeconditional() {
  185 + $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']);
  186 + $oFieldset->setIsConditional(false);
  187 + $res = $oFieldset->update();
  188 + if (PEAR::isError($res) || ($res === false)) {
  189 + $this->errorRedirectTo('edit', 'Could not stop being conditional', 'fFieldsetId=' . $oFieldset->getId());
  190 + exit(0);
  191 + }
  192 + $this->successRedirectTo('edit', 'Became no longer conditional', 'fFieldsetId=' . $oFieldset->getId());
  193 + exit(0);
  194 + }
  195 + // }}}
  196 +
  197 + // {{{ do_removeFields
  198 + function do_removeFields() {
  199 + $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']);
  200 + foreach ($_REQUEST['fields'] as $iFieldId) {
  201 + $oField =& DocumentField::get($iFieldId);
  202 + $oField->delete();
  203 + }
  204 + $this->successRedirectTo('edit', 'Fields removed', 'fFieldsetId=' . $oFieldset->getId());
  205 + exit(0);
  206 + }
  207 + // }}}
97 208
98 - function handleOutput($data) {  
99 - global $main;  
100 - $main->bFormDisabled = true;  
101 - $main->setCentralPayload($data);  
102 - $main->render(); 209 + // {{{ do_manageConditional
  210 + function do_manageConditional () {
  211 + $oTemplating =& KTTemplating::getSingleton();
  212 + $oTemplate =& $oTemplating->loadTemplate('ktcore/metadata/conditional/manageConditional');
  213 + $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']);
  214 + $sTable = KTUtil::getTableName('field_orders');
  215 + $aQuery = array(
  216 + "SELECT parent_field_id, child_field_id FROM $sTable WHERE fieldset_id = ?",
  217 + array($oFieldset->getId())
  218 + );
  219 + $aFieldOrders = DBUtil::getResultArray($aQuery);
  220 + $oTemplate->setData(array(
  221 + 'oFieldset' => $oFieldset,
  222 + 'free_fields' => $oFieldset->getFields(),
  223 + 'parent_fields' => $oFieldset->getFields(),
  224 + 'aFieldOrders' => $aFieldOrders,
  225 + ));
  226 + return $oTemplate;
  227 + }
  228 + // }}}
  229 +
  230 + // {{{
  231 + function do_orderFields() {
  232 + $oFieldset =& KTFieldset::get($_REQUEST['fFieldsetId']);
  233 + $aFreeFieldIds = $_REQUEST['fFreeFieldIds'];
  234 + $iParentFieldId = $_REQUEST['fParentFieldId'];
  235 + if (in_array($aParentFieldId, $aFreeFieldIds)) {
  236 + $this->errorRedirectTo('manageConditional', 'Field cannot be its own parent field', 'fFieldsetId=' . $oFieldset->getId());
  237 + }
  238 + foreach ($aFreeFieldIds as $iChildFieldId) {
  239 + $res = KTMetadataUtil::addFieldOrder($iParentFieldId, $iChildFieldId);
  240 + var_dump($res);
  241 + KTDispatcherValidation::notError($this, $res, array(
  242 + 'redirect_to' => array('manageConditional', 'fFieldsetId=' . $oFieldset->getId()),
  243 + 'message' => 'Error adding Fields',
  244 + ));
  245 + }
  246 + $this->successRedirectTo('manageConditional', 'Fields ordered', 'fFieldsetId=' . $oFieldset->getId());
  247 + exit(0);
103 } 248 }
  249 + // }}}
104 } 250 }
105 251
106 $d =& new KTDocumentFieldDispatcher; 252 $d =& new KTDocumentFieldDispatcher;