*/ GalleryCoreApi::requireOnce('modules/customfield/classes/CustomFieldHelper.class'); /** * This controller will handle assigning values to custom fields * * @package CustomField * @subpackage UserInterface * */ class CustomFieldItemEdit extends ItemEditPlugin { /** * @see ItemEditPlugin::handleRequest */ function handleRequest($form, &$item, &$preferred) { $status = null; $error = array(); list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'customfield'); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null, null, null); } if (isset($form['cfAdmin'])) { list ($ret, $adminStatus) = CustomFieldHelper::handleAdminAction($form, $item->getId()); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null, null, null); } foreach ($adminStatus as $key => $tmp) { switch ($key) { case 'saved': $status = $module->translate('Display settings saved successfully'); break; case 'added': $status = $module->translate('New field added successfully'); break; case 'moved': $status = $module->translate('Field moved successfully'); break; case 'removed': $status = $module->translate('Field removed successfully'); break; case 'picklist': $status = $module->translate('Picklist updated successfully'); break; case 'error': $status = '
' . $module->translate('Field name already in use') . '
'; break; default: $status = $key; } } } else if (isset($form['action']['save'])) { $ret = CustomFieldHelper::saveFieldValues($item, $form['fields']); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null, null, null); } list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'customfield'); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null, null, null); } $status = $module->translate('Changes saved successfully'); } return array(null, $error, $status, false); } /** * @see ItemEditPlugin::loadTemplate */ function loadTemplate(&$template, &$form, $item, $thumbnail) { global $gallery; $session =& $gallery->getSession(); $tmp = $session->get(CUSTOM_FIELD_SESSION_KEY); $adminMode = (!empty($tmp) && $tmp == $item->getId()) ? 1 : 0; if ($form['formName'] != 'CustomFieldItemEdit') { $form['formName'] = 'CustomFieldItemEdit'; $form['itemId'] = $item->getId(); } switch ($adminMode) { case 1: $ret = CustomFieldHelper::loadAdminForm($form, $item->getId()); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null, null); } $tpl = 'modules/customfield/templates/CustomFieldItemAdmin.tpl'; break; default: $set = GalleryUtilities::isA($item, 'GalleryAlbumItem') ? 'album' : (GalleryUtilities::isA($item, 'GalleryPhotoItem') ? 'photo' : 'common'); list ($ret, $tmp, $param, $isContainerSettings) = CustomFieldHelper::fetchFieldValues(array($item), null, $set); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null, null); } $form['fields'] = $tmp[$item->getId()]; foreach (array('common' => 1, $set => 1) as $s => $tmp) { foreach ($param[$item->getId()][$s] as $it) { if (!empty($it['choices'])) { $form['choices'][$it['field']] = $it['choices']; } } } if ($set == 'album') { $form['adminFlag'] = $isContainerSettings[$item->getId()] ? 1 : 2; } $tpl = 'modules/customfield/templates/CustomFieldItemEdit.tpl'; } $template->setVariable('controller', 'customfield.CustomFieldItemEdit'); return array(null, $tpl, 'modules_customfield'); } /** * @see ItemEditPlugin::isSupported */ function isSupported($item, $thumbnail) { if (GalleryUtilities::isA($item, 'GalleryAlbumItem')) { return true; } list ($ret, $param) = CustomFieldHelper::loadParameters($item->getParentId()); if ($ret) { return false; } if (!empty($param['common']) || (GalleryUtilities::isA($item, 'GalleryPhotoItem') && !empty($param['photo']))) { return true; } return false; } /** * @see ItemEditPlugin::getTitle */ function getTitle() { list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'customfield'); if ($ret) { return array($ret->wrap(__FILE__, __LINE__), null); } return array(null, $module->translate('Custom Fields')); } } ?>