Compare commits

...

No commits in common. 'master' and 'v1' have entirely different histories.
master ... v1

  1. 23
      .gitattributes
  2. 13
      base/podcast_base.php
  3. 31
      base/podcast_upgrade.php
  4. 8
      fonds/cfg_podcast.html
  5. 45
      formulaires/config_podcast.html
  6. BIN
      images/icon-feed-256.png
  7. BIN
      images/icon-feed-64.png
  8. 6
      images/icon-feed-xx.svg
  9. BIN
      images/icon-miro-64.png
  10. BIN
      images/icon_channels.png
  11. BIN
      images/icon_miro.png
  12. BIN
      images/podcast-256.png
  13. BIN
      images/podcast-64.png
  14. 3
      images/podcast-xx.svg
  15. BIN
      images/podcast_100.png
  16. BIN
      images/podcast_24.png
  17. BIN
      images/podcast_64.png
  18. 51
      inclure/formulaire_document_saisies.html
  19. 2
      inclure/podcast_item_mrss.html
  20. 14
      inclure/podcasts_liens.html
  21. 13
      lang/paquet-podcast.xml
  22. 16
      lang/paquet-podcast_en.php
  23. 16
      lang/paquet-podcast_es.php
  24. 14
      lang/paquet-podcast_fr.php
  25. 14
      lang/podcast.xml
  26. 13
      lang/podcast_en.php
  27. 125
      lang/podcast_es.php
  28. 27
      lang/podcast_fr.php
  29. 29
      paquet.xml
  30. 49
      plugin.xml
  31. 33
      podcast_administrations.php
  32. 21
      podcast_pipelines.php
  33. 6
      prive/squelettes/contenu/configurer_podcast.html
  34. 30
      saisies/itunes_categories.html

23
.gitattributes vendored

@ -0,0 +1,23 @@
* text=auto !eol
base/podcast_base.php -text
base/podcast_upgrade.php -text
controleurs/explicit.html -text
controleurs/podcast.html -text
fonds/cfg_podcast.html -text
formulaires/config_podcast.html -text
images/icon_channels.png -text svneol=unset#image/png
images/icon_miro.png -text svneol=unset#image/png
images/podcast_100.png -text svneol=unset#image/png
images/podcast_24.png -text svneol=unset#image/png
images/podcast_64.png -text svneol=unset#image/png
inclure/formulaire_document_saisies.html -text
inclure/podcast_item_mrss.html -text
inclure/podcast_items.html -text
inclure/podcasts_liens.html -text
lang/podcast.xml -text
lang/podcast_en.php -text
lang/podcast_fr.php -text
/plugin.xml -text
/podcast.html -text
/podcast_pipelines.php -text
saisies/itunes_categories.html -text

13
base/podcast_base.php

@ -15,18 +15,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
function podcast_declarer_tables_principales($tables_principales){
$tables_principales['spip_documents']['field']['explicit'] = "VARCHAR(5) DEFAULT 'clean' NOT NULL";
$tables_principales['spip_documents']['field']['podcast'] = "VARCHAR(3) DEFAULT 'non' NOT NULL";
$tables_principales['spip_documents']['field']['podcast'] = "VARCHAR(3) DEFAULT 'oui' NOT NULL";
return $tables_principales;
}
/**
* Insertion dans le pipeline declarer_tables_objets_sql (SPIP)
* On ajoute nos champs dans les champs editables de la table spip_documents
*/
function podcast_declarer_tables_objets_sql($tables){
$tables['spip_documents']['champs_editables'][] = 'explicit';
$tables['spip_documents']['champs_editables'][] = 'podcast';
return $tables;
}
?>

31
base/podcast_upgrade.php

@ -0,0 +1,31 @@
<?php
/**
* Plugin Podcast
* par kent1
*
* Copyright (c) 2010
* Logiciel libre distribué sous licence GNU/GPL.
*
* Installation
*
**/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/meta');
function podcast_upgrade($nom_meta_base_version,$version_cible){
$current_version = 0.0;
if ((!isset($GLOBALS['meta'][$nom_meta_base_version]) )
|| (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){
if (version_compare($current_version,'0.0','<=')){
include_spip('base/create');
maj_tables('spip_documents');
ecrire_meta($nom_meta_base_version,$current_version=$version_cible,'non');
}
}
}
function podcast_vider_tables($nom_meta_base_version) {
effacer_meta($nom_meta_base_version);
}
?>

8
fonds/cfg_podcast.html

@ -0,0 +1,8 @@
<!-- titre=<:podcast:cfg_titre_podcast:> -->
<!-- icone=images/podcast_24.png -->
<!-- logo=images/podcast_64.png -->
#CACHE{0}
<div class="ajax">
#FORMULAIRE_CONFIG_PODCAST
</div>

45
formulaires/configurer_podcast.html → formulaires/config_podcast.html

@ -1,37 +1,30 @@
<div class="formulaire_spip formulaire_config formulaire_#FORM">
<!-- autoriser=webmestre -->
<!-- refus=<:cfg:refus_configuration_webmestre:> -->
<!-- nom=podcast -->
<div class="formulaire_spip formulaire_config formulaire_config_podcast">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method="post" action="#ENV{action}">
<div>
#ACTION_FORMULAIRE{#ENV{action}}
<[(#DIV|sinon{ul})] class="editer-groupe">
<ul>
[(#SAISIE{radio, podcast_auto,
label=<:podcast:label_podcast_auto:>,
explication=<:podcast:explication_podcast_auto:>,
defaut=oui,
data=#ARRAY{
datas=#ARRAY{
oui,<:item_oui:>,
non,<:item_non:>}})]
[(#SAISIE{checkbox, podcast_types,
label=<:podcast:label_podcast_types:>,
explication=<:podcast:explication_podcast_types:>,
data=#ARRAY{
datas=#ARRAY{
channels,<:podcast:valeur_channels:>,
itunes,<:podcast:valeur_itunes:>,
miro,<:podcast:valeur_miro:>,
mrss,<:podcast:valeur_mrss:>}})]
<[(#DIV|sinon{li})] class="editer">
<div class="example-liens">
<INCLURE{fond=inclure/podcasts_liens} />
<style type="text/css">
.example-liens {
padding: 1em 2em;
background: #eee;
}
.example-liens img {max-width: 1.0em; vertical-align: middle;margin-right: 0.5em;}
</style>
</div>
</[(#DIV|sinon{li})]>
[(#SAISIE{input,titre_podcast,
explication=<:podcast:explication_titre:>,
label=<:podcast:label_titre:>,
@ -53,13 +46,13 @@
obligatoire=non})]
[(#SAISIE{textarea, resume_podcast,
explication=<:podcast:explication_resume:>,
class=multilang inserer_barre_edition,
class=multilang,
label=<:podcast:label_resume:>,
rows=4,
obligatoire=non})]
[(#SAISIE{textarea, description_podcast,
explication=<:podcast:explication_description:>,
class=multilang inserer_barre_edition,
class=multilang,
label=<:podcast:label_description:>,
obligatoire=non})]
[(#SAISIE{textarea, keywords_podcast,
@ -68,15 +61,15 @@
label=<:podcast:label_keywords:>,
rows=4,
obligatoire=non})]
<[(#DIV|sinon{li})] class="fieldset">
<li class="fieldset">
<fieldset>
<h3 class="legend"><:podcast:legend_itunes:></h3>
<[(#DIV|sinon{ul})] class="editer-groupe">
<ul>
[(#SAISIE{radio, explicit_defaut,
label=<:podcast:label_explicit:>,
explication=<:podcast:explication_explicit:>,
defaut=clean,
data=#ARRAY{
datas=#ARRAY{
yes,<:item_oui:>,
clean,<:podcast:valeur_clean:>,
no,<:item_non:>}})]
@ -106,13 +99,13 @@
type=#GET{type}})]
]
</BOUCLE_souscategories>
</[(#DIV|sinon{ul})]>
</ul>
</fieldset>
</[(#DIV|sinon{li})]>
</[(#DIV|sinon{ul})]>
</li>
</ul>
<p class="boutons">
<input type="submit" class="submit" value="<:bouton_valider:>" />
<input type="submit" name="_cfg_ok" class="submit" value="<:bouton_valider:>" />
</p>
</div>
</form>
</div>
</div>

BIN
images/icon-feed-256.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

BIN
images/icon-feed-64.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

6
images/icon-feed-xx.svg

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<path fill="#f78422" d="M11.7 6h40.6c3.1 0 5.6 2.5 5.6 5.7v40.6c0 3.1-2.5 5.7-5.7 5.7H11.7C8.5 58 6 55.4 6 52.2V11.7C6 8.5 8.5 6 11.7 6z" />
<path fill="#fff" d="M39.8 24.2c-7.1-7.1-16.4-10.9-26.4-10.9v7.4c8 0 15.5 3.1 21.2 8.8 5.6 5.6 8.8 13.2 8.8 21.2h7.4c-.1-10.1-3.9-19.6-11-26.5z"/>
<path fill="#fff" d="M13.4 25.6V33C23.1 33 31 40.9 31 50.6h7.4c-.2-13.8-11.3-25-25-25z"/>
<circle fill="#fff" cx="18.6" cy="45.5" r="5.3"/>
</svg>

Before

Width:  |  Height:  |  Size: 527 B

BIN
images/icon-miro-64.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

BIN
images/icon_channels.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

BIN
images/icon_miro.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
images/podcast-256.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

BIN
images/podcast-64.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

3
images/podcast-xx.svg

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
<path fill="#666" d="M13.1 7.8l3.8 3.8c-4 4-6.3 9.4-6.2 15.1 0 5.9 2.4 11.2 6.2 15.1l-3.8 3.8c-5-5-7.8-11.8-7.8-18.9 0-7.1 2.8-13.9 7.8-18.9zm37.8 0c5 5 7.8 11.8 7.8 18.9 0 7.1-2.8 13.9-7.8 18.9l-3.8-3.8c4-4 6.3-9.4 6.2-15.1 0-5.9-2.4-11.2-6.2-15.1l3.8-3.8zm-30.2 7.6l3.8 3.8c-2 2-3.1 4.7-3.1 7.5 0 2.9 1.2 5.6 3.1 7.5L20.7 38c-3-3-4.7-7.1-4.7-11.3 0-4.5 1.8-8.5 4.7-11.3zm22.6 0c3 3 4.7 7.1 4.7 11.3 0 4.2-1.7 8.3-4.7 11.3l-3.8-3.8c2-2 3.1-4.7 3.1-7.5s-1.1-5.5-3.1-7.5l3.8-3.8zM32 32c-2.9 0-5.3-2.4-5.3-5.3s2.4-5.3 5.3-5.3 5.3 2.4 5.3 5.3S34.9 32 32 32zm0 5.3c1.5 0 2.9 1.1 3.2 2.6l3.5 18.7H25.3L28.8 40c.3-1.6 1.7-2.7 3.2-2.7z" />
</svg>

Before

Width:  |  Height:  |  Size: 725 B

BIN
images/podcast_100.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
images/podcast_24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
images/podcast_64.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

51
inclure/formulaire_document_saisies.html

@ -1,36 +1,15 @@
#SET{name,podcast}#SET{obli,''}#SET{defaut,#CONFIG{podcast/podcast_auto}}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<[(#ENV{_tag})] class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label><:podcast:cfg_titre_podcast:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]
<div class="choix">
#SET{val,non}
<input type="hidden" name="#GET{name}" value="#GET{val}" />
#SET{val,oui}
<input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}" [(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}"><:podcast:label_dans_podcast:></label>
</div>
</[(#ENV{_tag})]>
#SET{name,explicit}#SET{obli,''}#SET{defaut,#CONFIG{podcast/explicit_defaut}}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<[(#ENV{_tag})] class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
]
#SET{val,yes}
<div class="choix">
<input type="radio" name="#GET{name}" class="radio" id="#GET{name}_#GET{val}" value="#GET{val}" [(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}"><:podcast:label_contenu_explicit:></label>
#SET{val,clean}
<input type="radio" name="#GET{name}" class="radio" id="#GET{name}_#GET{val}" value="#GET{val}" [(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}"><:podcast:valeur_clean:></label>
#SET{val,no}
<input type="radio" name="#GET{name}" class="radio" id="#GET{name}_#GET{val}" value="#GET{val}" [(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}"><:item_non:></label>
</div>
<style>
.formulaire_spip .editer_podcast {padding-bottom: 0}
.formulaire_spip .editer_podcast .choix {border-bottom: 0;border-bottom-left-radius: 0;border-bottom-right-radius: 0}
.formulaire_spip .editer_explicit {padding-top: 0}
.formulaire_spip .editer_explicit .choix {border-top: 0;border-top-left-radius: 0;border-top-right-radius: 0}
.editer_explicit .choix label{margin-right: 2em;}
</style>
</[(#ENV{_tag})]>
<BOUCLE_doc(DOCUMENTS){id_document}{tout}>
[(#SAISIE{radio, podcast,
label=<:podcast:label_dans_podcast:>,
defaut=#PODCAST,
datas=#ARRAY{
oui,<:item_oui:>,
non,<:item_non:>}})]
[(#SAISIE{radio, explicit,
label=<:podcast:label_contenu_explicit:>,
defaut=#EXPLICIT,
datas=#ARRAY{
yes,<:item_oui:>,
clean,<:podcast:valeur_clean:>,
no,<:item_non:>}})]
</BOUCLE_doc>

2
inclure/podcast_item_mrss.html

@ -19,7 +19,7 @@
[<itunes:keywords>(#GET{category_string}|trim)</itunes:keywords>]
[<media:keywords>(#GET{category_string}|trim)</media:keywords>]
<BOUCLE_type(CONDITION){si #ENV{type}|=={itunes}|et{#_document:EXTENSION|in_array{#GET{itunes_formats}}|non}}>
<BOUCLE_doc_itunes(DOCUMENTS){objet = document}{id_objet=#_document:ID_DOCUMENT}{extension IN #GET{itunes_formats}}{tout}{0,1}>
<BOUCLE_doc_itunes(DOCUMENTS){id_orig=#_document:ID_DOCUMENT}{extension IN #GET{itunes_formats}}{0,1}>
[<enclosure url="(#URL_DOCUMENT|url_absolue)"[ length="(#_document:TAILLE)"][ type="(#_document:MIME_TYPE)"] />]
</BOUCLE_doc_itunes>
[<enclosure url="(#URL_DOCUMENT|url_absolue)"[ length="(#_document:TAILLE)"][ type="(#_document:MIME_TYPE)"] />]

14
inclure/podcasts_liens.html

@ -7,22 +7,28 @@
]#SET{podcast_flux,#ENV{podcast_types,#CONFIG{podcast/podcast_types,#ARRAY}}}[(#GET{podcast_flux}|count|>{0}|oui)
<ul class="menu-liste">
[(#VAL{channels}|in_array{#GET{podcast_flux}}|oui)
<li class="item">
<a href="http://www.channels.com/autosubscribe?feed_url=#URL_PAGE{podcast}">
[(#CHEMIN{images/icon_channels.png}|image_reduire{16,16}|inserer_attribut{alt,''})]&nbsp;Channels.com
</a>
</li>]
[(#VAL{itunes}|in_array{#GET{podcast_flux}}|oui)
<li class="item">
<a href="[(#URL_PAGE{podcast}|parametre_url{type,itunes}|url_absolue|replace{http://,itpc://})]">
[(#CHEMIN{images/podcast-64.png}|image_reduire{32,32}|inserer_attribut{alt,''})]&nbsp;iTunes
[(#CHEMIN{images/podcast_24.png}|image_reduire{16,16}|inserer_attribut{alt,''})]&nbsp;iTunes
</a>
</li>]
[(#VAL{miro}|in_array{#GET{podcast_flux}}|oui)
<li class="item">
<a href="https://subscribe.getmiro.com/?url1=[(#URL_PAGE{podcast}|url_absolue)]">
[(#CHEMIN{images/icon-miro-64.png}|image_reduire{32,32}|inserer_attribut{alt,''})]&nbsp;Miro
<a href="http://subscribe.getmiro.com/?url1=[(#URL_PAGE{podcast}|url_absolue)]">
[(#CHEMIN{images/icon_miro.png}|image_reduire{16,16}|inserer_attribut{alt,''})]&nbsp;Miro
</a>
</li>]
[(#VAL{mrss}|in_array{#GET{podcast_flux}}|oui)
<li class="item">
<a href="[(#URL_PAGE{podcast}|url_absolue)]">
[(#CHEMIN{images/icon-feed-64.png}|image_reduire{32,32}|inserer_attribut{alt,''})]&nbsp;Media RSS
[(#CHEMIN{feed.png}|image_reduire{16,16}|inserer_attribut{alt,''})]&nbsp;Media RSS
</a>
</li>]
</ul>]

13
lang/paquet-podcast.xml

@ -1,13 +0,0 @@
<traduction
module="paquet-podcast"
id="paquet-podcast--podcast-f5bab"
gestionnaire="salvatore"
url="https://trad.spip.net"
source="https://git.spip.net/spip-contrib-extensions/podcast.git"
reference="fr">
<langue code="en" url="https://trad.spip.net/tradlang_module/paquet-podcast?lang_cible=en" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00" />
<langue code="es" url="https://trad.spip.net/tradlang_module/paquet-podcast?lang_cible=es" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="Raquel S. Bujaldón" lien="https://trad.spip.net/auteur/raquel-s-bujaldon" />
</langue>
<langue code="fr" url="https://trad.spip.net/tradlang_module/paquet-podcast?lang_cible=fr" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00" />
</traduction>

16
lang/paquet-podcast_en.php

@ -1,16 +0,0 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-podcast?lang_cible=en
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// P
'podcast_description' => 'A plugin to provide one or several podcasts feeds on the site',
'podcast_nom' => 'Podcasts',
'podcast_slogan' => 'One or several podcasts feeds on the site'
);

16
lang/paquet-podcast_es.php

@ -1,16 +0,0 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-podcast?lang_cible=es
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// P
'podcast_description' => 'Un plugin para poner a disposición uno o varios flujos de podcast en su sitio',
'podcast_nom' => 'Podcasts',
'podcast_slogan' => 'Uno o varios flujos de podcast en su sitio'
);

14
lang/paquet-podcast_fr.php

@ -1,14 +0,0 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// Fichier source, a modifier dans https://git.spip.net/spip-contrib-extensions/podcast.git
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// P
'podcast_description' => 'Un plugin pour mettre à disposition un ou plusieurs flux de podcast sur son site',
'podcast_nom' => 'Podcasts',
'podcast_slogan' => 'Un ou plusieurs flux de podcast sur son site'
);

14
lang/podcast.xml

@ -1,13 +1,3 @@
<traduction
module="podcast"
id="podcast--podcast-f5bab"
gestionnaire="salvatore"
url="https://trad.spip.net"
source="https://git.spip.net/spip-contrib-extensions/podcast.git"
reference="fr">
<langue code="en" url="https://trad.spip.net/tradlang_module/podcast?lang_cible=en" total="102" traduits="102" relire="0" modifs="0" nouveaux="0" pourcent="100.00" />
<langue code="es" url="https://trad.spip.net/tradlang_module/podcast?lang_cible=es" total="102" traduits="102" relire="0" modifs="0" nouveaux="0" pourcent="100.00">
<traducteur nom="Raquel S. Bujaldón" lien="https://trad.spip.net/auteur/raquel-s-bujaldon" />
</langue>
<langue code="fr" url="https://trad.spip.net/tradlang_module/podcast?lang_cible=fr" total="102" traduits="102" relire="0" modifs="0" nouveaux="0" pourcent="100.00" />
<traduction module="podcast" gestionnaire="salvatore" url="http://trad.mediaspip.net" source="http://svn.aires-de-confluxence.info/svn/plugins_spip/podcast/lang" reference="fr">
<langue code="en" />
</traduction>

13
lang/podcast_en.php

@ -1,11 +1,9 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de https://trad.spip.net/tradlang_module/podcast?lang_cible=en
// extrait automatiquement de http://trad.mediaspip.net/spip.php?page=tradlang
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
@ -102,12 +100,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'label_copyright' => 'Feed copyright',
'label_dans_podcast' => 'In the podcast feed',
'label_description' => 'Description of the podcast feed',
'label_email_auteur' => 'Authors email / owner',
'label_email_auteur' => 'Author\'s email / owner',
'label_explicit' => 'Explicit content',
'label_itunes_categories_principales' => 'Main categories for iTunes',
'label_itunes_sous_categories' => 'Subcategories of "@cat@"',
'label_keywords' => 'Keywords',
'label_nom_auteur' => 'Authors name / owner',
'label_nom_auteur' => 'Author\'s name / owner',
'label_podcast_auto' => 'Automatic podcast',
'label_podcast_types' => 'Feeds types enabled',
'label_resume' => 'Summary of the podcast feed',
@ -116,6 +114,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'legend_mrss' => 'Specific configuration for Media RSS',
// V
'valeur_channels' => 'Channels.com',
'valeur_clean' => 'clean',
'valeur_itunes' => 'iTunes',
'valeur_miro' => 'Miro',
@ -123,3 +122,5 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'valeur_no' => 'No',
'valeur_yes' => 'Yes'
);
?>

125
lang/podcast_es.php

@ -1,125 +0,0 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// extrait automatiquement de https://trad.spip.net/tradlang_module/podcast?lang_cible=es
// ** ne pas modifier le fichier **
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// C
'cfg_titre_podcast' => 'Podcasts',
// D
'descriptif_flux_defaut' => '@site@ - Medios recientes',
// E
'explication_copyright' => 'Una frase explicitando los derechos de fuente de podcast',
'explication_description' => 'Descripción de la fuente de podcast. Si este campo no está rellenado, se utilizará la descripción del sitio. En su defecto, se empleará una frase genérica.',
'explication_email_auteur' => 'Correo electrónico genérico del autor / propietario del podcast. Si se deja vacío este campo, será utilizado el correo electrónico del administrador del sitio.',
'explication_explicit' => 'Valor por defecto para el valor "explícito" en la fuente de podcast para cada elemento.',
'explication_itunes_categories_principales' => 'Estas categorías permiten clasificar su fuente en Apple Store. Adornan las etiquetas &gt;itunes:category&lt; de las fuentes. Algunas de ellas pueden contener subcategorías.',
'explication_keywords' => 'Palabras claves asociadas a la fuente. Limite a 12 y sepárelas por comas.',
'explication_nom_auteur' => 'Nombre genérico del autor y propietario del podcast. Útil para su referencia.',
'explication_podcast_auto' => 'Los documentos añadidos en el sitio son automáticamente integrados en la fuente de podcast (pueden eliminarse y añadirse a continuación).',
'explication_podcast_types' => 'Qué tipos de flujos están disponibles para los visitantes.',
'explication_resume' => 'Breve resumen del contenido del podcast. Si este campo no está rellenado, será utilizado el eslogan del sitio. Si éste no está disponible, tomará su lugar una frase generada por defecto.',
'explication_titre' => 'Si este campo se deja vacío, se utilizará el nombre del sitio.',
// I
'itunes_cat_alternative_health' => 'Medicina alternativa',
'itunes_cat_amateur' => 'Deportes amateur',
'itunes_cat_arts' => 'Artes',
'itunes_cat_automotive' => 'Automóvil',
'itunes_cat_aviation' => 'Aviación',
'itunes_cat_buddhism' => 'Budismo',
'itunes_cat_business' => 'Economía y empresa',
'itunes_cat_business_news' => 'Actualidad comercial',
'itunes_cat_business_shopping' => 'Shopping',
'itunes_cat_careers' => 'Empleo',
'itunes_cat_christianity' => 'Cristianismo',
'itunes_cat_college_high_school' => 'Deportes escolares y universitarios',
'itunes_cat_comedy' => 'Comedia',
'itunes_cat_design' => 'Diseño',
'itunes_cat_education' => 'Enseñanza',
'itunes_cat_education_technology' => 'Formato en línea',
'itunes_cat_fashion_beauty' => 'Moda y belleza',
'itunes_cat_fitness_nutrition' => 'Fitness y nutrición',
'itunes_cat_food' => 'Gastronomía',
'itunes_cat_gadgets' => 'Gadgets',
'itunes_cat_games_hobbies' => 'Juegos y aficiones',
'itunes_cat_government_organizations' => 'Gobierno y ONG',
'itunes_cat_health' => 'Salud',
'itunes_cat_higher_education' => 'Enseñanza superior',
'itunes_cat_hinduism' => 'Hinduismo',
'itunes_cat_history' => 'Historia',
'itunes_cat_hobbies' => 'Aficiones',
'itunes_cat_investing' => 'Inversiones',
'itunes_cat_islam' => 'Islam',
'itunes_cat_judaism' => 'Judaísmo',
'itunes_cat_k_12' => 'Primaria y secundaria',
'itunes_cat_kids_family' => 'Hijos y familia',
'itunes_cat_language_courses' => 'Curso de idioma',
'itunes_cat_literature' => 'Literatura',
'itunes_cat_local' => 'Locales',
'itunes_cat_management_marketting' => 'Gestión y marketing',
'itunes_cat_medicine' => 'Medicina',
'itunes_cat_music' => 'Música',
'itunes_cat_national' => 'Nacionales',
'itunes_cat_natural_sciences' => 'Ciencias naturales',
'itunes_cat_news_politics' => 'Actualidad y política',
'itunes_cat_non_profit' => 'Sin ánimo de lucro',
'itunes_cat_other' => 'Otros',
'itunes_cat_other_games' => 'Otros juegos',
'itunes_cat_outdoor' => 'Aire libre',
'itunes_cat_performing_arts' => 'Artes y espectáculo',
'itunes_cat_personnal_journals' => 'Diarios personales',
'itunes_cat_philosophy' => 'Filosofía',
'itunes_cat_places_travel' => 'Destinos y viajes',
'itunes_cat_podcasting' => 'Podcasts',
'itunes_cat_professional' => 'Deportes profesionales',
'itunes_cat_regional' => 'Regionales',
'itunes_cat_religion_spirituality' => 'Religión y espiritualidad',
'itunes_cat_science_medicine' => 'Ciencia y medicina',
'itunes_cat_self_help' => 'Autoayuda',
'itunes_cat_sexuality' => 'Sexualidad',
'itunes_cat_social_sciences' => 'Ciencias sociales',
'itunes_cat_society_culture' => 'Cultura y sociedad',
'itunes_cat_software_how_to' => 'Tutoriales',
'itunes_cat_spirituality' => 'Espiritualidad',
'itunes_cat_sports_recreation' => 'Deporte',
'itunes_cat_tech_news' => 'Actualidad tecnológica',
'itunes_cat_technology' => 'Tecnología',
'itunes_cat_training' => 'Formación',
'itunes_cat_tv_film' => 'Series TV y películas',
'itunes_cat_video_games' => 'Videojuegos',
'itunes_cat_visual_arts' => 'Artes visuales',
// L
'label_contenu_explicit' => 'Contenido explícito',
'label_copyright' => 'Copyright de la fuente',
'label_dans_podcast' => 'En el fuente de podcast',
'label_description' => 'Descripción del podcast',
'label_email_auteur' => 'Correo electrónico del autor / propietario',
'label_explicit' => 'Contenido explícito',
'label_itunes_categories_principales' => 'Categorías principales iTunes',
'label_itunes_sous_categories' => 'Subcategorías de "@cat@"',
'label_keywords' => 'Palabras clave',
'label_nom_auteur' => 'Nombre del autor / propietario',
'label_podcast_auto' => 'Podcast automático',
'label_podcast_types' => 'Tipos de fuentes disponibles',
'label_resume' => 'Resumen de la fuente de podcast',
'label_titre' => 'Título de fuente de podcast',
'legend_itunes' => 'Configuración específica para iTunes',
'legend_mrss' => 'Configuración específica para Media RSS',
// V
'valeur_clean' => 'clean',
'valeur_itunes' => 'iTunes',
'valeur_miro' => 'Miro',
'valeur_mrss' => 'Media RSS',
'valeur_no' => 'No',
'valeur_yes' => 'Sí'
);

27
lang/podcast_fr.php

@ -1,9 +1,7 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
// Fichier source, a modifier dans https://git.spip.net/spip-contrib-extensions/podcast.git
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
// Fichier source, a modifier dans http://svn.aires-de-confluxence.info/svn/plugins_spip/podcast/lang
if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
@ -15,15 +13,15 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// E
'explication_copyright' => 'Une phrase explicitant les droits du flux de podcast',
'explication_description' => 'Description du flux de podcast. Si ce champ nest pas rempli, le descriptif du site sera utilisé. À défaut une phrase générique sera utilisée.',
'explication_email_auteur' => 'Email générique de l’auteur / propriétaire du podcast. Si ce champ est laissé vide, l’email du webmaster du site sera utilisé.',
'explication_description' => 'Description du flux de podcast. Si ce champ n\'est pas rempli, le descriptif du site sera utilisé. À défaut une phrase générique sera utilisée.',
'explication_email_auteur' => 'Email générique de l\'auteur / propriétaire du podcast. Si ce champ est laissé vide, l\'email du webmaster du site sera utilisé.',
'explication_explicit' => 'Valeur par défaut pour la valeur "explicit" dans le flux de podcast pour chaque élément.',
'explication_itunes_categories_principales' => 'Ces catégories permettent de classifier votre flux dans lApple Store. Elles agrémentent les balises &gt;itunes:category&lt; des flux. Certaines dentre elles peuvent contenir des sous-catégories.',
'explication_itunes_categories_principales' => 'Ces catégories permettent de classifier votre flux dans l\'Apple Store. Elles agrémentent les balises &gt;itunes:category&lt; des flux. Certaines d\'entre elles peuvent contenir des sous-catégories.',
'explication_keywords' => 'Mots clés associés au flux. Limitez les à 12 et séparez les par des virgules.',
'explication_nom_auteur' => 'Nom générique de lauteur et propriétaire du podcast. Utile pour son référencement.',
'explication_nom_auteur' => 'Nom générique de l\'auteur et propriétaire du podcast. Utile pour son référencement.',
'explication_podcast_auto' => 'Les documents ajoutés au site sont automatiquement intégrés au flux de podcast (Il reste possible de les y supprimer ou ajouter par la suite).',
'explication_podcast_types' => 'Quels types de flux sont mis à disposition des visiteurs.',
'explication_resume' => 'Court résumé du contenu du flux de podcast. Si ce champ n’est pas rempli, le slogan du site sera utilisé. Si ce dernier n’est pas disponible, une phrase par défaut prendra leur place.',
'explication_resume' => 'Court résumé du contenu du flux de podcast. Si ce champ n\'est pas rempli, le slogan du site sera utilisé. Si ce dernier n\'est pas disponible, une phrase par défaut prendra leur place.',
'explication_titre' => 'Si ce champ est laissé vide, le nom du site sera utilisé.',
// I
@ -34,7 +32,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'itunes_cat_aviation' => 'Aviation',
'itunes_cat_buddhism' => 'Bouddhisme',
'itunes_cat_business' => 'Économie et entreprise',
'itunes_cat_business_news' => 'Lactualité commerciale',
'itunes_cat_business_news' => 'L\'actualité commerciale',
'itunes_cat_business_shopping' => 'Shopping',
'itunes_cat_careers' => 'Emplois',
'itunes_cat_christianity' => 'Christianisme',
@ -88,7 +86,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'itunes_cat_software_how_to' => 'Didacticiels',
'itunes_cat_spirituality' => 'Spiritualité',
'itunes_cat_sports_recreation' => 'Sport',
'itunes_cat_tech_news' => 'Lactualité techno',
'itunes_cat_tech_news' => 'L\'actualité techno',
'itunes_cat_technology' => 'Technologie',
'itunes_cat_training' => 'Formation',
'itunes_cat_tv_film' => 'Séries TV et films',
@ -100,12 +98,12 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'label_copyright' => 'Copyright du flux',
'label_dans_podcast' => 'Dans le flux de podcast',
'label_description' => 'Description du podcast',
'label_email_auteur' => 'Email de lauteur / propriétaire',
'label_email_auteur' => 'Email de l\'auteur / propriétaire',
'label_explicit' => 'Contenu explicite',
'label_itunes_categories_principales' => 'Catégories principales iTunes',
'label_itunes_sous_categories' => 'Sous catégories de "@cat@"',
'label_keywords' => 'Mots clés',
'label_nom_auteur' => 'Nom de lauteur / propriétaire',
'label_nom_auteur' => 'Nom de l\'auteur / propriétaire',
'label_podcast_auto' => 'Podcast automatique',
'label_podcast_types' => 'Types de flux mis à disposition',
'label_resume' => 'Résumé du flux de podcast',
@ -114,6 +112,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'legend_mrss' => 'Configuration spécifique pour Media RSS',
// V
'valeur_channels' => 'Channels.com',
'valeur_clean' => 'clean',
'valeur_itunes' => 'iTunes',
'valeur_miro' => 'Miro',
@ -121,3 +120,5 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'valeur_no' => 'Non',
'valeur_yes' => 'Oui'
);
?>

29
paquet.xml

@ -1,29 +0,0 @@
<paquet
prefix="podcast"
categorie="multimedia"
version="0.4.1"
etat="stable"
compatibilite="[3.0.0;4.1.*]"
logo="images/podcast-64.png"
schema="0.1.0"
documentation="https://www.mediaspip.net/technical-documentation/plugins-used-by-mediaspip/article/le-plugin-podcasts"
demonstration="https://www.mediaspip.net"
developpement="https://www.mediaspip.net/spip.php?page=tickets&amp;composant=plugins%20-%20podcasts"
>
<nom>Podcasts</nom>
<auteur lien="http://www.kent1.info" mail="kent1@arscenic.info">kent1</auteur>
<copyright>2010-2012</copyright>
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
<pipeline nom="declarer_tables_principales" inclure="base/podcast_base.php" />
<pipeline nom="declarer_tables_objets_sql" inclure="base/podcast_base.php" />
<pipeline nom="pre_edition" inclure="podcast_pipelines.php" />
<pipeline nom="post_edition" inclure="podcast_pipelines.php" />
<pipeline nom="editer_contenu_objet" inclure="podcast_pipelines.php" />
<necessite nom="saisies" compatibilite="[3.23.2;[" />
</paquet>

49
plugin.xml

@ -0,0 +1,49 @@
<plugin>
<nom>
<multi>
[fr]Podcast
[en]Podcasts
</multi>
</nom>
<auteur>[kent1->http://www.kent1.info]</auteur>
<licence>(c) 2010-2012 GPL</licence>
<version>0.1.2</version>
<version_base>0.1.0</version_base>
<etat>dev</etat>
<slogan>
<multi>
[fr]Un ou plusieurs flux de podcast sur son site
[en]One or several podcasts feeds on the site
</multi>
</slogan>
<description>
<multi>
[fr]Un plugin pour mettre à disposition un ou plusieurs flux de podcast sur son site
[en]A plugin to provide one or several podcasts feeds on the site
</multi>
</description>
<icon>images/podcast_64.png</icon>
<prefix>podcast</prefix>
<install>base/podcast_upgrade.php</install>
<pipeline>
<nom>declarer_tables_principales</nom>
<inclure>base/podcast_base.php</inclure>
</pipeline>
<pipeline>
<nom>pre_edition</nom>
<inclure>podcast_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>post_edition</nom>
<inclure>podcast_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>editer_contenu_objet</nom>
<inclure>podcast_pipelines.php</inclure>
</pipeline>
<necessite id="SPIP" version="[2.1.1;2.1.99]" />
<necessite id="saisies" version="[1.42.11;]" />
<necessite id="spip_bonux" version="[1.8.10;]" />
<necessite id="cfg" version="[1.13.0;]" />
<categorie>multimedia</categorie>
</plugin>

33
podcast_administrations.php

@ -1,33 +0,0 @@
<?php
/**
* Plugin Podcast
* par kent1
*
* Copyright (c) 2010-2012
* Logiciel libre distribué sous licence GNU/GPL.
*
* Installation
*
**/
if (!defined("_ECRIRE_INC_VERSION")) return;
function podcast_upgrade($nom_meta_base_version,$version_cible){
$maj = array();
$maj['create'] = array(
array('maj_tables',array('spip_documents'))
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
/**
* Fonction de désinstallation
* - on vire la meta d'installation
* - on vire la meta de configuration
*/
function podcast_vider_tables($nom_meta_base_version) {
effacer_meta($nom_meta_base_version);
effacer_meta('podcast');
}

21
podcast_pipelines.php

@ -16,12 +16,9 @@ function podcast_editer_contenu_objet($flux){
$type_form = $flux['args']['type'];
$id_document = $flux['args']['id'];
if(in_array($type_form,array('document'))){
if(preg_match(",<(li|div) [^>]*class=[\"'](?:editer )?editer_credits.*>(.*)<\/\\1>,Uims",$flux['data'],$regs)){
$contexte = $flux['args']['contexte'];
$contexte['_tag'] = $regs[1];
$ajouts = recuperer_fond('inclure/formulaire_document_saisies',$contexte);
$p = strpos($flux['data'],$regs[0])+strlen($regs[0]);
$flux['data'] = substr_replace($flux['data'],$ajouts,$p,0);
if(preg_match(",<li [^>]*class=[\"']editer_credits.*>(.*)<\/li>,Uims",$flux['data'],$regs)){
$ajouts .= recuperer_fond('inclure/formulaire_document_saisies',array('id_document'=>$id_document));
$flux['data'] = preg_replace(",($regs[1]),Uims","\\1".$ajouts,$flux['data']);
}
}
return $flux;
@ -31,7 +28,7 @@ function podcast_editer_contenu_objet($flux){
* Insertion dans le pipeline pre_edition
*/
function podcast_pre_edition($flux){
if(isset($flux['args']['type']) && ($flux['args']['type'] == 'document') && ($flux['args']['action'] == 'modifier') && _request('podcast')){
if(($flux['args']['type'] == 'document') && ($flux['args']['action'] == 'modifier') && _request('podcast')){
$flux['data']['podcast'] = _request('podcast');
$flux['data']['explicit'] = _request('explicit');
}
@ -54,7 +51,7 @@ function podcast_post_edition($flux){
/**
* On n'intervient que sur les actions d'ajout de document
*/
if (isset($flux['args']['operation']) && in_array($flux['args']['operation'], array('ajouter_document'))){
if(in_array($flux['args']['operation'], array('ajouter_document'))){
$id_document = $flux['args']['id_objet'];
$infos_doc = sql_fetsel('fichier,mode,distant','spip_documents','id_document='.intval($id_document));
@ -73,21 +70,23 @@ function podcast_post_edition($flux){
/**
* Mise à jour du document
*/
include_spip('action/editer_document');
include_spip('inc/modifier');
if(isset($valeur_explicit) && ($valeur_explicit != 'clean')){
$infos['explicit'] = $valeur_explicit;
}
if(isset($valeur_podcast) && ($valeur_podcast != 'oui')){
$infos['podcast'] = $valeur_podcast;
}
document_modifier($id_document, $infos);
revision_document($id_document, $infos);
/**
* On invalide le cache de cet élément si nécessaire
*/
include_spip('inc/invalideur');
suivre_invalideur("id='id_document/$id_document'");
suivre_invalideur("id='id_document/$id'");
}
}
return $flux;
}
?>

6
prive/squelettes/contenu/configurer_podcast.html

@ -1,6 +0,0 @@
[(#AUTORISER{configurer,podcast}|sinon_interdire_acces)]
<h1 class="grostitre"><:podcast:cfg_titre_podcast:></h1>
<div class="ajax">
#FORMULAIRE_CONFIGURER_PODCAST
</div>

30
saisies/itunes_categories.html

@ -3,7 +3,7 @@
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- ** data : tableau de donnees cle=>valeur
- ** datas : tableau de donnees cle=>valeur
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
@ -14,7 +14,7 @@
type=main})]
]
[(#SET{data_main, [(#ARRAY{
[(#SET{datas_main, [(#ARRAY{
Arts,<:podcast:itunes_cat_arts:>,
Business,<:podcast:itunes_cat_business:>,
Comedy,<:podcast:itunes_cat_comedy:>,
@ -33,7 +33,7 @@
TV &amp; Film,<:podcast:itunes_cat_tv_film:>
})]})]
[(#SET{data_arts, [(#ARRAY{
[(#SET{datas_arts, [(#ARRAY{
Design,<:podcast:itunes_cat_design:>,
Fashion & Beauty,<:podcast:itunes_cat_fashion_beauty:>,
Food,<:podcast:itunes_cat_food:>,
@ -42,7 +42,7 @@
Visual Arts,<:podcast:itunes_cat_visual_arts:>
})]})]
[(#SET{data_business, [(#ARRAY{
[(#SET{datas_business, [(#ARRAY{
Business News,<:podcast:itunes_cat_business_news:>,
Careers,<:podcast:itunes_cat_careers:>,
Investing,<:podcast:itunes_cat_investing:>,
@ -50,7 +50,7 @@
Shopping,<:podcast:itunes_cat_business_shopping:>
})]})]
[(#SET{data_education, [(#ARRAY{
[(#SET{datas_education, [(#ARRAY{
Education Technology,<:podcast:itunes_cat_education_technology:>,
Higher Education,<:podcast:itunes_cat_higher_education:>,
K-12,<:podcast:itunes_cat_k_12:>,
@ -58,7 +58,7 @@
Training,<:podcast:itunes_cat_training:>
})]})]
[(#SET{data_games_&amp;_hobbies, [(#ARRAY{
[(#SET{datas_games_&amp;_hobbies, [(#ARRAY{
Automotive,<:podcast:itunes_cat_automotive:>,
Aviation,<:podcast:itunes_cat_aviation:>,
Hobbies,<:podcast:itunes_cat_hobbies:>,
@ -66,21 +66,21 @@
Video Games,<:podcast:itunes_cat_video_games:>
})]})]
[(#SET{data_government_&amp;_organizations, [(#ARRAY{
[(#SET{datas_government_&amp;_organizations, [(#ARRAY{
Local,<:podcast:itunes_cat_local:>,
National,<:podcast:itunes_cat_national:>,
Non-Profit,<:podcast:itunes_cat_non_profit:>,
Regional,<:podcast:itunes_cat_regional:>
})]})]
[(#SET{data_health, [(#ARRAY{
[(#SET{datas_health, [(#ARRAY{
Alternative Health,<:podcast:itunes_cat_alternative_health:>,
Fitness & Nutrition,<:podcast:itunes_cat_fitness_nutrition:>,
Self-Help,<:podcast:itunes_cat_self_help:>,
Sexuality,<:podcast:itunes_cat_sexuality:>
})]})]
[(#SET{data_religion_&amp;_spirituality, [(#ARRAY{
[(#SET{datas_religion_&amp;_spirituality, [(#ARRAY{
Buddhism,<:podcast:itunes_cat_buddhism:>,
Christianity,<:podcast:itunes_cat_christianity:>,
Hinduism,<:podcast:itunes_cat_hinduism:>,
@ -90,37 +90,37 @@
Spirituality,<:podcast:itunes_cat_spirituality:>
})]})]
[(#SET{data_science_&amp;_medicine, [(#ARRAY{
[(#SET{datas_science_&amp;_medicine, [(#ARRAY{
Medicine,<:podcast:itunes_cat_medicine:>,
Natural Sciences,<:podcast:itunes_cat_natural_sciences:>,
Social Sciences,<:podcast:itunes_cat_social_sciences:>
})]})]
[(#SET{data_society_&amp;_culture, [(#ARRAY{
[(#SET{datas_society_&amp;_culture, [(#ARRAY{
History,<:podcast:itunes_cat_history:>,
Personal Journals,<:podcast:itunes_cat_personnal_journals:>,
Philosophy,<:podcast:itunes_cat_philosophy:>,
Places & Travel,<:podcast:itunes_cat_places_travel:>
})]})]
[(#SET{data_sports_&amp;_recreation, [(#ARRAY{
[(#SET{datas_sports_&amp;_recreation, [(#ARRAY{
Amateur,<:podcast:itunes_cat_amateur:>,
College & High School,<:podcast:itunes_cat_college_high_school:>,
Outdoor,<:podcast:itunes_cat_outdoor:>,
Professional,<:podcast:itunes_cat_professional:>
})]})]
[(#SET{data_technology, [(#ARRAY{
[(#SET{datas_technology, [(#ARRAY{
Gadgets,<:podcast:itunes_cat_gadgets:>,
Tech News,<:podcast:itunes_cat_tech_news:>,
Podcasting,<:podcast:itunes_cat_podcasting:>,
Software How-To,<:podcast:itunes_cat_software_how_to:>
})]})]
#SET{data,#GET{data_#ENV{type}}}
#SET{datas,#GET{datas_#ENV{type}}}
<select name="#ENV{nom}[]" id="champ_#ENV{nom}"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"] multiple="multiple">
<BOUCLE_categorie(POUR){tableau #GET{data}}>
<BOUCLE_categorie(POUR){tableau #GET{datas}}>
<option value="#CLE"[(#CLE|in_array{#ENV{valeur,#ARRAY}}|oui) selected="selected"]>#VALEUR</option>
</BOUCLE_categorie>
</select>
Loading…
Cancel
Save