示例#1
0
function cextras_afficher_contenu_objet($flux){

	// recuperer les champs crees par les plugins
	if ($extras = cextras_get_extras_match($flux['args']['type'])) {

		$contexte = cextra_quete_valeurs_extras($extras, $flux['args']['type'], $flux['args']['id_objet']);
		$contexte = array_merge($flux['args']['contexte'], $contexte);
		foreach($extras as $c) {

			// on affiche seulement les champs dont la vue est autorisee
			$type = $c->_type . '_' . $c->champ;
			include_spip('inc/autoriser');
			if (autoriser('voirextra', $type, $flux['args']['id_objet'], '', array(
				'type' => $flux['args']['type'],
				'id_objet' => $flux['args']['id_objet'],
				'contexte' => $contexte)))
			{

				$contexte = cextras_creer_contexte($c, $contexte);
				$saisie_externe = false;
				
				// calculer le bon squelette et l'ajouter
				if($c->saisie_externe && find_in_path(
				($f = 'saisies-vues/'.$c->type).'.html')){
					$contexte['valeur'] = $contexte[$c->champ];
					// ajouter les listes d'éléments possibles
					if (isset($c->saisie_parametres['datas']) and $c->saisie_parametres['datas']) {
						$contexte['datas'] = $c->saisie_parametres['datas'];
					// sinon peut provenir du plugin d'interface, directement dans enum.
					} elseif ($c->enum) {
						$contexte['datas'] = cextras_enum_array($c->enum);
					}

					// lorsqu'on a 'datas', c'est qu'on est dans une liste de choix.
					// Champs Extra les stocke separes par des virgule.
					if ($contexte['datas']) {
						$contexte['valeur'] = explode(',', $contexte['valeur']);
					}
						
					$saisie_externe = true;
				}
				else if (!find_in_path(
				($f = 'extra-vues/'.$c->type).'.html')) {
					// si on ne sait pas, on se base sur le contenu
					// pour choisir ligne ou bloc
					$f = strstr($contexte[$c->champ], "\n")
						? 'extra-vues/bloc'
						: 'extra-vues/ligne';
				}
				$extra = recuperer_fond($f, $contexte);
				if($saisie_externe){
					$extra = '<div class="'.$c->champ.'"><strong>'._T($c->label).'</strong>'.$extra.'</div>';
				}
				$flux['data'] .= "\n".$extra;
			}
		}
	}
	return $flux;
}
示例#2
0
function cextras_afficher_contenu_objet($flux){

	// recuperer les champs crees par les plugins
	if ($extras = cextras_get_extras_match($flux['args']['type'])) {

		$contexte = cextra_quete_valeurs_extras($extras, $flux['args']['type'], $flux['args']['id_objet']);
		$contexte = array_merge($flux['args']['contexte'], $contexte);

		foreach($extras as $c) {
			
			// on affiche seulement les champs dont la vue est autorisee 
			$type = objet_type($c->table).'_'.$c->champ;
			if (autoriser('voirextra', $type, $flux['args']['id_objet'], '', array(
				'type' => $flux['args']['type'], 
				'id_objet' => $flux['args']['id_objet'], 
				'contexte' => $contexte))) 
			{
				
				$contexte = cextras_creer_contexte($c, $contexte);
			
				// calculer le bon squelette et l'ajouter
				if (!find_in_path(
				($f = 'extra-vues/'.$c->type).'.html')) {
					// si on ne sait pas, on se base sur le contenu
					// pour choisir ligne ou bloc
					$f = strstr($contexte[$c->champ], "\n")
						? 'extra-vues/bloc'
						: 'extra-vues/ligne';
				}
				$extra = recuperer_fond($f, $contexte);
				$flux['data'] .= "\n".$extra;
			}		
		}
	}
	return $flux;
}