Un objet Devis tout con à priori pour l'instant, très peu de champs, surtout là pour suivre le statut, et qui a surtout vocation a être le contenant pour d'autres choses (comme des Chapitres par exemple). On peut le placer dans l'arbo des rubriques comme les articles.
Reste à faire : pas grand chose, surtout dans la page récap qui liste tous, les séparer en plusieurs listes, ceux acceptés, ceux refusés, etc.svn/root/trunk
@ -0,0 +1,35 @@
|
||||
* text=auto !eol
|
||||
base/devis.php -text
|
||||
/devis_administrations.php -text
|
||||
/devis_autorisations.php -text
|
||||
/devis_pipelines.php -text
|
||||
/fabrique_devis.php -text
|
||||
/fabrique_diff.diff -text
|
||||
formulaires/editer_devis.html -text
|
||||
formulaires/editer_devis.php -text
|
||||
lang/devis_fr.php -text
|
||||
lang/paquet-devis_fr.php -text
|
||||
/paquet.xml -text
|
||||
prive/objets/contenu/devis.html -text
|
||||
prive/objets/infos/devis.html -text
|
||||
prive/objets/liste/devis.html -text
|
||||
prive/squelettes/contenu/devis_tous.html -text
|
||||
prive/squelettes/inclure/plan-devis.html -text
|
||||
prive/themes/spip/images/devis-12.png -text
|
||||
prive/themes/spip/images/devis-128.png -text
|
||||
prive/themes/spip/images/devis-16.png -text
|
||||
prive/themes/spip/images/devis-24.png -text
|
||||
prive/themes/spip/images/devis-32.png -text
|
||||
prive/themes/spip/images/devis-64.png -text
|
||||
prive/themes/spip/images/devis-add-16.png -text
|
||||
prive/themes/spip/images/devis-add-24.png -text
|
||||
prive/themes/spip/images/devis-add-32.png -text
|
||||
prive/themes/spip/images/devis-del-16.png -text
|
||||
prive/themes/spip/images/devis-del-24.png -text
|
||||
prive/themes/spip/images/devis-del-32.png -text
|
||||
prive/themes/spip/images/devis-edit-16.png -text
|
||||
prive/themes/spip/images/devis-edit-24.png -text
|
||||
prive/themes/spip/images/devis-edit-32.png -text
|
||||
prive/themes/spip/images/devis-new-16.png -text
|
||||
prive/themes/spip/images/devis-new-24.png -text
|
||||
prive/themes/spip/images/devis-new-32.png -text
|
@ -0,0 +1,100 @@
|
||||
<?php
|
||||
/**
|
||||
* Déclarations relatives à la base de données
|
||||
*
|
||||
* @plugin Devis
|
||||
* @copyright 2018
|
||||
* @author RastaPopoulos
|
||||
* @licence GNU/GPL
|
||||
* @package SPIP\Devis\Pipelines
|
||||
*/
|
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Déclaration des alias de tables et filtres automatiques de champs
|
||||
*
|
||||
* @pipeline declarer_tables_interfaces
|
||||
* @param array $interfaces
|
||||
* Déclarations d'interface pour le compilateur
|
||||
* @return array
|
||||
* Déclarations d'interface pour le compilateur
|
||||
*/
|
||||
function devis_declarer_tables_interfaces($interfaces) {
|
||||
|
||||
$interfaces['table_des_tables']['devis'] = 'devis';
|
||||
|
||||
return $interfaces;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Déclaration des objets éditoriaux
|
||||
*
|
||||
* @pipeline declarer_tables_objets_sql
|
||||
* @param array $tables
|
||||
* Description des tables
|
||||
* @return array
|
||||
* Description complétée des tables
|
||||
*/
|
||||
function devis_declarer_tables_objets_sql($tables) {
|
||||
|
||||
$tables['spip_devis'] = array(
|
||||
'type' => 'devis',
|
||||
'principale' => 'oui',
|
||||
'field'=> array(
|
||||
'id_devis' => 'bigint(21) NOT NULL',
|
||||
'id_rubrique' => 'bigint(21) NOT NULL DEFAULT 0',
|
||||
'id_secteur' => 'bigint(21) NOT NULL DEFAULT 0',
|
||||
'titre' => 'text NOT NULL DEFAULT ""',
|
||||
'reference' => 'varchar(255) NOT NULL DEFAULT ""',
|
||||
'descriptif' => 'text NOT NULL DEFAULT ""',
|
||||
'date' => 'datetime NOT NULL DEFAULT "0000-00-00 00:00:00"',
|
||||
'statut' => 'varchar(20) DEFAULT "0" NOT NULL',
|
||||
'maj' => 'TIMESTAMP'
|
||||
),
|
||||
'key' => array(
|
||||
'PRIMARY KEY' => 'id_devis',
|
||||
'KEY id_rubrique' => 'id_rubrique',
|
||||
'KEY id_secteur' => 'id_secteur',
|
||||
'KEY statut' => 'statut',
|
||||
),
|
||||
'titre' => 'titre AS titre, "" AS lang',
|
||||
'date' => 'date',
|
||||
'champs_editables' => array('titre', 'reference', 'descriptif', 'id_rubrique', 'id_secteur'),
|
||||
'champs_versionnes' => array('titre', 'reference', 'descriptif', 'id_rubrique', 'id_secteur'),
|
||||
'rechercher_champs' => array("titre" => 10, "reference" => 10, "descriptif" => 8),
|
||||
'tables_jointures' => array(),
|
||||
'statut_textes_instituer' => array(
|
||||
'prepa' => 'texte_statut_en_cours_redaction',
|
||||
'prop' => 'texte_statut_propose_evaluation',
|
||||
'accepte' => 'devis:statut_accepte',
|
||||
'refuse' => 'texte_statut_refuse',
|
||||
'poubelle' => 'texte_statut_poubelle',
|
||||
),
|
||||
'statut_images' => array(
|
||||
'prepa' => 'puce-blanche.gif',
|
||||
'prop' => 'puce-orange.gif',
|
||||
'accepte' => 'puce-verte.gif',
|
||||
'refuse' => 'puce-rouge.gif',
|
||||
'poubelle' => 'puce-poubelle.gif',
|
||||
),
|
||||
'statut'=> array(
|
||||
array(
|
||||
'champ' => 'statut',
|
||||
'publie' => 'accepte,prop,refuse',
|
||||
'previsu' => 'accepte,prop,prepa',
|
||||
'post_date' => 'date',
|
||||
'exception' => array('statut','tout')
|
||||
)
|
||||
),
|
||||
'texte_changer_statut' => 'devis:texte_changer_statut_devis',
|
||||
|
||||
|
||||
);
|
||||
|
||||
return $tables;
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* Fichier gérant l'installation et désinstallation du plugin Devis
|
||||
*
|
||||
* @plugin Devis
|
||||
* @copyright 2018
|
||||
* @author RastaPopoulos
|
||||
* @licence GNU/GPL
|
||||
* @package SPIP\Devis\Installation
|
||||
*/
|
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fonction d'installation et de mise à jour du plugin Devis.
|
||||
*
|
||||
* @param string $nom_meta_base_version
|
||||
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
|
||||
* @param string $version_cible
|
||||
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
|
||||
* @return void
|
||||
**/
|
||||
function devis_upgrade($nom_meta_base_version, $version_cible) {
|
||||
$maj = array();
|
||||
|
||||
$maj['create'] = array(array('maj_tables', array('spip_devis')));
|
||||
|
||||
include_spip('base/upgrade');
|
||||
maj_plugin($nom_meta_base_version, $version_cible, $maj);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fonction de désinstallation du plugin Devis.
|
||||
*
|
||||
* @param string $nom_meta_base_version
|
||||
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
|
||||
* @return void
|
||||
**/
|
||||
function devis_vider_tables($nom_meta_base_version) {
|
||||
|
||||
sql_drop_table('spip_devis');
|
||||
|
||||
# Nettoyer les liens courants (le génie optimiser_base_disparus se chargera de nettoyer toutes les tables de liens)
|
||||
sql_delete('spip_documents_liens', sql_in('objet', array('devis')));
|
||||
sql_delete('spip_mots_liens', sql_in('objet', array('devis')));
|
||||
sql_delete('spip_auteurs_liens', sql_in('objet', array('devis')));
|
||||
# Nettoyer les versionnages et forums
|
||||
sql_delete('spip_versions', sql_in('objet', array('devis')));
|
||||
sql_delete('spip_versions_fragments', sql_in('objet', array('devis')));
|
||||
sql_delete('spip_forum', sql_in('objet', array('devis')));
|
||||
|
||||
effacer_meta($nom_meta_base_version);
|
||||
}
|
@ -0,0 +1,125 @@
|
||||
<?php
|
||||
/**
|
||||
* Définit les autorisations du plugin Devis
|
||||
*
|
||||
* @plugin Devis
|
||||
* @copyright 2018
|
||||
* @author RastaPopoulos
|
||||
* @licence GNU/GPL
|
||||
* @package SPIP\Devis\Autorisations
|
||||
*/
|
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fonction d'appel pour le pipeline
|
||||
* @pipeline autoriser */
|
||||
function devis_autoriser() {
|
||||
}
|
||||
|
||||
|
||||
// -----------------
|
||||
// Objet devis
|
||||
|
||||
|
||||
/**
|
||||
* Autorisation de voir un élément de menu (devis)
|
||||
*
|
||||
* @param string $faire Action demandée
|
||||
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||
* @param int $id Identifiant de l'objet
|
||||
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||
* @param array $opt Options de cette autorisation
|
||||
* @return bool true s'il a le droit, false sinon
|
||||
**/
|
||||
function autoriser_devis_menu_dist($faire, $type, $id, $qui, $opt) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Autorisation de voir le bouton d'accès rapide de création (devis)
|
||||
*
|
||||
* @param string $faire Action demandée
|
||||
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||
* @param int $id Identifiant de l'objet
|
||||
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||
* @param array $opt Options de cette autorisation
|
||||
* @return bool true s'il a le droit, false sinon
|
||||
**/
|
||||
function autoriser_deviscreer_menu_dist($faire, $type, $id, $qui, $opt) {
|
||||
return autoriser('creer', 'devis', '', $qui, $opt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Autorisation de créer (devis)
|
||||
*
|
||||
* @param string $faire Action demandée
|
||||
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||
* @param int $id Identifiant de l'objet
|
||||
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||
* @param array $opt Options de cette autorisation
|
||||
* @return bool true s'il a le droit, false sinon
|
||||
**/
|
||||
function autoriser_devis_creer_dist($faire, $type, $id, $qui, $opt) {
|
||||
return (in_array($qui['statut'], array('0minirezo', '1comite')) and sql_countsel('spip_rubriques')>0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Autorisation de voir (devis)
|
||||
*
|
||||
* @param string $faire Action demandée
|
||||
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||
* @param int $id Identifiant de l'objet
|
||||
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||
* @param array $opt Options de cette autorisation
|
||||
* @return bool true s'il a le droit, false sinon
|
||||
**/
|
||||
function autoriser_devis_voir_dist($faire, $type, $id, $qui, $opt) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Autorisation de modifier (devis)
|
||||
*
|
||||
* @param string $faire Action demandée
|
||||
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||
* @param int $id Identifiant de l'objet
|
||||
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||
* @param array $opt Options de cette autorisation
|
||||
* @return bool true s'il a le droit, false sinon
|
||||
**/
|
||||
function autoriser_devis_modifier_dist($faire, $type, $id, $qui, $opt) {
|
||||
return in_array($qui['statut'], array('0minirezo', '1comite'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Autorisation de supprimer (devis)
|
||||
*
|
||||
* @param string $faire Action demandée
|
||||
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||
* @param int $id Identifiant de l'objet
|
||||
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||
* @param array $opt Options de cette autorisation
|
||||
* @return bool true s'il a le droit, false sinon
|
||||
**/
|
||||
function autoriser_devis_supprimer_dist($faire, $type, $id, $qui, $opt) {
|
||||
return $qui['statut'] == '0minirezo' and !$qui['restreint'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Autorisation de créer l'élément (devis) dans une rubrique
|
||||
*
|
||||
* @param string $faire Action demandée
|
||||
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||
* @param int $id Identifiant de l'objet
|
||||
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||
* @param array $opt Options de cette autorisation
|
||||
* @return bool true s'il a le droit, false sinon
|
||||
**/
|
||||
function autoriser_rubrique_creerdevisdans_dist($faire, $type, $id, $qui, $opt) {
|
||||
return ($id and autoriser('voir', 'rubrique', $id) and autoriser('creer', 'devis', $id));
|
||||
}
|
@ -0,0 +1,185 @@
|
||||
<?php
|
||||
/**
|
||||
* Utilisations de pipelines par Devis
|
||||
*
|
||||
* @plugin Devis
|
||||
* @copyright 2018
|
||||
* @author RastaPopoulos
|
||||
* @licence GNU/GPL
|
||||
* @package SPIP\Devis\Pipelines
|
||||
*/
|
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ajouter les objets sur les vues des parents directs
|
||||
*
|
||||
* @pipeline affiche_enfants
|
||||
* @param array $flux Données du pipeline
|
||||
* @return array Données du pipeline
|
||||
**/
|
||||
function devis_affiche_enfants($flux) {
|
||||
if ($e = trouver_objet_exec($flux['args']['exec']) and $e['edition'] == false) {
|
||||
$id_objet = $flux['args']['id_objet'];
|
||||
|
||||
if ($e['type'] == 'rubrique') {
|
||||
|
||||
$flux['data'] .= recuperer_fond(
|
||||
'prive/objets/liste/devis',
|
||||
array(
|
||||
'titre' => _T('devis:titre_devis_rubrique'),
|
||||
'id_rubrique' => $id_objet
|
||||
)
|
||||
);
|
||||
|
||||
if (autoriser('creerdevisdans', 'rubrique', $id_objet)) {
|
||||
include_spip('inc/presentation');
|
||||
$flux['data'] .= icone_verticale(
|
||||
_T('devis:icone_creer_devis'),
|
||||
generer_url_ecrire('devis_edit', "id_rubrique=$id_objet"),
|
||||
'devis-24.png',
|
||||
'new',
|
||||
'right'
|
||||
) . "<br class='nettoyeur' />";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return $flux;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ajout de contenu sur certaines pages,
|
||||
* notamment des formulaires de liaisons entre objets
|
||||
*
|
||||
* @pipeline affiche_milieu
|
||||
* @param array $flux Données du pipeline
|
||||
* @return array Données du pipeline
|
||||
*/
|
||||
function devis_affiche_milieu($flux) {
|
||||
$texte = '';
|
||||
$e = trouver_objet_exec($flux['args']['exec']);
|
||||
|
||||
// auteurs sur les devis
|
||||
if (!$e['edition'] and in_array($e['type'], array('devis'))) {
|
||||
$texte .= recuperer_fond('prive/objets/editer/liens', array(
|
||||
'table_source' => 'auteurs',
|
||||
'objet' => $e['type'],
|
||||
'id_objet' => $flux['args'][$e['id_table_objet']]
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($texte) {
|
||||
if ($p = strpos($flux['data'], '<!--affiche_milieu-->')) {
|
||||
$flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
|
||||
} else {
|
||||
$flux['data'] .= $texte;
|
||||
}
|
||||
}
|
||||
|
||||
return $flux;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ajout de liste sur la vue d'un auteur
|
||||
*
|
||||
* @pipeline affiche_auteurs_interventions
|
||||
* @param array $flux Données du pipeline
|
||||
* @return array Données du pipeline
|
||||
*/
|
||||
function devis_affiche_auteurs_interventions($flux) {
|
||||
if ($id_auteur = intval($flux['args']['id_auteur'])) {
|
||||
$flux['data'] .= recuperer_fond('prive/objets/liste/devis', array(
|
||||
'id_auteur' => $id_auteur,
|
||||
'titre' => _T('devis:info_devis_auteur')
|
||||
), array('ajax' => true));
|
||||
}
|
||||
return $flux;
|
||||
}
|
||||
|
||||
/**
|
||||
* Afficher le nombre d'éléments dans les parents
|
||||
*
|
||||
* @pipeline boite_infos
|
||||
* @param array $flux Données du pipeline
|
||||
* @return array Données du pipeline
|
||||
**/
|
||||
function devis_boite_infos($flux) {
|
||||
if (isset($flux['args']['type']) and isset($flux['args']['id']) and $id = intval($flux['args']['id'])) {
|
||||
$texte = '';
|
||||
if ($flux['args']['type'] == 'rubrique' and $nb = sql_countsel('spip_devis', array("statut='publie'", 'id_rubrique=' . $id))) {
|
||||
$texte .= '<div>' . singulier_ou_pluriel($nb, 'devis:info_1_devis', 'devis:info_nb_devis') . "</div>\n";
|
||||
}
|
||||
if ($texte and $p = strpos($flux['data'], '<!--nb_elements-->')) {
|
||||
$flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
|
||||
}
|
||||
}
|
||||
return $flux;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compter les enfants d'un objet
|
||||
*
|
||||
* @pipeline objets_compte_enfants
|
||||
* @param array $flux Données du pipeline
|
||||
* @return array Données du pipeline
|
||||
**/
|
||||
function devis_objet_compte_enfants($flux) {
|
||||
if ($flux['args']['objet'] == 'rubrique' and $id_rubrique = intval($flux['args']['id_objet'])) {
|
||||
// juste les publiés ?
|
||||
if (array_key_exists('statut', $flux['args']) and ($flux['args']['statut'] == 'publie')) {
|
||||
$flux['data']['devis'] = sql_countsel('spip_devis', 'id_rubrique= ' . intval($id_rubrique) . " AND (statut = 'publie')");
|
||||
} else {
|
||||
$flux['data']['devis'] = sql_countsel('spip_devis', 'id_rubrique= ' . intval($id_rubrique) . " AND (statut <> 'poubelle')");
|
||||
}
|
||||
}
|
||||
|
||||
return $flux;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Optimiser la base de données
|
||||
*
|
||||
* Supprime les objets à la poubelle.
|
||||
*
|
||||
* @pipeline optimiser_base_disparus
|
||||
* @param array $flux Données du pipeline
|
||||
* @return array Données du pipeline
|
||||
*/
|
||||
function devis_optimiser_base_disparus($flux) {
|
||||
|
||||
sql_delete('spip_devis', "statut='poubelle' AND maj < " . $flux['args']['date']);
|
||||
|
||||
return $flux;
|
||||
}
|
||||
|
||||
/**
|
||||
* Synchroniser la valeur de id secteur
|
||||
*
|
||||
* @pipeline trig_propager_les_secteurs
|
||||
* @param string $flux Données du pipeline
|
||||
* @return string Données du pipeline
|
||||
**/
|
||||
function devis_trig_propager_les_secteurs($flux) {
|
||||
|
||||
// synchroniser spip_devis
|
||||
$r = sql_select(
|
||||
'A.id_devis AS id, R.id_secteur AS secteur',
|
||||
'spip_devis AS A, spip_rubriques AS R',
|
||||
'A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur'
|
||||
);
|
||||
while ($row = sql_fetch($r)) {
|
||||
sql_update('spip_devis', array('id_secteur' => $row['secteur']), 'id_devis=' . $row['id']);
|
||||
}
|
||||
|
||||
return $flux;
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
diff -r -x . -x .. -x fabrique_diff.diff -x fabrique_devis.php ../tmp/cache/fabrique/.backup/devis/base/devis.php ../tmp/cache/fabrique/devis/base/devis.php
|
||||
74c74
|
||||
< 'accepte' => 'texte_statut_publie',
|
||||
---
|
||||
> 'publie' => 'texte_statut_publie',
|
||||
78,84d77
|
||||
< 'statut_images' => array(
|
||||
< 'prepa' => 'puce-blanche.gif',
|
||||
< 'prop' => 'puce-orange.gif',
|
||||
< 'accepte' => 'puce-verte.gif',
|
||||
< 'refuse' => 'puce-rouge.gif',
|
||||
< 'poubelle' => 'puce-poubelle.gif',
|
||||
< ),
|
||||
88,89c81,82
|
||||
< 'publie' => 'accepte,prop,refuse',
|
||||
< 'previsu' => 'accepte,prop,prepa',
|
||||
---
|
||||
> 'publie' => 'publie',
|
||||
> 'previsu' => 'publie,prop,prepa',
|
||||
diff -r -x . -x .. -x fabrique_diff.diff -x fabrique_devis.php ../tmp/cache/fabrique/.backup/devis/devis_pipelines.php ../tmp/cache/fabrique/devis/devis_pipelines.php
|
||||
53a54,106
|
||||
>
|
||||
> /**
|
||||
> * Ajout de contenu sur certaines pages,
|
||||
> * notamment des formulaires de liaisons entre objets
|
||||
> *
|
||||
> * @pipeline affiche_milieu
|
||||
> * @param array $flux Données du pipeline
|
||||
> * @return array Données du pipeline
|
||||
> */
|
||||
> function devis_affiche_milieu($flux) {
|
||||
> $texte = '';
|
||||
> $e = trouver_objet_exec($flux['args']['exec']);
|
||||
>
|
||||
> // auteurs sur les devis
|
||||
> if (!$e['edition'] and in_array($e['type'], array('devis'))) {
|
||||
> $texte .= recuperer_fond('prive/objets/editer/liens', array(
|
||||
> 'table_source' => 'auteurs',
|
||||
> 'objet' => $e['type'],
|
||||
> 'id_objet' => $flux['args'][$e['id_table_objet']]
|
||||
> ));
|
||||
> }
|
||||
>
|
||||
>
|
||||
>
|
||||
> if ($texte) {
|
||||
> if ($p = strpos($flux['data'], '<!--affiche_milieu-->')) {
|
||||
> $flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
|
||||
> } else {
|
||||
> $flux['data'] .= $texte;
|
||||
> }
|
||||
> }
|
||||
>
|
||||
> return $flux;
|
||||
> }
|
||||
>
|
||||
>
|
||||
> /**
|
||||
> * Ajout de liste sur la vue d'un auteur
|
||||
> *
|
||||
> * @pipeline affiche_auteurs_interventions
|
||||
> * @param array $flux Données du pipeline
|
||||
> * @return array Données du pipeline
|
||||
> */
|
||||
> function devis_affiche_auteurs_interventions($flux) {
|
||||
> if ($id_auteur = intval($flux['args']['id_auteur'])) {
|
||||
> $flux['data'] .= recuperer_fond('prive/objets/liste/devis', array(
|
||||
> 'id_auteur' => $id_auteur,
|
||||
> 'titre' => _T('devis:info_devis_auteur')
|
||||
> ), array('ajax' => true));
|
||||
> }
|
||||
> return $flux;
|
||||
> }
|
||||
>
|
||||
diff -r -x . -x .. -x fabrique_diff.diff -x fabrique_devis.php ../tmp/cache/fabrique/.backup/devis/paquet.xml ../tmp/cache/fabrique/devis/paquet.xml
|
||||
12c12
|
||||
< Paquet généré le 2018-04-18 17:06:16
|
||||
---
|
||||
> Paquet généré le 2018-04-18 17:22:14
|
||||
28a29,30
|
||||
> <pipeline nom="affiche_milieu" inclure="devis_pipelines.php" />
|
||||
> <pipeline nom="affiche_auteurs_interventions" inclure="devis_pipelines.php" />
|
@ -0,0 +1,35 @@
|
||||
<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_devis,nouveau}'>
|
||||
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
|
||||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
|
||||
|
||||
[(#ENV{editable})
|
||||
<form method="post" action="#ENV{action}"><div>
|
||||
#ACTION_FORMULAIRE
|
||||
<input type="hidden" name="id_devis" value="#ENV{id_devis}" />
|
||||
<div class="editer-groupe">
|
||||
|
||||
[(#SAISIE{input, titre, obligatoire=oui,
|
||||
label=<:devis:champ_titre_label:>})]
|
||||
|
||||
[<div class="editer editer_rubrique[ (#ENV**{erreurs/id_parent}|oui)erreur]">
|
||||
<label for="id_parent"><:titre_cadre_interieur_rubrique:></label>[
|
||||
<span class="erreur_message">(#ENV**{erreurs/id_parent})</span>
|
||||
]
|
||||
(#VAL|chercher_rubrique{#ENV{id_devis},#ENV{id_parent},'devis',#ENV{id_secteur},'',0,form_simple})
|
||||
</div>]
|
||||
|
||||
|
||||
|
||||
[(#SAISIE{input, reference, obligatoire=oui,
|
||||
label=<:devis:champ_reference_label:>})]
|
||||
|
||||
[(#SAISIE{textarea, descriptif,
|
||||
label=<:devis:champ_descriptif_label:>})]
|
||||
|
||||
</div>
|
||||
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
|
||||
<!--extra-->
|
||||
<p class="boutons"><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
|
||||
</div></form>
|
||||
]
|
||||
</div>
|
@ -0,0 +1,132 @@
|
||||
<?php
|
||||
/**
|
||||
* Gestion du formulaire de d'édition de devis
|
||||
*
|
||||
* @plugin Devis
|
||||
* @copyright 2018
|
||||
* @author RastaPopoulos
|
||||
* @licence GNU/GPL
|
||||
* @package SPIP\Devis\Formulaires
|
||||
*/
|
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||
return;
|
||||
}
|
||||
|
||||
include_spip('inc/actions');
|
||||
include_spip('inc/editer');
|
||||
|
||||
|
||||
/**
|
||||
* Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
|
||||
*
|
||||
* @param int|string $id_devis
|
||||
* Identifiant du devis. 'new' pour un nouveau devis.
|
||||
* @param int $id_rubrique
|
||||
* Identifiant de l'objet parent (si connu)
|
||||
* @param string $retour
|
||||
* URL de redirection après le traitement
|
||||
* @param int $lier_trad
|
||||
* Identifiant éventuel d'un devis source d'une traduction
|
||||
* @param string $config_fonc
|
||||
* Nom de la fonction ajoutant des configurations particulières au formulaire
|
||||
* @param array $row
|
||||
* Valeurs de la ligne SQL du devis, si connu
|
||||
* @param string $hidden
|
||||
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
|
||||
* @return string
|
||||
* Hash du formulaire
|
||||
*/
|
||||
function formulaires_editer_devis_identifier_dist($id_devis = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
|
||||
return serialize(array(intval($id_devis)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Chargement du formulaire d'édition de devis
|
||||
*
|
||||
* Déclarer les champs postés et y intégrer les valeurs par défaut
|
||||
*
|
||||
* @uses formulaires_editer_objet_charger()
|
||||
*
|
||||
* @param int|string $id_devis
|
||||
* Identifiant du devis. 'new' pour un nouveau devis.
|
||||
* @param int $id_rubrique
|
||||
* Identifiant de l'objet parent (si connu)
|
||||
* @param string $retour
|
||||
* URL de redirection après le traitement
|
||||
* @param int $lier_trad
|
||||
* Identifiant éventuel d'un devis source d'une traduction
|
||||
* @param string $config_fonc
|
||||
* Nom de la fonction ajoutant des configurations particulières au formulaire
|
||||
* @param array $row
|
||||
* Valeurs de la ligne SQL du devis, si connu
|
||||
* @param string $hidden
|
||||
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
|
||||
* @return array
|
||||
* Environnement du formulaire
|
||||
*/
|
||||
function formulaires_editer_devis_charger_dist($id_devis = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
|
||||
$valeurs = formulaires_editer_objet_charger('devis', $id_devis, $id_rubrique, $lier_trad, $retour, $config_fonc, $row, $hidden);
|
||||
return $valeurs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifications du formulaire d'édition de devis
|
||||
*
|
||||
* Vérifier les champs postés et signaler d'éventuelles erreurs
|
||||
*
|
||||
* @uses formulaires_editer_objet_verifier()
|
||||
*
|
||||
* @param int|string $id_devis
|
||||
* Identifiant du devis. 'new' pour un nouveau devis.
|
||||
* @param int $id_rubrique
|
||||
* Identifiant de l'objet parent (si connu)
|
||||
* @param string $retour
|
||||
* URL de redirection après le traitement
|
||||
* @param int $lier_trad
|
||||
* Identifiant éventuel d'un devis source d'une traduction
|
||||
* @param string $config_fonc
|
||||
* Nom de la fonction ajoutant des configurations particulières au formulaire
|
||||
* @param array $row
|
||||
* Valeurs de la ligne SQL du devis, si connu
|
||||
* @param string $hidden
|
||||
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
|
||||
* @return array
|
||||
* Tableau des erreurs
|
||||
*/
|
||||
function formulaires_editer_devis_verifier_dist($id_devis = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
|
||||
$erreurs = array();
|
||||
|
||||
$erreurs = formulaires_editer_objet_verifier('devis', $id_devis, array('titre', 'reference'));
|
||||
|
||||
return $erreurs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Traitement du formulaire d'édition de devis
|
||||
*
|
||||
* Traiter les champs postés
|
||||
*
|
||||
* @uses formulaires_editer_objet_traiter()
|
||||
*
|
||||
* @param int|string $id_devis
|
||||
* Identifiant du devis. 'new' pour un nouveau devis.
|
||||
* @param int $id_rubrique
|
||||
* Identifiant de l'objet parent (si connu)
|
||||
* @param string $retour
|
||||
* URL de redirection après le traitement
|
||||
* @param int $lier_trad
|
||||
* Identifiant éventuel d'un devis source d'une traduction
|
||||
* @param string $config_fonc
|
||||
* Nom de la fonction ajoutant des configurations particulières au formulaire
|
||||
* @param array $row
|
||||
* Valeurs de la ligne SQL du devis, si connu
|
||||
* @param string $hidden
|
||||
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
|
||||
* @return array
|
||||
* Retours des traitements
|
||||
*/
|
||||
function formulaires_editer_devis_traiter_dist($id_devis = 'new', $id_rubrique = 0, $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
|
||||
$retours = formulaires_editer_objet_traiter('devis', $id_devis, $id_rubrique, $lier_trad, $retour, $config_fonc, $row, $hidden);
|
||||
return $retours;
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
|
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array(
|
||||
|
||||
// D
|
||||
'devis_description' => '',
|
||||
'devis_nom' => 'Devis',
|
||||
'devis_slogan' => 'Lister des devis',
|
||||
);
|
@ -0,0 +1,38 @@
|
||||
<paquet
|
||||
prefix="devis"
|
||||
categorie="divers"
|
||||
version="1.0.0"
|
||||
etat="dev"
|
||||
compatibilite="[3.2.1;3.2.*]"
|
||||
logo="prive/themes/spip/images/devis-64.png"
|
||||
documentation=""
|
||||
schema="1.0.0"
|
||||
>
|
||||
<!--
|
||||
Paquet généré le 2018-04-18 17:25:04
|
||||
-->
|
||||
|
||||
<nom>Devis</nom>
|
||||
<!-- Lister des devis -->
|
||||
|
||||
<auteur>RastaPopoulos</auteur>
|
||||
|
||||
<licence>GNU/GPL</licence>
|
||||
<necessite nom="saisies" compatibilite="[2.4.0;]" />
|
||||
|
||||
|
||||
<pipeline nom="autoriser" inclure="devis_autorisations.php" />
|
||||
|
||||
<pipeline nom="declarer_tables_objets_sql" inclure="base/devis.php" />
|
||||
<pipeline nom="declarer_tables_interfaces" inclure="base/devis.php" />
|
||||
<pipeline nom="affiche_enfants" inclure="devis_pipelines.php" />
|
||||
<pipeline nom="affiche_milieu" inclure="devis_pipelines.php" />
|
||||
<pipeline nom="affiche_auteurs_interventions" inclure="devis_pipelines.php" />
|
||||
<pipeline nom="boite_infos" inclure="devis_pipelines.php" />
|
||||
<pipeline nom="objet_compte_enfants" inclure="devis_pipelines.php" />
|
||||
<pipeline nom="optimiser_base_disparus" inclure="devis_pipelines.php" />
|
||||
<pipeline nom="trig_propager_les_secteurs" inclure="devis_pipelines.php" />
|
||||
|
||||
<menu nom="devis" titre="devis:titre_devis" parent="menu_edition" icone="images/devis-16.png" action="devis_tous" />
|
||||
<menu nom="devis_creer" titre="devis:icone_creer_devis" parent="outils_rapides" icone="images/devis-new-16.png" action="devis_edit" parametres="new=oui" />
|
||||
</paquet>
|
@ -0,0 +1,17 @@
|
||||
<BOUCLE_devis(DEVIS){id_devis}{statut?}>
|
||||
[<div class="champ contenu_titre[ (#TITRE*|strlen|?{'',vide})]">
|
||||
<label><:devis:champ_titre_label:> : </label>
|
||||
<span dir="#LANG_DIR" class="#EDIT{titre} titre">(#TITRE)</span>
|
||||
</div>]
|
||||
|
||||
[<div class="champ contenu_reference[ (#REFERENCE*|strlen|?{'',vide})]">
|
||||
<label><:devis:champ_reference_label:> : </label>
|
||||
<span dir="#LANG_DIR" class="#EDIT{reference} reference">(#REFERENCE)</span>
|
||||
</div>]
|
||||
|
||||
[<div class="champ contenu_descriptif[ (#DESCRIPTIF*|strlen|?{'',vide})]">
|
||||
<label><:devis:champ_descriptif_label:> : </label>
|
||||
<span dir="#LANG_DIR" class="#EDIT{descriptif} descriptif">(#DESCRIPTIF)</span>
|
||||
</div>]
|
||||
|
||||
</BOUCLE_devis>
|
@ -0,0 +1,30 @@
|
||||
<BOUCLE_devis(DEVIS){id_devis=#ENV{id}}{statut?}>
|
||||
<div class="infos">
|
||||
[(#SET{texte_objet,<:devis:titre_devis:>})]
|
||||
<div class="numero"><:titre_cadre_numero_objet{objet=#GET{texte_objet}}:><p>#ID_DEVIS</p></div>
|
||||
|
||||
[(#FORMULAIRE_INSTITUER_OBJET{devis,#ID_DEVIS})]
|
||||
|
||||
<div class='nb_elements'><!--nb_elements--></div>
|
||||
|
||||
[(#REM)
|
||||
|
||||
Bouton voir en ligne
|
||||
|
||||
]
|
||||
<BOUCLE_publie(DEVIS){id_devis}>
|
||||
[(#VAL{redirect}
|
||||
|generer_url_action{type=devis&id=#ID_DEVIS}
|
||||
|parametre_url{var_mode,calcul}
|
||||
|icone_horizontale{<:icone_voir_en_ligne:>,racine})]
|
||||
</BOUCLE_publie>
|
||||
[(#AUTORISER{previsualiser,devis,#ID_DEVIS,'',#ARRAY{statut,#STATUT}})
|
||||
[(#VAL{redirect}
|
||||
|generer_url_action{type=devis&id=#ID_DEVIS}
|
||||
|parametre_url{var_mode,preview}
|
||||
|icone_horizontale{<:previsualiser:>,preview})]
|
||||
]
|
||||
<//B_publie>
|
||||
|
||||
</div>
|
||||
</BOUCLE_devis>
|
@ -0,0 +1,39 @@
|
||||
[(#SET{defaut_tri,#ARRAY{
|
||||
titre,1,
|
||||
date,-1,
|
||||
id_devis,1,
|
||||
points,-1
|
||||
}})]<B_liste_devis>
|
||||
#ANCRE_PAGINATION
|
||||
<div class="liste-objets devis">
|
||||
<table class="spip liste">
|
||||
[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{devis:info_1_devis,devis:info_nb_devis}})</strong></caption>]
|
||||
<thead>
|
||||
<tr class="first_row">
|
||||
<th class="picto" scope="col"></th>
|
||||
<th class="statut" scope="col">[(#TRI{statut,<span title="<:lien_trier_statut|attribut_html:>">#</span>,ajax})]</th>
|
||||
<th class="titre" scope="col">[(#TRI{titre,<:devis:champ_titre_label:>,ajax})]</th>
|
||||
<th class="date" scope="col">[(#TRI{date,<:date:>,ajax})]</th>
|
||||
<th class="id" scope="col">[(#TRI{id_devis,<:info_numero_abbreviation:>,ajax})]</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<BOUCLE_liste_devis(DEVIS){id_rubrique?}{id_secteur?}{id_mot?}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,num titre},#GET{defaut_tri}}{par titre}{pagination #ENV{nb,10}}>
|
||||
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
|
||||
<td class="picto">[(#CHEMIN_IMAGE{devis-16.png}|balise_img)]</td>
|
||||
<td class="statut">[(#STATUT|puce_statut{devis,#ID_DEVIS,#ID_RUBRIQUE})]</td>
|
||||
<td class="titre principale">[(#LOGO_DEVIS|image_reduire{20,26})]<a href="[(#ID_DEVIS|generer_url_entite{devis})]" title="<:info_numero_abbreviation|attribut_html:> #ID_DEVIS">[(#RANG). ]#TITRE</a></td>
|
||||
<td class="date secondaire">[(#DATE|affdate_jourcourt)]</td>
|
||||
<td class="id">[(#AUTORISER{modifier,devis,#ID_DEVIS}|?{
|
||||
<a href="[(#URL_ECRIRE{devis_edit,id_devis=#ID_DEVIS})]">#ID_DEVIS</a>,
|
||||
#ID_DEVIS
|
||||
})]</td>
|
||||
</tr>
|
||||
</BOUCLE_liste_devis>
|
||||
</tbody>
|
||||
</table>
|
||||
[<p class="pagination">(#PAGINATION{prive})</p>]
|
||||
</div>
|
||||
</B_liste_devis>[
|
||||
<div class="liste-objets devis caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
|
||||
]<//B_liste_devis>
|
@ -0,0 +1,8 @@
|
||||
#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
|
||||
<div class="nettoyeur"></div>
|
||||
|
||||
<INCLURE{fond=prive/objets/liste/devis, env, ajax, sinon=<:devis:info_aucun_devis:>}>
|
||||
|
||||
[(#AUTORISER{creer,devis})
|
||||
[(#URL_ECRIRE{devis_edit,new=oui}|icone_verticale{<:devis:icone_creer_devis:>,devis,new,right})]
|
||||
]
|
@ -0,0 +1,40 @@
|
||||
<BOUCLE_nb_items(DEVIS)
|
||||
{id_rubrique}
|
||||
{statut == .*}{statut ?}
|
||||
{pagination 1}>
|
||||
#SET{total,#GRAND_TOTAL}
|
||||
#SET{lister,#PLAN_AFFICHER_LISTE}
|
||||
</BOUCLE_nb_items>
|
||||
|
||||
[(#ENV{conteneur}|=={non}|non)
|
||||
<ul class="menu-items devis">
|
||||
<li id="devis-rubrique-#ID_RUBRIQUE"
|
||||
class="item group[ (#GET{lister}|non)jstree-closed]"
|
||||
data-jstree='{"type":"box_devis"}' data-objet="devis">
|
||||
<strong>[(#GET{total}|objet_afficher_nb{devis})]</strong>
|
||||
]
|
||||
|
||||
<B_items>
|
||||
<ul class="menu-items devis">
|
||||
<BOUCLE_items(DEVIS)
|
||||
{id_rubrique}
|
||||
{par titre}
|
||||
{statut == .*}{statut ?}
|
||||
{si #GET{lister}}
|
||||
>
|
||||
<li id="devis-#ID_DEVIS" class="item" data-jstree='{"type":"devis"}' data-objet="devis">
|
||||
<a href="[(#ID_DEVIS|generer_url_entite{devis})]"
|
||||
[hreflang="(#ENV{lang}|=={#LANG}|non|?{#LANG})"]
|
||||
title="[(#VAL{devis}|objet_info{texte_objet}|_T) #ID_DEVIS]">
|
||||
[(#STATUT|puce_statut{devis}) ][(#TITRE|couper{80}|sinon{<:info_sans_titre:>})]
|
||||
</a>
|
||||
</li>
|
||||
</BOUCLE_items>
|
||||
</ul>
|
||||
</B_items>
|
||||
|
||||
[(#ENV{conteneur}|=={non}|non)
|
||||
</li>
|
||||
</ul>
|
||||
]
|
||||
</B_nb_items>
|
After Width: | Height: | Size: 396 B |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 514 B |
After Width: | Height: | Size: 1015 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 603 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 598 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 655 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 650 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.7 KiB |