WIP Add extra fields for terms n cond see #2554

pull/2624/head
Julio Montoya 7 years ago
parent 1b362bd608
commit fb8cb161fd
  1. 65
      main/admin/legal_add.php
  2. 8
      main/auth/inscription.php
  3. 58
      main/inc/lib/extra_field.lib.php
  4. 2
      main/inc/lib/extra_field_value.lib.php
  5. 11
      main/inc/lib/legal.lib.php
  6. 1
      src/Chamilo/CoreBundle/Entity/ExtraField.php

@ -30,24 +30,21 @@ if ($form->validate()) {
if ($check) {
$values = $form->getSubmitValues();
$lang = $values['language'];
//language id
// language id
$lang = api_get_language_id($lang);
$type = 0;
if (isset($values['type'])) {
$type = $values['type'];
} else {
$type = 0;
}
$content = '';
if (isset($values['content'])) {
$content = $values['content'];
} else {
$content = '';
}
$changes = '';
if (isset($values['changes'])) {
$changes = $values['changes'];
} else {
$changes = '';
}
$submit = $values['send'];
$default['content'] = $content;
@ -55,16 +52,19 @@ if ($form->validate()) {
if ($submit == 'back') {
header('Location: legal_add.php');
exit;
} elseif ($submit == 'save') {
$insert_result = LegalManager::add($lang, $content, $type, $changes);
if ($insert_result) {
$message = get_lang('TermAndConditionSaved');
} elseif ($submit === 'save') {
$id = LegalManager::add($lang, $content, $type, $changes);
if (!empty($id)) {
$extraFieldValues = new ExtraFieldValue('terms_and_condition');
$values['item_id'] = $id;
$extraFieldValues->saveFieldValues($values);
Display::addFlash(Display::return_message(get_lang('TermAndConditionSaved'), 'success'));
} else {
$message = get_lang('TermAndConditionNotSaved');
Display::addFlash(Display::return_message(get_lang('TermAndConditionNotSaved'), 'warning'));
}
Security::clear_token();
$tok = Security::get_token();
Display::addFlash(Display::return_message($message));
header('Location: legal_list.php?sec_token='.$tok);
exit();
} elseif ($submit == 'preview') {
@ -72,7 +72,7 @@ if ($form->validate()) {
$defaults['content'] = $content;
$defaults['changes'] = $changes;
$term_preview = $defaults;
$term_preview['type'] = intval($_POST['type']);
$term_preview['type'] = (int) $_POST['type'];
} else {
$my_lang = $_POST['language'];
if (isset($_POST['language'])) {
@ -103,6 +103,7 @@ $token = Security::get_token();
$form->addElement('hidden', 'sec_token');
$defaults['sec_token'] = $token;
$form->addElement('header', get_lang('DisplayTermsConditions'));
$jqueryReady = '';
if (isset($_POST['language'])) {
$form->addElement('static', Security::remove_XSS($_POST['language']));
@ -126,6 +127,21 @@ if (isset($_POST['language'])) {
$form->addElement('label', get_lang('Preview'), $preview);
}
$termId = isset($term_preview['id']) ? $term_preview['id'] : 0;
$extraField = new ExtraField('terms_and_condition');
$returnParams = $extraField->addElements(
$form,
$termId,
[],
false,
false,
[],
[],
true
);
$jqueryReady = $returnParams['jquery_ready_content'];
// Submit & preview button
$buttons = '<div class="row" align="center">
<div class="formw">
@ -141,11 +157,19 @@ if (isset($_POST['language'])) {
}
$tool_name = get_lang('AddTermsAndConditions');
$interbreadcrumb[] = ["url" => 'index.php', "name" => get_lang('PlatformAdmin')];
Display :: display_header($tool_name);
$interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('PlatformAdmin')];
// the $jquery_ready_content variable collects all functions that will be load in the $(document).ready javascript function
$htmlHeadXtra[] = '<script>
$(document).ready(function(){
'.$jqueryReady.'
});
</script>';
Display::display_header($tool_name);
echo '<script>
function sendlang(){
function sendlang() {
document.addlegal.sec_token.value=\''.$token.'\';
document.addlegal.submit();
}
@ -154,9 +178,10 @@ function sendlang(){
// action menu
echo '<div class="actions">';
echo '<a href="'.api_get_path(WEB_CODE_PATH).'admin/legal_list.php">'.
Display::return_icon('search.gif', get_lang('EditTermsAndConditions'), '').get_lang('AllVersions').'</a>';
Display::return_icon('search.gif', get_lang('EditTermsAndConditions'), '').
get_lang('AllVersions').'</a>';
echo '</div>';
$form->setDefaults($defaults);
$form->display();
Display :: display_footer();
Display::display_footer();

@ -536,6 +536,14 @@ if (api_get_setting('allow_terms_conditions') === 'true' && $user_already_regist
$form->addHidden('legal_accept_type', $term_preview['version'].':'.$term_preview['language_id']);
$form->addHidden('legal_info', $term_preview['id'].':'.$term_preview['language_id']);
$termExtraFields = new ExtraFieldValue('terms_and_condition');
$values = $termExtraFields->getAllValuesByItem($term_preview['id']);
foreach ($values as $value) {
//if ($value['variable'] === 'category') {
$form->addLabel($value['display_text'], $value['value']);
//}
}
if ($term_preview['type'] == 1) {
$form->addElement(
'checkbox',

@ -143,6 +143,9 @@ class ExtraField extends Model
case 'scheduled_announcement':
$this->extraFieldType = EntityExtraField::SCHEDULED_ANNOUNCEMENT;
break;
case 'terms_and_condition':
$this->extraFieldType = EntityExtraField::TERMS_AND_CONDITION_TYPE;
break;
}
$this->pageUrl = 'extra_fields.php?type='.$this->type;
@ -176,6 +179,7 @@ class ExtraField extends Model
'career',
'user_certificate',
'survey',
'terms_and_condition'
];
if (api_get_configuration_value('allow_scheduled_announcements')) {
@ -258,9 +262,9 @@ class ExtraField extends Model
$conditions = Database::parse_conditions(['where' => $conditions]);
if (empty($conditions)) {
$conditions .= " WHERE extra_field_type = ".$this->extraFieldType;
$conditions .= ' WHERE extra_field_type = '.$this->extraFieldType;
} else {
$conditions .= " AND extra_field_type = ".$this->extraFieldType;
$conditions .= ' AND extra_field_type = '.$this->extraFieldType;
}
$sql = "SELECT * FROM $this->table
@ -304,24 +308,26 @@ class ExtraField extends Model
$result = Database::query($sql);
if (Database::num_rows($result)) {
$row = Database::fetch_array($result, 'ASSOC');
$row['display_text'] = self::translateDisplayName(
$row['variable'],
$row['display_text']
);
if ($row) {
$row['display_text'] = self::translateDisplayName(
$row['variable'],
$row['display_text']
);
// All the options of the field
$sql = "SELECT * FROM $this->table_field_options
// All the options of the field
$sql = "SELECT * FROM $this->table_field_options
WHERE field_id='".intval($row['id'])."'
ORDER BY option_order ASC";
$result = Database::query($sql);
while ($option = Database::fetch_array($result)) {
$row['options'][$option['id']] = $option;
}
$result = Database::query($sql);
while ($option = Database::fetch_array($result)) {
$row['options'][$option['id']] = $option;
}
return $row;
} else {
return false;
return $row;
}
}
return false;
}
/**
@ -368,7 +374,7 @@ class ExtraField extends Model
*/
public function getFieldInfoByFieldId($fieldId)
{
$fieldId = intval($fieldId);
$fieldId = (int) $fieldId;
$sql = "SELECT * FROM {$this->table}
WHERE
id = '$fieldId' AND
@ -441,18 +447,10 @@ class ExtraField extends Model
$types[self::FIELD_TYPE_VIDEO_URL] = get_lang('FieldTypeVideoUrl');
$types[self::FIELD_TYPE_LETTERS_ONLY] = get_lang('FieldTypeOnlyLetters');
$types[self::FIELD_TYPE_ALPHANUMERIC] = get_lang('FieldTypeAlphanumeric');
$types[self::FIELD_TYPE_LETTERS_SPACE] = get_lang(
'FieldTypeLettersSpaces'
);
$types[self::FIELD_TYPE_ALPHANUMERIC_SPACE] = get_lang(
'FieldTypeAlphanumericSpaces'
);
$types[self::FIELD_TYPE_GEOLOCALIZATION] = get_lang(
'Geolocalization'
);
$types[self::FIELD_TYPE_GEOLOCALIZATION_COORDINATES] = get_lang(
'GeolocalizationCoordinates'
);
$types[self::FIELD_TYPE_LETTERS_SPACE] = get_lang('FieldTypeLettersSpaces');
$types[self::FIELD_TYPE_ALPHANUMERIC_SPACE] = get_lang('FieldTypeAlphanumericSpaces');
$types[self::FIELD_TYPE_GEOLOCALIZATION] = get_lang('Geolocalization');
$types[self::FIELD_TYPE_GEOLOCALIZATION_COORDINATES] = get_lang('GeolocalizationCoordinates');
$types[self::FIELD_TYPE_SELECT_WITH_TEXT_FIELD] = get_lang('FieldTypeSelectWithTextField');
$types[self::FIELD_TYPE_TRIPLE_SELECT] = get_lang('FieldTypeTripleSelect');
@ -481,7 +479,8 @@ class ExtraField extends Model
*
* @throws Exception
*
* @return array|bool If relevant, returns a one-element array with JS code to be added to the page HTML headers. Returns false if the form object was not given
* @return array|bool If relevant, returns a one-element array with JS code to be added to the page HTML headers.
* Returns false if the form object was not given
*/
public function addElements(
$form,
@ -502,7 +501,6 @@ class ExtraField extends Model
$extraData = false;
if (!empty($itemId)) {
$extraData = self::get_handler_extra_data($itemId);
if ($form) {
if (!empty($showOnlyTheseFields)) {
$setData = [];

@ -886,7 +886,7 @@ class ExtraFieldValue extends Model
$itemId = (int) $itemId;
$extraFieldType = $this->getExtraField()->getExtraFieldType();
$sql = "SELECT s.value, sf.variable, sf.field_type, sf.id
$sql = "SELECT s.value, sf.variable, sf.field_type, sf.id, sf.display_text
FROM {$this->table} s
INNER JOIN {$this->table_handler_field} sf
ON (s.field_id = sf.id)

@ -23,7 +23,7 @@ class LegalManager
* @param int $type term and condition type (0 for HTML text or 1 for link to another page)
* @param string $changes explain changes
*
* @return bool success
* @return int
*/
public static function add($language, $content, $type, $changes)
{
@ -43,9 +43,8 @@ class LegalManager
'version' => $version,
'date' => $time,
];
Database::insert($legalTable, $params);
return true;
return Database::insert($legalTable, $params);
} elseif ($last['type'] != $type && $language == $last['language_id']) {
// Update
$id = $last['id'];
@ -56,10 +55,10 @@ class LegalManager
];
Database::update($legalTable, $params, ['id = ?' => $id]);
return true;
} else {
return false;
return $id;
}
return 0;
}
/**

@ -30,6 +30,7 @@ class ExtraField extends BaseAttribute
const USER_CERTIFICATE = 11;
const SURVEY_FIELD_TYPE = 12;
const SCHEDULED_ANNOUNCEMENT = 13;
const TERMS_AND_CONDITION_TYPE= 14;
/**
* @var int

Loading…
Cancel
Save