📄 basic.inc.php
字号:
$extra_errors['name'] = _kt("That name is already in use in this fieldset. Please specify a unique name.");
}
}
if (!empty($errors) || !empty($extra_errors)) {
return $oForm->handleError(null, $extra_errors);
}
$this->oField->setName($data['name']);
$this->oField->setDescription($data['description']);
$this->oField->setIsMandatory($data['required']);
$res = $this->oField->update();
if (PEAR::isError($res)) {
return $oForm->handleError(sprintf(_kt("Failed to update field: %s"), $res->getMessage()));
}
$this->successRedirectTo('managefield',_kt("Field updated."));
}
function form_addlookups() {
$oForm = new KTForm;
$oForm->setOptions(array(
'identifier' => 'ktcore.fieldsets.basic.field.addlookup',
'label' => _kt("Add Lookup Values"),
'submit_label' => _kt('Add Lookups'),
'cancel_action' => 'managefield',
'fail_action' => 'addlookupvalues',
'action' => 'createlookupvalues',
'context' => $this,
));
$oForm->setWidgets(array(
array('ktcore.widgets.text',array(
'label' => _kt("Lookup Values"),
'name' => 'lookups',
'required' => true,
'description' => _kt("Lookup values are what a user can select from a dropdown. These pre-created lookup values are useful, since they help you keep the metadata in the system organised."),
'important_description' => _kt("Please enter the lookup values you wish to add, one per line."),
)),
));
$oForm->setValidators(array(
array('ktcore.validators.string', array(
'test' => 'lookups',
'output' => 'lookups',
'max_length' => 9999,
)),
));
return $oForm;
}
function do_addlookupvalues() {
$this->oPage->setBreadcrumbDetails(_kt('add lookup values'));
$oForm = $this->form_addlookups();
return $oForm->render();
}
function do_createlookupvalues() {
$oForm = $this->form_addlookups();
$res = $oForm->validate();
$data = $res['results'];
$errors = $res['errors'];
$extra_errors = array();
$failed = array();
$lookups = array();
$raw_lookups = $data['lookups'];
$lookup_candidates = explode("\n", $raw_lookups);
foreach ($lookup_candidates as $candidate) {
$name = trim($candidate);
if (empty($name)) {
continue;
}
// check for existing or to-be-created lookups.
if ($lookups[$name]) {
$failed[$name] = $name;
continue;
}
if ($failed[$name]) {
continue; // already blown up, fix it.
}
$oOldLookup = MetaData::getByValueAndDocumentField($name, $this->oField);
if (!PEAR::isError($oOldLookup)) {
$failed[$name] = $name;
continue;
}
$lookups[$name] = $name;
}
if (!empty($failed)) {
$extra_errors['lookups'][] = sprintf(_kt("The following lookups you specified already exist, or are specified twice: %s"), implode(', ', $failed));
} else if (empty($lookups)) {
$extra_errors['lookups'][] = _kt("You must have at least 1 new lookup value.");
}
if (!empty($errors) || !empty($extra_errors)) {
return $oForm->handleError(null, $extra_errors);
}
$data['lookups'] = $lookups;
foreach ($lookups as $value) {
$oLookup = MetaData::createFromArray(array(
'DocFieldId' => $this->oField->getId(),
'sName' => $value,
'iTreeParent' => null,
'bDisabled' => false,
'bIsStuck' => false,
));
if (PEAR::isError($oLookup)) {
return $oForm->handleError(sprintf(_kt("Failed to create lookup: %s"), $oLookup->getMessage()));
}
}
$this->successRedirectTo('managefield', sprintf(_kt("%d lookups added."), count($lookups)));
}
function do_managelookups() {
$this->oPage->setBreadcrumbDetails(_kt('manage lookup values'));
// Add javascript to create the edit form
$sJavaScript = "\nfunction editLookup(id)\n
{\n
var div = document.getElementById(id);\n
var value = div.innerHTML;
<!-- Replace all double quotes with " -->\n
matches = value.match(/\"/g);\n
var newValue = value;\n
if(matches){\n
for(var i = 0; i < matches.length; i++){\n
newValue = newValue.replace('\"', '"');\n
}\n
}\n\n
var inner = '<input type=\"text\" name=\"lookup['+id+']\" id=\"lookup_'+id+'\" value=\"'+newValue+'\" />';\n
inner += '<input type=\"hidden\" id=\"original_'+id+'\" value=\"'+newValue+'\" />';\n
inner += '<input type=\"submit\" name=\"submit[edit]\" value=\""._kt('Save')."\" />';\n
inner += '<input type=\"button\" onclick=\"javascript: closeLookupEdit('+id+');\" name=\"cancel\" value=\""._kt('Cancel')."\" />';\n
div.innerHTML = inner;\n
document.getElementById('lookup_'+id).focus();\n
}\n\n
function closeLookupEdit(id)
{\n
value = document.getElementById('original_'+id).value;\n
document.getElementById(id).innerHTML = value;\n
}\n\n";
$this->oPage->requireJSStandalone($sJavaScript);
$lookups =& MetaData::getByDocumentField($this->oField);
$args = $this->meldPersistQuery("","metadataMultiAction", true);
$oTemplate =& $this->oValidator->validateTemplate("ktcore/metadata/admin/manage_lookups");
$oTemplate->setData(array(
'context' => $this,
'field_name' => $this->oField->getName(),
'lookups' => $lookups,
'args' => $args,
));
return $oTemplate->render();
}
// {{{ do_metadataMultiAction
function do_metadataMultiAction() {
$subaction = array_keys(KTUtil::arrayGet($_REQUEST, 'submit', array()));
$this->oValidator->notEmpty($subaction, array("message" => _kt("No action specified")));
$subaction = $subaction[0];
$method = null;
if (method_exists($this, 'lookup_' . $subaction)) {
$method = 'lookup_' . $subaction;
}
$this->oValidator->notEmpty($method, array("message" => _kt("Unknown action specified")));
return $this->$method();
}
// }}}
// {{{ lookup_remove
function lookup_remove() {
$oFieldset =& $this->oValidator->validateFieldset($_REQUEST['fFieldsetId']);
$oField =& DocumentField::get($_REQUEST['fFieldId']);
$aMetadata = KTUtil::arrayGet($_REQUEST, 'metadata');
if (empty($aMetadata)) {
$this->errorRedirectTo('managelookups', _kt('No lookups selected'));
}
foreach ($_REQUEST['metadata'] as $iMetaDataId) {
$oMetaData =& MetaData::get($iMetaDataId);
if (PEAR::isError($oMetaData)) {
$this->errorRedirectTo('managelookups', _kt('Invalid lookup selected'));
}
$oMetaData->delete();
}
$this->successRedirectTo('managelookups', _kt('Lookups removed'));
exit(0);
}
// }}}
// {{{ lookup_disable
function lookup_disable() {
$oFieldset =& $this->oValidator->validateFieldset($_REQUEST['fFieldsetId']);
$oField =& DocumentField::get($_REQUEST['fFieldId']);
$aMetadata = KTUtil::arrayGet($_REQUEST, 'metadata');
if (empty($aMetadata)) {
$this->errorRedirectTo('managelookups', _kt('No lookups selected'));
}
foreach ($_REQUEST['metadata'] as $iMetaDataId) {
$oMetaData =& MetaData::get($iMetaDataId);
if (PEAR::isError($oMetaData)) {
$this->errorRedirectTo('managelookups', _kt('Invalid lookup selected'));
}
$oMetaData->setDisabled(true);
$oMetaData->update();
}
$this->successRedirectTo('managelookups', _kt('Lookups disabled'));
exit(0);
}
// }}}
/**
* Save the edited lookup values
*
*/
function lookup_edit(){
$aLookupValues = $_REQUEST['lookup'];
if(empty($aLookupValues)){
$this->errorRedirectTo('managelookups', _kt('No lookups were selected for editing'));
exit;
}
foreach ($aLookupValues as $iMetaDataId => $sValue){
$oMetaData = MetaData::get($iMetaDataId);
if (PEAR::isError($oMetaData)) {
$this->addErrorMessage(_kt('Invalid lookup selected').': '.$sValue);
continue;
//$this->errorRedirectTo('managelookups', _kt('Invalid lookup selected'));
}
if(empty($sValue)){
$this->addErrorMessage(_kt('Lookup cannot be empty').': '.$oMetaData->getName());
if(count($aLookupValues) == 1){
$this->redirectTo('managelookups');
}
continue;
}
$oMetaData->setName($sValue);
$oMetaData->update();
}
$this->successRedirectTo('managelookups', _kt('Lookup values saved'));
exit(0);
}
// {{{ lookup_enable
function lookup_toggleenabled() {
$oFieldset =& $this->oValidator->validateFieldset($_REQUEST['fFieldsetId']);
$oField =& DocumentField::get($_REQUEST['fFieldId']);
$aMetadata = KTUtil::arrayGet($_REQUEST, 'metadata');
if (empty($aMetadata)) {
$this->errorRedirectTo('managelookups', _kt('No lookups selected'));
}
foreach ($_REQUEST['metadata'] as $iMetaDataId) {
$oMetaData =& MetaData::get($iMetaDataId);
if (PEAR::isError($oMetadata)) {
$this->errorRedirectTo('managelookups', _kt('Invalid lookup selected'));
}
$oMetaData->setDisabled(!$oMetaData->getDisabled());
$oMetaData->update();
}
$this->successRedirectTo('managelookups', _kt('Status Toggled'));
exit(0);
}
// }}}
// {{{ lookup_togglestickiness
function lookup_togglestickiness() {
$oFieldset =& $this->oValidator->validateFieldset($_REQUEST['fFieldsetId']);
$oField =& DocumentField::get($_REQUEST['fFieldId']);
$aMetadata = KTUtil::arrayGet($_REQUEST, 'metadata');
if (empty($aMetadata)) {
$this->errorRedirectTo('managelookups', _kt('No lookups selected'));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -