From: Ludovic CHEVALIER Date: Sat, 26 Mar 2016 10:20:17 +0000 (+0100) Subject: [PLUGINS] +maj gis4 X-Git-Tag: v3.3.0~92 X-Git-Url: http://git.cyclocoop.org/?p=lhc%2Fweb%2Fwww.git;a=commitdiff_plain;h=d24ea3eed933e1a140e426c8c4dd395f2e7b0279 [PLUGINS] +maj gis4 --- diff --git a/www/plugins/gis/TODO.txt b/www/plugins/gis/TODO.txt deleted file mode 100644 index b51cd704..00000000 --- a/www/plugins/gis/TODO.txt +++ /dev/null @@ -1,14 +0,0 @@ -peut être utiliser cette lib php pour le geocoder ? : https://github.com/willdurand/Geocoder - -des couches à pomper : -- http://earthquake.usgs.gov/template/js/classes/usgs/leaflet/layer/ - -une barre de zoom bien faite à passer en plugin ici : https://github.com/CloudMade/Leaflet/pull/689 - -Avoir un crayon de modification de point depuis le public - -Interface de recherche de point : -- textuelle (recherche dans le titre + descriptif + pays + bla bla bla) -- par carte : Ouvre une carte + on clique le point avec un bouton choisir dedans + joint le point en question à un objet -(utilisation via mediabox possible) -- Une simple liste des points paginés par date de modif/ d'ajout \ No newline at end of file diff --git a/www/plugins/gis/action/editer_gis.php b/www/plugins/gis/action/editer_gis.php index 3eb34863..f28a5ca1 100644 --- a/www/plugins/gis/action/editer_gis.php +++ b/www/plugins/gis/action/editer_gis.php @@ -76,9 +76,32 @@ function gis_modifier($id_gis, $set=null) { $set ); + if(isset($c['lon'])){ + if($c['lon'] > 180){ + while($c['lon'] > 180){ + $c['lon'] = $c['lon'] - 360; + } + }else if($c['lon'] <= -180){ + while($c['lon'] <= -180){ + $c['lon'] = $c['lon'] + 360; + } + } + } + if(isset($c['lat'])){ + if($c['lat'] > 90){ + while($c['lat'] > 90){ + $c['lat'] = $c['lat'] - 180; + } + }else if($c['lat'] <= -90){ + while($c['lat'] <= -90){ + $c['lat'] = $c['lat'] + 180; + } + } + } if ($err = objet_modifier_champs('gis', $id_gis, array( //'nonvide' => array('nom' => _T('info_sans_titre')), + 'data' => $set, 'invalideur' => "id='gis/$id_gis'", ), $c)) @@ -117,7 +140,7 @@ function gis_associer($id_gis,$objets, $qualif = null){ } /** - * Dossocier un point géolocalisé des objets listes sous forme + * Dissocier un point géolocalisé des objets listes sous forme * array($objet=>$id_objets,...) * $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type * diff --git a/www/plugins/gis/action/gis_geocoder_rechercher.php b/www/plugins/gis/action/gis_geocoder_rechercher.php new file mode 100644 index 00000000..2419d984 --- /dev/null +++ b/www/plugins/gis/action/gis_geocoder_rechercher.php @@ -0,0 +1,28 @@ + array( "id_gis" => "bigint(21) NOT NULL", - "titre" => "varchar(255) NOT NULL DEFAULT ''", + "titre" => "text NOT NULL DEFAULT ''", "descriptif" => "text NOT NULL DEFAULT ''", "lat" => "double NULL NULL", "lon" => "double NULL NULL", @@ -46,11 +42,23 @@ function gis_declarer_tables_objets_sql($tables){ "pays" => "text NOT NULL DEFAULT ''", "code_pays" => "varchar(255) NOT NULL DEFAULT ''", "region" => "text NOT NULL DEFAULT ''", + "departement" => "text NOT NULL DEFAULT ''", "ville" => "text NOT NULL DEFAULT ''", "code_postal" => "varchar(255) NOT NULL DEFAULT ''" ), 'key' => array( "PRIMARY KEY" => "id_gis", + 'KEY lat' => 'lat', + 'KEY lon' => 'lon', + 'KEY pays' => 'pays(500)', + 'KEY code_pays' => 'code_pays', + 'KEY region' => 'region(500)', + 'KEY departement' => 'departement(500)', + 'KEY ville' => 'ville(500)', + 'KEY code_postal' => 'code_postal', + ), + 'join' => array( + "id_gis"=>"id_gis" ), 'principale' => 'oui', 'modeles' => array('carte_gis', 'carte_gis_preview'), @@ -59,18 +67,19 @@ function gis_declarer_tables_objets_sql($tables){ 'titre' => "titre, '' AS lang", /* L'édition, l'affichage et la recherche */ - 'page' => 'gis', + 'page' => false, 'url_voir' => 'gis', 'url_edit' => 'gis_edit', 'editable' => 'oui', - 'champs_editables' => array('lat', 'lon', 'zoom', 'titre', 'descriptif', 'adresse', 'code_postal', 'ville', 'region', 'pays'), - /*'champs_editables' => array(), */ + 'champs_editables' => array('lat', 'lon', 'zoom', 'titre', 'descriptif', 'adresse', 'code_postal', 'ville', 'region', 'departement', 'pays', 'code_pays'), + 'champs_versionnes' => array('lat', 'lon', 'zoom', 'titre', 'descriptif', 'adresse', 'code_postal', 'ville', 'region', 'departement', 'pays', 'code_pays'), 'icone_objet' => 'gis', 'rechercher_champs' => array( 'titre' => 8, 'descriptif' => 5, 'pays' => 3, 'region' => 3, + 'departement' => 3, 'ville' => 3, 'code_postal' => 3, ), @@ -89,18 +98,19 @@ function gis_declarer_tables_objets_sql($tables){ 'texte_logo_objet' => 'gis:libelle_logo_gis', ); - $spip_gis_liens = array( - "id_gis" => "bigint(21) NOT NULL", - "objet" => "VARCHAR (25) DEFAULT '' NOT NULL", - "id_objet" => "bigint(21) NOT NULL"); + $tables[]['tables_jointures'][]= 'gis_liens'; + $tables[]['champs_versionnes'][] = 'jointure_gis'; - $spip_gis_liens_key = array( - "PRIMARY KEY" => "id_gis,id_objet,objet", - "KEY id_objet" => "id_gis"); - - $tables_auxiliaires['spip_gis_liens'] = array( - 'field' => &$spip_gis_liens, - 'key' => &$spip_gis_liens_key); + // recherche jointe sur les points gis pour tous les objets + $tables[]['rechercher_jointures']['gis'] = array( + 'titre' => 3, + 'descriptif' => 2, + 'pays' => 4, + 'region' => 1, + 'departement' => 1, + 'ville' => 1, + 'code_postal' => 1 + ); return $tables; } @@ -113,7 +123,10 @@ function gis_declarer_tables_auxiliaires($tables_auxiliaires){ $spip_gis_liens_key = array( "PRIMARY KEY" => "id_gis,id_objet,objet", - "KEY id_objet" => "id_gis"); + "KEY id_gis" => "id_gis", + "KEY id_objet" => "id_objet", + "KEY objet" => "objet" + ); $tables_auxiliaires['spip_gis_liens'] = array( 'field' => &$spip_gis_liens, @@ -122,4 +135,4 @@ function gis_declarer_tables_auxiliaires($tables_auxiliaires){ return $tables_auxiliaires; } -?> \ No newline at end of file +?> diff --git a/www/plugins/gis/crud/gis.php b/www/plugins/gis/crud/gis.php index 1b743adb..ab9e9559 100644 --- a/www/plugins/gis/crud/gis.php +++ b/www/plugins/gis/crud/gis.php @@ -17,13 +17,11 @@ include_spip('action/editer_gis'); * @return array : un array avec (bool) success, (string) message et (array) result indiquant l'id créé */ function crud_gis_create_dist($dummy,$set=null){ - if ($id = insert_gis()){ - list($e,$ok) = revisions_gis($id,$set); - } - else{ - $e = _L('create error'); - } - return array('success'=>$e?false:true,'message'=>$e?$e:$ok,'result'=>array('id'=>$id)); + if (autoriser('voir','gis') && $id = gis_inserer()) + $err = gis_modifier($id,$set); + else + $err = _T('crud:erreur_creation',array('objet'=>'gis')); + return array('success'=>($err && strlen($err)>0)?false:true,'message'=>$err,'result'=>array('id'=>$id)); } /** @@ -37,13 +35,13 @@ function crud_gis_create_dist($dummy,$set=null){ function crud_gis_update_dist($id,$set=null){ $id_gis = sql_getfetsel('id_gis','spip_gis','id_gis='.intval($id)); if(!$id_gis){ - $e = _T('gis:erreur_gis_inconnu',array('id'=>$id)); + $err = _T('gis:erreur_gis_inconnu',array('id'=>$id)); }else if(autoriser('modifier','gis',$id)){ - list($e,$ok) = revisions_gis($id,$set); + $err = gis_modifier($id,$set); }else{ - $e = _L('update error'); + $err = _L('update error'); } - return array('success'=>$e?false:true,'message'=>$e?$e:$ok,'result'=>array('id'=>$id)); + return array('success'=>($err && strlen($err)>0)?false:true,'message'=>$err,'result'=>array('id'=>$id)); } /** @@ -56,9 +54,9 @@ function crud_gis_update_dist($id,$set=null){ */ function crud_gis_delete_dist($id){ if(autoriser('supprimer','gis',$id)){ - list($e,$ok) = supprimer_gis($id); + $err = gis_supprimer($id); } - return array('success'=>$e?false:true,'message'=>$e?$e:$ok,'result'=>array('id'=>$id)); + return array('success'=>is_numeric($err)?true:false,'message'=>$err,'result'=>array('id'=>$id)); } ?> \ No newline at end of file diff --git a/www/plugins/gis/formulaires/configurer_gis.html b/www/plugins/gis/formulaires/configurer_gis.html index d38bdf2e..d6125717 100755 --- a/www/plugins/gis/formulaires/configurer_gis.html +++ b/www/plugins/gis/formulaires/configurer_gis.html @@ -7,7 +7,12 @@
#ACTION_FORMULAIRE{#ENV{action}} -
    + <[(#VAL{ul}|saisie_balise_structure_formulaire)] class="editer-groupe"> + <[(#VAL{li}|saisie_balise_structure_formulaire)] class="rechercher_adresse editer editer_map_config"> + + + <:info_rechercher:> + [(#SAISIE{input,lat, label=<:gis:lat:>, defaut=0, @@ -77,7 +82,7 @@ label=<:gis:cfg_lbl_activer_objets:>, exclus=spip_gis})] -
+

@@ -86,19 +91,41 @@

diff --git a/www/plugins/gis/formulaires/configurer_gis.php b/www/plugins/gis/formulaires/configurer_gis.php index 40bdc3bc..23999bd8 100644 --- a/www/plugins/gis/formulaires/configurer_gis.php +++ b/www/plugins/gis/formulaires/configurer_gis.php @@ -8,8 +8,12 @@ if (!defined('_ECRIRE_INC_VERSION')) return; */ function formulaires_configurer_gis_verifier_dist(){ $erreurs = array(); - - if ((_request('layer_defaut') == 'bing_aerial') OR in_array('bing_aerial', _request('layers'))){ + $layers = _request('layers'); + if (!is_array($layers)) { + $layers = array(); + } + + if ((_request('layer_defaut') == 'bing_aerial') OR in_array('bing_aerial', $layers)){ $obligatoire = 'api_key_bing'; if (!_request($obligatoire)){ $erreurs[$obligatoire] = _T('info_obligatoire'); @@ -22,8 +26,8 @@ function formulaires_configurer_gis_verifier_dist(){ $layer_defaut = lire_config('gis/layer_defaut'); // Si on change la couche par défaut ou si une couche google est présente dans la conf, le formulaire ne doit pas etre traiter en ajax if ((_request('layer_defaut') != $layer_defaut) - OR (count(array_intersect(array('google_roadmap', 'google_satellite', 'google_terrain'), _request('layers'))) > 0) - OR (in_array('bing_aerial', _request('layers')))) + OR (count(array_intersect(array('google_roadmap', 'google_satellite', 'google_terrain'), $layers)) > 0) + OR (in_array('bing_aerial', $layers))) refuser_traiter_formulaire_ajax(); } diff --git a/www/plugins/gis/formulaires/editer_gis.html b/www/plugins/gis/formulaires/editer_gis.html index 6ff03712..0f3db597 100755 --- a/www/plugins/gis/formulaires/editer_gis.html +++ b/www/plugins/gis/formulaires/editer_gis.html @@ -8,12 +8,12 @@ [(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ] #ACTION_FORMULAIRE{#ENV{action}} - - - + [(#SAISIE{input,code_pays, + label=<:gis:label_code_pays:>})] + + + [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]

diff --git a/www/plugins/gis/formulaires/rechercher_gis.html b/www/plugins/gis/formulaires/rechercher_gis.html index 55409e03..032c3497 100755 --- a/www/plugins/gis/formulaires/rechercher_gis.html +++ b/www/plugins/gis/formulaires/rechercher_gis.html @@ -3,7 +3,7 @@

diff --git a/www/plugins/saisies/saisies-vues/couleur.html b/www/plugins/saisies/saisies-vues/couleur.html new file mode 100644 index 00000000..6dc5361d --- /dev/null +++ b/www/plugins/saisies/saisies-vues/couleur.html @@ -0,0 +1,4 @@ +

+   + [(#ENV{valeur})] +

diff --git a/www/plugins/saisies/saisies-vues/destinataires.html b/www/plugins/saisies/saisies-vues/destinataires.html index 705e4595..12ac8404 100644 --- a/www/plugins/saisies/saisies-vues/destinataires.html +++ b/www/plugins/saisies/saisies-vues/destinataires.html @@ -1,6 +1,7 @@ +[(#SET{valeur,[(#ENV*{valeur}|is_array|?{[(#ENV*{valeur})],[(#ENV*{valeur}|explode{','})]})]})] diff --git a/www/plugins/saisies/saisies-vues/radio.html b/www/plugins/saisies/saisies-vues/radio.html index b3c9c55f..debb78b6 100644 --- a/www/plugins/saisies/saisies-vues/radio.html +++ b/www/plugins/saisies/saisies-vues/radio.html @@ -1,4 +1,4 @@ [(#REM) datas peut être une chaine qu'on sait décomposer ] #SET{datas, #ENV{datas}|saisies_chaine2tableau} -[

(#GET{datas}|table_valeur{#ENV{valeur}})

] +[

(#GET{datas/#ENV{valeur}})

] diff --git a/www/plugins/saisies/saisies-vues/selecteur_article_fonctions.php b/www/plugins/saisies/saisies-vues/selecteur_article_fonctions.php index ba76acb4..5556cf98 100644 --- a/www/plugins/saisies/saisies-vues/selecteur_article_fonctions.php +++ b/www/plugins/saisies/saisies-vues/selecteur_article_fonctions.php @@ -1,5 +1,3 @@ +include_spip('prive/formulaires/selecteur/selecteur_fonctions'); \ No newline at end of file diff --git a/www/plugins/saisies/saisies-vues/selecteur_document.html b/www/plugins/saisies/saisies-vues/selecteur_document.html index 1e4ba7d0..23f77bf6 100644 --- a/www/plugins/saisies/saisies-vues/selecteur_document.html +++ b/www/plugins/saisies/saisies-vues/selecteur_document.html @@ -1,3 +1,3 @@ - +

#ID_DOCUMENT - #TITRE (#TYPE_DOCUMENT [(#TAILLE|taille_en_octets)])

diff --git a/www/plugins/saisies/saisies-vues/selection.html b/www/plugins/saisies/saisies-vues/selection.html index 45dddb12..4d5f5a6e 100644 --- a/www/plugins/saisies/saisies-vues/selection.html +++ b/www/plugins/saisies/saisies-vues/selection.html @@ -1,4 +1,4 @@ [(#REM) datas peut être une chaine qu'on sait décomposer ] #SET{datas, #ENV{datas}|saisies_chaine2tableau|saisies_aplatir_tableau} -[

(#GET{datas}|table_valeur{#ENV{valeur}})

] +[

(#GET{datas/#ENV{valeur}})

] diff --git a/www/plugins/saisies/saisies-vues/selection_multiple.html b/www/plugins/saisies/saisies-vues/selection_multiple.html index 2925716e..a13d1735 100644 --- a/www/plugins/saisies/saisies-vues/selection_multiple.html +++ b/www/plugins/saisies/saisies-vues/selection_multiple.html @@ -1,10 +1,10 @@ [(#REM) datas peut être une chaine qu'on sait décomposer ] -#SET{datas, #ENV{datas}|saisies_chaine2tableau} +#SET{datas, #ENV{datas}|saisies_chaine2tableau|saisies_aplatir_tableau} #SET{valeur, #ENV*{valeur}|saisies_valeur2tableau}
    -
  • [(#GET{datas}|table_valeur{#VALEUR})]
  • +
  • #GET{datas/#VALEUR}
diff --git a/www/plugins/saisies/saisies.css.html b/www/plugins/saisies/saisies.css.html index 1686610b..86024e20 100644 --- a/www/plugins/saisies/saisies.css.html +++ b/www/plugins/saisies/saisies.css.html @@ -10,23 +10,28 @@ /* Dans l'espace privé, afficher les labels des vues de Saisies */ #wysiwyg .afficher .label{ display:block; } -li.fieldset.pliable > fieldset > .legend{ +.fieldset.pliable > fieldset > .legend{ cursor:pointer; } -li.fieldset.pliable > fieldset > .legend span{ +.fieldset.pliable > fieldset > .legend span{ padding-#GET{left}:15px; background:transparent url(#CHEMIN{images/deplierbas.gif}) [(#GET{left}) ]center no-repeat; } -li.fieldset.plie > fieldset > .legend span{ +.fieldset.plie > fieldset > .legend span{ background-image:url(#GET{fleche}); } /*[(#REM) date triple champs... jour mois annee /12/ /10/ /2010/ ]*/ -.saisie_date_jour_mois_annee .choix {float:left;} +.editer.saisie_date_jour_mois_annee .choix { + background-color:transparent; + float:left; + padding:0; + border:0; +} .saisie_date_jour_mois_annee .choix+.choix {margin-left:1em;} .saisie_date_jour_mois_annee .choix label{display:block; width:auto;} .saisie_date_jour_mois_annee .choix .text{width:auto;} @@ -44,5 +49,5 @@ li.fieldset.plie > fieldset > .legend span{ .formulaire_spip li.selecteur_item div.choix label { float:none; - display:inline; + display:inline; } diff --git a/www/plugins/saisies/saisies/_base.html b/www/plugins/saisies/saisies/_base.html index e5befe67..342fc409 100644 --- a/www/plugins/saisies/saisies/_base.html +++ b/www/plugins/saisies/saisies/_base.html @@ -18,10 +18,13 @@ - disable_avec_post : idem disable, mais en envoyant en hidden le champ tout de meme. - readonly : est-ce que le champ est non modifiable ? (pas de saisie possible, selection possible, contenus postes) (defaut: non, valeurs : null/"non"/autre=oui ) n'est peut etre pas valable pour toutes les saisies. + - saisies_base_conteneur : définit la balise englobante de la saisie (balise div par défaut en SPIP 3.1+, et li avant) + - conteneur_class : Classe CSS à ajouter au conteneur + - li_class : pour compatibilité. Voir conteneur_class Exemples d'appels : - [(#SAISIE{input, couleur_foncee, + [(#SAISIE{input, couleur_foncee, label=<:spa:couleur_foncee:>, obligatoire=oui})] @@ -32,23 +35,23 @@ #SET{disable,#ENV{disable,#ENV{disable_avec_post}}|et{#ENV{disable,#ENV{disable_avec_post}}|!={non}}|?{#ENV{disable}|is_array|?{#ENV{disable,#ARRAY},disabled},''}} #SET{readonly,#ENV{readonly}|et{#ENV{readonly}!={non}}|?{readonly,''}} #SET{saisies_autonomes,#VAL|saisies_autonomes} - + [(#ENV{type_saisie}|in_array{#GET{saisies_autonomes}}|oui) [(#INCLURE{fond=saisies/#ENV{type_saisie},env,obligatoire=#GET{obligatoire},disable=#GET{disable},readonly=#GET{readonly}})] ] [(#ENV{type_saisie}|in_array{#GET{saisies_autonomes}}|non) - #SET{erreurs,#ENV**{erreurs}|table_valeur{#ENV{nom}}} - #SET{li_class,#ENV{type_saisie}|substr{0,9}|=={selecteur}|?{selecteur_item,''}} + #SET{erreurs,#ENV**{erreurs/#ENV{nom}}} + #SET{conteneur_class,#ENV{type_saisie}|substr{0,9}|=={selecteur}|?{selecteur_item,''}} -
  • + <[(#ENV{saisies_base_conteneur,[(#VAL{li}|saisie_balise_structure_formulaire)]})] class="editer editer_[(#ENV{nom}|saisie_nom2classe)][ (#GET{obligatoire})][ (#GET{erreurs}|oui)erreur][ (#GET{conteneur_class})][ (#ENV{conteneur_class,#ENV{li_class}})][ saisie_(#ENV{type_saisie})]"[ data-id="(#ENV{id_saisie})"]> #ENV*{inserer_debut} [(#ENV*{label})[(#GET{obligatoire}|oui)[(#ENV*{info_obligatoire}|is_null|?{<:info_obligatoire_02:>,#ENV*{info_obligatoire}})]]] [(#GET{erreurs})] - [

    (#ENV*{explication})

    ] + [

    (#ENV*{explication})

    ] [(#ENV*{attention})] - [(#INCLURE{fond=saisies/#ENV{type_saisie},env,nom=[(#ENV{nom}|saisie_nom2name)], disable=#GET{disable},readonly=#GET{readonly}})] + [(#INCLURE{fond=saisies/#ENV{type_saisie},env,nom=[(#ENV{nom}|saisie_nom2name)], disable=#GET{disable},readonly=#GET{readonly},describedby=[(#ENV*{explication}|?{[explication_(#ENV{nom}|saisie_nom2name)]})]})] [(#ENV{disable_avec_post}|et{#ENV{disable_avec_post}|!={non}}|oui)] #ENV**{inserer_fin} -
  • + ] ] diff --git a/www/plugins/saisies/saisies/articles_originaux.html b/www/plugins/saisies/saisies/articles_originaux.html index cf44b7b1..d0e8d66f 100644 --- a/www/plugins/saisies/saisies/articles_originaux.html +++ b/www/plugins/saisies/saisies/articles_originaux.html @@ -19,7 +19,7 @@ Par défaut ne liste que ceux des rubriques à la racine (secteurs) label=<:plugin:label_articles:>, multiple=oui})] ] - [(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non) ] diff --git a/www/plugins/saisies/saisies/auteurs.html b/www/plugins/saisies/saisies/auteurs.html index a394ed66..39d4ed86 100644 --- a/www/plugins/saisies/saisies/auteurs.html +++ b/www/plugins/saisies/saisies/auteurs.html @@ -31,11 +31,11 @@ [(#ENV{multiple}|oui) [(#SET{valeur,[(#ENV*{valeur}|is_array|?{[(#ENV*{valeur})],[(#ENV*{valeur}|explode{','})]})]})] ] - [(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non) ] - #SET{image_statut, #GET{bonhomme_statut}|table_valeur{#STATUT}} + #SET{image_statut, #GET{bonhomme_statut/#STATUT}} [(#ENV{multiple}|oui) ] [(#ENV{multiple}|non) diff --git a/www/plugins/saisies/saisies/case.html b/www/plugins/saisies/saisies/case.html index 3a570c20..16b486e5 100644 --- a/www/plugins/saisies/saisies/case.html +++ b/www/plugins/saisies/saisies/case.html @@ -14,8 +14,8 @@ label_case=<:plugin:activer:>, explication=<:plugin:explication_afficher_liste:>})] ]#SET{valeur,#ENV{valeur_forcee,#ENV{valeur}}|is_null|?{#ENV{defaut},#ENV{valeur_forcee,#ENV{valeur}}}} -
    +
    [(#ENV{disable}|non)] - + []
    diff --git a/www/plugins/saisies/saisies/case.yaml b/www/plugins/saisies/saisies/case.yaml index 98523a7e..6be83dc0 100644 --- a/www/plugins/saisies/saisies/case.yaml +++ b/www/plugins/saisies/saisies/case.yaml @@ -34,6 +34,21 @@ options: options: nom: 'defaut' label: '<:saisies:option_defaut_label:>' + - + saisie: 'input' + options: + nom: 'valeur_oui' + label: '<:saisies:option_valeur_oui_label:>' + explication: '<:saisies:option_valeur_oui_explication:>' + size: 50 + defaut: 'on' + - + saisie: 'input' + options: + nom: 'valeur_non' + label: '<:saisies:option_valeur_non_label:>' + explication: '<:saisies:option_valeur_non_explication:>' + size: 50 - saisie: 'fieldset' options: @@ -91,6 +106,12 @@ options: nom: 'info_obligatoire' label: '<:saisies:option_info_obligatoire_label:>' explication: '<:saisies:option_info_obligatoire_explication:>' + - + saisie: 'input' + options: + nom: 'class' + label: '<:saisies:option_class_label:>' + size: 50 - saisie: 'fieldset' options: diff --git a/www/plugins/saisies/saisies/checkbox.html b/www/plugins/saisies/saisies/checkbox.html index 78709a2b..c14e0a9d 100644 --- a/www/plugins/saisies/saisies/checkbox.html +++ b/www/plugins/saisies/saisies/checkbox.html @@ -39,23 +39,27 @@ ] [(#ENV{tout_selectionner}|oui)
    - +
    ]
    [(#SET{id,champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_[(#COMPTEUR_BOUCLE|concat{'-',#CLE}|md5)]})] - +
    [(#ENV{choix_alternatif}|oui)
    - + + + [

    + (#ENV{choix_alternatif_explication}) +

    ]
    ] diff --git a/www/plugins/saisies/saisies/choisir_objets_edit.html b/www/plugins/saisies/saisies/choisir_objets_edit.html new file mode 100644 index 00000000..94dc4bd8 --- /dev/null +++ b/www/plugins/saisies/saisies/choisir_objets_edit.html @@ -0,0 +1,21 @@ +[(#REM) + Saisie spécifique à SPIP 3 + qui permet de choisir parmis des + objets éditoriaux éditables de SPIP, + les affichant avec des checkbox +] + +[(#REM) defaut peut être une chaine (plusieurs valeurs ou pas) qu'on sait décomposer ] +#SET{defaut, #ENV{defaut}|saisies_chaine2tableau} + +[(#REM) valeur doit être un tableau ! ] +#SET{valeur, #ENV{valeur}|saisies_valeur2tableau} + + +#SET{id,#ENV{nom}|replace{\W,'_'}|concat{'_',#VALEUR{url_edit}}} +
    + + +
    + + diff --git a/www/plugins/saisies/saisies/date.html b/www/plugins/saisies/saisies/date.html index 392a817a..ecbe13e4 100644 --- a/www/plugins/saisies/saisies/date.html +++ b/www/plugins/saisies/saisies/date.html @@ -1,65 +1,72 @@ -[(#REM) - Zone de saisie de date utilsant le dateur de Bonux si présent. - Sur les sites en HTML5, utilise type="date" - sur le input, et type="text" par défaut pour les autres. - Pour tous on utilise class="date" et class="heure" pour activer le dateur. - - La valeur fournie peut être : - - au format spip jj/mm/aaaa (date uniquement) - - au format SQL aaaa-mm-jj (date uniquement) - - au format SQL aaaa-mm-jj hh:mm:ss (date et heure) - - un tableau avec une entrée "date" et une entrée "heure" séparée, au format SQL (date et heure obligatoire) - - Pour utiliser les heures, il faut utiliser l'option "horaire=oui". - - La date est proposée à l'affichage au format jj/mm/aaaa. -] - -[(#REM) Initialisation de la valeur ] -#SET{valeur,#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}} - -[(#REM) Regex de date SQL ] -#SET{date_sql,"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?"} - -[(#REM) Si la valeur est un tableau, on considère que c'est date et heure dans un format déjà reconnu (j/m/a ou SQL) ] -[(#GET{valeur}|is_array|oui) - #SET{date, #GET{valeur}|table_valeur{date}} - #SET{heure, #GET{valeur}|table_valeur{heure}} -] - -[(#REM) Si la valeur est une chaîne, on regarde si SQL ] -[(#GET{valeur}|is_string|oui) - [(#REM) Par défaut (date uniquement au format SPIP) la date c'est toute la valeur ] - #SET{date, #GET{valeur}} - #SET{heure, ''} - - [(#REM) Si c'est bien une date SQL ] - [(#GET{valeur}|match{#GET{date_sql}}|oui) - [(#REM) Si la date est complètement 0, on met des valeurs vides ] - [(#GET{valeur}|=={0000-00-00 00:00:00}|oui) - #SET{date, ''} - #SET{heure, ''} - ] - [(#GET{valeur}|=={0000-00-00 00:00:00}|non) - #SET{date, #GET{valeur}|affdate{d/m/Y}} - #SET{heure, #GET{valeur}|affdate{H:i}} - ] - ] -] - -[(#INCLURE{fond=saisies/input, - env, - nom=#ENV{nom}[(#ENV{horaire}|?{[date]})], - valeur=#GET{date}, - type=#HTML5|?{date,text}, - class=[(#ENV{class}) ]date})] -[(#ENV{horaire}|oui) -[(#INCLURE{fond=saisies/input, - env, - nom=#ENV{nom}[heure], - valeur=#GET{heure}, - size=4, - maxlength=5, - class=[(#ENV{class}) ]heure})] -] -[(#ENV{disable}|non|et{#ENV{readonly}|non})[(#INCLURE{fond=formulaires/dateur/inc-dateur, heure_pas=#ENV{heure_pas,30}})]] +[(#REM) + Zone de saisie de date utilsant le dateur de Bonux si présent. + Sur les sites en HTML5, utilise type="date" + sur le input, et type="text" par défaut pour les autres. + Pour tous on utilise class="date" et class="heure" pour activer le dateur. + + La valeur fournie peut être : + - au format spip jj/mm/aaaa (date uniquement) + - au format SQL aaaa-mm-jj (date uniquement) + - au format SQL aaaa-mm-jj hh:mm:ss (date et heure) + - un tableau avec une entrée "date" et une entrée "heure" séparée, au format SQL (date et heure obligatoire) + + Pour utiliser les heures, il faut utiliser l'option "horaire=oui". + + La date est proposée à l'affichage au format jj/mm/aaaa. + + La valeur retournée n'est pas nécessairement au format SQL. + Le cas échéant, il faut la normaliser avant enregistrement en base. +] + +[(#REM) Initialisation de la valeur ] +#SET{autodater,''} +[(#ENV{class}|=={'autodater'}|oui) + #SET{autodater,#VAL{Y-m-d H:i:s}|date} +] +#SET{valeur,#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut,#GET{autodater}}}}} + +[(#REM) Regex de date SQL ] +#SET{date_sql,"[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]( [0-9][0-9]:[0-9][0-9]:[0-9][0-9])?"} + +[(#REM) Si la valeur est un tableau, on considère que c'est date et heure dans un format déjà reconnu (j/m/a ou SQL) ] +[(#GET{valeur}|is_array|oui) + #SET{date, #GET{valeur/date}} + #SET{heure, #GET{valeur/heure}} +] + +[(#REM) Si la valeur est une chaîne, on regarde si SQL ] +[(#GET{valeur}|is_string|oui) + [(#REM) Par défaut (date uniquement au format SPIP) la date c'est toute la valeur ] + #SET{date, #GET{valeur}} + #SET{heure, ''} + + [(#REM) Si c'est bien une date SQL ] + [(#GET{valeur}|match{#GET{date_sql}}|oui) + [(#REM) Si la date est complètement 0, on met des valeurs vides ] + [(#GET{valeur}|=={0000-00-00 00:00:00}|oui) + #SET{date, ''} + #SET{heure, ''} + ] + [(#GET{valeur}|=={0000-00-00 00:00:00}|non) + #SET{date, #GET{valeur}|affdate{d/m/Y}} + #SET{heure, #GET{valeur}|affdate{H:i}} + ] + ] +] + +[(#INCLURE{fond=saisies/input, + env, + nom=#ENV{nom}[(#ENV{horaire}|?{\[date\]})], + valeur=#GET{date}, + type=text, + class=[(#ENV{class}) ]date})] +[(#ENV{horaire}|oui) +[(#INCLURE{fond=saisies/input, + env, + nom=#ENV{nom}\[heure\], + valeur=#GET{heure}, + size=4, + maxlength=5, + class=[(#ENV{class}) ]heure})] +] +[(#ENV{disable}|non|et{#ENV{readonly}|non})[(#INCLURE{fond=formulaires/dateur/inc-dateur, heure_pas=#ENV{heure_pas,30}})]] diff --git a/www/plugins/saisies/saisies/date_jour_mois_annee.html b/www/plugins/saisies/saisies/date_jour_mois_annee.html index b756b4aa..d280e2fb 100644 --- a/www/plugins/saisies/saisies/date_jour_mois_annee.html +++ b/www/plugins/saisies/saisies/date_jour_mois_annee.html @@ -2,7 +2,7 @@ /!\ Cette saisie nécessite du javascript pour fonctionner. En absence de JS, seul un champ de saisie texte est affiché. - + Cette saisie cree 3 champs a partir d'une date au format datetime mysql. A chaque modification, un champ cache est modifie, contenant la date au format datetime. @@ -11,7 +11,7 @@ - size_(jour|mois|annee) - maxlength_(jour|mois|annee) - datetime, par défaut oui. Si pas oui, utilisera une date au format aaaa-mm-jj au lieu d'un datetime mysql - + [(#SAISIE{date_jour_mois_annee, date_naissance, label=Date de naissance })] @@ -25,21 +25,21 @@ function activer_dateur_#GET{id}() { jour = '\
    \ []\ - \ + \
    \ '; - + mois = '\
    \ []\ - \ + \
    \ '; - + annee = '\
    \ []\ - \ + \
    \ '; @@ -50,22 +50,6 @@ function activer_dateur_#GET{id}() { jQuery('##GET{id}').after(jour + mois + annee); } -function changer_la_date(me) { - var li = jQuery(me).parents('li'), - jour = jQuery.trim(li.find('.date_jour').val()), - mois = jQuery.trim(li.find('.date_mois').val()), - annee = jQuery.trim(li.find('.date_annee').val()), - date = jQuery.trim(li.find('.datetime').val()); - while(jour.length < 2) {jour = '0' + jour;} - while(mois.length < 2) {mois = '0' + mois;} - while(annee.length < 4) {annee = '0' + annee;} - [(#ENV{datetime,oui}|=={oui}|oui) - date = annee + '-' + mois + '-' + jour + date.substring(10);] - [(#ENV{datetime,oui}|=={oui}|non) - date = annee + '-' + mois + '-' + jour;] - li.find('.datetime').attr('value',date); -} - jQuery(document).ready(function(){ activer_dateur_#GET{id}(); }); diff --git a/www/plugins/saisies/saisies/destinataires.html b/www/plugins/saisies/saisies/destinataires.html index 76571c99..853026e2 100644 --- a/www/plugins/saisies/saisies/destinataires.html +++ b/www/plugins/saisies/saisies/destinataires.html @@ -1,8 +1,8 @@ #SET{type_choix, #ENV{type_choix,tous}} #SET{choix_destinataires, #ENV*{choix_destinataires,#ARRAY}} -#SET{erreurs,#ENV**{erreurs}|table_valeur{#ENV{nom}}} +#SET{erreurs,#ENV**{erreurs/#ENV{nom}}} -
  • +<[(#ENV{saisies_base_conteneur,[(#VAL{li}|saisie_balise_structure_formulaire)]})] class="editer editer_[(#ENV{nom})][ (#ENV{obligatoire})][ (#GET{erreurs}|oui)erreur][ (#ENV{conteneur_class,#ENV{li_class}})][ saisie_(#ENV{type_saisie})]" [(#ENV{tout_afficher}|!={oui}|?{style="display:none;"})][ data-id="(#ENV{id_saisie})"]> #ENV*{inserer_debut} [] [(#GET{erreurs})] @@ -11,11 +11,11 @@ [(#REM) Si 0 ou 1 destinataire possible ou si c'est tous, le destinataire est défini automatiquement ] [(#ENV{tout_afficher}|!={oui}|oui) - + ] [(#ENV{tout_afficher}|!={oui}|non)
    - #ENV*{inserer_fin} -
  • + -
  • + +[(#SET{valeur,[(#ENV*{valeur}|is_array|?{#ENV*{valeur},[(#ENV*{valeur}|explode{','})]})]})] +<[(#ENV{saisies_base_conteneur,[(#VAL{li}|saisie_balise_structure_formulaire)]})] class="editer editer_[(#ENV{nom})][ (#ENV{obligatoire})][ (#GET{erreurs}|oui)erreur][ (#ENV{conteneur_class,#ENV{li_class}})][ saisie_(#ENV{type_saisie})]"> + #ENV*{inserer_debut} [(#ENV*{label})[(#ENV{obligatoire}|oui)[(#ENV*{info_obligatoire}|is_null|?{<:info_obligatoire_02:>,#ENV*{info_obligatoire}})]]] [(#GET{erreurs})] @@ -38,28 +41,28 @@ [(#REM) Sinon on propose le choix, en select ou en checkbox suivant l'option "type_choix" ] [(#GET{type_choix}|=={un}|oui) - + [] ] [(#GET{type_choix}|=={plusieurs}|ou{#GET{type_choix}|=={un_radio}}|oui)
    - - +
    ] [(#GET{type_choix}|=={un}|oui) - + ] - + [(#GET{type_choix}|=={un}|oui) ]
    #ENV*{inserer_fin} -
  • + diff --git a/www/plugins/saisies/saisies/explication.html b/www/plugins/saisies/saisies/explication.html index 868fa0bb..5dc1ff16 100644 --- a/www/plugins/saisies/saisies/explication.html +++ b/www/plugins/saisies/saisies/explication.html @@ -1,5 +1,7 @@ -
  • +<[(#ENV{saisies_base_conteneur,[(#VAL{li}|saisie_balise_structure_formulaire)]})] class="editer pleine_largeur editer_explication[ explication_(#ENV{nom})][ (#ENV{conteneur_class,#ENV{li_class}})][ saisie_(#ENV{type_saisie})]"[ data-id="(#ENV{id_saisie})"]> #ENV*{inserer_debut} - [(#ENV*{texte}|propre)] +
    + [(#ENV*{texte}|propre)] +
    #ENV*{inserer_fin} -
  • + diff --git a/www/plugins/saisies/saisies/explication.yaml b/www/plugins/saisies/saisies/explication.yaml index 45e7de95..6aeed47a 100644 --- a/www/plugins/saisies/saisies/explication.yaml +++ b/www/plugins/saisies/saisies/explication.yaml @@ -41,7 +41,7 @@ options: - saisie: 'input' options: - nom: 'li_class' + nom: 'conteneur_class' label: '<:saisies:option_class_label:>' size: 50 defaut: diff --git a/www/plugins/saisies/saisies/fieldset.html b/www/plugins/saisies/saisies/fieldset.html index 83c600a8..6f775da6 100644 --- a/www/plugins/saisies/saisies/fieldset.html +++ b/www/plugins/saisies/saisies/fieldset.html @@ -8,27 +8,25 @@ [(#GET{erreurs_fieldset}|oui) #SET{plie, ''} ] -#SET{erreur_ici,#ENV**{erreurs}|table_valeur{#ENV{nom}}} +#SET{erreur_ici,#ENV**{erreurs/#ENV{nom}}} -
  • +<[(#ENV{saisies_base_conteneur,[(#VAL{li}|saisie_balise_structure_formulaire)]})] class="fieldset[ fieldset_(#ENV{nom})][ (#ENV{conteneur_class,#ENV{li_class}})][ saisie_(#ENV{type_saisie})][ (#GET{pliable})[ (#GET{plie})]]"[ data-id="(#ENV{id_saisie})"]> #ENV*{inserer_debut}
    - [[(#GLOBALS{debut_intertitre,

    }|inserer_attribut{class,legend})] - [(#ENV{icone}|oui) - [(#REM) en SPIP 3 on cherche avant tout dans le chemin des images - ]#SET{icone,''}[(#SPIP_VERSION|version_compare{2.9, >}|oui)#SET{icone,#CHEMIN_IMAGE{#ENV{icone}}] - [#ENV*{label} ] - ] - (#ENV*{label})#GLOBALS{fin_intertitre,

    }] + + [(#ENV{label}|oui) + [(#REM) Récupérer le tag qui sera utilisé pour la légende ] + [(#SET{tag, [(#ENV*{tagfield,#GLOBALS{debut_intertitre,

    }}|inserer_attribut{class,legend})]})] + [(#INCLURE{fond=inclure/fieldset_legend, env}|wrap{#GET{tag}})] + ] + [(#GET{erreur_ici})] [

    (#ENV*{explication})

    ] [(#ENV{saisies}|is_array|oui) -
      + <[(#ENV{saisies_base_conteneur,[(#VAL{ul}|saisie_balise_structure_formulaire)]})] class="editer-groupe"> #INCLURE{fond=#ENV{fond_generer,"inclure/generer_saisies"}, env, saisies=#ENV{saisies}, from_fieldset='on'} -
    + ]

    #ENV*{inserer_fin} -
  • + diff --git a/www/plugins/saisies/saisies/fieldset.yaml b/www/plugins/saisies/saisies/fieldset.yaml index f63ed804..2d3789c5 100644 --- a/www/plugins/saisies/saisies/fieldset.yaml +++ b/www/plugins/saisies/saisies/fieldset.yaml @@ -58,7 +58,7 @@ options: - saisie: 'input' options: - nom: 'li_class' + nom: 'conteneur_class' label: '<:saisies:option_class_label:>' size: 50 defaut: diff --git a/www/plugins/saisies/saisies/groupe_mots.html b/www/plugins/saisies/saisies/groupe_mots.html index 909e1b7f..a363ee2f 100644 --- a/www/plugins/saisies/saisies/groupe_mots.html +++ b/www/plugins/saisies/saisies/groupe_mots.html @@ -20,7 +20,7 @@ multiple=oui, table_liaison=articles})] ] - [(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non) ] diff --git a/www/plugins/saisies/saisies/hidden.html b/www/plugins/saisies/saisies/hidden.html index 866c70ae..d82b2099 100644 --- a/www/plugins/saisies/saisies/hidden.html +++ b/www/plugins/saisies/saisies/hidden.html @@ -1,12 +1,12 @@ -
  • +<[(#ENV{saisies_base_conteneur,[(#VAL{li}|saisie_balise_structure_formulaire)]})] class="editer editer_[(#ENV{nom})][ (#ENV{conteneur_class,#ENV{li_class}})][ saisie_(#ENV{type_saisie})]" [(#ENV{tout_afficher}|!={oui}|?{style="display:none;"})][ data-id="(#ENV{id_saisie})"]> #ENV*{inserer_debut} [(#ENV{tout_afficher}|!={oui}|oui) - + ] [(#ENV{tout_afficher}|!={oui}|non) [] - + ] #ENV*{inserer_fin} -
  • + diff --git a/www/plugins/saisies/saisies/hidden.yaml b/www/plugins/saisies/saisies/hidden.yaml index 21209178..679767d5 100644 --- a/www/plugins/saisies/saisies/hidden.yaml +++ b/www/plugins/saisies/saisies/hidden.yaml @@ -16,6 +16,12 @@ options: label: '<:saisies:option_label_label:>' explication: '<:saisies:option_label_explication:>' size: 50 + - + saisie: 'input' + options: + nom: 'class' + label: '<:saisies:option_class_label:>' + size: 50 - saisie: 'input' options: diff --git a/www/plugins/saisies/saisies/input.html b/www/plugins/saisies/saisies/input.html index 33ec302b..4dcea59c 100644 --- a/www/plugins/saisies/saisies/input.html +++ b/www/plugins/saisies/saisies/input.html @@ -45,4 +45,4 @@ ] - + diff --git a/www/plugins/saisies/saisies/input.yaml b/www/plugins/saisies/saisies/input.yaml index 62a43abc..efa8f799 100644 --- a/www/plugins/saisies/saisies/input.yaml +++ b/www/plugins/saisies/saisies/input.yaml @@ -22,6 +22,12 @@ options: nom: 'defaut' label: '<:saisies:option_defaut_label:>' size: 50 + - + saisie: 'input' + options: + nom: 'placeholder' + label: '<:saisies:option_placeholder_label:>' + size: 50 - saisie: 'input' options: diff --git a/www/plugins/saisies/saisies/mot.html b/www/plugins/saisies/saisies/mot.html index 1765f87a..5e6e22ef 100644 --- a/www/plugins/saisies/saisies/mot.html +++ b/www/plugins/saisies/saisies/mot.html @@ -2,17 +2,25 @@ Parametres : - class : classe(s) css ajoutes au select + - multiple : si quelquechose est passe, le select est multiple, sinon, c'est un select simple (seulement si non multiple) - option_intro : chaine de langue de la premiere ligne vide ? (defaut:"") - cacher_option_intro : pas de premier option vide (defaut:"") - id_groupe : groupe des mots clés à afficher + Note : si ce groupe de mot est configuré pour avoir plusieurs + mots possibles, alors une liste de cases à cocher est + affichée au lieu du sélecteur habituel. + Utiliser `forcer_select=oui` pour éviter ce comportement + (par exemple en utilisation avec Chosen) - defaut : valeur par defaut si pas présente dans l'environnement - valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement + - size : la taille du sélecteur (seulement si multiple) + - groupes_exclus : liste d'ids de groupe dont on ne veut pas les mots Exemple d'appel : [(#SAISIE{mot, en_region, label=<:plugin:en_region:>})] ] - + [(#REM) defaut peut être une chaine (plusieurs valeurs ou pas) qu'on sait décomposer ] #SET{defaut, #ENV{defaut}|saisies_chaine2tableau} [(#REM) valeur doit être un tableau ! ] @@ -27,12 +35,18 @@
    - +[(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non) ] -[(#ENV{id_groupe,''}|non) - [] - ] +[(#ENV{id_groupe,''}|non|et{#GET{groupe}|=={#ID_GROUPE}|non}|oui) + [(#GET{groupe}|intval|>{0}|oui)] + [][(#SET{groupe,#ID_GROUPE})]] + [(#ENV{multiple}|non)] + [(#ENV{multiple}|oui)] + [(#ENV{id_groupe,''}|non) + ] diff --git a/www/plugins/saisies/saisies/oui_non.html b/www/plugins/saisies/saisies/oui_non.html index 03a33f95..9889094a 100644 --- a/www/plugins/saisies/saisies/oui_non.html +++ b/www/plugins/saisies/saisies/oui_non.html @@ -14,10 +14,10 @@ ] #SET{valeur,#ENV{valeur_forcee,#ENV{valeur}}|is_null|?{#ENV{defaut},#ENV{valeur_forcee,#ENV{valeur}}}}
    - +
    - +
    diff --git a/www/plugins/saisies/saisies/position_construire_formulaire.html b/www/plugins/saisies/saisies/position_construire_formulaire.html index 569476ea..1d896d89 100644 --- a/www/plugins/saisies/saisies/position_construire_formulaire.html +++ b/www/plugins/saisies/saisies/position_construire_formulaire.html @@ -3,17 +3,17 @@ #SET{tab_par_nom,#ENV{formulaire}|saisies_lister_par_nom} #SET{padding,0} #SET{liste_parents,#ARRAY{0,''}} - + #SET{saisie,#VALEUR} - - - #SET{tab,#GET{saisie}|table_valeur{saisies}} + + #SET{tab,#GET{saisie/saisies}} #SET{padding,#GET{padding}|plus{20}} - #SET_PUSH{liste_parents,#GET{saisie}|table_valeur{options}|table_valeur{nom}} + #SET_PUSH{liste_parents,#GET{saisie/options/nom}} #SET{padding,#GET{padding}|moins{20}} #SET{liste_parents,#GET{liste_parents}|array_slice{0,-1}} @@ -25,20 +25,20 @@ <:saisies:construire_position_fin_formulaire:> ] [(#GET{parent}|oui) - #SET{groupe,#GET{tab_par_nom}|table_valeur{#GET{parent}}} - #SET{groupe,#GET{groupe}|table_valeur{options}|table_valeur{label}|sinon{#GET{groupe}|table_valeur{options}|table_valeur{nom}}|couper{60}} + #SET{groupe,#GET{tab_par_nom/#GET{parent}}} + #SET{groupe,#GET{groupe/options/label}|sinon{#GET{groupe/options/nom}}|couper{60}} <:saisies:construire_position_fin_groupe{groupe=#GET{groupe}}:> ] #SET{parent, #GET{liste_parents}|table_valeur{#GET{liste_parents}|count|moins{1}}} - diff --git a/www/plugins/saisies/saisies/radio.html b/www/plugins/saisies/saisies/radio.html index 7f63b890..09293a7f 100644 --- a/www/plugins/saisies/saisies/radio.html +++ b/www/plugins/saisies/saisies/radio.html @@ -22,8 +22,9 @@ #SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_chaine2tableau), #GET{datas}}} -
    - +#SET{disabled, #ENV{disable}|is_string|?{#ENV{disable}, #ENV{disable/#CLE}}} +
    +
    diff --git a/www/plugins/saisies/saisies/radio.yaml b/www/plugins/saisies/saisies/radio.yaml index 151f0012..80caa80d 100644 --- a/www/plugins/saisies/saisies/radio.yaml +++ b/www/plugins/saisies/saisies/radio.yaml @@ -88,6 +88,12 @@ options: label: '<:saisies:option_attention_label:>' explication: '<:saisies:option_attention_explication:>' size: 50 + - + saisie: 'input' + options: + nom: 'class' + label: '<:saisies:option_class_label:>' + size: 50 - saisie: 'input' options: diff --git a/www/plugins/saisies/saisies/secteur.html b/www/plugins/saisies/saisies/secteur.html index 2083bfce..f58bd752 100644 --- a/www/plugins/saisies/saisies/secteur.html +++ b/www/plugins/saisies/saisies/secteur.html @@ -10,13 +10,14 @@ - cacher_option_intro : pas de premier option vide (defaut:"") - defaut : valeur par defaut si pas présente dans l'environnement - valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement + - size : la taille du sélecteur (seulement si multiple) Exemple d'appel : [(#SAISIE{secteur,secteur_region, label=<:plugin:secteur_region:>, multiple=oui})] ] - [(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non) ] diff --git a/www/plugins/saisies/saisies/selecteur_document.html b/www/plugins/saisies/saisies/selecteur_document.html index 62c24fe0..c20793d7 100644 --- a/www/plugins/saisies/saisies/selecteur_document.html +++ b/www/plugins/saisies/saisies/selecteur_document.html @@ -21,15 +21,13 @@ [(#REM) Si la mediatheque est presente ] [(#PLUGIN{medias}|oui) -[(#SET{exec,[(#PLUGIN{medias,version}|<{2}|?{'portfolio','popin-choisir_document'})]})] -[(#SET{zajax,[(#PLUGIN{medias,version}|<{2}|?{'','var_zajax=contenu&'})]})] -[(#SET{mod_fn,#ENV{_modalbox_retour}|?{'2','1'}})] +[(#SET{mod_fn,#ENV{_modalbox_retour}|?{2,1}})] [(#REM) Parcourir les documents de l'article ] [(#ENV{id_article}|oui)

    @@ -39,7 +37,7 @@ [(#ENV{id_rubrique}|oui)

    @@ -49,7 +47,7 @@ [(#ENV{id_breve}|oui)

    @@ -58,16 +56,17 @@ [(#REM) Parcourir toute la mediatheque ]

    + [(#ENV{_modalbox_retour}|non) ] diff --git a/www/plugins/saisies/saisies/selecteur_document.yaml b/www/plugins/saisies/saisies/selecteur_document.yaml new file mode 100644 index 00000000..0683f66a --- /dev/null +++ b/www/plugins/saisies/saisies/selecteur_document.yaml @@ -0,0 +1,59 @@ +titre: '<:saisies:saisie_selecteur_document_titre:>' +description: '<:saisies:saisie_selecteur_document:>' +icone: 'images/saisies_selecteur_article.png' +options: + - + saisie: 'fieldset' + options: + nom: 'description' + label: '<:saisies:option_groupe_description:>' + saisies: + - + saisie: 'input' + options: + nom: 'label' + label: '<:saisies:option_label_label:>' + explication: '<:saisies:option_label_explication:>' + size: 50 + - + saisie: 'input' + options: + nom: 'explication' + label: '<:saisies:option_explication_label:>' + explication: '<:saisies:option_explication_explication:>' + size: 50 + - + saisie: 'fieldset' + options: + nom: 'affichage' + label: '<:saisies:option_groupe_affichage:>' + saisies: + - + saisie: 'input' + options: + nom: 'attention' + label: '<:saisies:option_attention_label:>' + explication: '<:saisies:option_attention_explication:>' + size: 50 + - + saisie: 'input' + options: + nom: 'info_obligatoire' + label: '<:saisies:option_info_obligatoire_label:>' + explication: '<:saisies:option_info_obligatoire_explication:>' + - + saisie: 'fieldset' + options: + nom: 'obligatoire' + label: '<:saisies:option_groupe_validation:>' + saisies: + - + saisie: 'oui_non' + options: + nom: 'obligatoire' + label: '<:saisies:option_obligatoire_label:>' +defaut: + options: + label: '<:saisies:saisie_selecteur_document_titre:>' + # champs extras (definition du champ sql) + sql: "text DEFAULT '' NOT NULL" \ No newline at end of file diff --git a/www/plugins/saisies/saisies/selecteur_site.html b/www/plugins/saisies/saisies/selecteur_site.html index 1d295ea5..3787e450 100644 --- a/www/plugins/saisies/saisies/selecteur_site.html +++ b/www/plugins/saisies/saisies/selecteur_site.html @@ -15,7 +15,7 @@ Par défaut ne liste que ceux des rubriques à la racine (secteurs) - valeur_forcee : valeur utilisee meme si une valeur est dans l'environnement ] - [(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non) ] diff --git a/www/plugins/saisies/saisies/selection.html b/www/plugins/saisies/saisies/selection.html index 33cf7772..dfb1733a 100644 --- a/www/plugins/saisies/saisies/selection.html +++ b/www/plugins/saisies/saisies/selection.html @@ -33,12 +33,12 @@ ] [(#REM) datas peut être une chaine qu'on sait décomposer ] -#SET{datas, #ENV*{datas}} -#SET{datas, #GET{datas}|is_string|?{(#GET{datas}|saisies_chaine2tableau), #GET{datas}}} +#SET{datas, #ENV*{datas}|saisies_chaine2tableau} + [(#REM) Attention, la valeur ou la valeur forcée peut être une chaine vide. On doit donc tester avec is_null. ] #SET{valeur,#ENV{valeur_forcee}|is_null|?{#ENV{valeur}|is_null|?{#ENV{defaut},#ENV{valeur}},#ENV{valeur_forcee}}} - [(#ENV{cacher_option_intro}|non)] diff --git a/www/plugins/saisies/saisies/selection.yaml b/www/plugins/saisies/saisies/selection.yaml index 2b3590df..210c4845 100644 --- a/www/plugins/saisies/saisies/selection.yaml +++ b/www/plugins/saisies/saisies/selection.yaml @@ -93,6 +93,12 @@ options: label: '<:saisies:option_attention_label:>' explication: '<:saisies:option_attention_explication:>' size: 50 + - + saisie: 'input' + options: + nom: 'class' + label: '<:saisies:option_class_label:>' + size: 50 - saisie: 'input' options: diff --git a/www/plugins/saisies/saisies/selection_multiple.html b/www/plugins/saisies/saisies/selection_multiple.html index 79be9d76..6cd36b30 100755 --- a/www/plugins/saisies/saisies/selection_multiple.html +++ b/www/plugins/saisies/saisies/selection_multiple.html @@ -31,6 +31,14 @@ diff --git a/www/plugins/saisies/saisies/selection_multiple.yaml b/www/plugins/saisies/saisies/selection_multiple.yaml index af489cd8..494caf2c 100644 --- a/www/plugins/saisies/saisies/selection_multiple.yaml +++ b/www/plugins/saisies/saisies/selection_multiple.yaml @@ -28,7 +28,7 @@ options: options: nom: 'datas' label: '<:saisies:option_datas_label:>' - explication: '<:saisies:option_datas_explication:>' + explication: '<:saisies:option_datas_sous_groupe_explication:>' rows: 10 cols: 50 - diff --git a/www/plugins/saisies/saisies/statuts_auteurs.html b/www/plugins/saisies/saisies/statuts_auteurs.html index f64480fe..55348813 100644 --- a/www/plugins/saisies/saisies/statuts_auteurs.html +++ b/www/plugins/saisies/saisies/statuts_auteurs.html @@ -19,7 +19,7 @@ multiple=oui})] ] - [(#ENV{cacher_option_intro}|ou{#ENV{multiple}}|non) ] [(#ENV{multiple}|oui) diff --git a/www/plugins/saisies/saisies/textarea.html b/www/plugins/saisies/saisies/textarea.html index 63532216..c0f07b25 100644 --- a/www/plugins/saisies/saisies/textarea.html +++ b/www/plugins/saisies/saisies/textarea.html @@ -18,5 +18,5 @@ [(#REM) Si la valeur est un tableau, le plugin sait le transformer en chaine, plutôt que d'afficher "Array" ] #SET{valeur, #ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}} #SET{valeur, #GET{valeur}|is_array|?{(#GET{valeur}|saisies_tableau2chaine), #GET{valeur}}} - diff --git a/www/plugins/saisies/saisies/textarea.yaml b/www/plugins/saisies/saisies/textarea.yaml index 35ab465b..9430125d 100644 --- a/www/plugins/saisies/saisies/textarea.yaml +++ b/www/plugins/saisies/saisies/textarea.yaml @@ -22,6 +22,12 @@ options: nom: 'defaut' label: '<:saisies:option_defaut_label:>' rows: 4 + - + saisie: 'textarea' + options: + nom: 'placeholder' + label: '<:saisies:option_placeholder_label:>' + size: 50 - saisie: 'input' options: diff --git a/www/plugins/saisies/saisies/true_false.html b/www/plugins/saisies/saisies/true_false.html index 365eb74a..1d53ec82 100644 --- a/www/plugins/saisies/saisies/true_false.html +++ b/www/plugins/saisies/saisies/true_false.html @@ -14,10 +14,10 @@ ] #SET{valeur,#ENV{valeur_forcee,#ENV{valeur}}|is_null|?{#ENV{defaut},#ENV{valeur_forcee,#ENV{valeur}}}}
    - +
    - +
    diff --git a/www/plugins/saisies/saisies_fonctions.php b/www/plugins/saisies/saisies_fonctions.php index 41f7590e..31da91b3 100644 --- a/www/plugins/saisies/saisies_fonctions.php +++ b/www/plugins/saisies/saisies_fonctions.php @@ -1,5 +1,11 @@ 3 OR ($version[0]==3 AND $version[1]>0)) + $is_div = true; + } + if ($is_div) return "div"; + return $tag; +} +// variante plus simple a ecrire dans les squelettes +// [(#DIV|sinon{ul})] +if (!function_exists('balise_DIV_dist') + and $version = explode(".",$GLOBALS['spip_version_branche']) + and ($version[0]>3 OR ($version[0]==3 AND $version[1]>0))){ + function balise_DIV_dist($p){ + $p->code = "'div'"; + $p->interdire_scripts = false; + return $p; + } +} + /** * Traiter la valeur de la vue en fonction du env * si un traitement a ete fait en amont (champs extra) ne rien faire @@ -22,11 +59,13 @@ function saisie_traitement_vue($valeur,$env){ if (!function_exists('propre')) include_spip('inc/texte'); + $valeur = trim($valeur); + // si traitement est renseigne, alors le champ est deja mis en forme // (saisies) // sinon on fait une mise en forme smart - if (!isset($env['traitements'])){ - if (in_array($env['type_saisie'],array('textarea'))){ + if ($valeur and !isset($env['traitements'])) { + if (in_array($env['type_saisie'], array('textarea'))) { $valeur = propre($valeur); } else { @@ -34,24 +73,32 @@ function saisie_traitement_vue($valeur,$env){ } } - return trim($valeur); + return $valeur; } /** * Passer un nom en une valeur compatible avec une classe css - * toto => toto, - * toto/truc => toto_truc, - * toto[truc] => toto_truc, + * + * - toto => toto, + * - toto/truc => toto_truc, + * - toto[truc] => toto_truc + * + * @param string $nom + * return string **/ function saisie_nom2classe($nom) { return str_replace(array('/', '[', ']', '[', ']'), array('_', '_', '', '_', ''), $nom); } /** - * Passer un nom en une valeur compatible avec un name de formulaire - * toto => toto, - * toto/truc => toto[truc], - * toto[truc] => toto[truc], + * Passer un nom en une valeur compatible avec un `name` de formulaire + * + * - toto => toto, + * - toto/truc => toto[truc], + * - toto[truc] => toto[truc] + * + * @param string $nom + * return string **/ function saisie_nom2name($nom) { if (false === strpos($nom, '/')) { @@ -64,13 +111,17 @@ function saisie_nom2name($nom) { } /** - * Balise beurk #GLOBALS{debut_intertitre} - * qui retourne la globale PHP du même nom si elle existe + * Compile la balise `#GLOBALS{xxx}` qui retourne la valeur d'une vilaine variable globale de même nom si elle existe * - * @param array $p - * Pile au niveau de la balise - * @return array - * Pile complétée du code php de la balise. + * @example + * ``` + * #GLOBALS{debut_intertitre} + * ``` + * + * @param Champ $p + * Pile au niveau de la balise + * @return Champ + * Pile complétée du code php de la balise. **/ function balise_GLOBALS_dist($p) { if (function_exists('balise_ENV')) @@ -129,4 +180,30 @@ function picker_selected_par_objet($selected) { return $liste; } -?> + + +/** + * Lister les objets qui ont une url_edit renseignée et qui sont éditables. + * + * @return array Liste des objets : + * index : nom de la table (spip_articles, spip_breves, etc.) + * 'type' : le type de l'objet ; + * 'url_edit' : l'url d'édition de l'objet ; + * 'texte_objets' : le nom humain de l'objet éditorial. + */ +function lister_tables_objets_edit() +{ + include_spip('base/abstract_sql'); + + $objets = lister_tables_objets_sql(); + $objets_edit = array(); + + foreach ($objets as $objet => $definition) { + if (isset($definition['editable']) and isset($definition['url_edit']) and $definition['url_edit'] != '') { + $objets_edit[$objet] = array('type' => $definition['type'], 'url_edit' => $definition['url_edit'], 'texte_objets' => $definition['texte_objets']); + } + } + $objets_edit = array_filter($objets_edit); + + return $objets_edit; +} diff --git a/www/plugins/saisies/saisies_options.php b/www/plugins/saisies/saisies_options.php index fa2590fa..a64d7dce 100644 --- a/www/plugins/saisies/saisies_options.php +++ b/www/plugins/saisies/saisies_options.php @@ -1,22 +1,29 @@ - * si oui applique _T() - * si non applique typo() suivant le mode choisi - * - * @param mixed $valeur - * Une valeur à tester. Si c'est un tableau, la fonction s'appliquera récursivement dessus. - * @param string $mode_typo - * Le mode d'application de la fonction typo(), avec trois valeurs possibles "toujours", "jamais" ou "multi". - * @return mixed - * Retourne la valeur éventuellement modifiée. - */ + if (!function_exists('_T_ou_typo')){ + /** + * une fonction qui regarde si $texte est une chaine de langue + * de la forme <:qqch:> + * si oui applique _T() + * si non applique typo() suivant le mode choisi + * + * @param mixed $valeur + * Une valeur à tester. Si c'est un tableau, la fonction s'appliquera récursivement dessus. + * @param string $mode_typo + * Le mode d'application de la fonction typo(), avec trois valeurs possibles "toujours", "jamais" ou "multi". + * @return mixed + * Retourne la valeur éventuellement modifiée. + */ function _T_ou_typo($valeur, $mode_typo='toujours') { // Si la valeur est bien une chaine (et pas non plus un entier déguisé) if (is_string($valeur) and !intval($valeur)){ @@ -45,4 +52,3 @@ if (!function_exists('_T_ou_typo')){ } } -?> diff --git a/www/plugins/saisies/saisies_pipelines.php b/www/plugins/saisies/saisies_pipelines.php index 61c364a0..ef945048 100644 --- a/www/plugins/saisies/saisies_pipelines.php +++ b/www/plugins/saisies/saisies_pipelines.php @@ -1,107 +1,173 @@ -\n"; - $css = generer_url_public('saisies.css'); - $flux .= "\n\n"; - $css_constructeur = find_in_path('css/formulaires_constructeur.css'); - $flux .= "\n\n"; - return $flux; -} - -function saisies_affichage_final($flux){ - if (($p = strpos($flux,""))!==false){ - // On insère la CSS devant le premier trouvé - if (!$pi = strpos($flux, " de saisies - $css = generer_url_public('saisies.css'); - $ins_css = "\n\n"; - - if (strpos($flux,"saisie_date")!==false){//si on a une saisie de type date, on va charger les css de jquery_ui - include_spip("jqueryui_pipelines"); - if (function_exists("jqueryui_dependances")){ - $ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker")); - - array_push($ui_plugins,"jquery.ui.theme"); - foreach ($ui_plugins as $ui_plug){ - $ui_plug_css = find_in_path("css/$ui_plug.css"); - if (strpos($flux,"css/$ui_plug.css")===false){// si pas déjà chargé - $ins_css .= "\n\n"; - } - } - } - } - - $flux = substr_replace($flux, $ins_css, $pi, 0); - // On insère le JS à la fin du - $pos_head = strpos($flux, ' +\n"; + $css = generer_url_public('saisies.css'); + $flux .= "\n\n"; + $css_constructeur = find_in_path('css/formulaires_constructeur.css'); + $flux .= "\n\n"; + return $flux; +} + +/** + * Ajoute les scripts JS et CSS de saisies dans l'espace public + * + * Ajoute également de quoi gérer le datepicker de la saisie date si + * celle-ci est utilisée dans la page. + * + * @param string $flux + * @return string +**/ +function saisies_affichage_final($flux){ + if ( + $GLOBALS['html'] // si c'est bien du HTML + and ($p = strpos($flux,"")) !== false // et qu'on a au moins une saisie + and strpos($flux,' quelque part + ){ + // On insère la CSS devant le premier trouvé + if (!$pi = strpos($flux, " de saisies + } + $css = generer_url_public('saisies.css'); + $ins_css = "\n\n"; + + if (strpos($flux,"saisie_date")!==false){//si on a une saisie de type date, on va charger les css de jquery_ui + include_spip("jqueryui_pipelines"); + if (function_exists("jqueryui_dependances")){ + $ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker")); + $theme_css = "jquery.ui.theme"; + $ui_css_dir = "css"; + // compatibilité SPIP 3.1 et jQuery UI 1.11 + $version = explode(".",$GLOBALS['spip_version_branche']); + if ($version[0]>3 OR ($version[0]==3 AND $version[1]>0)) { + $theme_css = "theme"; + $ui_css_dir = "css/ui"; + } + array_push($ui_plugins,$theme_css); + foreach ($ui_plugins as $ui_plug){ + $ui_plug_css = find_in_path("$ui_css_dir/$ui_plug.css"); + if (strpos($flux,"$ui_css_dir/$ui_plug.css")===false){// si pas déjà chargé + $ins_css .= "\n\n"; + } + } + } + } + + $flux = substr_replace($flux, $ins_css, $pi, 0); + // On insère le JS à la fin du + $pos_head = strpos($flux, ' -Origine: file:///home/svn/repository/spip-zone/_plugins_/saisies -Revision: 85015 -Dernier commit: 2014-10-05 13:00:06 +0200 +Origine: file:///home/svn/repository/spip-zone/_plugins_/saisies/trunk +Revision: 95750 +Dernier commit: 2016-03-04 03:21:42 +0100 -file:///home/svn/repository/spip-zone/_plugins_/saisies -85015 -2014-10-05 13:00:06 +0200 +file:///home/svn/repository/spip-zone/_plugins_/saisies/trunk +95750 +2016-03-04 03:21:42 +0100 \ No newline at end of file