Browse Source

On sort chosen dans un plugin externe...

v1
marcimat@rezo.net 10 years ago
parent
commit
bae6ca85d1
  1. 8
      .gitattributes
  2. 2
      formulaires/inc-editer_liens_roles.html
  3. 20
      javascript/roles.js
  4. BIN
      lib/chosen/chosen-sprite.png
  5. 396
      lib/chosen/chosen.css
  6. 1003
      lib/chosen/chosen.jquery.js
  7. 10
      lib/chosen/chosen.jquery.min.js
  8. 1007
      lib/chosen/chosen.proto.js
  9. 10
      lib/chosen/chosen.proto.min.js
  10. 3
      paquet.xml
  11. 28
      prive/style_prive_plugin_roles.html
  12. BIN
      prive/themes/spip/images/ouvrir_doux-16.png
  13. 9
      roles_pipelines.php

8
.gitattributes vendored

@ -6,20 +6,12 @@ formulaires/inc-editer_liens_actions_roles.html -text
formulaires/inc-editer_liens_roles.html -text
inc/roles.php -text
javascript/bootstrap-dropdown.js -text
javascript/roles.js -text
lang/paquet-roles_fr.php -text
lang/roles_fr.php -text
lib/chosen/chosen-sprite.png -text
lib/chosen/chosen.css -text
lib/chosen/chosen.jquery.js -text
lib/chosen/chosen.jquery.min.js -text
lib/chosen/chosen.proto.js -text
lib/chosen/chosen.proto.min.js -text
/notes.txt -text
/paquet.xml -text
prive/style_prive_plugin_roles.html -text
prive/themes/spip/images/inserer-8.png -text
prive/themes/spip/images/ouvrir_doux-16.png -text
prive/themes/spip/images/roles-128.png -text
prive/themes/spip/images/roles-32.png -text
prive/themes/spip/images/roles-64.png -text

2
formulaires/inc-editer_liens_roles.html

@ -1,6 +1,6 @@
#SET{exclus,#ENV{id}|roles_presents_sur_id{#ENV{objet_source},#ENV{objet},#ENV{id_objet},#ENV{_objet_lien}}}
<B_roles>
<select class="selection_roles" name="definir_roles\[#ENV{cle}\]\[\]" title="<:roles:selectionner_roles|attribut_html:>"
<select class="selection_roles chosen" name="definir_roles\[#ENV{cle}\]\[\]" title="<:roles:selectionner_roles|attribut_html:>"
multiple="multiple" data-placeholder="<:roles:choisir_role|attribut_html:>">
<BOUCLE_roles(DATA){source table,#ENV{roles/roles/choix}}{valeur !IN #GET{exclus}}>
<option value="#VALEUR"[ (#VALEUR|in_any{#ENV{definir_roles/#ENV{cle}}})selected='selected']>

20
javascript/roles.js

@ -1,20 +0,0 @@
;(function ($) {
jQuery(document).ready(function(){
spip_chosen = function() {
/* Charger chosen sur les sélecteurs de roles */
$("select.selection_roles").chosen();
$('.chzn-container').each(function (index) {
/* remettre la bonne taille des éléments qui change avec la
* présence de chosen du fait du changement de la largeur de colonne */
select = $(this).prev().show(); /* il faut le repasser visible pour avoir une taille correcte ! */
width = select.width();
select.hide();
$(this).css('width', width).find("> .chzn-drop").css('width', width - 2);
/* Si un title était sur le sélect d'origine, le remettre sur le html de Chosen */
if (title = select.attr('title')) { $(this).attr('title', title); }
});
}
spip_chosen();
onAjaxLoad(spip_chosen);
});
})(jQuery);

BIN
lib/chosen/chosen-sprite.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 559 B

396
lib/chosen/chosen.css

@ -1,396 +0,0 @@
/* @group Base */
.chzn-container {
font-size: 13px;
position: relative;
display: inline-block;
zoom: 1;
*display: inline;
}
.chzn-container .chzn-drop {
background: #fff;
border: 1px solid #aaa;
border-top: 0;
position: absolute;
top: 29px;
left: 0;
-webkit-box-shadow: 0 4px 5px rgba(0,0,0,.15);
-moz-box-shadow : 0 4px 5px rgba(0,0,0,.15);
-o-box-shadow : 0 4px 5px rgba(0,0,0,.15);
box-shadow : 0 4px 5px rgba(0,0,0,.15);
z-index: 1010;
}
/* @end */
/* @group Single Chosen */
.chzn-container-single .chzn-single {
background-color: #ffffff;
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0 );
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
background-image: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background-image: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background-image: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background-image: -ms-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background-image: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
-webkit-border-radius: 5px;
-moz-border-radius : 5px;
border-radius : 5px;
-moz-background-clip : padding;
-webkit-background-clip: padding-box;
background-clip : padding-box;
border: 1px solid #aaaaaa;
-webkit-box-shadow: 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
-moz-box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
box-shadow : 0 0 3px #ffffff inset, 0 1px 1px rgba(0,0,0,0.1);
display: block;
overflow: hidden;
white-space: nowrap;
position: relative;
height: 23px;
line-height: 24px;
padding: 0 0 0 8px;
color: #444444;
text-decoration: none;
}
.chzn-container-single .chzn-default {
color: #999;
}
.chzn-container-single .chzn-single span {
margin-right: 26px;
display: block;
overflow: hidden;
white-space: nowrap;
-o-text-overflow: ellipsis;
-ms-text-overflow: ellipsis;
text-overflow: ellipsis;
}
.chzn-container-single .chzn-single abbr {
display: block;
position: absolute;
right: 26px;
top: 6px;
width: 12px;
height: 13px;
font-size: 1px;
background: url('chosen-sprite.png') right top no-repeat;
}
.chzn-container-single .chzn-single abbr:hover {
background-position: right -11px;
}
.chzn-container-single.chzn-disabled .chzn-single abbr:hover {
background-position: right top;
}
.chzn-container-single .chzn-single div {
position: absolute;
right: 0;
top: 0;
display: block;
height: 100%;
width: 18px;
}
.chzn-container-single .chzn-single div b {
background: url('chosen-sprite.png') no-repeat 0 0;
display: block;
width: 100%;
height: 100%;
}
.chzn-container-single .chzn-search {
padding: 3px 4px;
position: relative;
margin: 0;
white-space: nowrap;
z-index: 1010;
}
.chzn-container-single .chzn-search input {
background: #fff url('chosen-sprite.png') no-repeat 100% -22px;
background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
background: url('chosen-sprite.png') no-repeat 100% -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: url('chosen-sprite.png') no-repeat 100% -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: url('chosen-sprite.png') no-repeat 100% -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: url('chosen-sprite.png') no-repeat 100% -22px, -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: url('chosen-sprite.png') no-repeat 100% -22px, linear-gradient(top, #eeeeee 1%, #ffffff 15%);
margin: 1px 0;
padding: 4px 20px 4px 5px;
outline: 0;
border: 1px solid #aaa;
font-family: sans-serif;
font-size: 1em;
}
.chzn-container-single .chzn-drop {
-webkit-border-radius: 0 0 4px 4px;
-moz-border-radius : 0 0 4px 4px;
border-radius : 0 0 4px 4px;
-moz-background-clip : padding;
-webkit-background-clip: padding-box;
background-clip : padding-box;
}
/* @end */
.chzn-container-single-nosearch .chzn-search input {
position: absolute;
left: -9000px;
}
/* @group Multi Chosen */
.chzn-container-multi .chzn-choices {
background-color: #fff;
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
background-image: -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background-image: -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background-image: -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background-image: -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background-image: linear-gradient(top, #eeeeee 1%, #ffffff 15%);
border: 1px solid #aaa;
margin: 0;
padding: 0;
cursor: text;
overflow: hidden;
height: auto !important;
height: 1%;
position: relative;
}
.chzn-container-multi .chzn-choices li {
float: left;
list-style: none;
}
.chzn-container-multi .chzn-choices .search-field {
white-space: nowrap;
margin: 0;
padding: 0;
}
.chzn-container-multi .chzn-choices .search-field input {
color: #666;
background: transparent !important;
border: 0 !important;
font-family: sans-serif;
font-size: 100%;
height: 15px;
padding: 5px;
margin: 1px 0;
outline: 0;
-webkit-box-shadow: none;
-moz-box-shadow : none;
-o-box-shadow : none;
box-shadow : none;
}
.chzn-container-multi .chzn-choices .search-field .default {
color: #999;
}
.chzn-container-multi .chzn-choices .search-choice {
-webkit-border-radius: 3px;
-moz-border-radius : 3px;
border-radius : 3px;
-moz-background-clip : padding;
-webkit-background-clip: padding-box;
background-clip : padding-box;
background-color: #e4e4e4;
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f4f4', endColorstr='#eeeeee', GradientType=0 );
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -ms-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
-webkit-box-shadow: 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
-moz-box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
box-shadow : 0 0 2px #ffffff inset, 0 1px 0 rgba(0,0,0,0.05);
color: #333;
border: 1px solid #aaaaaa;
line-height: 13px;
padding: 3px 20px 3px 5px;
margin: 3px 0 3px 5px;
position: relative;
cursor: default;
}
.chzn-container-multi .chzn-choices .search-choice-focus {
background: #d4d4d4;
}
.chzn-container-multi .chzn-choices .search-choice .search-choice-close {
display: block;
position: absolute;
right: 3px;
top: 4px;
width: 12px;
height: 13px;
font-size: 1px;
background: url('chosen-sprite.png') right top no-repeat;
}
.chzn-container-multi .chzn-choices .search-choice .search-choice-close:hover {
background-position: right -11px;
}
.chzn-container-multi .chzn-choices .search-choice-focus .search-choice-close {
background-position: right -11px;
}
/* @end */
/* @group Results */
.chzn-container .chzn-results {
margin: 0 4px 4px 0;
max-height: 240px;
padding: 0 0 0 4px;
position: relative;
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.chzn-container-multi .chzn-results {
margin: -1px 0 0;
padding: 0;
}
.chzn-container .chzn-results li {
display: none;
line-height: 15px;
padding: 5px 6px;
margin: 0;
list-style: none;
}
.chzn-container .chzn-results .active-result {
cursor: pointer;
display: list-item;
}
.chzn-container .chzn-results .highlighted {
background-color: #3875d7;
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#3875d7', endColorstr='#2a62bc', GradientType=0 );
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
background-image: -webkit-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
background-image: -moz-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
background-image: -o-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
background-image: -ms-linear-gradient(top, #3875d7 20%, #2a62bc 90%);
background-image: linear-gradient(top, #3875d7 20%, #2a62bc 90%);
color: #fff;
}
.chzn-container .chzn-results li em {
background: #feffde;
font-style: normal;
}
.chzn-container .chzn-results .highlighted em {
background: transparent;
}
.chzn-container .chzn-results .no-results {
background: #f4f4f4;
display: list-item;
}
.chzn-container .chzn-results .group-result {
cursor: default;
color: #999;
font-weight: bold;
}
.chzn-container .chzn-results .group-option {
padding-left: 15px;
}
.chzn-container-multi .chzn-drop .result-selected {
display: none;
}
.chzn-container .chzn-results-scroll {
background: white;
margin: 0 4px;
position: absolute;
text-align: center;
width: 321px; /* This should by dynamic with js */
z-index: 1;
}
.chzn-container .chzn-results-scroll span {
display: inline-block;
height: 17px;
text-indent: -5000px;
width: 9px;
}
.chzn-container .chzn-results-scroll-down {
bottom: 0;
}
.chzn-container .chzn-results-scroll-down span {
background: url('chosen-sprite.png') no-repeat -4px -3px;
}
.chzn-container .chzn-results-scroll-up span {
background: url('chosen-sprite.png') no-repeat -22px -3px;
}
/* @end */
/* @group Active */
.chzn-container-active .chzn-single {
-webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);
-moz-box-shadow : 0 0 5px rgba(0,0,0,.3);
-o-box-shadow : 0 0 5px rgba(0,0,0,.3);
box-shadow : 0 0 5px rgba(0,0,0,.3);
border: 1px solid #5897fb;
}
.chzn-container-active .chzn-single-with-drop {
border: 1px solid #aaa;
-webkit-box-shadow: 0 1px 0 #fff inset;
-moz-box-shadow : 0 1px 0 #fff inset;
-o-box-shadow : 0 1px 0 #fff inset;
box-shadow : 0 1px 0 #fff inset;
background-color: #eee;
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0 );
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
background-image: -webkit-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
background-image: -moz-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
background-image: -o-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
background-image: -ms-linear-gradient(top, #eeeeee 20%, #ffffff 80%);
background-image: linear-gradient(top, #eeeeee 20%, #ffffff 80%);
-webkit-border-bottom-left-radius : 0;
-webkit-border-bottom-right-radius: 0;
-moz-border-radius-bottomleft : 0;
-moz-border-radius-bottomright: 0;
border-bottom-left-radius : 0;
border-bottom-right-radius: 0;
}
.chzn-container-active .chzn-single-with-drop div {
background: transparent;
border-left: none;
}
.chzn-container-active .chzn-single-with-drop div b {
background-position: -18px 1px;
}
.chzn-container-active .chzn-choices {
-webkit-box-shadow: 0 0 5px rgba(0,0,0,.3);
-moz-box-shadow : 0 0 5px rgba(0,0,0,.3);
-o-box-shadow : 0 0 5px rgba(0,0,0,.3);
box-shadow : 0 0 5px rgba(0,0,0,.3);
border: 1px solid #5897fb;
}
.chzn-container-active .chzn-choices .search-field input {
color: #111 !important;
}
/* @end */
/* @group Disabled Support */
.chzn-disabled {
cursor: default;
opacity:0.5 !important;
}
.chzn-disabled .chzn-single {
cursor: default;
}
.chzn-disabled .chzn-choices .search-choice .search-choice-close {
cursor: default;
}
/* @group Right to Left */
.chzn-rtl { text-align: right; }
.chzn-rtl .chzn-single { padding: 0 8px 0 0; overflow: visible; }
.chzn-rtl .chzn-single span { margin-left: 26px; margin-right: 0; direction: rtl; }
.chzn-rtl .chzn-single div { left: 3px; right: auto; }
.chzn-rtl .chzn-single abbr {
left: 26px;
right: auto;
}
.chzn-rtl .chzn-choices .search-field input { direction: rtl; }
.chzn-rtl .chzn-choices li { float: right; }
.chzn-rtl .chzn-choices .search-choice { padding: 3px 5px 3px 19px; margin: 3px 5px 3px 0; }
.chzn-rtl .chzn-choices .search-choice .search-choice-close { left: 4px; right: auto; background-position: right top;}
.chzn-rtl.chzn-container-single .chzn-results { margin: 0 0 4px 4px; padding: 0 4px 0 0; }
.chzn-rtl .chzn-results .group-option { padding-left: 0; padding-right: 15px; }
.chzn-rtl.chzn-container-active .chzn-single-with-drop div { border-right: none; }
.chzn-rtl .chzn-search input {
background: #fff url('chosen-sprite.png') no-repeat -38px -22px;
background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
background: url('chosen-sprite.png') no-repeat -38px -22px, -webkit-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: url('chosen-sprite.png') no-repeat -38px -22px, -moz-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: url('chosen-sprite.png') no-repeat -38px -22px, -o-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: url('chosen-sprite.png') no-repeat -38px -22px, -ms-linear-gradient(top, #eeeeee 1%, #ffffff 15%);
background: url('chosen-sprite.png') no-repeat -38px -22px, linear-gradient(top, #eeeeee 1%, #ffffff 15%);
padding: 4px 5px 4px 20px;
direction: rtl;
}
/* @end */

1003
lib/chosen/chosen.jquery.js vendored

File diff suppressed because it is too large Load Diff

10
lib/chosen/chosen.jquery.min.js vendored

File diff suppressed because one or more lines are too long

1007
lib/chosen/chosen.proto.js

File diff suppressed because it is too large Load Diff

10
lib/chosen/chosen.proto.min.js vendored

File diff suppressed because one or more lines are too long

3
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="roles"
categorie="outil"
version="1.0.1"
version="1.1.0"
etat="dev"
compatibilite="[3.0.0-dev;3.1.*]"
logo="prive/themes/spip/images/roles-64.png"
@ -19,4 +19,5 @@
<pipeline nom="jquery_plugins" inclure="roles_pipelines.php" />
<pipeline nom="header_prive_css" inclure="roles_pipelines.php" />
<necessite nom="chosen" compatibilite="[1.0.0;]" />
</paquet>

28
prive/style_prive_plugin_roles.html

@ -1,9 +1,6 @@
/* alignement des listes lorsqu'elles sont sur 2 lignes */
.liste-objets-associer td {vertical-align:middle;}
.liste-objets-associer td {vertical-align:middle;}
/* quelques modifs de chosen */
.liste-objets-associer .chzn-container { font-size:1em; top:3px; }
.liste-objets-associer .chzn-container .chzn-results li { padding:5px 6px; }
/* gérer le sélecteur dropdown, des titres dedans, les boutons.link */
.dropdown-menu .dropdown-header {font-weight:bold; color:#666;}
@ -13,31 +10,6 @@
}
.dropdown-menu button.link {border-radius:0; box-shadow:none;}
#SET{start,#999}#SET{stop,#888}
/* couleurs de chosen */
.chzn-container .chzn-results .highlighted {
background-color: #444;
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#GET{start}', endColorstr='#GET{stop}', GradientType=0 );
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #GET{start}), color-stop(90%, #GET{stop}));
background-image: -webkit-linear-gradient(top, [(#GET{start})] 20%, [(#GET{stop})] 90%);
background-image: -moz-linear-gradient(top, [(#GET{start})] 20%, [(#GET{stop})] 90%);
background-image: -o-linear-gradient(top, [(#GET{start})] 20%, [(#GET{stop})] 90%);
background-image: -ms-linear-gradient(top, [(#GET{start})] 20%, [(#GET{stop})] 90%);
background-image: linear-gradient(top, [(#GET{start})] 20%, [(#GET{stop})] 90%);
color: #fff;
}
.chzn-container-multi .chzn-choices {
border-color:#ccc;
background:white [url((#CHEMIN_IMAGE{ouvrir_doux-16.png}|image_gamma{70}|extraire_attribut{src}|url_absolue))] right 50% no-repeat;
}
.chzn-container-multi .chzn-choices:hover {
background-image:[url((#CHEMIN_IMAGE{ouvrir_doux-16.png}|url_absolue))];
}
.chzn-container-active .chzn-choices {
border-color:#999;
}
/* adapter le dropdown "modifier" et le caler à droite */
table .role .btn-group:before,

BIN
prive/themes/spip/images/ouvrir_doux-16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 B

9
roles_pipelines.php

@ -10,7 +10,7 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* Ajoute Chosen & bootstrap (minimal) aux plugins chargés
* Ajoute Bootstrap (minimal) aux plugins chargés
*
* @param array $flux
* Liste des js chargés
@ -18,24 +18,19 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* Liste complétée des js chargés
**/
function roles_jquery_plugins($flux) {
$flux[] = 'lib/chosen/chosen.jquery.js';
$flux[] = 'javascript/bootstrap-dropdown.js';
$flux[] = 'javascript/roles.js';
return $flux;
}
/**
* Ajoute Chosen & bootstrap (minimal) aux css chargées
* Ajoute Bootstrap (minimal) aux css chargées
*
* @param string $texte Contenu du head HTML concernant les CSS
* @return string Contenu du head HTML concernant les CSS
**/
function roles_header_prive_css($texte) {
$css = find_in_path('lib/chosen/chosen.css');
$texte .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n";
$css = find_in_path('css/bootstrap-button-dropdown.css');
$texte .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n";

Loading…
Cancel
Save