function action_rapide_tri_auteurs($id_article=0) {
spip_log("action_rapide_tri_auteurs : $id_article, $id_auteur, $monter");
	$id = $id_article?$id_article:_request('id_article');
	include_spip('public/assembler'); // pour recuperer_fond(), SPIP < 2.0
	$texte = trim(recuperer_fond('fonds/tri_auteurs', array('id_article'=>$id)));
	// syntaxe : ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
	if(strlen($texte))
		// un clic sur 'monter' ou 'descendre' va permettre une redirection vers
		// les fonctions : boites_privees_URL_objet_exec(), puis action_rapide_tri_auteurs()
		$texte = ajax_action_auteur('action_rapide', 'tri_auteurs', 'articles', "arg=boites_privees|URL_objet&fct=tri_auteurs&id_article=$id#bp_tri_auteurs_corps", $texte);
	// si appel exec, l'id article est nul...
	if(!$id_article) return $texte;
	// ici, 1er affichage !
	if(!strlen($texte)) return '';
	// SPIP < 2.0
	if(!defined('_SPIP19300')) return debut_cadre_relief(find_in_path('img/couteau-24.gif'), true)
		. cs_div_configuration()
		. "<div class='verdana1' style='text-align: left;'>"
		. block_parfois_visible('bp_ta', '<b>'._T('couteau:tri_auteurs').'</b>', "<div id='bp_tri_auteurs_corps'>$texte</div>", 'text-align: center;')
		. "</div>"
		. fin_cadre_relief(true);
	// SPIP >= 2.0
	return cadre_depliable(find_in_path('img/couteau-24.gif'),
		cs_div_configuration().'<b>'._T('couteau:tri_auteurs').'</b>',
		false,	// true = deplie
		"<div id='bp_tri_auteurs_corps'>$texte</div>",
		'bp_tri_auteurs');
}
Example #2
0
function glossaire_action_rapide() {
	if(_request('test_bd')) {
		$info = glossaire_verifie($count);
		$info = $info
			?('<div style="color:red">'.$info.'</div>')
			:('<div style="color:green">'._T('couteauprive:glossaire_ok', array('nb'=>$count)).'</div>');
	} else $info = '';
	return ajax_action_auteur('action_rapide', 'test', 'admin_couteau_suisse', "arg=glossaire|description_outil&cmd=descrip#cs_action_rapide",
		"\n<fieldset><legend>"._T('couteau:test_base')."</legend><div style='text-align: center; padding:0.4em;'><input class='fondo' type='submit' value=\""
		. attribut_html(_T('couteau:lancer_test')) . "\" /></div></fieldset>$info");
}
Example #3
0
function corbeille_action_rapide() {
	foreach(cs_corbeille_table_infos() as $table=>$obj) {
		list($nb, $nb_lies, $ids) = cs_corbeille_gerer($table, -1);
		$ids = join(',', $ids);
		$infos = 
			($nb?_T('couteauprive:corbeille_objets', array('nb'=>$nb)):_T('couteauprive:corbeille_objets_vide'))
			.($nb_lies>0?' '._T('couteauprive:corbeille_objets_lies', array('nb_lies'=>$nb_lies)):'');
		$objets[] = "<label><input type='checkbox' value='$table:$ids'".($nb?" checked='checked'":"")." name='$table'/>"._T($obj[libelle]).".
<span class='ar_edit_info'>$infos</span></label>";
	}
	return ajax_action_auteur('action_rapide', 'purge_corbeille', 'admin_couteau_suisse', "arg=corbeille|description_outil&cmd=descrip#cs_action_rapide",
			"\n<div style='padding:0.4em;'><fieldset><legend>"._T('couteauprive:corbeille_vider').'</legend>'
			. join("<br/>\n",$objets) . "<div style='text-align: right;'><input class='fondo' type='submit' value=\""
			. attribut_html(_T('couteauprive:corbeille_objets_vider'))
			. '" /></div></fieldset></div>');
}
Example #4
0
function spam_action_rapide() {
	include_spip('public/assembler'); // pour recuperer_fond()
	$fd = recuperer_fond('fonds/test_spam', array(
		'ar_message' => _request('ar_message'),
		'test_bd' => _request('test_bd'),
		'statut' =>_request('statut'),
		'debut_msg' => _request('debut_msg'),
	));
	// au cas ou il y aurait plusieurs actions, on fabrique plusieurs <form>
	$fd = explode('@@CS_FORM@@', $fd);
	$res = "";
	foreach($fd as $i=>$f) {
		// syntaxe : ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
		$res .= ajax_action_auteur('action_rapide', 'test_'.$i, 'admin_couteau_suisse', "arg=spam|description_outil&modif=oui&cmd=descrip#cs_action_rapide", $f)."\n";
	}
	return $res;
}
Example #5
0
function type_urls_action_rapide() {
	include_spip('inc/actions');
//cs_log($_POST, '==== type_urls_action_rapide :'); cs_log($_GET);
	include_spip('public/assembler'); // pour recuperer_fond()
	$fd = recuperer_fond(defined('_SPIP19300')?'fonds/type_urls':'fonds/type_urls_191', array(
		'type_urls' => $GLOBALS['type_urls'],
		'ar_num_objet' => _request('ar_num_objet'),
		'ar_type_objet' => _request('ar_type_objet'),
	));
	// au cas ou il y aurait plusieurs actions, on fabrique plusieurs <form>
	$fd = explode('@@CS_FORM@@', $fd);
	$res = "";
	$arg = defined('_SPIP19300')?'edit_urls2_':'edit_urls_';
	foreach($fd as $i=>$f) {
		// syntaxe : ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
		$res .= ajax_action_auteur('action_rapide', $arg.$i, 'admin_couteau_suisse', "arg=type_urls|description_outil&modif=oui&cmd=descrip#cs_action_rapide", $f, '', 'function() { jQuery(\'#ar_chercher\', this).click();}')."\n";
	}
	return $res;
}
Example #6
0
function documenter_bloc($id, $res, $s, $script, $ancre, $tous, $type)
{
	// seulement s'il y a au moins un document dedans
	if (!$res) return "";

	if ($tous) {
		$tous = "<div class='lien_tout_supprimer'>"
			. ajax_action_auteur('documenter', "$s$id/$type", $appelant ? $appelant : _request('exec'), "id_$type=$id&s=$s&type=$type",array(_T('lien_tout_supprimer')))
			. "</div>\n";
	} else $tous = '';

	$bouton = bouton_block_depliable(majuscules(_T("info_$ancre")),true,"portfolio_$ancre");

	return debut_cadre("$ancre","","",$bouton)
		. debut_block_depliable(true,"portfolio_$ancre")
		. $tous
		. $res
		. fin_block()
		. fin_cadre();
}
function spip_cache_action_rapide() {
	include_spip('inc/texte'); // pour attribut_html()
	if ($n = taille_du_cache())
	  $info = _T('taille_cache_octets', array('octets' => taille_en_octets($n)));
	else
	  $info = _T('taille_cache_vide');
	// <legend> : pour la description de l'outil inactif
	// syntaxe : ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
	// on envoie une action 'action_rapide' car 'purger' n'existe pas (encore?) en exec/
	return ajax_action_auteur('action_rapide', 'cache', 'admin_couteau_suisse', "arg=spip_cache|description_outil&cmd=descrip#cs_action_rapide",
			"\n<fieldset class='cs_hidden'><legend>"._T('bouton_vider_cache')."</legend></fieldset><div style='text-align: center; padding:0.4em;'>$info<br /><input class='fondo' type='submit' value=\""
			. attribut_html(_T('bouton_vider_cache')) . '" /></div>')
	// bouton d'acualisation
		. ajax_action_auteur('action_rapide', 'actualise', 'admin_couteau_suisse', "arg=spip_cache|description_outil&cmd=descrip#cs_action_rapide",
			"\n<div class='cs_sobre'><input class='cs_sobre' type='submit' value=\" ["
			. attribut_html(_T('couteauprive:rss_actualiser')).']" /></div>');

/*	// appel direct vers SPIP, sans ajax :
	return redirige_action_post('purger', 'cache', 'admin_couteau_suisse', "cmd=descrip&outil=spip_cache#cs_infos",
			"\n<div style='text-align: center; padding:0.4em;'><input class='fondo' type='submit' value=\"" .
			attribut_html(_T('bouton_vider_cache')) . "\" />&nbsp;($info)</div>"); */
}
Example #8
0
function vignette_formulaire_legender($id_document, $document, $script, $type, $id, $ancre)
{
	$id_vignette = $document['id_vignette'];
	$texte = _T('info_supprimer_vignette');

	$s = ($ancre =='documents' ? '': '-');
	if (preg_match('/_edit$/', $script)) { 
		$iframe_redirect = generer_url_ecrire("documents_colonne","id=$id&type=$type",true);
		$action = redirige_action_auteur('documenter', "$s$id/$type/$id_vignette", $script, "id_$type=$id&show_docs=$id_document#$ancre");
	} else {
		$iframe_redirect = generer_url_ecrire("documenter","id_$type=$id&type=$type",true);
		$action = ajax_action_auteur('documenter', "$s$id/$type/$id_vignette", $script, "id_$type=$id&type=$type&s=$s&show_docs=$id_document#$ancre", array($texte),'',"function(r,noeud) {noeud.innerHTML = r; \$('form.form_upload',noeud).async_upload(async_upload_portfolio_documents);}");
	}

	$joindre = charger_fonction('joindre', 'inc');

	$supprimer = icone_horizontale($texte, $action, "vignette-24.png", "supprimer.gif", false);
	if ($id<0) $supprimer = ''; // cf. ci-dessus, article pas encore cree

	return "<hr style='margin-left: -5px; margin-right: -5px; height: 1px; border: 0px; color: #eeeeee; background-color: white;' />"
	. (!$id_vignette
		? $joindre(array(
			'script' => $script,
			'args' => "id_$type=$id",
			'id' => $id,
			'intitule' => _T('info_vignette_personnalisee'),
			'mode' => 'vignette',
			'type' => $type,
			'ancre' => $ancre,
			'id_document' => $id_document,
			'titre' => '',
			'iframe_script' => $iframe_redirect
			))
		: $supprimer
	);
}
Example #9
0
function generer_supprimer_mot($id_mot, $id_groupe, $clic, $total, $deb_aff='')
{
	$cont = ($total > 1)
	? ''
	: "function(r) {jQuery('#editer_mots-$id_groupe-supprimer').css('visibility','visible');}";

	return ajax_action_auteur('editer_mots', "$id_groupe,$id_mot,,,",'grouper_mots', "id_groupe=$id_groupe&$deb_aff", array($clic,''), '', $cont);
}
Example #10
0
function cs_action_fichiers_distants(&$outil, $forcer=false, $tester=false) {
	if(!isset($outil['fichiers_distants'])) return '';
	$lib = sous_repertoire(_DIR_PLUGIN_COUTEAU_SUISSE, 'lib');
	$a = array();
	foreach($outil['fichiers_distants'] as $i) {
		$erreur = false;
		$res_pipe = '';
		$dir = sous_repertoire($lib, $outil['id']);
		preg_match('/[^?]*/', basename($outil[$i]), $reg); 
		$f = 'distant_' . $reg[0];
		$file = pipeline('fichier_distant', array('outil'=>$outil['id'], 'fichier_local'=>$dir.$f));
		$file = $file['fichier_local'];
		$f = basename($file);
		$size = ($forcer || @(!file_exists($file)) ? 0 : filesize($file));
		if($size) $statut = _T('couteauprive:distant_present', array('date'=>cs_date_long(date('Y-m-d H:i:s', filemtime($file)))));
		elseif($outil['actif'] || $forcer) {
			include_spip('inc/distant');
			if($distant = recuperer_page($outil[$i])) {
				$distant = pipeline('fichier_distant', array('outil'=>$outil['id'], 'fichier_local'=>$file, 
						'fichier_distant'=>$outil[$i], 'message'=>'', 'texte'=>$distant, 'actif'=>$outil['actif']));
				$file = $distant['fichier_local'];
				$message = $distant['message'] . "\n_ " . _T('couteauprive:copie_vers', array('dir'=>dirname($distant['fichier_local']).'/'));
				$distant = $distant['texte'];
				if(preg_match(',\.php\d?$,', $file)) {
					$test = preg_replace(',^.*?\<\?php|\?\>.*?$,', '', $distant);
					if(!@eval("return true; $test")) $distant = false;
					else $distant = ecrire_fichier($file, '<'."?php\n\n".trim($test)."\n\n?".'>');
				} else
					$distant = ecrire_fichier($file, $distant);
			}
			if($distant) $statut = '<span style="color:green">'._T('couteauprive:distant_charge').'</span>';
			else $erreur = $statut = '<span style="color:red">'._T('couteauprive:distant_echoue').'</span>';
		} else $erreur = $statut = _T('couteauprive:distant_inactif');
		$a[] = "[{$f}->{$outil[$i]}]\n_ ".$statut.$message;
	}
	if($tester) return $a;
	$a = '<ul style="margin:0.6em 0 0.6em 4em;"><li>' . join("</li><li style='margin-top:0.4em;'>", $a) . '</li></ul>';
	$b = ($outil['actif'] || !$erreur)?'rss_actualiser':($erreur?'distant_charger':false);
	$b = $b?"\n<p class='cs_sobre'><input class='cs_sobre' type='submit' value=\" ["
			. attribut_html(_T('couteauprive:'.$b)).']" /></p>':'';
	return ajax_action_auteur('action_rapide', 'fichiers_distants', 'admin_couteau_suisse', "arg=$outil[id]|fichiers_distants&cmd=descrip#cs_action_rapide",
			'<p>' . _T('couteauprive:distant_aide') . '</p>'
			. '<p style="margin-top:1em"><strong>' . definir_puce() . '&nbsp;' . _T('couteauprive:detail_fichiers_distant') . '</strong></p>'
			. '<div>' . propre($a) . '</div>' . $b);
	
}
Example #11
0
function ajouter_auteur_un($row, $own) {
	global $connect_statut, $connect_id_auteur;
	list($formater, $retirer, $arg_ajax, $flag, $id, $type, $script_edit) = $own;

	$id_auteur = $row['id_auteur'];
	$vals = $formater($id_auteur);
	$voir = ($flag AND ($connect_id_auteur != $id_auteur OR $connect_statut == '0minirezo'));
	if ($voir) {
		$vals[] =  ajax_action_auteur('editer_auteurs', "$id,$type,-$id_auteur", $script_edit, "id_{$type}=$id", $retirer, $arg_ajax);
	} else  $vals[] = "";
	return $vals;
}
Example #12
0
function bouton_copier_local($document, $type, $id, $id_document, $script) {
	global $spip_lang_right;

	// pour etre sur qu'il s'agit bien d'un doc distant
	// et qu'il existe
	$bouton_copier = '';
	if ($document['distant'] == 'oui' /* on pourrait verifier l'existence du
	 	// fichier ici, mais ne risque pas-t-on de degrader les performances ?
	 	// il sera toujours temps de le verifier lorsque l'utilisateur cliquera
	 	// sur le bouton. */) {
		$bouton_copier = ajax_action_auteur("copier_local",
			    "$id_document",
			    $script,
			    "show_docs=$id_document&id_$type=$id#tourner-$id_document",
			    array(http_img_pack('telecharger.gif', _T('copier_en_local'), ''),
				  " class='bouton_rotation'"),
				  // on aurait pu faire un nouveau style 'bouton-telecharger',
				  // mais pour l'instant on se contente de reutiliser celui-ci
				  // afin de garder une homogeneite entre les differents boutons.
			    "&id_document=$id_document&id=$id&type=$type");
			    

		// Hack ?
		// demander confirmation javascript
		$u = str_replace("'", "\\'", unicode_to_javascript(html2unicode(_T('copier_en_local') . ' ' . $document['fichier'])));
		$bouton_copier = str_replace('return AjaxSqueeze',
			"return (!confirm('$u'))?false:AjaxSqueeze", $bouton_copier);
	}

	return $bouton_copier;
}
Example #13
0
function affiche_mots_ressemblant($cherche_mot, $objet, $id_objet, $resultat, $table, $table_id, $url_base)
{
	$les_mots = sql_in('id_mot', $resultat);
	$res = sql_allfetsel("*", "spip_mots", $les_mots, "", "titre", "17");

	foreach ($res as $k => $row) {
		$id_mot = $row['id_mot'];
		$titre = $row['titre'];
		$type = typo($row['type']);
		$descriptif = $row['descriptif'];

		$res[$k]= ajax_action_auteur('editer_mots', "$id_objet,,$table,$table_id,$objet,$id_mot", $url_base, "$table_id=$id_objet", array(typo($titre),' title="' . _T('info_ajouter_mot') .'"'),"&id_objet=$id_objet&objet=$objet") .
		  (!$descriptif ? '' : ("\n(<span class='spip_xx-small'>".supprimer_tags(couper(propre($descriptif), 100)).")</span><br />\n"));

	}

	$res2 = ($type
		? "<strong>$type</strong>&nbsp;: "
		: '' )
		. _T('info_plusieurs_mots_trouves', array('cherche_mot' => $cherche_mot))
		."<br />";

	if (count($resultat) > 17)
		$res2 .= "<br /><strong>" ._T('info_trop_resultat', array('cherche_mot' => $cherche_mot)) ."</strong><br />\n";

	return $res2 . '<ul><li>' . join("</li>\n<li>", $res) . '</li></ul>';
}
Example #14
0
function maj_auto_action_rapide() {
	global $spip_version_affichee, $spip_version_base;
	$arg_chargeur = $spip_version_base>=15828?'url_zip_plugin2':'url_zip_plugin'; // eq. SPIP >= 2.1.2
	$time = time();
	$timeout = ini_get('max_execution_time');
	$timeout = $timeout?min(30,floor($timeout/2)):10;
	$style = 'style="padding:0.4em;"';
	// verification des mises a jour de SPIP>=2.1
	include_spip('inc/presentation');
	list($m1,$m2) = preg_split('/\D+/', $GLOBALS['spip_version_branche']);
	$html1 = (function_exists('info_maj_spip') && ($html1=info_maj_spip()))
		?"<fieldset><legend $style>"._T('couteauprive:help2', array('version'=>'SPIP '.$spip_version_affichee)).'</legend>'.propre("\n|{{{$html1}}}|")
			.(preg_match(",$m1\.$m2\.\d+,",$html1)?'<p>'._T('couteau:maj_spip').'</p>':'').'</fieldset>'
		:'';
	// verification de l'ecran de securite
	if(defined('_ECRAN_SECURITE')) {
		$maj = maj_auto_rev_distante(_MAJ_ECRAN_SECU,false,",(\d+\.\d+(\.\d+)?),",0,true);
		if($maj{0}!="-" && _ECRAN_SECURITE!=$maj) {
			include_spip('inc/description_outil');
			$html1 .= "\n<fieldset><legend $style>"._T('couteauprive:help2', array('version'=>_T('couteauprive:ecran_securite:nom').' '._ECRAN_SECURITE)).'</legend>'
				. description_outil_liens(_T("couteauprive:ecran_maj_ko2", array("n"=>"<span style=\"color:red; font-weight:bold;\">$maj</span>"))).'</fieldset>';
		}
	}
	// verification des plugins
	include_spip('inc/plugin');
	$plugins_actifs = array_values(liste_chemin_plugin_actifs());
	// tous, mais les actifs d'abord...
	$plugins = array_unique(array_merge($plugins_actifs, liste_plugin_files()));
	$html_actifs = $html_inactifs = array();
	foreach ($plugins as $p) /*if(preg_match(',^auto/,', $p))*/ {
		$actif = in_array($p, $plugins_actifs, true);
		$auto = preg_match(',^auto/,', $p);
		$infos = plugin_get_infos_maj($p, $stop=time()-$time>$timeout);
		$maj_lib = $checked = '';
		if($stop)
			$maj_lib = '<span class="cs_relancer">'.'Temps serveur &eacute;coul&eacute; : [poursuivre->#].'.'</span>';
		elseif($infos['maj_dispo']) { 
			$maj_lib = _T('couteau:maj_rev_ok', 
				array('revision' => $infos['rev_rss'], 'url'=>$infos['url_origine'], 'zip'=>$infos['zip_trac']));
			$checked = " class='maj_checked'"; }
		elseif($infos['rev_rss']>0 && $infos['rev_local'])
			$maj_lib = _T('couteau:maj'.($infos['svn']?'_svn':'_ok'),
				array('zip'=>$infos['zip_trac'], 'url'=>$infos['url_origine']));
		elseif($auto) {
			$maj_lib = _T('couteau:maj_rev_ko', array('url'=>$infos['url_origine']));
			$checked = " class='maj_checked'"; }
		elseif($infos['rev_local'] && $infos['rev_rss']<=0)
			$maj_lib = _T('couteau:maj_rev_ko', array('url'=>$infos['url_origine']));
		// eventuels liens morts
		$maj_lib = preg_replace(',\[([^[]+)->\],', '$1', $maj_lib);
		$nom = preg_replace(",[\n\r]+,",' ',$infos['nom']). '&nbsp;(v' .$infos['version'] . ')' . ($maj_lib?"\n_ {{".$maj_lib.'}}':'');
		$rev = $infos['rev_local']?_T('couteau:maj_rev', array('revision' => $infos['rev_local'])):'';
		if(strlen($infos['commit'])) $rev .= (strlen($rev)?'<br/>':'') . cs_date_court($infos['commit']);
		if($infos['svn']) $rev .= '<br/>SVN';		
		if(!strlen($rev)) $rev = '&nbsp;';
		$zip_log = (strlen($infos['zip_log']) && $infos['zip_log']!=$infos['zip_trac'])
			?"<label><input type='radio' value='$infos[zip_log]'$checked name='$arg_chargeur'/>[->$infos[zip_log]]</label>":'';
		$bouton = '&nbsp;';
		if($auto && !$stop) $bouton = strlen($infos['zip_trac'])
			?"<input type='radio' value='$infos[zip_trac]'$checked name='$arg_chargeur'/>"
			:'<center style="margin-top:0.6em;font-weight:bold;"><acronym title="'._T('couteau:maj_zip_ko').'">&#63;</acronym></center>';
		if(strlen($zip_log)) {
			if (!$stop)
				$nom .= "\n_ "._T('couteau:maj_verif') . "\n_ $zip_log\n_ {$bouton}[->$infos[zip_trac]]<label>";
			$bouton = '&nbsp;';
		}
		${$actif?'html_actifs':'html_inactifs'}[] = "|$bouton|$nom|$rev|";
	}
	
	$html1 = "\n<div $style id='maj_auto_div'>$html1<fieldset><legend $style>"
		. _T('couteau:maj_liste').'</legend>'
		. propre(
			(count($html_actifs)? "\n|{{" . _T('couteau:plug_actifs') . "}}|<|<|\n" . join("\n",$html_actifs) . "\n" : '')
			. (count($html_inactifs)? "\n|{{" . _T('couteau:plug_inactifs') . "}}|<|<|\n" . join("\n",$html_inactifs) . "\n" : '')
		  )
		. "<div style='text-align: right;'><input class='fondo' type='submit' value=\""
		. attribut_html(_T('couteau:maj_maj'))
		. '" /><p><i>'._T('couteau:maj_verif2').'</i></p></div></fieldset></div>'
		. http_script("
jQuery(document).ready(function() {
	var ch = jQuery('#maj_auto_div .maj_checked');
	var re = jQuery('.cs_relancer a');
	if(ch.length) ch[0].checked = true;
	else if(!re.length){
		jQuery('#maj_auto_div :submit').parent().remove();
		jQuery('#maj_auto_div :radio').attr('disabled','disabled');
	}
	if(!jQuery('#maj_auto_div :radio:checked').length)
		jQuery('#maj_auto_div :radio:first')[0].checked = true;
	re.click(function() {
		cs_href_click(jQuery('#maj_auto')[0], true);
		return false;
	});
});");
	$html2 = "\n<div class='cs_sobre'><input class='cs_sobre' type='submit' value=\"["
		. attribut_html(_T('couteau:maj_actu'))	. ']" /></div>';

// premier formulaire non ajax, lancant directement charger_plugin
	return redirige_action_post('charger_plugin', '', 'admin_couteau_suisse', "cmd=descrip&outil=maj_auto#cs_infos", $html1)
// second formulaire ajax : lien d'actualisation forcee
		. ajax_action_auteur('action_rapide', 'maj_auto_forcer', 'admin_couteau_suisse', "arg=maj_auto|description_outil&cmd=descrip#cs_action_rapide", $html2);
}
Example #15
0
function articles_traduction($row, $id_article)
{
	global $connect_toutes_rubriques;

	$vals = array();
	$id_rubrique_trad = $row["id_rubrique"];
	$id_article_trad = $row["id_article"];
	$id_trad = $row["id_trad"];
	$titre_trad = $row["titre"];
	$lang_trad = $row["lang"];
	$statut_trad = $row["statut"];

	changer_typo($lang_trad);
	$lang_dir = lang_dir($lang_trad);
	$titre_trad = "<span dir='$lang_dir'>$titre_trad</span>";

	$puce_statut = charger_fonction('puce_statut', 'inc');
	$vals[] = $puce_statut($id_article_trad, $statut_trad, $id_rubrique_trad, 'article');
		
	if ($id_article_trad == $id_trad) {
			$vals[] = http_img_pack('langues-12.gif', "", " class='lang'");
			$titre_trad = "<b>$titre_trad</b>";
	} else {
		if (!$connect_toutes_rubriques)
			$vals[] = http_img_pack('langues-off-12.gif', "", " class='lang'");
		else 
		    $vals[] = ajax_action_auteur("referencer_traduction", "$id_article,$id_trad,$id_article_trad", 'articles', "id_article=$id_article", array(http_img_pack('langues-off-12.gif', _T('trad_reference'), "class='lang'"), ' title="' . _T('trad_reference') . '"'));
	}

	$s = typo(supprime_img($titre_trad,''));
	if ($id_article_trad != $id_article) 
			$s = "<a href='" . generer_url_ecrire("articles","id_article=$id_article_trad") . "'>$s</a>";
	if ($id_article_trad == $id_trad)
			$s .= " "._T('trad_reference');

	$vals[] = $s;
	$vals[] = traduire_nom_langue($lang_trad);
	return $vals;
}
Example #16
0
function decrire_logo($id_objet, $mode, $id, $width, $height, $img, $titre="", $script="", $flag_modif=true) {

	list($fid, $dir, $nom, $format, $timestamp) = $img;
	include_spip('inc/filtres_images_mini');

	$res = image_reduire("<img src='$fid' alt='' class='miniature_logo' />", $width, $height);

	if ($res){
			$src = extraire_attribut($res,'src');
			$res = inserer_attribut($res, 'src', "$src?$timestamp");
	    $res = "<div><a href='" .	$fid . "'>$res</a></div>";
	}
	else
	    $res = "<img src='$fid?$timestamp' width='$width' height='$height' alt=\"" . htmlentities($titre) . '" />';
	if ($taille = @getimagesize($fid))
		$taille = _T('info_largeur_vignette', array('largeur_vignette' => $taille[0], 'hauteur_vignette' => $taille[1]));

	return array($res,
		"<div class='spip_xx-small'>" . $taille
		. ($flag_modif
			? "\n<br />["
				. ajax_action_auteur("iconifier", "$id-$nom.$format",
				$script, "$id_objet=$id&type=$id_objet",
				array(_T('lien_supprimer')),
				'',"function(r,status) {this.innerHTML = r; \$('form.form_upload_icon',this).async_upload(async_upload_icon);}") ."]"
			: '')
			. "</div>");
}
Example #17
0
function inc_description_outil_dist($outil_, $url_self, $modif=false) {
	global $outils, $cs_variables, $metas_vars;
	$outil = &$outils[$outil_];
	$actif = $outil['actif'];
	$index = $outil['index'];
//cs_log("inc_description_outil_dist() - Parse la description de '$outil_'");
	// la description de base est a priori dans le fichier de langue
	$descrip = isset($outil['description'])?$outil['description']:_T('couteauprive:'.$outil['id'].':description');
	// ajout des variables liees a la barre typo
	if(defined('_DIR_PLUGIN_PORTE_PLUME') 
	 && ( isset($outil['pipeline:porte_plume_barre_pre_charger']) || isset($outil['pipeline:porte_plume_cs_pre_charger']))
	 && count($barres = cs_pp_liste_barres())) {
		$descrip .= "\n\n@puce@ "._T('couteauprive:barres_typo_intro');
		$i=0;
		foreach($barres as $f=>$b) {
			$nom = "pp_{$b}_$outil[id]";
			$descrip .= ($i?'[[->':'[[')."%$nom%]]";
			add_variable( array(
				'nom' => $nom,
				'check' => ($b=='edition' || $b=='forum')?'couteauprive:barres_typo_'.$b:$f,
				'defaut' => 1, // par defaut les boutons seront toujours inseres
				'label' => $i++?NULL:'@_CS_CHOIX@',
			));
		}
	}
	if (strpos($descrip, '<:')!==false) {
		if(!isset($outil['perso']))
			// lames natives : reconstitution d'une description eventuellement morcelee
			// exemple : <:mon_outil:3:> est remplace par _T('couteauprive:mon_outil:description3')
			$descrip = preg_replace_callback(',<:([a-z_][a-z0-9_-]*):([0-9]*):>,i', 
				create_function('$m','return _T("couteauprive:$m[1]:description$m[2]");'), $descrip);
		// chaines de langue personnalisees
		$descrip = preg_replace(',<:([:a-z0-9_-]+):>,ie', '_T("$1")', $descrip);
	}
	// envoi de la description en pipeline
#	list(,$descrip) = pipeline('init_description_outil', array($outil_, $descrip));
	// globale pour la callback description_outil_input2_callback
	global $cs_input_variable;	$cs_input_variable = array();
	// remplacement des zones input de format [[label->qq chose]]
	$descrip = preg_replace_callback(',\[\[([^][]*)->([^]]*)\]\],msS', 'description_outil_input1_callback' , $descrip);
	// remplacement des zones input de format [[qq chose %variable% qq chose]] en utilisant _T('couteauprive:label:variable') comme label
	// la fonction description_outil_input2_callback renseigne la globale $cs_input_variable
	$descrip = preg_replace_callback(',\[\[((.*?)%([a-zA-Z_][a-zA-Z0-9_]*)%(.*?))\]\],msS', 'description_outil_input2_callback', $descrip);

	// initialisation et remplacement des variables de format : %variable%
	$t = preg_split(',%([a-zA-Z_][a-zA-Z0-9_]*)%,', $descrip, -1, PREG_SPLIT_DELIM_CAPTURE);
	$res = '';
	$nb_disabled = $nb_variables = 0; $variables = array();
	for($i=0;$i<count($t);$i+=2) if(isset($t[$i+1]) && strlen($var=trim($t[$i+1]))) {
		// si la variable est presente on fabrique le input
		if(isset($cs_variables[$var])) {
			$res .= description_outil_une_variable(
				$index + (++$nb_variables),
				$outil, $var,
				$t[$i], $modif);
			$variables[] = $var;
			if($cs_variables[$var]['disabled']) ++$nb_disabled;
		} else {
			// probleme a regler dans config_outils.php !
			$temp = $t[$i]."[$var?]"; $res .= $temp;
		}
	} else 
		$res .= $t[$i];
	$outil['variables'] = $variables;
	$outil['nb_variables'] = $nb_variables;
	$outil['nb_disabled'] = $nb_disabled;

	// si ce n'est qu'une simple initialisation, on sort
	if(!$modif) {unset($cs_input_variable); return;}

	// information sur les raccourcis disponibles
	if($a=cs_aide_raccourci($outil_)) $res .= '<p>@puce@ '._T('couteauprive:detail_raccourcis').'<br /><html>'.$a.'.</html></p>';
	// envoi de la description courante en pipeline
	include_spip("cout_define");
	$res = pipeline('pre_description_outil', array('outil'=>$outil_, 'texte'=>$res, 'actif'=>$actif));
	$res = $res['texte'];
	// recherche des blocs <variable></variable> eventuels associes pour du masquage/demasquage
	foreach($cs_input_variable as $v) {
		$res = preg_replace_callback(",<($v)\s+valeur=(['\"])(.*?)\\2\s*>,", 'cs_input_variable_callback', $res);
		$res = str_replace("</$v>", '</div>', $res);
	}
	unset($cs_input_variable);
	// bouton 'Modifier' : en dessous du texte s'il y a plusieurs variables, a la place de _VAR_OUTIL s'il n'y en a qu'une.
	// attention : on ne peut pas modifier les variables si l'outil est inactif
	if($actif) {
		$bouton = "<input type='submit' class='fondo' style='margin-left:1em;' value=\"".($nb_variables>1?_T('couteauprive:modifier_vars_0'):_T('bouton_modifier'))."\" />";
		if($nb_variables>1) $res .= "<div class=\"cs_bouton\">$bouton</div>";
			else $res = str_replace(_VAR_OUTIL, $bouton, $res);
	}
	$res = "\n<div id='cs_inner_outil-$index' >" . str_replace(array('<ul></ul>',_VAR_OUTIL),'',$res) . '</div>';
	// si des variables sont trouvees ?
	if($nb_variables) {
		$variables = urlencode(serialize($variables));
		// syntaxe : ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
		$res = ajax_action_auteur('description_outil', $index, $url_self, "modif=oui&cmd=descrip&outil={$outil['id']}", 
			"\n<input type='hidden' value='$variables' name='variables' /><input type='hidden' value='$outil_' name='outil' />"	. $res);
	}
//cs_log(" FIN : inc_description_outil_dist({$outil['id']}) - {$outil['nb_variables']} variables(s) trouvee(s)");
	// remplacement en deux passes des labels en doublon
	for($i=0;$i<2;$i++) if(strpos($res,'<:label:')!==false) 
		$res = preg_replace_callback(',<:label:([a-zA-Z_][a-zA-Z0-9_-]*):>,', 'description_outil_label_callback', $res);
	// remplacement des blocs avec style. ex : <q2>bla bla</q2>
	$res = preg_replace(',</q(\d)>,','</div>', preg_replace(',<q(\d)>,','<div class="q$1">', $res));
	// remplacement des inputs successifs sans label : [[%var1%]][[->%var2%]] ou [[%var1%]][[-->%var2%]]
	$res = preg_replace(',(<br />)?</fieldset><fieldset>( ?<div>),', '$2', $res);
	// remplacement de diverses constantes
	$res = str_replace(array('@puce@', '@_CS_CHOIX@','@_CS_ASTER@','@_CS_PLUGIN_JQUERY192@'),
		array(definir_puce(), _T('couteauprive:votre_choix'), '<sup>(*)</sup>', defined('_SPIP19300')?'':_T('couteauprive:detail_jquery3')), $res);
	// remplacement des constantes qui restent de forme @_CS_XXXX@
	if(strpos($res,'@_CS')!==false) 
		$res = preg_replace_callback(',@(_CS_[a-zA-Z0-9_]+)@,', 
			create_function('$matches','return defined($matches[1])?constant($matches[1]):(\' (\'._T(\'couteauprive:outil_inactif\').\')\');'), $res);
	// remplacement des liens vers un autre outil
	$res = description_outil_liens($res);

	// envoi de la description finale en pipeline
#	list(,$res) = pipeline('post_description_outil', array($outil_, $res));
	return cs_ajax_outil_greffe("description_outil-$index", $res);
}
Example #18
0
function formulaire_mots_cles($id_objet, $les_mots, $table, $table_id, $url_base, $visible, $objet) {
	global  $spip_lang, $spip_lang_right;

	$res = '';

	// liste des groupes de mots contenant au moins un mot deja appose a l'objet
	$id_groupes_vus = array_map('array_pop',
		sql_allfetsel('DISTINCT(id_groupe)', 'spip_mots',
			sql_in('id_mot', $les_mots)));

	// supprimer tous les mots ?
	// a partir de 3 mots on regarde si l'ensemble des mots sont supprimables
	// si oui on propose ce lien
	if (count($les_mots)>= 3) {
		$ok = true;
		foreach ($id_groupes_vus as $id_groupe)
			if (!autoriser('editermots', $objet, $id_objet, null,
					array('id_groupe'=>$id_groupe))) {
				$ok = false;
				break;
			}
		if ($ok)
			$res .= "<div style='text-align: right' class='arial1'>"
				. ajax_action_auteur('editer_mots', "$id_objet,-1,$table,$table_id,$objet", $url_base, "$table_id=$id_objet", array(_T('info_retirer_mots'),''),"&id_objet=$id_objet&objet=$objet")
				. "</div><br />\n";
	}

	// formulaire groupe par groupe
	$ajouter ='';
	$cond_mots_vus = $les_mots
		? " AND " . sql_in('id_mot', $les_mots, 'NOT')
		: '';

	define('_TRI_GROUPES_MOTS', 'titre');  
	foreach(sql_allfetsel('*,' . sql_multi ("titre", $spip_lang), 'spip_groupes_mots', '', '', _TRI_GROUPES_MOTS) as $row) {
		$id_groupe = $row['id_groupe'];
		if (autoriser('editermots', $objet, $id_objet, null,
		array('id_groupe'=>$id_groupe,'groupe_champs'=>$row))
		AND $menu = menu_mots($row, $id_groupes_vus, $cond_mots_vus)) {
			list($corps, $clic) = $menu;
			$ajouter .= ajax_action_post('editer_mots',
				"$id_objet,,$table,$table_id,$objet",
				$url_base,
				"$table_id=$id_objet",
				$corps,
				$clic,
				" class='visible_au_chargement spip_xx-small' id='valider_groupe_$id_groupe'", "",
				"&id_objet=$id_objet&objet=$objet&select_groupe=$id_groupe");

			// forcer la visibilite si au moins un mot obligatoire absent
			// attention true <> 1 pour bouton_block_depliable
			if ($row['obligatoire'] == 'oui'
			AND !in_array($id_groupe, $id_groupes_vus))
				$visible = true;
		}
	}

	if ($ajouter) {
		$res .= "<div style='float:$spip_lang_right; width:280px;position:relative;display:inline;'>"
		  . $ajouter
		  ."</div>\n" 
		  . "<span class='verdana1'><b>"
		  ._T('titre_ajouter_mot_cle')
		  ."</b></span><br />\n";
	}

	return array($visible, $res);
}