Skip to content
Extraits de code Groupes Projets
Valider 9f79a24a rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Echaffaudage des pages de l'espace privé pour les nouveaux objets, lorsqu'ils...

Echaffaudage des pages de l'espace privé pour les nouveaux objets, lorsqu'ils sont declares via declarer_tables_objets_sql

Pour la page de visu d'un objet exec=monobjet
il faut et il suffit d'ecrire les 2 squelettes 
- prive/objets/contenu/monobjet.html qui affiche le contenu editorial d'un objet champ par champ
- prive/objets/info/monobjet.html qui affiche le contenu du bloc d'information de l'objet

Pour la page d'edition d'un objet exec=monobjet_edit
il faut et il suffit d'ecrire le #FORMULAIRE_EDITER_MONOBJET, qui prend comme arguments :
- (id, id_rubrique, retour, lier_trad) si l'objet est rattache aux rubriques
- (id, retour, lier_trad) si l'objet n'est pas rattache aux rubriques

Pour la page qui liste tous les objets de ce type exec=monobjets
il faut et il suffit d'ecrire le squelette de liste prive/objets/liste/monobjets.html

Il reste donc actuellement 3 squelettes simples et le formulaire d'edition de l'objet à ecrire manuellement pour disposer d'une interface complete par echafaudage.
Il est ensuite possible d'ecrire ses propres squelettes pour chacune des pages ou d'un morceau de page, dans les cas particuliers
parent 85d31bdd
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -2024,6 +2024,9 @@ function tester_url_ecrire($nom){
// compat skels orthogonaux version precedente
elseif (trouver_fond($nom, 'prive/exec/'))
return 'fond_monobloc';
// echaffaudage d'un fond !
elseif(include_spip('public/styliser_par_z') AND z_echaffaudable($nom))
return 'fond';
// attention, il ne faut pas inclure l'exec ici
// car sinon #URL_ECRIRE provoque des inclusions
// et des define intrusifs potentiels
......
......@@ -36,7 +36,7 @@ function public_styliser_par_z_dist($flux){
$prefix_length = strlen($prefix_path);
$apl_constant = '_ECRIRE_AJAX_PARALLEL_LOAD';
$page = 'exec';
$echaffauder = ""; // pas d'echaffaudage dans ecrire/ pour le moment
$echaffauder = charger_fonction('echaffauder','prive',true);
define('_ZCORE_EXCLURE_PATH','');
}
else {
......@@ -239,21 +239,87 @@ function z_trouver_bloc($prefix_path,$bloc,$fond,$ext){
* @return bool
*/
function z_echaffaudable($type){
static $pages = null;
static $echaffaudable = array();
if (isset($echaffaudable[$type]))
return $echaffaudable[$type];
if (preg_match(',[^\w],',$type))
return $echaffaudable[$type] = false;
if ($table = table_objet($type)
AND $type == objet_type($table)
AND $trouver_table = charger_fonction('trouver_table','base')
AND
($desc = $trouver_table($table)
OR $desc = $trouver_table($table_sql = "spip_$table"))
)
return $echaffaudable[$type] = array($table,$desc['table'],$desc);
else
return $echaffaudable[$type] = false;
if (test_espace_prive()){
include_spip('inc/pipelines_ecrire');
if ($e=trouver_objet_exec($type)){
return $echaffaudable[$type] = array($e['table'],$e['table_objet_sql'],$e);
}
else {
// peut etre c'est un exec=types qui liste tous les objets "type"
if (($t=objet_type($type,false))!==$type
AND $e=trouver_objet_exec($t)){
return $echaffaudable[$type] = array($e['table'],$e['table_objet_sql'],$t);
}
}
}
else {
if (is_null($pages)) {
$pages = array();
$liste = lister_tables_objets_sql();
foreach($liste as $t=>$d)
if ($d['page']) $pages[$d['page']] = array($d['table_objet'],$t);
}
if (!isset($pages[$type]))
return $echaffaudable[$type] = false;
if (count($pages[$type])==2){
$trouver_table = charger_fonction('trouver_table','base');
$pages[$type][] = $trouver_table(reset($pages[$type]));
}
return $echaffaudable[$type] = $pages[$type];
}
return $echaffaudable[$type] = false;
}
/**
* Generer a la volee un fond a partir d'un contenu connu
* tous les squelettes d'echafaudage du prive sont en fait explicites dans prive/echaffaudage
* on ne fait qu'un mini squelette d'inclusion pour reecrire les variables d'env
*
* @param string $type
* @param string $table
* @param string $table_sql
* @param array $desc
* @param string $ext
* @return string
*/
function prive_echaffauder_dist($exec,$table,$table_sql,$desc_exec,$ext){
$scaffold = "";
// page objet ou objet_edit
if (is_array($desc_exec)) {
$type = $desc_exec['type'];
$primary = $desc_exec['id_table_objet'];
if ($desc_exec['edition']===false)
$fond = "objet";
else {
$trouver_table = charger_fonction('trouver_table','base');
$desc = $trouver_table($table_sql);
if (isset($desc['field']['id_rubrique']))
$fond = 'objet_edit';
else
$fond = 'objet_edit.sans_rubrique';
}
$scaffold = "<INCLURE{fond=prive/echafaudage/contenu/".$fond.",objet=".$type.",id_objet=#".strtoupper($primary).",env}>";
}
// page objets
elseif($type = $desc_exec){
$scaffold = "<INCLURE{fond=prive/echafaudage/contenu/objets,objet=".$type."} />";
}
$dir = sous_repertoire(_DIR_CACHE,"scaffold",false);
$dir = sous_repertoire($dir,"contenu",false);
$f = $dir."$exec";
ecrire_fichier("$f.$ext",$scaffold);
return $f;
}
?>
\ No newline at end of file
[(#ENV{exec}|match{configurer_}|oui)
<INCLURE{fond=prive/squelettes/navigation/configurer,env}>
]
#SET{objet_exec,#ENV{exec}|trouver_objet_exec}
[(#GET{objet_exec}|oui)
#SET{f,#GET{objet_exec}|table_valeur{edition}|?{objet_edit,objet}}
<INCLURE{fond=prive/echafaudage/navigation/#GET{f},objet=#GET{objet_exec}|table_valeur{type},id_objet=#ENV{#GET{objet_exec}|table_valeur{id_table_objet}},env} />
]
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter