예제 #1
0
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $listing_field_sid = SJB_Request::getVar('sid', null);
     if (!is_null($listing_field_sid)) {
         $listingFieldInfo = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid);
         $old_listing_field_id = $listingFieldInfo['id'];
         $listingFieldInfo = array_merge($listingFieldInfo, $_REQUEST);
         $listing_field = new SJB_ListingField($listingFieldInfo, $listingFieldInfo['listing_type_sid']);
         $listing_field->setSID($listing_field_sid);
         $formSubmitted = SJB_Request::getVar('action', '');
         if (!in_array($listing_field->field_type, array('video', 'picture', 'file', 'complex'))) {
             $profileField = SJB_Request::getVar('profile_field', false);
             if ($formSubmitted) {
                 if ($profileField) {
                     $listingFieldInfo['default_value'] = '';
                 } else {
                     $listingFieldInfo['profile_field_as_dv'] = '';
                 }
             }
             $default_value = array('id' => 'default_value', 'sid' => isset($listingFieldInfo['sid']) ? $listingFieldInfo['sid'] : '', 'caption' => 'Default Value', 'value' => isset($listingFieldInfo['default_value']) ? $listingFieldInfo['default_value'] : '', 'type' => $listing_field->field_type, 'length' => '', 'is_required' => false, 'is_system' => true);
             $additionalParameters = array();
             switch ($listing_field->field_type) {
                 case 'list':
                     if (isset($listingFieldInfo['list_values'])) {
                         $additionalParameters = array('list_values' => $listingFieldInfo['list_values']);
                     }
                     break;
                 case 'multilist':
                     if (isset($listingFieldInfo['list_values'])) {
                         $additionalParameters = array('list_values' => $listingFieldInfo['list_values']);
                     }
                     if (!is_array($default_value['value'])) {
                         if (strpos($default_value['value'], ',')) {
                             $default_value['value'] = explode(',', $default_value['value']);
                         } else {
                             $default_value['value'] = array($default_value['value']);
                         }
                     }
                     break;
                 case 'tree':
                     if (isset($listingFieldInfo['tree_values'])) {
                         $additionalParameters = array('tree_values' => $listingFieldInfo['tree_values']);
                     }
                     break;
                 case 'monetary':
                     if (isset($listingFieldInfo['currency_values'])) {
                         $default_value['currency_values'] = $listingFieldInfo['currency_values'];
                     }
                     break;
             }
             $default_value = array_merge($default_value, $additionalParameters);
             $listing_field->addProperty($default_value);
             $user_groups = SJB_UserGroupManager::getAllUserGroupsInfo();
             $list_values = array();
             foreach ($user_groups as $user_group) {
                 $list_values = array_merge($list_values, SJB_UserProfileFieldManager::getFieldsInfoByUserGroupSID($user_group['sid']));
             }
             $profile_field_as_dv = array('id' => 'profile_field_as_dv', 'caption' => 'Default Value', 'value' => isset($listingFieldInfo['profile_field_as_dv']) ? $listingFieldInfo['profile_field_as_dv'] : '', 'type' => 'list', 'list_values' => $list_values, 'length' => '', 'is_required' => false, 'is_system' => true);
             $listing_field->addProperty($profile_field_as_dv);
             if (in_array($listing_field->field_type, array('tree', 'multilist', 'list'))) {
                 $sort_by_alphabet = array('id' => 'sort_by_alphabet', 'caption' => 'Sort Values By Alphabet', 'value' => isset($listingFieldInfo['sort_by_alphabet']) ? $listingFieldInfo['sort_by_alphabet'] : '', 'type' => 'boolean', 'lenght' => '', 'is_required' => false, 'is_system' => true);
                 $listing_field->addProperty($sort_by_alphabet);
             }
             $tp->assign('profileFieldAsDV', !empty($listingFieldInfo['profile_field_as_dv']));
         }
         if (in_array($listing_field->field_type, array('multilist', 'list'))) {
             $listing_field->addDisplayAsProperty($listingFieldInfo['display_as']);
         }
         // infil instructions should be the last element in form
         if (!in_array($listing_field->getFieldType(), array('complex', 'tree', 'location')) && 'ApplicationSettings' != $listing_field->getPropertyValue('id')) {
             if ($formSubmitted) {
                 $listing_field->addInfillInstructions(SJB_Request::getVar('instructions'));
             } else {
                 $listing_field->addInfillInstructions(isset($listingFieldInfo['instructions']) ? $listingFieldInfo['instructions'] : '');
             }
         }
         /**
          * "Display as" options for TREE TYPE
          */
         if ('tree' == $listing_field->getFieldType()) {
             $listing_field->addProperty(SJB_TreeType::getDisplayAsDetail(isset($listingFieldInfo['display_as_select_boxes']) ? $listingFieldInfo['display_as_select_boxes'] : ''));
             $treeLevelsNumber = SJB_ListingFieldTreeManager::getTreeDepthBySID($listing_field_sid);
             $tp->assign('tree_levels_number', $treeLevelsNumber);
             // treee levels captions
             for ($i = 1; $i <= $treeLevelsNumber; $i++) {
                 $levelID = 'level_' . $i;
                 $listing_field->addProperty(array('id' => $levelID, 'caption' => $i . ' Level Name', 'value' => isset($listingFieldInfo[$levelID]) ? $listingFieldInfo[$levelID] : '', 'type' => 'string', 'length' => '250', 'is_required' => false, 'is_system' => true));
             }
         }
         /*
          * end of ""Display as" options for TREE TYPE"
          */
         $edit_form = new SJB_Form($listing_field);
         $edit_form->makeDisabled("type");
         $errors = array();
         if ($formSubmitted && $edit_form->isDataValid($errors)) {
             SJB_ListingFieldManager::saveListingField($listing_field);
             SJB_ListingFieldManager::changeListingPropertyIDs($listingFieldInfo['id'], $old_listing_field_id);
             if ($formSubmitted == 'save_info') {
                 SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . "/edit-listing-type/?sid=" . $listing_field->getListingTypeSID());
             }
         }
         $edit_form->registerTags($tp);
         $tp->assign("form_fields", $edit_form->getFormFieldsInfo());
         $tp->assign("errors", $errors);
         $tp->assign("listing_type_sid", $listing_field->getListingTypeSID());
         $tp->assign("field_type", $listing_field->getFieldType());
         $tp->assign("field_sid", $listing_field->getSID());
         $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($listing_field->getListingTypeSID());
         $tp->assign("listing_type_info", $listing_type_info);
         $tp->assign("listing_field_info", $listingFieldInfo);
         $tp->display("edit_listing_type_field.tpl");
     }
 }
예제 #2
0
 public function execute()
 {
     $tp = SJB_System::getTemplateProcessor();
     $action = SJB_Request::getVar('action', 'list');
     $fieldSID = SJB_Request::getVar('field_sid', false);
     $parentSID = SJB_Request::getVar('sid', false);
     $errors = null;
     if ($fieldSID) {
         $tp->assign('field_sid', $fieldSID);
         $field_info = SJB_ListingFieldManager::getFieldInfoBySID($fieldSID);
         $listing_type_info = SJB_ListingTypeManager::getListingTypeInfoBySID($field_info['listing_type_sid']);
         $tp->assign("field_info", $field_info);
         $tp->assign("type_info", $listing_type_info);
         $tp->assign("type_sid", isset($listing_type_info['sid']) ? $listing_type_info['sid'] : false);
         switch ($action) {
             case 'edit':
                 $form_submitted = SJB_Request::getVar('submit_form', false);
                 $sid = SJB_Request::getVar('sid', 0);
                 $listingFieldInfo = SJB_ListingFieldDBManager::getListingFieldInfoBySID($sid);
                 $listingFieldInfo = array_merge($listingFieldInfo, $_REQUEST);
                 $listingField = new SJB_ListingField($listingFieldInfo);
                 $listingField->deleteProperty('type');
                 $listingField->addProperty(array('id' => 'hidden', 'caption' => 'Hidden', 'type' => 'boolean', 'value' => isset($listingFieldInfo['hidden']) ? $listingFieldInfo['hidden'] : '', 'is_system' => true));
                 $profileField = SJB_Request::getVar('profile_field', false);
                 if ($form_submitted) {
                     if ($profileField) {
                         $listingFieldInfo['default_value'] = '';
                         $listingFieldInfo['profile_field_as_dv'] = $listingFieldInfo['id'];
                     } else {
                         $listingFieldInfo['profile_field_as_dv'] = '';
                     }
                 }
                 if (!empty($listingFieldInfo['default_value_setting'])) {
                     if ($listingFieldInfo['default_value_setting'] == 'default_country') {
                         $listingFieldInfo['default_value'] = $listingFieldInfo['default_value_setting'];
                         $listingFieldInfo['profile_field_as_dv'] = '';
                     } elseif ($listingFieldInfo['default_value_setting'] == 'profile_field') {
                         $listingFieldInfo['default_value'] = '';
                         $listingFieldInfo['profile_field_as_dv'] = $listingFieldInfo['id'];
                     }
                 }
                 $additionalParameters = array();
                 if ($listingFieldInfo['id'] == 'Country') {
                     $additionalParameters = array('list_values' => SJB_CountriesManager::getAllCountriesCodesAndNames());
                     $display_as = array('id' => 'display_as', 'caption' => 'Display Country as', 'type' => 'list', 'value' => isset($listingFieldInfo['display_as']) ? $listingFieldInfo['display_as'] : '', 'list_values' => array(array('id' => 'country_name', 'caption' => 'Country Name'), array('id' => 'country_code', 'caption' => 'Country Code')), 'is_system' => true, 'is_required' => true);
                 } elseif ($listingFieldInfo['id'] == 'State') {
                     $defaultCountry = SJB_ListingFieldManager::getDefaultCountryByParentSID($fieldSID);
                     $additionalParameters['list_values'] = array();
                     if (is_numeric($defaultCountry)) {
                         $additionalParameters['list_values'] = SJB_StatesManager::getStatesNamesByCountry($defaultCountry);
                     } elseif (!empty($defaultCountry)) {
                         $listingFieldInfo['profile_field_as_dv'] = $listingFieldInfo['id'];
                         $tp->assign('disableField', 1);
                     } else {
                         $additionalParameters['comment'] = 'Please select default country first to select default State';
                     }
                     $display_as = array('id' => 'display_as', 'caption' => 'Display State as', 'type' => 'list', 'value' => isset($listingFieldInfo['display_as']) ? $listingFieldInfo['display_as'] : '', 'list_values' => array(array('id' => 'state_name', 'caption' => 'State Name'), array('id' => 'state_code', 'caption' => 'State Code')), 'is_system' => true, 'is_required' => true);
                 }
                 $default_value = array('id' => 'default_value', 'sid' => isset($listingFieldInfo['sid']) ? $listingFieldInfo['sid'] : '', 'caption' => 'Default Value', 'value' => isset($listingFieldInfo['default_value']) ? $listingFieldInfo['default_value'] : '', 'type' => $listingField->field_type, 'length' => '', 'is_required' => false, 'is_system' => true, 'add_parameter' => isset($listingFieldInfo['add_parameter']) ? $listingFieldInfo['add_parameter'] : '');
                 $default_value = array_merge($default_value, $additionalParameters);
                 $listingField->addProperty($default_value);
                 $profile_field_as_dv = array('id' => 'profile_field_as_dv', 'caption' => 'Default Value', 'value' => isset($listingFieldInfo['profile_field_as_dv']) ? $listingFieldInfo['profile_field_as_dv'] : '', 'type' => 'list', 'length' => '', 'is_required' => false, 'is_system' => true);
                 $listingField->addProperty($profile_field_as_dv);
                 if (isset($display_as)) {
                     $listingField->addProperty($display_as);
                 }
                 if ($form_submitted) {
                     $listingField->addInfillInstructions(SJB_Request::getVar('instructions'));
                 } else {
                     $listingField->addInfillInstructions(isset($listingFieldInfo['instructions']) ? $listingFieldInfo['instructions'] : '');
                 }
                 $ListingFieldForm = new SJB_Form($listingField);
                 $ListingFieldForm->registerTags($tp);
                 $listingField->setSID($sid);
                 $addValidParam = array('field' => 'parent_sid', 'value' => $parentSID);
                 if ($form_submitted && $ListingFieldForm->isDataValid($errors, $addValidParam)) {
                     SJB_ListingFieldManager::saveListingField($listingField);
                     if ($listingFieldInfo['id'] == 'Country') {
                         $profileFieldAsDv = $listingField->getPropertyValue('profile_field_as_dv');
                         if ($profileFieldAsDv) {
                             $listingFieldsInfo = SJB_ListingFieldManager::getListingFieldsInfoByParentSID($fieldSID);
                             foreach ($listingFieldsInfo as $fieldInfo) {
                                 if ($fieldInfo['id'] == 'State') {
                                     $listingField = new SJB_ListingField($fieldInfo);
                                     $listingField->setSID($fieldInfo['sid']);
                                     $default_value = array('id' => 'default_value', 'sid' => isset($fieldInfo['sid']) ? $fieldInfo['sid'] : '', 'caption' => 'Default Value', 'value' => '', 'type' => $listingField->field_type, 'length' => '', 'is_required' => false, 'is_system' => true, 'add_parameter' => isset($fieldInfo['add_parameter']) ? $fieldInfo['add_parameter'] : '');
                                     $listingField->addProperty($default_value);
                                     $profile_field_as_dv = array('id' => 'profile_field_as_dv', 'caption' => 'Default Value', 'value' => 'State', 'type' => 'list', 'length' => '', 'is_required' => false, 'is_system' => true);
                                     $listingField->addProperty($profile_field_as_dv);
                                     SJB_ListingFieldManager::saveListingField($listingField);
                                 }
                             }
                         }
                     }
                     if (SJB_Request::getVar('apply') == 'no' && empty($errors)) {
                         SJB_HelperFunctions::redirect(SJB_System::getSystemSettings("SITE_URL") . "/edit-listing-field/edit-location-fields/?field_sid=" . $fieldSID);
                     }
                 }
                 $ListingFieldForm->makeDisabled('id');
                 $tp->assign('profileFieldAsDV', !empty($listingFieldInfo['profile_field_as_dv']));
                 $tp->assign('listingFieldInfo', $listingFieldInfo);
                 $tp->assign("field_type", $listingField->getFieldType());
                 $tp->assign("sid", $sid);
                 $tp->assign("form_fields", $ListingFieldForm->getFormFieldsInfo());
                 $tp->assign("errors", $errors);
                 $tp->display("edit_location_field.tpl");
                 break;
             case 'move_up':
                 SJB_ListingFieldManager::moveUpFieldBySID($fieldSID);
                 SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-listing-field/edit-location-fields/?field_sid=" . $parentSID);
                 break;
             case 'move_down':
                 SJB_ListingFieldManager::moveDownFieldBySID($fieldSID);
                 SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . "/edit-listing-field/edit-location-fields/?field_sid=" . $parentSID);
                 break;
         }
         if ($action == 'list') {
             $listingFieldsInfo = SJB_ListingFieldManager::getListingFieldsInfoByParentSID($fieldSID);
             $listingFields = array();
             $listingFieldSids = array();
             foreach ($listingFieldsInfo as $listingFieldInfo) {
                 $listingField = new SJB_ListingField($listingFieldInfo);
                 $listingField->addProperty(array('id' => 'hidden', 'caption' => 'Hidden', 'type' => 'boolean', 'value' => isset($listingFieldInfo['hidden']) ? $listingFieldInfo['hidden'] : '', 'is_system' => true));
                 $listingField->setSID($listingFieldInfo['sid']);
                 $listingFields[] = $listingField;
                 $listingFieldSids[] = $listingFieldInfo['sid'];
             }
             $form_collection = new SJB_FormCollection($listingFields);
             $form_collection->registerTags($tp);
             $tp->assign("listing_field_sids", $listingFieldSids);
             $tp->display("listing_location_fields.tpl");
         }
     }
 }
예제 #3
0
 public function execute()
 {
     $listing_field_sid = SJB_Request::getVar('sid', null);
     $tp = SJB_System::getTemplateProcessor();
     if (!is_null($listing_field_sid)) {
         $listing_field_info = SJB_ListingFieldManager::getFieldInfoBySID($listing_field_sid);
         $listing_field_info = array_merge($listing_field_info, $_REQUEST);
         $listing_field = new SJB_ListingField($listing_field_info);
         $listing_field->setSID($listing_field_sid);
         $form_submitted = SJB_Request::getVar('action', '');
         if (!in_array($listing_field->field_type, array('video', 'picture', 'file', 'complex'))) {
             $profile_field = SJB_Request::getVar('profile_field', false);
             if ($form_submitted) {
                 if ($profile_field) {
                     $listing_field_info['default_value'] = '';
                 } else {
                     $listing_field_info['profile_field_as_dv'] = '';
                 }
             }
             $default_value = array();
             if ($listing_field->field_type != 'location') {
                 $default_value = array('id' => 'default_value', 'sid' => isset($listing_field_info['sid']) ? $listing_field_info['sid'] : '', 'caption' => 'Default Value', 'value' => isset($listing_field_info['default_value']) ? $listing_field_info['default_value'] : '', 'type' => $listing_field->field_type, 'length' => '', 'is_required' => false, 'is_system' => true, 'add_parameter' => isset($listing_field_info['add_parameter']) ? $listing_field_info['add_parameter'] : '');
             }
             switch ($listing_field->field_type) {
                 case 'list':
                     if (isset($listing_field_info['list_values'])) {
                         $default_value['list_values'] = $listing_field_info['list_values'];
                     }
                     break;
                 case 'multilist':
                     if (isset($listing_field_info['list_values'])) {
                         $default_value['list_values'] = $listing_field_info['list_values'];
                     }
                     if (!is_array($default_value['value'])) {
                         if (strpos($default_value['value'], ',')) {
                             $default_value['value'] = explode(',', $default_value['value']);
                         } else {
                             $default_value['value'] = array($default_value['value']);
                         }
                     }
                     break;
                 case 'tree':
                     if (isset($listing_field_info['tree_values'])) {
                         $default_value['tree_values'] = $listing_field_info['tree_values'];
                     }
                     if (isset($listing_field_info['display_as_select_boxes'])) {
                         $default_value['display_as_select_boxes'] = $listing_field_info['display_as_select_boxes'];
                     }
                     unset($listing_field_info['choiceLimit']);
                     break;
                 case 'monetary':
                     if (isset($listing_field_info['currency_values'])) {
                         $default_value['currency_values'] = $listing_field_info['currency_values'];
                     }
                     break;
             }
             if ($listing_field->field_type != 'location') {
                 $listing_field->addProperty($default_value);
                 $profile_field_as_dv = array('id' => 'profile_field_as_dv', 'caption' => 'Default Value', 'value' => isset($listing_field_info['profile_field_as_dv']) ? $listing_field_info['profile_field_as_dv'] : '', 'type' => 'list', 'list_values' => SJB_UserProfileFieldManager::getAllFieldsInfo(), 'length' => '', 'is_required' => false, 'is_system' => true);
                 $listing_field->addProperty($profile_field_as_dv);
             }
             if (in_array($listing_field->field_type, array('tree', 'multilist', 'list'))) {
                 $sort_by_alphabet = array('id' => 'sort_by_alphabet', 'caption' => 'Sort Values By Alphabet', 'value' => isset($listing_field_info['sort_by_alphabet']) ? $listing_field_info['sort_by_alphabet'] : '', 'type' => 'boolean', 'lenght' => '', 'is_required' => false, 'is_system' => true);
                 $listing_field->addProperty($sort_by_alphabet);
             }
             $tp->assign('profileFieldAsDV', !empty($listing_field_info['profile_field_as_dv']));
         }
         if (in_array($listing_field->field_type, array('multilist', 'list'))) {
             $listing_field->addDisplayAsProperty($listing_field_info['display_as']);
         }
         // infil instructions should be the last element in form
         if (!in_array($listing_field->getFieldType(), array('complex', 'tree', 'location'))) {
             if ($form_submitted) {
                 $listing_field->addInfillInstructions(SJB_Request::getVar('instructions'));
             } else {
                 $listing_field->addInfillInstructions(isset($listing_field_info['instructions']) ? $listing_field_info['instructions'] : '');
             }
         }
         if ('tree' == $listing_field->getFieldType()) {
             $listing_field->addProperty(SJB_TreeType::getDisplayAsDetail(isset($listing_field_info['display_as_select_boxes']) ? $listing_field_info['display_as_select_boxes'] : ''));
             $treeLevelsNumber = SJB_ListingFieldTreeManager::getTreeDepthBySID($listing_field_sid);
             $tp->assign('tree_levels_number', $treeLevelsNumber);
             // treee levels captions
             for ($i = 1; $i <= $treeLevelsNumber; $i++) {
                 $levelID = 'level_' . $i;
                 $listing_field->addProperty(array('id' => $levelID, 'caption' => $i . ' Level Name', 'value' => isset($listing_field_info[$levelID]) ? $listing_field_info[$levelID] : '', 'type' => 'string', 'length' => '250', 'is_required' => false, 'is_system' => true));
             }
         }
         $edit_form = new SJB_Form($listing_field);
         $errors = array();
         if ($form_submitted && $edit_form->isDataValid($errors)) {
             $old_listing_field_id = SJB_Request::getVar('old_listing_field_id', null);
             SJB_ListingFieldManager::saveListingField($listing_field);
             SJB_ListingFieldManager::changeListingPropertyIDs($listing_field_info['id'], $old_listing_field_id);
             if ($form_submitted == 'save_info') {
                 SJB_HelperFunctions::redirect(SJB_System::getSystemSettings('SITE_URL') . '/listing-fields/');
             }
         }
         $edit_form->registerTags($tp);
         $edit_form->makeDisabled('type');
         if ($listing_field_info['id'] == 'Location' && empty($errors['ID'])) {
             $edit_form->makeDisabled('id');
         }
         $tp->assign('object_sid', $listing_field);
         $tp->assign('form_fields', $edit_form->getFormFieldsInfo());
         $tp->assign('errors', $errors);
         $tp->assign('field_type', $listing_field->getFieldType());
         $tp->assign('listing_field_info', $listing_field_info);
         $tp->assign('field_sid', $listing_field_sid);
         $tp->display('edit_listing_field.tpl');
     }
 }