From 9711570ebac7ed1d6c0335102027680bf6ae036f Mon Sep 17 00:00:00 2001 From: Ludovic CHEVALIER Date: Wed, 19 Jun 2013 08:34:02 +0200 Subject: [PATCH] [PLUGINS] +Menu_Lang_lien --- .../Menu_langue_lien/balise/menu_lang.php | 70 + .../fonds/cfg_menu_lang_liens.html | 9 + .../configurer_menu_lang_liens.html | 47 + .../formulaires/menu_lang.html | 70 + .../img_pack/world_link-16.png | Bin 0 -> 961 bytes .../img_pack/world_link-24.png | Bin 0 -> 1868 bytes .../img_pack/world_link-32.png | Bin 0 -> 2697 bytes www/plugins/Menu_langue_lien/lang/mll.xml | 10 + www/plugins/Menu_langue_lien/lang/mll_en.php | 26 + www/plugins/Menu_langue_lien/lang/mll_es.php | 26 + www/plugins/Menu_langue_lien/lang/mll_fr.php | 24 + www/plugins/Menu_langue_lien/lang/mll_sk.php | 26 + .../Menu_langue_lien/lang/paquet-mll.xml | 10 + .../Menu_langue_lien/lang/paquet-mll_en.php | 16 + .../Menu_langue_lien/lang/paquet-mll_es.php | 16 + .../Menu_langue_lien/lang/paquet-mll_fr.php | 14 + .../Menu_langue_lien/lang/paquet-mll_sk.php | 16 + www/plugins/Menu_langue_lien/mll_options.php | 4 + .../Menu_langue_lien/mll_pipelines.php | 12 + www/plugins/Menu_langue_lien/mll_styles.css | 28 + www/plugins/Menu_langue_lien/paquet.xml | 23 + www/plugins/Menu_langue_lien/plugin.xml | 53 + .../squelettes/contenu/configurer_mll.html | 5 + .../themes/spip/images/world_link-16.png | Bin 0 -> 961 bytes .../themes/spip/images/world_link-24.png | Bin 0 -> 1868 bytes .../themes/spip/images/world_link-32.png | Bin 0 -> 2697 bytes www/plugins/Menu_langue_lien/svn.revision | 10 + .../spip-bonux-3/demo/boucle_et_saut.html | 15 + .../spip-bonux-3/demo/boucles_iterations.html | 37 + www/plugins/spip-bonux-3/demo/noeud.html | 16 + .../img_pack/annuler-recherche.png | Bin 0 -> 713 bytes .../spip-bonux-3/img_pack/article-12.png | Bin 0 -> 619 bytes .../spip-bonux-3/img_pack/deplier-droite.gif | Bin 0 -> 319 bytes .../spip-bonux-3/img_pack/deplier-droite.png | Bin 0 -> 480 bytes .../spip-bonux-3/img_pack/frame-close.png | Bin 0 -> 443 bytes .../spip-bonux-3/img_pack/item-add.gif | Bin 0 -> 571 bytes .../spip-bonux-3/img_pack/item-add.png | Bin 0 -> 654 bytes .../spip-bonux-3/img_pack/item-remove.png | Bin 0 -> 456 bytes .../spip-bonux-3/img_pack/logo-bonux.gif | Bin 0 -> 5902 bytes .../img_pack/message_erreur-24.png | Bin 0 -> 1400 bytes .../img_pack/message_notice-24.png | Bin 0 -> 1108 bytes .../spip-bonux-3/img_pack/message_ok-24.png | Bin 0 -> 1126 bytes .../spip-bonux-3/img_pack/spip-bonux.png | Bin 0 -> 39439 bytes .../spip-bonux-3/img_pack/tri_asc-12.png | Bin 0 -> 476 bytes .../spip-bonux-3/img_pack/tri_asc-16.png | Bin 0 -> 628 bytes .../spip-bonux-3/img_pack/tri_asc-24.png | Bin 0 -> 786 bytes www/plugins/spip-bonux-3/img_pack/tri_asc.png | Bin 0 -> 477 bytes .../spip-bonux-3/img_pack/tri_desc-12.png | Bin 0 -> 462 bytes .../spip-bonux-3/img_pack/tri_desc-16.png | Bin 0 -> 615 bytes .../spip-bonux-3/img_pack/tri_desc-24.png | Bin 0 -> 772 bytes www/plugins/spip-bonux-3/inc/date_gestion.php | 43 + www/plugins/spip-bonux-3/inc/exporter_csv.php | 98 + www/plugins/spip-bonux-3/inc/importer_csv.php | 108 + .../javascript/jquery.qtip-1.0.0-rc3.js | 2040 +++++++++++++++++ .../javascript/jquery.qtip.activate.js | 68 + .../spip-bonux-3/lang/paquet-spip_bonux.xml | 18 + .../lang/paquet-spip_bonux_ar.php | 16 + .../lang/paquet-spip_bonux_en.php | 16 + .../lang/paquet-spip_bonux_es.php | 16 + .../lang/paquet-spip_bonux_fr.php | 14 + .../lang/paquet-spip_bonux_ru.php | 15 + .../lang/paquet-spip_bonux_sk.php | 16 + www/plugins/spip-bonux-3/lang/spip_bonux.xml | 14 + .../spip-bonux-3/lang/spip_bonux_ar.php | 36 + .../spip-bonux-3/lang/spip_bonux_en.php | 36 + .../spip-bonux-3/lang/spip_bonux_es.php | 36 + .../spip-bonux-3/lang/spip_bonux_fr.php | 34 + .../spip-bonux-3/lang/spip_bonux_ru.php | 36 + .../spip-bonux-3/lang/spip_bonux_sk.php | 36 + .../modeles/pagination_noancre.html | 16 + www/plugins/spip-bonux-3/paquet.xml | 22 + .../public/spip_bonux_balises.php | 136 ++ .../public/spip_bonux_criteres.php | 147 ++ .../spip-bonux-3/spip_bonux_fonctions.php | 45 + .../spip-bonux-3/spip_bonux_options.php | 148 ++ www/plugins/spip-bonux-3/svn.revision | 10 + .../spip-bonux-3/tests/balises/set_merge.html | 60 + .../spip-bonux-3/tests/balises/set_push.html | 25 + 78 files changed, 3888 insertions(+) create mode 100644 www/plugins/Menu_langue_lien/balise/menu_lang.php create mode 100644 www/plugins/Menu_langue_lien/fonds/cfg_menu_lang_liens.html create mode 100644 www/plugins/Menu_langue_lien/formulaires/configurer_menu_lang_liens.html create mode 100644 www/plugins/Menu_langue_lien/formulaires/menu_lang.html create mode 100755 www/plugins/Menu_langue_lien/img_pack/world_link-16.png create mode 100644 www/plugins/Menu_langue_lien/img_pack/world_link-24.png create mode 100755 www/plugins/Menu_langue_lien/img_pack/world_link-32.png create mode 100644 www/plugins/Menu_langue_lien/lang/mll.xml create mode 100755 www/plugins/Menu_langue_lien/lang/mll_en.php create mode 100644 www/plugins/Menu_langue_lien/lang/mll_es.php create mode 100755 www/plugins/Menu_langue_lien/lang/mll_fr.php create mode 100644 www/plugins/Menu_langue_lien/lang/mll_sk.php create mode 100644 www/plugins/Menu_langue_lien/lang/paquet-mll.xml create mode 100644 www/plugins/Menu_langue_lien/lang/paquet-mll_en.php create mode 100644 www/plugins/Menu_langue_lien/lang/paquet-mll_es.php create mode 100644 www/plugins/Menu_langue_lien/lang/paquet-mll_fr.php create mode 100644 www/plugins/Menu_langue_lien/lang/paquet-mll_sk.php create mode 100644 www/plugins/Menu_langue_lien/mll_options.php create mode 100755 www/plugins/Menu_langue_lien/mll_pipelines.php create mode 100755 www/plugins/Menu_langue_lien/mll_styles.css create mode 100644 www/plugins/Menu_langue_lien/paquet.xml create mode 100644 www/plugins/Menu_langue_lien/plugin.xml create mode 100644 www/plugins/Menu_langue_lien/prive/squelettes/contenu/configurer_mll.html create mode 100755 www/plugins/Menu_langue_lien/prive/themes/spip/images/world_link-16.png create mode 100644 www/plugins/Menu_langue_lien/prive/themes/spip/images/world_link-24.png create mode 100755 www/plugins/Menu_langue_lien/prive/themes/spip/images/world_link-32.png create mode 100644 www/plugins/Menu_langue_lien/svn.revision create mode 100644 www/plugins/spip-bonux-3/demo/boucle_et_saut.html create mode 100644 www/plugins/spip-bonux-3/demo/boucles_iterations.html create mode 100644 www/plugins/spip-bonux-3/demo/noeud.html create mode 100644 www/plugins/spip-bonux-3/img_pack/annuler-recherche.png create mode 100644 www/plugins/spip-bonux-3/img_pack/article-12.png create mode 100644 www/plugins/spip-bonux-3/img_pack/deplier-droite.gif create mode 100644 www/plugins/spip-bonux-3/img_pack/deplier-droite.png create mode 100644 www/plugins/spip-bonux-3/img_pack/frame-close.png create mode 100644 www/plugins/spip-bonux-3/img_pack/item-add.gif create mode 100644 www/plugins/spip-bonux-3/img_pack/item-add.png create mode 100644 www/plugins/spip-bonux-3/img_pack/item-remove.png create mode 100644 www/plugins/spip-bonux-3/img_pack/logo-bonux.gif create mode 100644 www/plugins/spip-bonux-3/img_pack/message_erreur-24.png create mode 100644 www/plugins/spip-bonux-3/img_pack/message_notice-24.png create mode 100644 www/plugins/spip-bonux-3/img_pack/message_ok-24.png create mode 100644 www/plugins/spip-bonux-3/img_pack/spip-bonux.png create mode 100644 www/plugins/spip-bonux-3/img_pack/tri_asc-12.png create mode 100644 www/plugins/spip-bonux-3/img_pack/tri_asc-16.png create mode 100644 www/plugins/spip-bonux-3/img_pack/tri_asc-24.png create mode 100644 www/plugins/spip-bonux-3/img_pack/tri_asc.png create mode 100644 www/plugins/spip-bonux-3/img_pack/tri_desc-12.png create mode 100644 www/plugins/spip-bonux-3/img_pack/tri_desc-16.png create mode 100644 www/plugins/spip-bonux-3/img_pack/tri_desc-24.png create mode 100644 www/plugins/spip-bonux-3/inc/date_gestion.php create mode 100644 www/plugins/spip-bonux-3/inc/exporter_csv.php create mode 100644 www/plugins/spip-bonux-3/inc/importer_csv.php create mode 100644 www/plugins/spip-bonux-3/javascript/jquery.qtip-1.0.0-rc3.js create mode 100644 www/plugins/spip-bonux-3/javascript/jquery.qtip.activate.js create mode 100644 www/plugins/spip-bonux-3/lang/paquet-spip_bonux.xml create mode 100644 www/plugins/spip-bonux-3/lang/paquet-spip_bonux_ar.php create mode 100644 www/plugins/spip-bonux-3/lang/paquet-spip_bonux_en.php create mode 100644 www/plugins/spip-bonux-3/lang/paquet-spip_bonux_es.php create mode 100644 www/plugins/spip-bonux-3/lang/paquet-spip_bonux_fr.php create mode 100644 www/plugins/spip-bonux-3/lang/paquet-spip_bonux_ru.php create mode 100644 www/plugins/spip-bonux-3/lang/paquet-spip_bonux_sk.php create mode 100644 www/plugins/spip-bonux-3/lang/spip_bonux.xml create mode 100644 www/plugins/spip-bonux-3/lang/spip_bonux_ar.php create mode 100644 www/plugins/spip-bonux-3/lang/spip_bonux_en.php create mode 100644 www/plugins/spip-bonux-3/lang/spip_bonux_es.php create mode 100644 www/plugins/spip-bonux-3/lang/spip_bonux_fr.php create mode 100644 www/plugins/spip-bonux-3/lang/spip_bonux_ru.php create mode 100644 www/plugins/spip-bonux-3/lang/spip_bonux_sk.php create mode 100644 www/plugins/spip-bonux-3/modeles/pagination_noancre.html create mode 100644 www/plugins/spip-bonux-3/paquet.xml create mode 100644 www/plugins/spip-bonux-3/public/spip_bonux_balises.php create mode 100644 www/plugins/spip-bonux-3/public/spip_bonux_criteres.php create mode 100644 www/plugins/spip-bonux-3/spip_bonux_fonctions.php create mode 100644 www/plugins/spip-bonux-3/spip_bonux_options.php create mode 100644 www/plugins/spip-bonux-3/svn.revision create mode 100644 www/plugins/spip-bonux-3/tests/balises/set_merge.html create mode 100644 www/plugins/spip-bonux-3/tests/balises/set_push.html diff --git a/www/plugins/Menu_langue_lien/balise/menu_lang.php b/www/plugins/Menu_langue_lien/balise/menu_lang.php new file mode 100644 index 0000000..7816784 --- /dev/null +++ b/www/plugins/Menu_langue_lien/balise/menu_lang.php @@ -0,0 +1,70 @@ +nom_boucle ? $p->nom_boucle : ($p->id_boucle ? $p->id_boucle :''); + if($i_boucle){ + $_id_objet = $p->boucles[$i_boucle]->primary; + } + + return calculer_balise_dynamique( + $p, + 'MENU_LANG', + array( + 'LANG_TYPE_BOUCLE', // demande du type d'objet + $_id_objet + ) + ); +} + +// s'il n'y a qu'une langue eviter definitivement la balise ?php +// http://doc.spip.org/@balise_MENU_LANG_stat +function balise_MENU_LANG_stat ($args, $context_compil) { + if (strpos($GLOBALS['meta']['langues_multilingue'],',') === false) return ''; + $objet = $args[0]; + $id_objet = $args[1]; + if ($objet == 'balise_hors_boucle') { + $objet = ''; + $id_objet = ''; + $id_table_objet =''; + }else{ + $objet = table_objet($objet); + $id_table_objet = id_table_objet($objet); + } + return array($objet, $id_objet,$id_table_objet); +} + +// normalement $opt sera toujours non vide suite au test ci-dessus +// http://doc.spip.org/@balise_MENU_LANG_dyn +function balise_MENU_LANG_dyn($objet,$id_objet,$id_table_objet) { + include_spip('inc/lang'); + # lien a partir de / + $cible = parametre_url(self(), 'lang' , '', '&'); + $post = generer_url_action('converser', 'redirect='. rawurlencode($cible), '&'); + + return array('formulaires/menu_lang', + 3600, + array( + //'nom' => $nom, + 'lang' => $GLOBALS['spip_lang'], + 'url' => $post, + $id_table_objet => $id_objet + ) + ); +} + +// balise type_boucle de Rastapopoulos dans le plugin etiquettes +// present aussi dans plugin ajaxforms... +// bref, a integrer dans le core ? :p +function balise_LANG_TYPE_BOUCLE($p) { + $type = $p->boucles[$p->id_boucle]->id_table; + $p->code = $type ? $type : "balise_hors_boucle"; + return $p; +} +?> \ No newline at end of file diff --git a/www/plugins/Menu_langue_lien/fonds/cfg_menu_lang_liens.html b/www/plugins/Menu_langue_lien/fonds/cfg_menu_lang_liens.html new file mode 100644 index 0000000..c4f5082 --- /dev/null +++ b/www/plugins/Menu_langue_lien/fonds/cfg_menu_lang_liens.html @@ -0,0 +1,9 @@ + + + + + +#CACHE{0} +
+#FORMULAIRE_CONFIGURER_MENU_LANG_LIENS +
diff --git a/www/plugins/Menu_langue_lien/formulaires/configurer_menu_lang_liens.html b/www/plugins/Menu_langue_lien/formulaires/configurer_menu_lang_liens.html new file mode 100644 index 0000000..dc8600a --- /dev/null +++ b/www/plugins/Menu_langue_lien/formulaires/configurer_menu_lang_liens.html @@ -0,0 +1,47 @@ + + + + +
+[

(#ENV*{message_ok})

] +[

(#ENV*{message_erreur})

] +
+ #ACTION_FORMULAIRE{#ENV{action}} +
    +
  • + +

    <:mll:explication_langues_invisibles:>

    + +
  • +
  • + +
    + + +
    +
    + + +
    +
  • +
  • + +
    + + +
    +
    + + +
    +
  • +
+

+ +

+
+
\ No newline at end of file diff --git a/www/plugins/Menu_langue_lien/formulaires/menu_lang.html b/www/plugins/Menu_langue_lien/formulaires/menu_lang.html new file mode 100644 index 0000000..648967c --- /dev/null +++ b/www/plugins/Menu_langue_lien/formulaires/menu_lang.html @@ -0,0 +1,70 @@ +[(#REM) +Stocker les traductions eventuelles de l'article en cours +] + +#SET{ListeTraductions, #ARRAY{}} + + #SET_MERGE{ListeTraductions,#GET{ListeTraductions},#ARRAY{#LANG,#URL_ARTICLE}} + + + +[(#REM) +Stocker les traductions eventuelles de la rubrique en cours si le plugin Tradrub est installe (permet l'utilisation du +critere traduction sur les rubriques) +] + + + #SET{ListeTraductions, #ARRAY{}} + + #SET_MERGE{ListeTraductions,#GET{ListeTraductions},#ARRAY{#LANG,#URL_RUBRIQUE}} + + + + +[(#REM) +Y-a-t'il plus d'une langue reellement utilisee dans le site (moins les langues "invisibles") ? +Si oui, on affiche le menu de langue +Si non, rien + +Les langues "invisibles" sont les langues que le webmestre peut choisir de ne pas afficher dans le menu, +a partir du formulaire de configuration du plugin. + +Note : 'explode' est une fonction PHP : http://php.net/manual/fr/function.explode.php, utilisee ici pour renvoyer un tableau contenant +les langues utilisees, a partir de la variable meta 'langues_utilisees'. Ce tableau est compare avec le tableau des langues invisibles +avec la fonction PHP 'array_diff' http://www.php.net/manual/fr/function.array-diff.php qui renvoie elle-meme un tableau. + +] + +[(#SET{langues_a_afficher,[(#CONFIG{langues_utilisees}|explode{","}|array_diff{#CONFIG{menu_lang_liens/langues_invisibles, #ARRAY}})]})] + + +<[(#CONFIG{menu_lang_liens/formatliste,bloc}|=={'bloc'}|?{div,ul})] id="menu_lang"> +[(#REM) +On liste les langues utilisees dans le site +] + + [(#CONFIG{menu_lang_liens/formatliste,bloc}|=={'liste'}|oui)
  • ] + [(#REM) + Si la langue n'est pas celle en cours, on fait un lien qui fait 2 actions : + - fixer le cookie de langue sur la langue demandee + - rediriger sur l'article dans la langue demandee si opportun + sinon, revenir sur la page en cours + ] + [(#CONFIG{menu_lang_liens/format,abrege}|=={'complet'}|oui)[(#SET{nom_langue,[(#VALEUR|traduire_nom_langue)]})]] + [(#CONFIG{menu_lang_liens/format,abrege}|=={'abrege'}|oui)[(#SET{nom_langue,[(#VALEUR)]})]] + [(#VALEUR|=={#ENV{lang}}|non) + [(#REM) + url_absolue pour éviter des problèmes en urls arbo + ] + [(#GET{nom_langue}|ucfirst)] + ] + [(#REM) + Si la langue est celle en cours, afficher celle-ci en gras, sans lien + ] + [(#VALEUR|=={#ENV{lang}}|oui) + [(#GET{nom_langue}|ucfirst)] + ] + [(#CONFIG{menu_lang_liens/formatliste,bloc}|=={'liste'}|oui)
  • ] + + + \ No newline at end of file diff --git a/www/plugins/Menu_langue_lien/img_pack/world_link-16.png b/www/plugins/Menu_langue_lien/img_pack/world_link-16.png new file mode 100755 index 0000000000000000000000000000000000000000..e7370268bdf27e58a499639d315a81c27456d0e5 GIT binary patch literal 961 zcmV;y13vtTP)o)C>HV}qLhLXiD@Jn zYa4Sh(daZuY3ya1%$&JpW-@cmoSVDGhX^kCS!@>T-~U?w-cr^3gWM0t1>2DuO-nsv zIr0J5m5?R*A1JbO*`t_UvTRLAlEd0iSDRf-iylvLuJg6SpK!R|gQWgNcv&H$&oFgk z*MY&&uJNp1c1~3aN7s_5q8H0{deo8!IzN84iKnab{E=v3POBuUL!>Z3aQjnKY!4Gw9|vJ{_@0<^3FLI*x5BAKu^5 zDuE}>&j_;^F@{- zF&yF2=+$c^W?skZtD&`FKL^`7$fPr@Fw=B)8gcHotp~_41G7iob5j!u(Xa)C?uY_aH0I{NG|&Jp5w+_$Jz^) zjapR1qw|-D3bKFi56SD90Z3)3Uocoi(f%RF5aH zci%p0s;iNO{Qmxarf)}Ch%F~Pg`Br87^J1;aq4#NWN~SU`MEhqO`DGJ6MD||Jd?^~ zzxE9c)s(DTM=qNsoylm?@So4eVzG#~x#g?dcka|iBN3rSCy_|RuU`+nEb-r{7x1n* jn*yPK^Z(Um{}x~Xp~$9%2B)e}00000NkvXXu0mjfWti5! literal 0 HcmV?d00001 diff --git a/www/plugins/Menu_langue_lien/img_pack/world_link-24.png b/www/plugins/Menu_langue_lien/img_pack/world_link-24.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd0d5fe77e2a610990cbde44b3cadf0a7bf787c GIT binary patch literal 1868 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 D^wl4h literal 0 HcmV?d00001 diff --git a/www/plugins/Menu_langue_lien/lang/mll.xml b/www/plugins/Menu_langue_lien/lang/mll.xml new file mode 100644 index 0000000..aecfbcb --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/mll.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/www/plugins/Menu_langue_lien/lang/mll_en.php b/www/plugins/Menu_langue_lien/lang/mll_en.php new file mode 100755 index 0000000..6e08135 --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/mll_en.php @@ -0,0 +1,26 @@ + 'Language menu as links', + + // E + 'explication_langues_invisibles' => 'Allows to remove some languages ​​from the menu', + + // L + 'label_format' => 'Languages display format', + 'label_format_abrege' => 'Shortened (for instance, Fr)', + 'label_format_complet' => 'Complete (for instance, Français)', + 'label_format_liste' => 'Languages list display format', + 'label_format_liste_bloc' => 'A block divided by spaces', + 'label_format_liste_liste' => 'A bulleted list', + 'label_langues_invisibles' => 'Invisible languages in the​​ menu' +); + +?> diff --git a/www/plugins/Menu_langue_lien/lang/mll_es.php b/www/plugins/Menu_langue_lien/lang/mll_es.php new file mode 100644 index 0000000..7264cf4 --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/mll_es.php @@ -0,0 +1,26 @@ + 'Menú de idiomas en forma de enlaces', + + // E + 'explication_langues_invisibles' => 'Permite quitar algunos idiomas del menú', + + // L + 'label_format' => 'Formato de visualización de los idiomas', + 'label_format_abrege' => 'Abreviado (por ejemplo, Es)', + 'label_format_complet' => 'Completo (por ejemplo, Español)', + 'label_format_liste' => 'Formato de la lista de idiomas', + 'label_format_liste_bloc' => 'Bloque separado por espacios', + 'label_format_liste_liste' => 'Lista por viñetas', + 'label_langues_invisibles' => 'Idiomas invisibles del menú' +); + +?> diff --git a/www/plugins/Menu_langue_lien/lang/mll_fr.php b/www/plugins/Menu_langue_lien/lang/mll_fr.php new file mode 100755 index 0000000..e981ffe --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/mll_fr.php @@ -0,0 +1,24 @@ + 'Menu de langues sous forme de liens', + + // E + 'explication_langues_invisibles' => 'Permet d\'enlever certaines langues du menu', + + // L + 'label_format' => 'Format d\'affichage des langues', + 'label_format_abrege' => 'Abrégé (par exemple, Fr)', + 'label_format_complet' => 'Complet (par exemple, Français)', + 'label_format_liste' => 'Format de la liste des langues', + 'label_format_liste_bloc' => 'Un bloc séparé par des espaces', + 'label_format_liste_liste' => 'Une liste à puces', + 'label_langues_invisibles' => 'Langues invisibles du menu' +); + +?> diff --git a/www/plugins/Menu_langue_lien/lang/mll_sk.php b/www/plugins/Menu_langue_lien/lang/mll_sk.php new file mode 100644 index 0000000..59b56c4 --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/mll_sk.php @@ -0,0 +1,26 @@ + 'Jazykové menu vo forme odkazov', + + // E + 'explication_langues_invisibles' => 'Umožňuje odstrániÅ¥ z menu niektoré jazyky', + + // L + 'label_format' => 'Formát zobrazenia jazykov', + 'label_format_abrege' => 'Skrátený (napríklad Sk)', + 'label_format_complet' => 'Úplný (napríklad Slovenčina)', + 'label_format_liste' => 'Formát zoznamu jazykov', + 'label_format_liste_bloc' => 'Blok oddelený medzerami', + 'label_format_liste_liste' => 'Zoznam s odrážkami', + 'label_langues_invisibles' => 'Jazyky, ktoré nebudú zobrazené v menu' +); + +?> diff --git a/www/plugins/Menu_langue_lien/lang/paquet-mll.xml b/www/plugins/Menu_langue_lien/lang/paquet-mll.xml new file mode 100644 index 0000000..4bd03eb --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/paquet-mll.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/www/plugins/Menu_langue_lien/lang/paquet-mll_en.php b/www/plugins/Menu_langue_lien/lang/paquet-mll_en.php new file mode 100644 index 0000000..b31b6df --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/paquet-mll_en.php @@ -0,0 +1,16 @@ + 'Replace the original language menu by a clickable menu. This menu is displayed only if at least two languages are ​​actually used on the site.', + 'mll_nom' => 'Language menu as links', + 'mll_slogan' => 'View languages ​​as clickable links' +); + +?> diff --git a/www/plugins/Menu_langue_lien/lang/paquet-mll_es.php b/www/plugins/Menu_langue_lien/lang/paquet-mll_es.php new file mode 100644 index 0000000..15d889a --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/paquet-mll_es.php @@ -0,0 +1,16 @@ + 'Remplaza al menú desplegable de idiomas por un menú en el que hacer click. Este menú no se muestra salvo si hay al menos 2 idiomas verdaderamente utilizados en el sitio.', + 'mll_nom' => 'Menú de idiomas con enlaces', + 'mll_slogan' => 'Mostrar los idiomas bajo la forma de enlaces en los que hacer click' +); + +?> diff --git a/www/plugins/Menu_langue_lien/lang/paquet-mll_fr.php b/www/plugins/Menu_langue_lien/lang/paquet-mll_fr.php new file mode 100644 index 0000000..ad4808f --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/paquet-mll_fr.php @@ -0,0 +1,14 @@ + 'Remplace le menu déroulant de langues par un menu cliquable. Ce menu n\'est affiché que s\'il y a au moins 2 langues vraiment utilisées dans le site.', + 'mll_nom' => 'Menu de langues avec liens', + 'mll_slogan' => 'Afficher les langues sous forme de liens cliquables' +); + +?> diff --git a/www/plugins/Menu_langue_lien/lang/paquet-mll_sk.php b/www/plugins/Menu_langue_lien/lang/paquet-mll_sk.php new file mode 100644 index 0000000..f7117e7 --- /dev/null +++ b/www/plugins/Menu_langue_lien/lang/paquet-mll_sk.php @@ -0,0 +1,16 @@ + 'Rozbaľovacie menu s jazykmi nahradí klikateľným. Toto menu sa nezobrazí, ak sa na stránke naozaj nepoužívajú aspoň 2 jazyky.', + 'mll_nom' => 'Jazykové menu s odkazmi', + 'mll_slogan' => 'ZobraziÅ¥ jazyky vo forme klikateľných odkazov' +); + +?> diff --git a/www/plugins/Menu_langue_lien/mll_options.php b/www/plugins/Menu_langue_lien/mll_options.php new file mode 100644 index 0000000..a5a023a --- /dev/null +++ b/www/plugins/Menu_langue_lien/mll_options.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/www/plugins/Menu_langue_lien/mll_pipelines.php b/www/plugins/Menu_langue_lien/mll_pipelines.php new file mode 100755 index 0000000..7e88b7b --- /dev/null +++ b/www/plugins/Menu_langue_lien/mll_pipelines.php @@ -0,0 +1,12 @@ +'; + + return $flux; +} + +?> \ No newline at end of file diff --git a/www/plugins/Menu_langue_lien/mll_styles.css b/www/plugins/Menu_langue_lien/mll_styles.css new file mode 100755 index 0000000..66e9f0c --- /dev/null +++ b/www/plugins/Menu_langue_lien/mll_styles.css @@ -0,0 +1,28 @@ +#menu_lang { + list-style: none outside none; +} + +#menu_lang li { + float: left; +} + +#menu_lang li a, #menu_lang li span, #menu_lang li strong { + border-left: 1px solid; +} + +#menu_lang li a, #menu_lang li span, #menu_lang li strong { + padding: 0 5px; + font-size: 11px; +} + +#menu_lang li.first a, #menu_lang li.first span, #menu_lang li.first strong { + border: none; +} + +#menu_lang li.last a, #menu_lang li.last span, #menu_lang li.last strong { + padding-right: 0; +} + +#menu_lang li a:hover { + text-decoration: underline; +} \ No newline at end of file diff --git a/www/plugins/Menu_langue_lien/paquet.xml b/www/plugins/Menu_langue_lien/paquet.xml new file mode 100644 index 0000000..19a5c6b --- /dev/null +++ b/www/plugins/Menu_langue_lien/paquet.xml @@ -0,0 +1,23 @@ + + Menu de langues avec liens + + Jacques + Jean-Baptiste Pressac + kent1 + Cédric Morin + icône par FatCow + 2009-2012 + GPL 3 + + + + + \ No newline at end of file diff --git a/www/plugins/Menu_langue_lien/plugin.xml b/www/plugins/Menu_langue_lien/plugin.xml new file mode 100644 index 0000000..46eb697 --- /dev/null +++ b/www/plugins/Menu_langue_lien/plugin.xml @@ -0,0 +1,53 @@ + + + + [fr]Menu de langues avec liens + [en]Language menu as links + + + + + [fr]Afficher les langues sous forme de liens cliquables + [en]View languages ​​as clickable links + + + [Jacques->http://www.spip-contrib.net/_Jacques-PYRAT_] - Jean-Baptiste Pressac - Quentin Drouet - Cedric Morin + © 2009-2012 GNU/GPL + http://www.spip-contrib.net/Menu-de-langues-sous-forme-de-liens + 1.1.9 + test + + +[fr]Remplace le menu déroulant de langues par un menu cliquable. Ce menu n'est affiché que s'il y a au moins 2 langues vraiment utilisées dans le site. + +Icone par [FatCow->http://www.fatcow.com/free-icons] +[en]Replace the original language menu by a clickable menu. This menu is displayed only if at least two languages are ​​actually used on the site. + +Icon by [FatCow->http://www.fatcow.com/free-icons] + + + mll + img_pack/world_link-32.png + mll_options.php + + insert_head_css + mll_pipelines.php + + + + + + navigation + + img_pack/world_link-24.png + mll:cfg_titre_mll + cfg + cfg=menu_lang_liens + + + img_pack/world_link-16.png + mll:cfg_titre_mll + cfg + cfg=menu_lang_liens + + \ No newline at end of file diff --git a/www/plugins/Menu_langue_lien/prive/squelettes/contenu/configurer_mll.html b/www/plugins/Menu_langue_lien/prive/squelettes/contenu/configurer_mll.html new file mode 100644 index 0000000..4cf4e9f --- /dev/null +++ b/www/plugins/Menu_langue_lien/prive/squelettes/contenu/configurer_mll.html @@ -0,0 +1,5 @@ +[(#AUTORISER{webmestre}|sinon_interdire_acces)] +

    <:mll:cfg_titre_mll:>

    +
    + #FORMULAIRE_CONFIGURER_MENU_LANG_LIENS +
    diff --git a/www/plugins/Menu_langue_lien/prive/themes/spip/images/world_link-16.png b/www/plugins/Menu_langue_lien/prive/themes/spip/images/world_link-16.png new file mode 100755 index 0000000000000000000000000000000000000000..e7370268bdf27e58a499639d315a81c27456d0e5 GIT binary patch literal 961 zcmV;y13vtTP)o)C>HV}qLhLXiD@Jn zYa4Sh(daZuY3ya1%$&JpW-@cmoSVDGhX^kCS!@>T-~U?w-cr^3gWM0t1>2DuO-nsv zIr0J5m5?R*A1JbO*`t_UvTRLAlEd0iSDRf-iylvLuJg6SpK!R|gQWgNcv&H$&oFgk z*MY&&uJNp1c1~3aN7s_5q8H0{deo8!IzN84iKnab{E=v3POBuUL!>Z3aQjnKY!4Gw9|vJ{_@0<^3FLI*x5BAKu^5 zDuE}>&j_;^F@{- zF&yF2=+$c^W?skZtD&`FKL^`7$fPr@Fw=B)8gcHotp~_41G7iob5j!u(Xa)C?uY_aH0I{NG|&Jp5w+_$Jz^) zjapR1qw|-D3bKFi56SD90Z3)3Uocoi(f%RF5aH zci%p0s;iNO{Qmxarf)}Ch%F~Pg`Br87^J1;aq4#NWN~SU`MEhqO`DGJ6MD||Jd?^~ zzxE9c)s(DTM=qNsoylm?@So4eVzG#~x#g?dcka|iBN3rSCy_|RuU`+nEb-r{7x1n* jn*yPK^Z(Um{}x~Xp~$9%2B)e}00000NkvXXu0mjfWti5! literal 0 HcmV?d00001 diff --git a/www/plugins/Menu_langue_lien/prive/themes/spip/images/world_link-24.png b/www/plugins/Menu_langue_lien/prive/themes/spip/images/world_link-24.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd0d5fe77e2a610990cbde44b3cadf0a7bf787c GIT binary patch literal 1868 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 D^wl4h literal 0 HcmV?d00001 diff --git a/www/plugins/Menu_langue_lien/svn.revision b/www/plugins/Menu_langue_lien/svn.revision new file mode 100644 index 0000000..3d836e7 --- /dev/null +++ b/www/plugins/Menu_langue_lien/svn.revision @@ -0,0 +1,10 @@ + + +Origine: file:///home/svn/repository/spip-zone/_plugins_/menu_langues_liens +Revision: 71303 +Dernier commit: 2013-03-30 04:01:43 +0100 + +file:///home/svn/repository/spip-zone/_plugins_/menu_langues_liens +71303 +2013-03-30 04:01:43 +0100 + \ No newline at end of file diff --git a/www/plugins/spip-bonux-3/demo/boucle_et_saut.html b/www/plugins/spip-bonux-3/demo/boucle_et_saut.html new file mode 100644 index 0000000..c43b737 --- /dev/null +++ b/www/plugins/spip-bonux-3/demo/boucle_et_saut.html @@ -0,0 +1,15 @@ +[(#REM) + + Squelette + (c) 2009 xxx + Distribue sous licence GPL + +] + +#TOTAL_BOUCLE:#COMPTEUR_BOUCLE:#ID_ARTICLE + +
    + +#TOTAL_BOUCLE:#COMPTEUR_BOUCLE:#ID_ARTICLE +[(#SAUTER{1})] + diff --git a/www/plugins/spip-bonux-3/demo/boucles_iterations.html b/www/plugins/spip-bonux-3/demo/boucles_iterations.html new file mode 100644 index 0000000..004663d --- /dev/null +++ b/www/plugins/spip-bonux-3/demo/boucles_iterations.html @@ -0,0 +1,37 @@ + +#CLE/#VALEUR
    + +#TOTAL_BOUCLE + + +
    + +#CLE/#VALEUR
    + +#TOTAL_BOUCLE + + +
    + + +#CLE/#VALEUR
    + +#TOTAL_BOUCLE + + + +

    #PAGINATION

    + +#CLE/#VALEUR
    + +[#TOTAL_BOUCLE/#GRAND_TOTAL] +
    + +
    + + + + #VALEUR + +
    + diff --git a/www/plugins/spip-bonux-3/demo/noeud.html b/www/plugins/spip-bonux-3/demo/noeud.html new file mode 100644 index 0000000..8444005 --- /dev/null +++ b/www/plugins/spip-bonux-3/demo/noeud.html @@ -0,0 +1,16 @@ +[(#REM) + + Squelette + (c) xxx + Distribue sous licence GPL + +] +#CACHE{0} + + +
  • #ID_RUBRIQUE
  • + +
    + +
  • #ID_RUBRIQUE
  • + \ No newline at end of file diff --git a/www/plugins/spip-bonux-3/img_pack/annuler-recherche.png b/www/plugins/spip-bonux-3/img_pack/annuler-recherche.png new file mode 100644 index 0000000000000000000000000000000000000000..825293052c34ad8dd6410cc34ded573d8c53ef59 GIT binary patch literal 713 zcmV;)0yh1LP)vREuK!{M;4PVio<)da8CORE8~F8(%2p->P9gTXg^>zP6dCYa4;vfXYKLDf(_ zOU}M677IQFCfD=XH=B*38aQ1p7s?xrMum>a4FfhmKaBwg1hs6Jqo{1*2{Vl)%Epc7cSD1D700000NkvXXu0mjfm_0t* literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/article-12.png b/www/plugins/spip-bonux-3/img_pack/article-12.png new file mode 100644 index 0000000000000000000000000000000000000000..35d3d3d5951a8d06859ed9030fe34aa1a4924d36 GIT binary patch literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$3?vg*uel1OSkfJR9T^zbpD<_bdI{u9mbgZg z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wP9djWDW2Mam~occ>DHkZEbB)QBh@O zWmQ#G>k@|cr3?=q+$||7TD*9%o}SLPZ(l<~Lhs(a8xiGq`}XZUd-iNN#du)<{`Ay> z%zB2SFBy&t8-?wkyZe4rr?CgB{^y!29&o>XdGFu9U%Ytn#ful$tXXsG)~#K;cJ1A} z_rQSz%a<>|bm`K91q)`+o_+T0*>&sI-MxGF`t|E8SFSvI^ys8XlMWs{IBnXr!-o&w zzI}Voo;`Q&+?hFZ=A1cmR;^m~^5x5&J9j>L@?`h!-8XLBm@#9`E?s)!#EDa< zPMth?a_ZEnhYlT@J9qB?|Nj|C2Z}#g7#SG!7<52dL4IOji*cA<;GrYc@9x2zDZ^mI z_)Ne-VXi<>I3uGFCm+i)=Trlq0OqhOKLmP&IFCMRekkG1%Fyg+xg|^}N05n0QBaIK h+m)G1Q^~YLOTQ$1P2#4i>SoGj~EkU&q=Y=Qa`|< zcf0rIzVCUTbHc1vD>!DcaOC2CZc3%nWe^08@B7az%R)37g~eh4kw^p>h5^s>fa5sO zb^Y%OWLdt><#Lblc)aYoE`Lb84S_@=5#;mv6IE3!*=+U|9nZ0v!v)Y427>`ek_5$K z@vKlNyrfd83dWEzS{P#|19BUUM&LM3xK|W~PbQOP%d#$7t(G>M&1%TQ+bTf7hQnb9 zZ=Ih2W-^)6bUOV|uh*~e{uYnlw^m@=Ht;O>^FCHg6`ANfqOGRMo+wj5BbL?(^kx`9vTI*uH6G{{3(K6kq_m W^RtTvtU3z-0000jiTZwNl#ZpBr}lB%*KKu)m5)vs$bCx z=N$hr<+TVpoz9zW+XGG0^emUv6-B{A*mOGmm`o;L$OAI(^?Ff~B>ZqV@ZE05qbQQT z-|zYHc;s;$bHe0%wEQ^t`<;27hwXL?0e*rQV^CEUjYfl}VELXOhx7TI20?(?Y=(Bb zO=ny#7a7mzb5QMcI;Hs@?H2*UFqGfXXoP;hFY}J$V6j-BTCEZR3JGqv8N+r4`3a=p4N3B+aX`1MEyBH3K(kZ4K)d*8Kf%pS!Hk+taDsWvF<#Ji( zDYh&N^?Dtf&4v{c2==tqYLU{?NqO48Sgni=!+`Jm#Uid&tM~DEJP_mRX`0IBOb1$} l(C8sF`h4NH@E7|QU;y=E+f-s8{+9p%002ovPDHLkV1mME$2kB1 literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/item-add.gif b/www/plugins/spip-bonux-3/img_pack/item-add.gif new file mode 100644 index 0000000000000000000000000000000000000000..33faedbc0bed7acb7798fcfc4638f061fe6e81f2 GIT binary patch literal 571 zcmV-B0>u4CNk%w1VGsZi0OoiA{r>yJG9v2$Y$5x%KrZS+~Uuv(0j<Q*fs#Y@sBhwtv&+yqLIaXPq8p zm><&Rx@4Oeo5N?U!HLb`v%uh+jJr{%#DC%F)}Fp{WS1VEvV32S7>m13+33ZW!D7_q zz+R0RU5yv6)Pc3vjoahSScMbh@Yc%Wt+3UEjl5B|*N*1!+kvz|`TY0z`}JLn7@^2+ zzu=pov47+3)}pk6d#gHIgBqH|W1+rx(BQj&mr%6Gm3Xc*UXB;8)Pnu~{CluA$lk4K zo+8B8s$Y&8VU-!C&2*)=g|yd-;qKC_y^Htx^ktJGYMvv;+^MzLi|Fv&`uq5~(U^dl zQfZzcY@{Q};jHcS<6Vmx|Ns900000000000000000000000000A^8LW004LZEC2ui z01yBW000M=fOvv~goTEOhJ_%k-N?>#+SA;QP120q= z3@9vfY+8gvYb_lfSYl))I2tyEDNY4HTtGTwcWH)dIjS5WB0vBIGjI?&h>}Il6bOkT JN<0(@06Sh%6RrRN literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/item-add.png b/www/plugins/spip-bonux-3/img_pack/item-add.png new file mode 100644 index 0000000000000000000000000000000000000000..c180e0f0d2f208891b518fd64666189fde4c7d50 GIT binary patch literal 654 zcmV;90&)F`P)TZ_{SN{vNWfkY6dR2uo!-UI``pjD z-Pu{^7A%e}Q~0Ktc^|)d@Auv#aU5eaLa|9<|1MXa?uL=kk0I##pc2kxTf zwVxnMx1-C+3>Dr9Z6geX4JaW-Hu6PJ%Y#ul>*L(4)}JY1N)hmG!MJbQBu zjOvIZayXR%=RTpHP(kV^zk{q+fN7KjHTW42b^EMWrpF${tgiMJ5p5?8j0c`$KH`%OdFQvie#4E*p; zyV0lSc=jqAvPp(>KoYy)k>&RJ1NFME88ki0$xu+@25xwhJHawz^o*v{qbgpCFnX`* oe<7v(VC3|XT_FE`8~+M007UctJfa>Q+yDRo07*qoM6N<$f*N8f-2eap literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/item-remove.png b/www/plugins/spip-bonux-3/img_pack/item-remove.png new file mode 100644 index 0000000000000000000000000000000000000000..566f4f69a287a904ca5b0af9621fd78fcb473533 GIT binary patch literal 456 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ÐK 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 literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/tri_asc-12.png b/www/plugins/spip-bonux-3/img_pack/tri_asc-12.png new file mode 100644 index 0000000000000000000000000000000000000000..5f21f7b43d083efcd5e62ee64f50f77cc407f798 GIT binary patch literal 476 zcmV<20VDp2P)oa-mmr#Cl1X}*9%~f5n2QYsMc1oW zuU*idu@<+ij1&@DYo}F%Wkiu| zOJu6$%9_cW9I26R2&IsJF8u*B#xOTNjJJ;}uDO6Agu9HaB1bldT2P5{C`7A)5?4RZ!eF;wFW|J$#Es2}LD={g| zPNk{nBh}vnO%CoJpMT3zRO6f`2uYo!O&SJrcSSTPU!0jhrRHJ#-~^%TVFMXLd-^cD zdj}C=;cY-N7+%Xw99`sTFAs71$Fv~S6);5YPQpeav4oRcj>X$zu3JN+(M0K^0+%L) zc^En{@ci^x-{0BVV2qcYkwQBk5;U;&;{`)n)1Q-D8h06yT S2}t1p0000~}ciPv6v-qnsoX_E+l|i%n6aAe% zPz^{x`RHvAu)NVk(ip@1Yyp7}g#P0cr*oL0%wNCvQEPUwZ>z}9LzR&3_AcJ8H;_&m zxO2TsH(~e}yHc1!`GSRdyNk6(JMyVRq9;Ts7n{8uyk4zEA`90_;8e3x-a?URgoo>` zXx{-|gs>e2O{WjthfnY9{P=~XgNt+{&v&|FJO?AlsXtDVesfG zQaVSKZg2JR@?8}|(@<}1VddkO6P*b6dL#fkE;80M6-~jDHlp5yjV9~#cd__t6@%eE z0>+OG0*##?z(|=$qy@C`%!DO$qcnTtwrM2O2Z3|r5j>VWu?|U@8JOoMQCt7eUU{?h zj2ZDb&*f*XUMkN$kV=Msh&N)EwU{1btxvV*z0G!&jhg*Y#&JgbE5HCrfN?hX<3JSv O0000w67 literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/tri_asc-24.png b/www/plugins/spip-bonux-3/img_pack/tri_asc-24.png new file mode 100644 index 0000000000000000000000000000000000000000..cf55fbf8e2d9a03b7561a41de05ca58f185df909 GIT binary patch literal 786 zcmV+t1MU2YP)OzJNl5 z1qzBr6J6;>W8%h*EBCDY3ocD8iA(|t6oONB;-X$jk_6q*p{goO(@Z^o^k9YoK7RRbMZ#govW&}y%tv$ zX?XGEq2#2?gM)@ZHiY#K>^B-00wL=|y*|XkeOOi+tdqz=A4AvSa>z&wL=oum!ZfVE zUi6OM2mL;g0|SOIn20?v3=^hhVkjDf$L&PUEI=z)|JeF)z>l$^euM%(ekbD35jh6n z3k&LQ6_Gwa#)k)mkizHls3}h%B%fVVP^s;+(QO`7s(VPUZensIhG?)?qD{dCf&%5<==C;3x5=@9vi_pgQ4ujrJj$km-2PzFJqOte@gHSks=JLFEw2LF1 z#{i-ZC`6LfE=V9``Mt>z#3DiXdpx`p5sn|3Jn!B5QAZs#FQgMF>suOoa{p!mF;OQJ zzWMYD@7tSZ-T>Mc=hr@W$~ zRIZ_1tDjqZZnszHl#T(G(hGB=6St?skqBHa*V%2s7d(^S5Y19kH7sX;%>hsCfs=go z`dun9F*SV^Q*0%>I5+$LO-c-$oITM5CB>S!qDh$*D`!u%|9|LTC;b*+0F&(AN1dLU Q@c;k-07*qoM6N<$f`_DI2LJ#7 literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/tri_asc.png b/www/plugins/spip-bonux-3/img_pack/tri_asc.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a291828757be1eed3b5ff1a1c404148389737f GIT binary patch literal 477 zcmV<30V4j1P)`-o5Yphi1U}fveOiV+@)G_ct@71h!>iIF($j zc0UeGujeB-n*rkjPp>Ulrtw1#6*bYYo}EUk(?!qop!v*E`YfPi zp$sUv2$kNb*Pjb#C&yYkogSFT%$X#IYTZvh4XA&uF{ Tg~1d100000NkvXXu0mjfrK8R# literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/tri_desc-12.png b/www/plugins/spip-bonux-3/img_pack/tri_desc-12.png new file mode 100644 index 0000000000000000000000000000000000000000..c853769a8976edde34e1e08064b193cb3e1deaad GIT binary patch literal 462 zcmV;<0WtoGP)9J?Pi{@fOQ$_Vx ze|1$i34#FsS^VhYdeccdJBfsoHC@x}1yM#_ujAc&ZEuSUDGTvLBCDi=F~$vnKF*MK z;&^X*Q35j*2$0oE6}a#PL`*^wn-CZf3#`shBV`kA9x8Zge1Z}hioq8WTuKe8G$^H! z+S<}Ad|R#jP{+dLsErWR-aeqUw#S`-1ukkIw0OgOpsf^%a4FCWD07*qoM6N<$ Ef?PqwasU7T literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/tri_desc-16.png b/www/plugins/spip-bonux-3/img_pack/tri_desc-16.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9d043c88bb531d98ff36f3ce1781711d0557fc GIT binary patch literal 615 zcmV-t0+{`YP)QS8B zixAyr65kR6|0*Keg3{(70gT}@5$+ppu2Daf1)Cf{4Es=09|EVwTuk`mSa1J4AOWz6 z;*YPTDv%6ANZtr-g4Tc4+m?lV<~S30u=w;^V`IQzbObJpzLX%TG~#fyW`aGbV-DeR zeiokVqQTX(Gt-FeRfA^oKQ_t!lOQP#_9G^UJztv3Vlw67)rT57TV1ZEFneMep)&YX zZ*mXB07LssaX1XVej$e=<358|vC-K|DwbD+MCBY?VmGLKZE&uV7+B!;^G;O5Tny^9{Y zqQtK4`VbZ^)3e9LV(#q1(JO@;87Ccbhs{v9#q&Xqi?=VI2ery_QTU!`9XpvhcPcl3 zE0iHmb)+%;G1#u-ih8a3u(ck16r;YzkqQ0?FaS5`4GPWY4yOPB002ovPDHLkV1kU4 B7Ty2= literal 0 HcmV?d00001 diff --git a/www/plugins/spip-bonux-3/img_pack/tri_desc-24.png b/www/plugins/spip-bonux-3/img_pack/tri_desc-24.png new file mode 100644 index 0000000000000000000000000000000000000000..f34ae5447c5e80333ae69ed85600d655c904181e GIT binary patch literal 772 zcmV+f1N;1mP)F#>9&kPu_d-U+`!mO+5N9c;YWG@#e*YiHRmAO*Gh)M_MVB!m=!nBCrp? zneA@DB3da2C;4`EXTJIU=9}STI9=CamNEx378^c-!63YP`~KM+&!?va#EK}&ApPk6 zoh?xmfkVTa58DLp_xr)d+u&cz#&H}dssiIU zgWf=yOrj_tNfJD~dyAtI_4@cwOEAwx^9r5eKG-C!vq*?f?)8@-k}9@RBzJ$_4pF`O$^gNOh7kTIU&Ht z;1XDkudFOmaIMjTZ1I4B%9bA&exn`zxDWSZoat9aPoPpCF#pSfmof|aJy4aJ45UnY zoK!@al}CrGt5GWszs+PU0&FlcMgm^gNEn;33||T*(v#${)}Z9BCu0z1@py&gPM0uG z3D`YwIqYyPxlEfXEQ8Ov66wDYB*DyYti@Q8KC4V4O=kZc;C4Cb*xS4Nq|YPeszfJA zEr+cijYZ&e8O^~=a^Jq68{CwGiU=~hc \ No newline at end of file diff --git a/www/plugins/spip-bonux-3/inc/exporter_csv.php b/www/plugins/spip-bonux-3/inc/exporter_csv.php new file mode 100644 index 0000000..bad0aed --- /dev/null +++ b/www/plugins/spip-bonux-3/inc/exporter_csv.php @@ -0,0 +1,98 @@ + \ No newline at end of file diff --git a/www/plugins/spip-bonux-3/inc/importer_csv.php b/www/plugins/spip-bonux-3/inc/importer_csv.php new file mode 100644 index 0000000..f09d392 --- /dev/null +++ b/www/plugins/spip-bonux-3/inc/importer_csv.php @@ -0,0 +1,108 @@ +$heading) { + if ($header_type[$heading]=="array"){ + if (!isset($row[$heading])) + $row[$heading] = array(); + if (isset($data[$key]) AND strlen($data[$key])) + $row[$heading][]= $data[$key]; + } + else + $row[$heading]=(isset($data[$key])) ? $data[$key] : ''; + } + $return[]=$row; + } else { + $return[]=$data; + } + } + } + return $return; +} + diff --git a/www/plugins/spip-bonux-3/javascript/jquery.qtip-1.0.0-rc3.js b/www/plugins/spip-bonux-3/javascript/jquery.qtip-1.0.0-rc3.js new file mode 100644 index 0000000..b71c021 --- /dev/null +++ b/www/plugins/spip-bonux-3/javascript/jquery.qtip-1.0.0-rc3.js @@ -0,0 +1,2040 @@ +/*! +* jquery.qtip. The jQuery tooltip plugin +* +* Copyright (c) 2009 Craig Thompson +* http://craigsworks.com +* +* Licensed under MIT +* http://www.opensource.org/licenses/mit-license.php +* +* Launch : February 2009 +* Version : 1.0.0-rc3 +* Released: Tuesday 12th May, 2009 - 00:00 +* Debug: jquery.qtip.debug.js +*/ + +"use strict"; // Enable ECMAScript "strict" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ +/*jslint browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, bitwise: true, regexp: true, strict: true, newcap: true, immed: true */ + +/*global window: false, jQuery: false */ +(function ($) { + // Assign cache and event initialisation on document load + $(document).ready(function () { + // Adjust positions of the tooltips on window resize or scroll if enabled + var i; + $(window).bind('resize scroll', function (event) { + for (i = 0; i < $.fn.qtip.interfaces.length; i++) { + // Access current elements API + var api = $.fn.qtip.interfaces[i]; + + // Update position if resize or scroll adjustments are enabled + if(api && api.status && api.status.rendered && api.options.position.type !== 'static' && api.elements.tooltip.is(':visible') && + (api.options.position.adjust.scroll && event.type === 'scroll' || api.options.position.adjust.resize && event.type === 'resize')) { + // Queue the animation so positions are updated correctly + api.updatePosition(event, true); + } + } + }); + + // Hide unfocus toolipts on document mousedown + $(document).bind('mouseenter.qtip', function (event) { + if($(event.target).parents('div.qtip').length === 0) { + var tooltip = $('.qtipSelector'), + api = tooltip.qtip('api'); + + // Only hide if its visible and not the tooltips target + if(tooltip.is(':visible') && api && api.status && !api.status.disabled && $(event.target).add(api.elements.target).length > 1) { api.hide(event); } + } + }); + }); + + // Corner object parser + function Corner(corner) { + if(!corner){ return false; } + + this.x = String(corner).replace(/middle/i, 'center').match(/left|right|center/i)[0].toLowerCase(); + this.y = String(corner).replace(/middle/i, 'center').match(/top|bottom|center/i)[0].toLowerCase(); + this.offset = { left: 0, top: 0 }; + this.precedance = (corner.charAt(0).search(/^(t|b)/) > -1) ? 'y' : 'x'; + this.string = function(){ return (this.precedance === 'y') ? this.y+this.x : this.x+this.y; }; + } + + // Tip coordinates calculator + function calculateTip(corner, width, height) { + // Define tip coordinates in terms of height and width values + var tips = { + bottomright: [[0, 0], [width, height], [width, 0]], + bottomleft: [[0, 0], [width, 0], [0, height]], + topright: [[0, height], [width, 0], [width, height]], + topleft: [[0, 0], [0, height], [width, height]], + topcenter: [[0, height], [width / 2, 0], [width, height]], + bottomcenter: [[0, 0], [width, 0], [width / 2, height]], + rightcenter: [[0, 0], [width, height / 2], [0, height]], + leftcenter: [[width, 0], [width, height], [0, height / 2]] + }; + tips.lefttop = tips.bottomright; + tips.righttop = tips.bottomleft; + tips.leftbottom = tips.topright; + tips.rightbottom = tips.topleft; + + return tips[corner]; + } + + // Border coordinates calculator + function calculateBorders(radius) { + var borders; + + // Use canvas element if supported + if($('').get(0).getContext) { + borders = { + topLeft: [radius, radius], + topRight: [0, radius], + bottomLeft: [radius, 0], + bottomRight: [0, 0] + }; + } + + // Canvas not supported - Use VML (IE) + else if($.browser.msie) { + borders = { + topLeft: [-90, 90, 0], + topRight: [-90, 90, -radius], + bottomLeft: [90, 270, 0], + bottomRight: [90, 270, -radius] + }; + } + + return borders; + } + + + // Build a jQuery style object from supplied style object + function jQueryStyle(style, sub) { + var styleObj, i; + + styleObj = $.extend(true, {}, style); + for (i in styleObj) { + if(sub === true && (/(tip|classes)/i).test(i)) { delete styleObj[i]; } + else if(!sub && (/(width|border|tip|title|classes|user)/i).test(i)) { delete styleObj[i]; } + } + + return styleObj; + } + + // Sanitize styles + function sanitizeStyle(style) { + if(typeof style.tip !== 'object') { + style.tip = { corner: style.tip }; + } + if(typeof style.tip.size !== 'object') { + style.tip.size = { + width: style.tip.size, + height: style.tip.size + }; + } + if(typeof style.border !== 'object') { + style.border = { + width: style.border + }; + } + if(typeof style.width !== 'object') { + style.width = { + value: style.width + }; + } + if(typeof style.width.max === 'string') { style.width.max = parseInt(style.width.max.replace(/([0-9]+)/i, "$1"), 10); } + if(typeof style.width.min === 'string') { style.width.min = parseInt(style.width.min.replace(/([0-9]+)/i, "$1"), 10); } + + // Convert deprecated x and y tip values to width/height + if(typeof style.tip.size.x === 'number') { + style.tip.size.width = style.tip.size.x; + delete style.tip.size.x; + } + if(typeof style.tip.size.y === 'number') { + style.tip.size.height = style.tip.size.y; + delete style.tip.size.y; + } + + return style; + } + + // Build styles recursively with inheritance + function buildStyle() { + var self, i, styleArray, styleExtend, finalStyle, ieAdjust; + self = this; + + // Build style options from supplied arguments + styleArray = [true, {}]; + for(i = 0; i < arguments.length; i++){ styleArray.push(arguments[i]); } + styleExtend = [$.extend.apply($, styleArray)]; + + // Loop through each named style inheritance + while(typeof styleExtend[0].name === 'string') { + // Sanitize style data and append to extend array + styleExtend.unshift(sanitizeStyle($.fn.qtip.styles[styleExtend[0].name])); + } + + // Make sure resulting tooltip className represents final style + styleExtend.unshift(true, { + classes: { + tooltip: 'qtip-' + (arguments[0].name || 'defaults') + } + }, $.fn.qtip.styles.defaults); + + // Extend into a single style object + finalStyle = $.extend.apply($, styleExtend); + + // Adjust tip size if needed (IE 1px adjustment bug fix) + ieAdjust = ($.browser.msie) ? 1 : 0; + finalStyle.tip.size.width += ieAdjust; + finalStyle.tip.size.height += ieAdjust; + + // Force even numbers for pixel precision + if(finalStyle.tip.size.width % 2 > 0) { finalStyle.tip.size.width += 1; } + if(finalStyle.tip.size.height % 2 > 0) { finalStyle.tip.size.height += 1; } + + // Sanitize final styles tip corner value + if(finalStyle.tip.corner === true) { + if(self.options.position.corner.tooltip === 'center' && self.options.position.corner.target === 'center') { + finalStyle.tip.corner = false; + } + else { + finalStyle.tip.corner = self.options.position.corner.tooltip; + } + } + + return finalStyle; + } + + // Border canvas draw method + function drawBorder(canvas, coordinates, radius, color) { + // Create corner + var context = canvas.get(0).getContext('2d'); + context.fillStyle = color; + context.beginPath(); + context.arc(coordinates[0], coordinates[1], radius, 0, Math.PI * 2, false); + context.fill(); + } + + // Create borders using canvas and VML + function createBorder() { + var self, i, width, radius, color, coordinates, containers, size, betweenWidth, betweenCorners, borderTop, borderBottom, borderCoord, sideWidth, vertWidth; + self = this; + + // Destroy previous border elements, if present + self.elements.wrapper.find('.qtip-borderBottom, .qtip-borderTop').remove(); + + // Setup local variables + width = self.options.style.border.width; + radius = self.options.style.border.radius; + color = self.options.style.border.color || self.options.style.tip.color; + + // Calculate border coordinates + coordinates = calculateBorders(radius); + + // Create containers for the border shapes + containers = {}; + for (i in coordinates) { + // Create shape container + containers[i] = '
    '; + + // Canvas is supported + if($('').get(0).getContext) { containers[i] += ''; } + + // No canvas, but if it's IE use VML + else if($.browser.msie) { + size = radius * 2 + 3; + containers[i] += ''; + + } + + containers[i] += '
    '; + } + + // Create between corners elements + betweenWidth = self.getDimensions().width - (Math.max(width, radius) * 2); + betweenCorners = '
    '; + + // Create top border container + borderTop = '
    ' + containers.topLeft + containers.topRight + betweenCorners; + self.elements.wrapper.prepend(borderTop); + + // Create bottom border container + borderBottom = '
    ' + containers.bottomLeft + containers.bottomRight + betweenCorners; + self.elements.wrapper.append(borderBottom); + + // Draw the borders if canvas were used (Delayed til after DOM creation) + if($('').get(0).getContext) { + self.elements.wrapper.find('canvas').each(function () { + borderCoord = coordinates[$(this).parent('[rel]:first').attr('rel')]; + drawBorder.call(self, $(this), borderCoord, radius, color); + }); + } + + // Create a phantom VML element (IE won't show the last created VML element otherwise) + else if($.browser.msie) { self.elements.tooltip.append(''); } + + // Setup contentWrapper border + sideWidth = Math.max(radius, (radius + (width - radius))); + vertWidth = Math.max(width - radius, 0); + self.elements.contentWrapper.css({ + border: '0px solid ' + color, + borderWidth: vertWidth + 'px ' + sideWidth + 'px' + }); + } + + // Canvas tip drawing method + function drawTip(canvas, coordinates, color) { + // Setup properties + var context = canvas.get(0).getContext('2d'); + context.fillStyle = color; + + // Create tip + context.beginPath(); + context.moveTo(coordinates[0][0], coordinates[0][1]); + context.lineTo(coordinates[1][0], coordinates[1][1]); + context.lineTo(coordinates[2][0], coordinates[2][1]); + context.fill(); + } + + function positionTip(corner) { + var self, ieAdjust, positionAdjust, paddingCorner, paddingSize, newMargin; + self = this; + + // Return if tips are disabled or tip is not yet rendered + if(self.options.style.tip.corner === false || !self.elements.tip) { return; } + if(!corner) { corner = new Corner(self.elements.tip.attr('rel')); } + + // Setup adjustment variables + ieAdjust = positionAdjust = ($.browser.msie) ? 1 : 0; + + // Set initial position + self.elements.tip.css(corner[corner.precedance], 0); + + // Set position of tip to correct side + if(corner.precedance === 'y') { + // Adjustments for IE6 - 0.5px border gap bug + if($.browser.msie) { + if(parseInt($.browser.version.charAt(0), 10) === 6) { positionAdjust = corner.y === 'top' ? -3 : 1; } + else { positionAdjust = corner.y === 'top' ? 1 : 2; } + } + + if(corner.x === 'center') { + self.elements.tip.css({ + left: '50%', + marginLeft: -(self.options.style.tip.size.width / 2) + }); + } + else if(corner.x === 'left') { + self.elements.tip.css({ + left: self.options.style.border.radius - ieAdjust + }); + } + else { + self.elements.tip.css({ + right: self.options.style.border.radius + ieAdjust + }); + } + + if(corner.y === 'top') { + self.elements.tip.css({ + top: -positionAdjust + }); + } + else { + self.elements.tip.css({ + bottom: positionAdjust + }); + } + + } + else { + // Adjustments for IE6 - 0.5px border gap bug + if($.browser.msie) { + positionAdjust = (parseInt($.browser.version.charAt(0), 10) === 6) ? 1 : (corner.x === 'left' ? 1 : 2); + } + + if(corner.y === 'center') { + self.elements.tip.css({ + top: '50%', + marginTop: -(self.options.style.tip.size.height / 2) + }); + } + else if(corner.y === 'top') { + self.elements.tip.css({ + top: self.options.style.border.radius - ieAdjust + }); + } + else { + self.elements.tip.css({ + bottom: self.options.style.border.radius + ieAdjust + }); + } + + if(corner.x === 'left') { + self.elements.tip.css({ + left: -positionAdjust + }); + } + else { + self.elements.tip.css({ + right: positionAdjust + }); + } + } + + // Adjust tooltip padding to compensate for tip + paddingCorner = 'padding-' + corner[corner.precedance]; + paddingSize = self.options.style.tip.size[corner.precedance === 'x' ? 'width' : 'height']; + self.elements.tooltip.css('padding', 0).css(paddingCorner, paddingSize); + + // Match content margin to prevent gap bug in IE6 ONLY + if($.browser.msie && parseInt($.browser.version.charAt(0), 6) === 6) { + newMargin = parseInt(self.elements.tip.css('margin-top'), 10) || 0; + newMargin += parseInt(self.elements.content.css('margin-top'), 10) || 0; + + self.elements.tip.css({ marginTop: newMargin }); + } + } + + // Create tip using canvas and VML + function createTip(corner) { + var self, color, coordinates, coordsize, path, tip; + self = this; + + // Destroy previous tip, if there is one + if(self.elements.tip !== null) { self.elements.tip.remove(); } + + // Setup color and corner values + color = self.options.style.tip.color || self.options.style.border.color; + if(self.options.style.tip.corner === false) { return; } + else if(!corner) { corner = new Corner(self.options.style.tip.corner); } + + // Calculate tip coordinates + coordinates = calculateTip(corner.string(), self.options.style.tip.size.width, self.options.style.tip.size.height); + + // Create tip element + self.elements.tip = '
    '; + + // Attach new tip to tooltip element + self.elements.tooltip.prepend(self.elements.tip); + + // Use canvas element if supported + if($('').get(0).getContext) { tip = ''; } + + // Canvas not supported - Use VML (IE) + else if($.browser.msie) { + // Create coordize and tip path using tip coordinates + coordsize = self.options.style.tip.size.width + ',' + self.options.style.tip.size.height; + path = 'm' + coordinates[0][0] + ',' + coordinates[0][1]; + path += ' l' + coordinates[1][0] + ',' + coordinates[1][1]; + path += ' ' + coordinates[2][0] + ',' + coordinates[2][1]; + path += ' xe'; + + // Create VML element + tip = ''; + + // Create a phantom VML element (IE won't show the last created VML element otherwise) + tip += ''; + + // Prevent tooltip appearing above the content (IE z-index bug) + self.elements.contentWrapper.css('position', 'relative'); + } + + // Create element reference and append vml/canvas + self.elements.tip = self.elements.tooltip.find('.' + self.options.style.classes.tip).eq(0); + self.elements.tip.html(tip); + + // Draw the canvas tip (Delayed til after DOM creation) + if($('').get(0).getContext) { drawTip.call(self, self.elements.tip.find('canvas:first'), coordinates, color); } + + // Fix IE small tip bug + if(corner.y === 'top' && $.browser.msie && parseInt($.browser.version.charAt(0), 10) === 6) { + self.elements.tip.css({ + marginTop: -4 + }); + } + + // Set the tip position + positionTip.call(self, corner); + } + + // Create title bar for content + function createTitle() { + var self = this; + + // Destroy previous title element, if present + if(self.elements.title !== null) { self.elements.title.remove(); } + + // Append new ARIA attribute to tooltip + self.elements.tooltip.attr('aria-labelledby', 'qtip-' + self.id + '-title'); + + // Create title element + self.elements.title = $('
    ').css(jQueryStyle(self.options.style.title, true)).css({ + zoom: ($.browser.msie) ? 1 : 0 + }).prependTo(self.elements.contentWrapper); + + // Update title with contents if enabled + if(self.options.content.title.text) { self.updateTitle.call(self, self.options.content.title.text); } + + // Create title close buttons if enabled + if(self.options.content.title.button !== false && typeof self.options.content.title.button === 'string') { + self.elements.button = $('').css(jQueryStyle(self.options.style.button, true)).html(self.options.content.title.button).prependTo(self.elements.title).click(function (event) { + if(!self.status.disabled) { self.hide(event); } + }); + } + } + + // Assign hide and show events + function assignEvents() { + var self, showTarget, hideTarget, inactiveEvents; + self = this; + + // Setup event target variables + showTarget = self.options.show.when.target; + hideTarget = self.options.hide.when.target; + + // Add tooltip as a hideTarget is its fixed + if(self.options.hide.fixed) { hideTarget = hideTarget.add(self.elements.tooltip); } + + // Define events which reset the 'inactive' event handler + inactiveEvents = ['click', 'dblclick', 'mousedown', 'mouseup', 'mousemove', + 'mouseout', 'mouseenter', 'mouseleave', 'mouseover']; + + // Define 'inactive' event timer method + function inactiveMethod(event) { + if(self.status.disabled === true) { return; } + + //Clear and reset the timer + clearTimeout(self.timers.inactive); + self.timers.inactive = setTimeout(function () { + // Unassign 'inactive' events + $(inactiveEvents).each(function () { + hideTarget.unbind(this + '.qtip-inactive'); + self.elements.content.unbind(this + '.qtip-inactive'); + }); + + // Hide the tooltip + self.hide(event); + }, self.options.hide.delay); + } + + // Check if the tooltip is 'fixed' + if(self.options.hide.fixed === true) { + self.elements.tooltip.bind('mouseover.qtip', function () { + if(self.status.disabled === true) { return; } + + // Reset the hide timer + clearTimeout(self.timers.hide); + }); + } + + // Define show event method + function showMethod(event) { + if(self.status.disabled === true) { return; } + + // If set, hide tooltip when inactive for delay period + if(self.options.hide.when.event === 'inactive') { + // Assign each reset event + $(inactiveEvents).each(function () { + hideTarget.bind(this + '.qtip-inactive', inactiveMethod); + self.elements.content.bind(this + '.qtip-inactive', inactiveMethod); + }); + + // Start the inactive timer + inactiveMethod(); + } + + // Clear hide timers + clearTimeout(self.timers.show); + clearTimeout(self.timers.hide); + + // Start show timer + if(self.options.show.delay > 0) { + self.timers.show = setTimeout(function () { + self.show(event); + }, self.options.show.delay); + } + else { + self.show(event); + } + } + + // Define hide event method + function hideMethod(event) { + if(self.status.disabled === true) { return; } + + // Prevent hiding if tooltip is fixed and event target is the tooltip + if(self.options.hide.fixed === true && (/mouse(out|leave)/i).test(self.options.hide.when.event) && $(event.relatedTarget).parents('div.qtip[id^="qtip"]').length > 0) { + // Prevent default and popagation + event.stopPropagation(); + event.preventDefault(); + + // Reset the hide timer + clearTimeout(self.timers.hide); + return false; + } + + // Clear timers and stop animation queue + clearTimeout(self.timers.show); + clearTimeout(self.timers.hide); + self.elements.tooltip.stop(true, true); + + // If tooltip has displayed, start hide timer + self.timers.hide = setTimeout(function () { + self.hide(event); + }, self.options.hide.delay); + } + + // If mouse is the target, update tooltip position on mousemove + if(self.options.position.target === 'mouse' && self.options.position.type !== 'static') { + showTarget.bind('mousemove.qtip', function (event) { + // Set the new mouse positions if adjustment is enabled + self.cache.mouse = { + left: event.pageX, + top: event.pageY + }; + + // Update the tooltip position only if the tooltip is visible and adjustment is enabled + if(self.status.disabled === false && self.options.position.adjust.mouse === true && self.options.position.type !== 'static' && self.elements.tooltip.css('display') !== 'none') { + self.updatePosition(event); + } + }); + } + + // Both events and targets are identical, apply events using a toggle + if((self.options.show.when.target.add(self.options.hide.when.target).length === 1 && + self.options.show.when.event === self.options.hide.when.event && self.options.hide.when.event !== 'inactive') || + self.options.hide.when.event === 'unfocus') { + self.cache.toggle = 0; + // Use a toggle to prevent hide/show conflicts + showTarget.bind(self.options.show.when.event + '.qtip', function (event) { + if(self.cache.toggle === 0) { showMethod(event); } + else { hideMethod(event); } + }); + } + + // Events are not identical, bind normally + else { + showTarget.bind(self.options.show.when.event + '.qtip', showMethod); + + // If the hide event is not 'inactive', bind the hide method + if(self.options.hide.when.event !== 'inactive') { hideTarget.bind(self.options.hide.when.event + '.qtip', hideMethod); } + } + + // Focus the tooltip on mouseover + if((/(fixed|absolute)/).test(self.options.position.type)) { self.elements.tooltip.bind('mouseover.qtip', self.focus); } + } + + // BGIFRAME JQUERY PLUGIN ADAPTION + // Special thanks to Brandon Aaron for this plugin + // http://plugins.jquery.com/project/bgiframe + function bgiframe() { + var self, html, dimensions; + self = this; + dimensions = self.getDimensions(); + + // Setup iframe HTML string + html = '