GRAVITY – Multiselect parametrizzata

Linguaggio

Javascript,PHP

Versione

V1.0

Tipologia

Snippet

Sito

Parametri Snippet

campo, form, sorting_par, sorting_dir

Allegati

Changelog

Progetti

Sicurezza Pierro
V1.0
Sicurezza Develope
V1.0

Note

Trasforma un multi select in due liste con elementi presenti e mancanti Descrizione dei campi:
  • campo: id del campo da trasformare
  • form: id del form dove si trova il campo
  • sorting_par: (opzionale) parametro per cui ordinare le liste
  • sorting_dir: (opzionale)  tipo di ordinamento

Contenuto


$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://sicurezza.experior.solutions/master/wp-json/gf/v2/forms/'.$form,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Basic YWRtaW5fc2ltb25lOkthbWVsb3M3NkBfXw=='
  ),
));

$response = curl_exec($curl);

curl_close($curl);
$array = json_decode($response);

foreach ($array->fields as $field) {
	if ($field->id==$campo) $modulo = $field->{'gppa-choices-primary-property'};
}

$select_field_id = "input_".$form."_".$campo;
?>


<div class="attrezzature_esterno">
	<!--Presenti-->
	<div class="attrezzature_contenitore_presenti">
		<h5>Assegnate</h5>
		<?php
		$search_criteria = array(
					'status'    => 'active',
					);
		$sorting = array( 'key' => $sorting_par, 'direction' => $sorting_dir);	
		$paging = array( 'offset' => 0, 'page_size' => 10000);
		$results = GFAPI::get_entries($modulo, $search_criteria, $sorting, $paging );
		foreach ($results as $result) {
			echo '<div style="display:none" class="attrezzatura_singola" id="p'.$result['id'].'"><a onclick="rimuovi_attrezzatura('.$result['id'].')">'.$result['1'].'</a></div>';
		}

		?>
	</div>
	<!--Mancanti-->
	<div class="attrezzature_contenitore_mancanti">
		<h5>Non assegnate</h5>
		<div class="elenco_mancanti">
		<?php
		foreach ($results as $result) {
			echo '<div class="attrezzatura_singola" id="'.$result['id'].'"><a onclick="aggiungi_attrezzatura('.$result['id'].')">'.$result['1'].'</a></div>';
		}

		?>
		</div>
	</div>
</div>


<script>
	
	function aggiungi_attrezzatura(id) {
		jQuery("#<?php echo $select_field_id ?> option[value='" + id + "']").prop("selected", true);
		jQuery("#"+id).hide();
		jQuery("#p"+id).show();
	}
	
	function rimuovi_attrezzatura(id) {
		jQuery("#<?php echo $select_field_id ?> option[value='" + id + "']").prop("selected", false);
		jQuery("#"+id).show();
		jQuery("#p"+id).hide();
	}
	
	jQuery( document ).ready(function() {		
		
		var elements = jQuery('#<?php echo $select_field_id ?>').val()+'';
		var array = elements.split(',');
		//inizializzazione mancanti
		for (let i = 0; i < array.length; i++) {
		  jQuery("#"+array[i]).hide();
		}
		//inizializzazione presenti
		for (let i = 0; i < array.length; i++) {
		  jQuery("#p"+array[i]).show();
		}
		
	});
	

	jQuery( document ).on( "gppa_updated_batch_fields", function(event, form_id){		
		
		jQuery.ajax({                                
			url     : 'https://sicurezza.experior.solutions/master/wp-content/themes/pro-child/api/snippet/get_all_elements.php', 
			type    : 'POST', 
			data: JSON.stringify({ form: <?php echo $form ?>, sorting_par: j<?php echo $sorting_par ?>, sorting_dir: <?php echo $sorting_dir ?> }),
			contentType: "application/json; charset=utf-8",
			dataType: 'json', 
			encode  : true,
			success: function(response){ 
				var array_string = response.string.split(',');
				for (let i = 0; i < array_string.length; i++) {
					jQuery("#"+array_string[i]).show();
					var elements2 = jQuery('#i<?php echo $select_field_id ?>').val()+'';
					var array2 = elements2.split(',');
					//inizializzazione mancanti
					for (let i = 0; i < array2.length; i++) {
						jQuery("#"+array2[i]).hide();
					}
					//inizializzazione presenti
					for (let i = 0; i < array2.length; i++) {
						jQuery("#p"+array2[i]).show();
					}
				}
			}
		});

	});


</script>