Welcome, Guest
Username: Password: Remember me

TOPIC: [FIXED] Icons: better compatibility

Icons: better compatibility 24 Sep 2013 13:00 #11181

  • Tomaselli
  • Tomaselli's Avatar
  • Offline
  • Elite Member
  • Posts: 293
  • Thank you received: 87
  • Karma: 46
for a better compatibility with other 3rd part extensions using already the bootstrap icons with the "icon-" prefix, I would just add a "glyphicon" class to the icon DOM element (it could be done in PHP at the output process for jcook-components OR by some JS script to fix existing icons in the page) and then modify the ROOT/administrator/components/com_mycomponent/dom/assets/glyphicon/css/icons.css in this way:
.glyphicon[class^="icon-"]:before,
.glyphicon[class*=" icon-"]:before{
	content: none;
	font-family: inherit;
}

.glyphicon[class^="icon-"],
.glyphicon[class*=" icon-"] {
	background-image: url("../img/glyphicon.png") !important;	
	display: inline-block !important;
	width: 14px !important;
	height: 14px !important;
	line-height: 14px !important;
	vertical-align: text-top !important;
	background-repeat: no-repeat !important;
	// margin-top: 1px !important;  /* NO NEEDED */
}

/* White icons */
.glyphicon.icon-white {
  background-image: url("../img/glyphicon-white.png") !important;
}


/* Icons map */
.glyphicon.icon-glass{background-position:0 0;}
.glyphicon.icon-music{background-position:-24px 0;}
.glyphicon.icon-search{background-position:-48px 0;}
.glyphicon.icon-envelope{background-position:-72px 0;}
.glyphicon.icon-heart{background-position:-96px 0;}
.glyphicon.icon-star{background-position:-120px 0;}
.glyphicon.icon-star-empty{background-position:-144px 0;}
.glyphicon.icon-user{background-position:-168px 0;}
.glyphicon.icon-film{background-position:-192px 0;}
.glyphicon.icon-th-large{background-position:-216px 0;}
.glyphicon.icon-th{background-position:-240px 0;}
.glyphicon.icon-th-list{background-position:-264px 0;}
.glyphicon.icon-ok{background-position:-288px 0;}
.glyphicon.icon-remove{background-position:-312px 0;}
.glyphicon.icon-zoom-in{background-position:-336px 0;}
.glyphicon.icon-zoom-out{background-position:-360px 0;}
.glyphicon.icon-off{background-position:-384px 0;}
.glyphicon.icon-signal{background-position:-408px 0;}
.glyphicon.icon-cog{background-position:-432px 0;}
.glyphicon.icon-trash{background-position:-456px 0;}
.glyphicon.icon-home{background-position:0 -24px;}
.glyphicon.icon-file{background-position:-24px -24px;}
.glyphicon.icon-time{background-position:-48px -24px;}
.glyphicon.icon-road{background-position:-72px -24px;}
.glyphicon.icon-download-alt{background-position:-96px -24px;}
.glyphicon.icon-download{background-position:-120px -24px;}
.glyphicon.icon-upload{background-position:-144px -24px;}
.glyphicon.icon-inbox{background-position:-168px -24px;}
.glyphicon.icon-play-circle{background-position:-192px -24px;}
.glyphicon.icon-repeat{background-position:-216px -24px;}
.glyphicon.icon-refresh{background-position:-240px -24px;}
.glyphicon.icon-list-alt{background-position:-264px -24px;}
.glyphicon.icon-lock{background-position:-287px -24px;}
.glyphicon.icon-flag{background-position:-312px -24px;}
.glyphicon.icon-headphones{background-position:-336px -24px;}
.glyphicon.icon-volume-off{background-position:-360px -24px;}
.glyphicon.icon-volume-down{background-position:-384px -24px;}
.glyphicon.icon-volume-up{background-position:-408px -24px;}
.glyphicon.icon-qrcode{background-position:-432px -24px;}
.glyphicon.icon-barcode{background-position:-456px -24px;}
.glyphicon.icon-tag{background-position:0 -48px;}
.glyphicon.icon-tags{background-position:-25px -48px;}
.glyphicon.icon-book{background-position:-48px -48px;}
.glyphicon.icon-bookmark{background-position:-72px -48px;}
.glyphicon.icon-print{background-position:-96px -48px;}
.glyphicon.icon-camera{background-position:-120px -48px;}
.glyphicon.icon-font{background-position:-144px -48px;}
.glyphicon.icon-bold{background-position:-167px -48px;}
.glyphicon.icon-italic{background-position:-192px -48px;}
.glyphicon.icon-text-height{background-position:-216px -48px;}
.glyphicon.icon-text-width{background-position:-240px -48px;}
.glyphicon.icon-align-left{background-position:-264px -48px;}
.glyphicon.icon-align-center{background-position:-288px -48px;}
.glyphicon.icon-align-right{background-position:-312px -48px;}
.glyphicon.icon-align-justify{background-position:-336px -48px;}
.glyphicon.icon-list{background-position:-360px -48px;}
.glyphicon.icon-indent-left{background-position:-384px -48px;}
.glyphicon.icon-indent-right{background-position:-408px -48px;}
.glyphicon.icon-facetime-video{background-position:-432px -48px;}
.glyphicon.icon-picture{background-position:-456px -48px;}
.glyphicon.icon-pencil{background-position:0 -72px;}
.glyphicon.icon-map-marker{background-position:-24px -72px;}
.glyphicon.icon-adjust{background-position:-48px -72px;}
.glyphicon.icon-tint{background-position:-72px -72px;}
.glyphicon.icon-edit{background-position:-96px -72px;}
.glyphicon.icon-share{background-position:-120px -72px;}
.glyphicon.icon-check{background-position:-144px -72px;}
.glyphicon.icon-move{background-position:-168px -72px;}
.glyphicon.icon-step-backward{background-position:-192px -72px;}
.glyphicon.icon-fast-backward{background-position:-216px -72px;}
.glyphicon.icon-backward{background-position:-240px -72px;}
.glyphicon.icon-play{background-position:-264px -72px;}
.glyphicon.icon-pause{background-position:-288px -72px;}
.glyphicon.icon-stop{background-position:-312px -72px;}
.glyphicon.icon-forward{background-position:-336px -72px;}
.glyphicon.icon-fast-forward{background-position:-360px -72px;}
.glyphicon.icon-step-forward{background-position:-384px -72px;}
.glyphicon.icon-eject{background-position:-408px -72px;}
.glyphicon.icon-chevron-left{background-position:-432px -72px;}
.glyphicon.icon-chevron-right{background-position:-456px -72px;}
.glyphicon.icon-plus-sign{background-position:0 -96px;}
.glyphicon.icon-minus-sign{background-position:-24px -96px;}
.glyphicon.icon-remove-sign{background-position:-48px -96px;}
.glyphicon.icon-ok-sign{background-position:-72px -96px;}
.glyphicon.icon-question-sign{background-position:-96px -96px;}
.glyphicon.icon-info-sign{background-position:-120px -96px;}
.glyphicon.icon-screenshot{background-position:-144px -96px;}
.glyphicon.icon-remove-circle{background-position:-168px -96px;}
.glyphicon.icon-ok-circle{background-position:-192px -96px;}
.glyphicon.icon-ban-circle{background-position:-216px -96px;}
.glyphicon.icon-arrow-left{background-position:-240px -96px;}
.glyphicon.icon-arrow-right{background-position:-264px -96px;}
.glyphicon.icon-arrow-up{background-position:-289px -96px;}
.glyphicon.icon-arrow-down{background-position:-312px -96px;}
.glyphicon.icon-share-alt{background-position:-336px -96px;}
.glyphicon.icon-resize-full{background-position:-360px -96px;}
.glyphicon.icon-resize-small{background-position:-384px -96px;}
.glyphicon.icon-plus{background-position:-408px -96px;}
.glyphicon.icon-minus{background-position:-433px -96px;}
.glyphicon.icon-asterisk{background-position:-456px -96px;}
.glyphicon.icon-exclamation-sign{background-position:0 -120px;}
.glyphicon.icon-gift{background-position:-24px -120px;}
.glyphicon.icon-leaf{background-position:-48px -120px;}
.glyphicon.icon-fire{background-position:-72px -120px;}
.glyphicon.icon-eye-open{background-position:-96px -120px;}
.glyphicon.icon-eye-close{background-position:-120px -120px;}
.glyphicon.icon-warning-sign{background-position:-144px -120px;}
.glyphicon.icon-plane{background-position:-168px -120px;}
.glyphicon.icon-calendar{background-position:-192px -120px;}
.glyphicon.icon-random{background-position:-216px -120px;width:16px;}
.glyphicon.icon-comment{background-position:-240px -120px;}
.glyphicon.icon-magnet{background-position:-264px -120px;}
.glyphicon.icon-chevron-up{background-position:-288px -120px;}
.glyphicon.icon-chevron-down{background-position:-313px -119px;}
.glyphicon.icon-retweet{background-position:-336px -120px;}
.glyphicon.icon-shopping-cart{background-position:-360px -120px;}
.glyphicon.icon-folder-close{background-position:-384px -120px;}
.glyphicon.icon-folder-open{background-position:-408px -120px;width:16px;}
.glyphicon.icon-resize-vertical{background-position:-432px -119px;}
.glyphicon.icon-resize-horizontal{background-position:-456px -118px;}
.glyphicon.icon-hdd{background-position:0 -144px;}
.glyphicon.icon-bullhorn{background-position:-24px -144px;}
.glyphicon.icon-bell{background-position:-48px -144px;}
.glyphicon.icon-certificate{background-position:-72px -144px;}
.glyphicon.icon-thumbs-up{background-position:-96px -144px;}
.glyphicon.icon-thumbs-down{background-position:-120px -144px;}
.glyphicon.icon-hand-right{background-position:-144px -144px;}
.glyphicon.icon-hand-left{background-position:-168px -144px;}
.glyphicon.icon-hand-up{background-position:-192px -144px;}
.glyphicon.icon-hand-down{background-position:-216px -144px;}
.glyphicon.icon-circle-arrow-right{background-position:-240px -144px;}
.glyphicon.icon-circle-arrow-left{background-position:-264px -144px;}
.glyphicon.icon-circle-arrow-up{background-position:-288px -144px;}
.glyphicon.icon-circle-arrow-down{background-position:-312px -144px;}
.glyphicon.icon-globe{background-position:-336px -144px;}
.glyphicon.icon-wrench{background-position:-360px -144px;}
.glyphicon.icon-tasks{background-position:-384px -144px;}
.glyphicon.icon-filter{background-position:-408px -144px;}
.glyphicon.icon-briefcase{background-position:-432px -144px;}
.glyphicon.icon-fullscreen{background-position:-456px -144px;}

I would use the same technique for the icomoon.
In this way the integration with other Js plugins will be easier.
At the moment the icons system in joomla are a nightmare!
Last Edit: 24 Sep 2013 13:02 by Tomaselli.
The administrator has disabled public write access.
The following user(s) said Thank You: admin

Icons: better compatibility 28 Sep 2013 22:21 #11222

  • Tomaselli
  • Tomaselli's Avatar
  • Offline
  • Elite Member
  • Posts: 293
  • Thank you received: 87
  • Karma: 46
here the full modifications I made to fully integrate the bootstrap CSS with the JDOM icons generation and the JOOMLA default icons.
files to modify:
  1. dom\assets\bootstrap\css\bootstrap-legacy.css
  2. dom\assets\icomoon\css\icomoon-legacy.css
  3. dom\assets\glyphicon\css\icons.css
  4. dom\assets\icomoon\css\icomoon.css
  5. dom\framework\bootstrap\core.php
  6. dom\html\grid\task\state\default.php
  7. dom\html\grid\task\default.php
  8. dom\html\grid\task.php
  9. dom\html\icon.php
  10. dom\html\link\button\toolbar.php

search for /* hack */ to understand where the modifications are, OR compare with the original JDOM files to be sure about what I did.
dom\assets\bootstrap\css\bootstrap-legacy.css
/* Compatibility for Joomla 1.6 to 2.5 : Tooltips fix*/
.tip-wrap {
	max-width: inherit;
	padding: inherit;
	color: inherit;
	text-align: inherit;
	text-decoration: inherit;
	background-color: inherit;
	-webkit-border-radius: inherit;
	-moz-border-radius: inherit;
	border-radius: inherit;
	z-index: inherit;
}

/* Some fixes to see correctly a drop-down menu included in btn-group or appended input */
.input-append i, .input-prepend i, .btn-group i{
	font-size: 14px;
}

.input-append li, .input-prepend li, .btn-group li{
	font-size: 12px !important;
	padding:0;
}

#menu [class^="icon-"], #menu [class*=" icon-"]{
	width:inherit !important;
}

/* hack */
div.modal.fade.in {
  top: 50% !important;
}
/* hack */


dom\assets\icomoon\css\icomoon-legacy.css
/* Desactivate .icon-*  */
[class^="icon-"],
[class*=" icon-"] {
	display: inherit;
	width: inherit;
	height: inherit;
	*margin-right: inherit;
	line-height: inherit;
}

/* Use a different name ._icon-*  */
[class^="_icon-"],
[class*=" _icon-"] {
	display: inline-block;
	width: 14px;
	height: 14px;
	*margin-right: .3em;
	line-height: 14px;
}

/* hack */
.btn-primary.active .icon-publish:before,
.btn-primary.active .icon-save:before,
.btn-primary.active .icon-ok:before,
.btn-primary.active .icon-checkmark:before,
.btn-warning.active .icon-publish:before,
.btn-warning.active .icon-save:before,
.btn-warning.active .icon-ok:before,
.btn-warning.active .icon-checkmark:before,
.btn-danger.active .icon-publish:before,
.btn-danger.active .icon-save:before,
.btn-danger.active .icon-ok:before,
.btn-danger.active .icon-checkmark:before,
.btn-success.active .icon-publish:before,
.btn-success.active .icon-save:before,
.btn-success.active .icon-ok:before,
.btn-success.active .icon-checkmark:before,
.btn-info.active .icon-publish:before,
.btn-info.active .icon-save:before,
.btn-info.active .icon-ok:before,
.btn-info.active .icon-checkmark:before,
.btn-inverse.active .icon-publish:before,
.btn-inverse.active .icon-save:before,
.btn-inverse.active .icon-ok:before,
.btn-inverse.active .icon-checkmark:before,
.btn-primary.active [class^="_icon-"]:before,
.btn-primary.active [class*=" _icon-"]:before,
.btn-warning.active [class^="_icon-"]:before,
.btn-warning.active [class*=" _icon-"]:before,
.btn-danger.active [class^="_icon-"]:before,
.btn-danger.active [class*=" _icon-"]:before,
.btn-success.active [class^="_icon-"]:before,
.btn-success.active [class*=" _icon-"]:before,
.btn-info.active [class^="_icon-"]:before,
.btn-info.active [class*=" _icon-"]:before,
.btn-inverse.active [class^="_icon-"]:before,
.btn-inverse.active [class*=" _icon-"]:before{
	color: rgba(255, 255, 255, 0.95) !important;
}


/* fix for toolbar and status bar icons */
#status [class^="icon-"],
#status [class*=" icon-"],
#toolbar [class^="icon-"],
#toolbar [class*=" icon-"] {
	background-image: none;
	background-position: 0 0;
}
/* hack */


dom\assets\glyphicon\css\icons.css
.glyphicon[class^="icon-"]:before,
.glyphicon[class*=" icon-"]:before{
	content: none;
	font-family: inherit;
}

.glyphicon[class^="icon-"],
.glyphicon[class*=" icon-"] {
	background-image: url("../img/glyphicon.png") !important;	
	display: inline-block !important;
	width: 14px !important;
	height: 14px !important;
	line-height: 14px !important;
	vertical-align: text-top !important;
	background-repeat: no-repeat !important;
}

/* White icons */
.glyphicon.icon-white {
  background-image: url("../img/glyphicon-white.png") !important;
}


/* Icons map */
.glyphicon.icon-glass{background-position:0 0;}
.glyphicon.icon-music{background-position:-24px 0;}
.glyphicon.icon-search{background-position:-48px 0;}
.glyphicon.icon-envelope{background-position:-72px 0;}
.glyphicon.icon-heart{background-position:-96px 0;}
.glyphicon.icon-star{background-position:-120px 0;}
.glyphicon.icon-star-empty{background-position:-144px 0;}
.glyphicon.icon-user{background-position:-168px 0;}
.glyphicon.icon-film{background-position:-192px 0;}
.glyphicon.icon-th-large{background-position:-216px 0;}
.glyphicon.icon-th{background-position:-240px 0;}
.glyphicon.icon-th-list{background-position:-264px 0;}
.glyphicon.icon-ok{background-position:-288px 0;}
.glyphicon.icon-remove{background-position:-312px 0;}
.glyphicon.icon-zoom-in{background-position:-336px 0;}
.glyphicon.icon-zoom-out{background-position:-360px 0;}
.glyphicon.icon-off{background-position:-384px 0;}
.glyphicon.icon-signal{background-position:-408px 0;}
.glyphicon.icon-cog{background-position:-432px 0;}
.glyphicon.icon-trash{background-position:-456px 0;}
.glyphicon.icon-home{background-position:0 -24px;}
.glyphicon.icon-file{background-position:-24px -24px;}
.glyphicon.icon-time{background-position:-48px -24px;}
.glyphicon.icon-road{background-position:-72px -24px;}
.glyphicon.icon-download-alt{background-position:-96px -24px;}
.glyphicon.icon-download{background-position:-120px -24px;}
.glyphicon.icon-upload{background-position:-144px -24px;}
.glyphicon.icon-inbox{background-position:-168px -24px;}
.glyphicon.icon-play-circle{background-position:-192px -24px;}
.glyphicon.icon-repeat{background-position:-216px -24px;}
.glyphicon.icon-refresh{background-position:-240px -24px;}
.glyphicon.icon-list-alt{background-position:-264px -24px;}
.glyphicon.icon-lock{background-position:-287px -24px;}
.glyphicon.icon-flag{background-position:-312px -24px;}
.glyphicon.icon-headphones{background-position:-336px -24px;}
.glyphicon.icon-volume-off{background-position:-360px -24px;}
.glyphicon.icon-volume-down{background-position:-384px -24px;}
.glyphicon.icon-volume-up{background-position:-408px -24px;}
.glyphicon.icon-qrcode{background-position:-432px -24px;}
.glyphicon.icon-barcode{background-position:-456px -24px;}
.glyphicon.icon-tag{background-position:0 -48px;}
.glyphicon.icon-tags{background-position:-25px -48px;}
.glyphicon.icon-book{background-position:-48px -48px;}
.glyphicon.icon-bookmark{background-position:-72px -48px;}
.glyphicon.icon-print{background-position:-96px -48px;}
.glyphicon.icon-camera{background-position:-120px -48px;}
.glyphicon.icon-font{background-position:-144px -48px;}
.glyphicon.icon-bold{background-position:-167px -48px;}
.glyphicon.icon-italic{background-position:-192px -48px;}
.glyphicon.icon-text-height{background-position:-216px -48px;}
.glyphicon.icon-text-width{background-position:-240px -48px;}
.glyphicon.icon-align-left{background-position:-264px -48px;}
.glyphicon.icon-align-center{background-position:-288px -48px;}
.glyphicon.icon-align-right{background-position:-312px -48px;}
.glyphicon.icon-align-justify{background-position:-336px -48px;}
.glyphicon.icon-list{background-position:-360px -48px;}
.glyphicon.icon-indent-left{background-position:-384px -48px;}
.glyphicon.icon-indent-right{background-position:-408px -48px;}
.glyphicon.icon-facetime-video{background-position:-432px -48px;}
.glyphicon.icon-picture{background-position:-456px -48px;}
.glyphicon.icon-pencil{background-position:0 -72px;}
.glyphicon.icon-map-marker{background-position:-24px -72px;}
.glyphicon.icon-adjust{background-position:-48px -72px;}
.glyphicon.icon-tint{background-position:-72px -72px;}
.glyphicon.icon-edit{background-position:-96px -72px;}
.glyphicon.icon-share{background-position:-120px -72px;}
.glyphicon.icon-check{background-position:-144px -72px;}
.glyphicon.icon-move{background-position:-168px -72px;}
.glyphicon.icon-step-backward{background-position:-192px -72px;}
.glyphicon.icon-fast-backward{background-position:-216px -72px;}
.glyphicon.icon-backward{background-position:-240px -72px;}
.glyphicon.icon-play{background-position:-264px -72px;}
.glyphicon.icon-pause{background-position:-288px -72px;}
.glyphicon.icon-stop{background-position:-312px -72px;}
.glyphicon.icon-forward{background-position:-336px -72px;}
.glyphicon.icon-fast-forward{background-position:-360px -72px;}
.glyphicon.icon-step-forward{background-position:-384px -72px;}
.glyphicon.icon-eject{background-position:-408px -72px;}
.glyphicon.icon-chevron-left{background-position:-432px -72px;}
.glyphicon.icon-chevron-right{background-position:-456px -72px;}
.glyphicon.icon-plus-sign{background-position:0 -96px;}
.glyphicon.icon-minus-sign{background-position:-24px -96px;}
.glyphicon.icon-remove-sign{background-position:-48px -96px;}
.glyphicon.icon-ok-sign{background-position:-72px -96px;}
.glyphicon.icon-question-sign{background-position:-96px -96px;}
.glyphicon.icon-info-sign{background-position:-120px -96px;}
.glyphicon.icon-screenshot{background-position:-144px -96px;}
.glyphicon.icon-remove-circle{background-position:-168px -96px;}
.glyphicon.icon-ok-circle{background-position:-192px -96px;}
.glyphicon.icon-ban-circle{background-position:-216px -96px;}
.glyphicon.icon-arrow-left{background-position:-240px -96px;}
.glyphicon.icon-arrow-right{background-position:-264px -96px;}
.glyphicon.icon-arrow-up{background-position:-289px -96px;}
.glyphicon.icon-arrow-down{background-position:-312px -96px;}
.glyphicon.icon-share-alt{background-position:-336px -96px;}
.glyphicon.icon-resize-full{background-position:-360px -96px;}
.glyphicon.icon-resize-small{background-position:-384px -96px;}
.glyphicon.icon-plus{background-position:-408px -96px;}
.glyphicon.icon-minus{background-position:-433px -96px;}
.glyphicon.icon-asterisk{background-position:-456px -96px;}
.glyphicon.icon-exclamation-sign{background-position:0 -120px;}
.glyphicon.icon-gift{background-position:-24px -120px;}
.glyphicon.icon-leaf{background-position:-48px -120px;}
.glyphicon.icon-fire{background-position:-72px -120px;}
.glyphicon.icon-eye-open{background-position:-96px -120px;}
.glyphicon.icon-eye-close{background-position:-120px -120px;}
.glyphicon.icon-warning-sign{background-position:-144px -120px;}
.glyphicon.icon-plane{background-position:-168px -120px;}
.glyphicon.icon-calendar{background-position:-192px -120px;}
.glyphicon.icon-random{background-position:-216px -120px;width:16px;}
.glyphicon.icon-comment{background-position:-240px -120px;}
.glyphicon.icon-magnet{background-position:-264px -120px;}
.glyphicon.icon-chevron-up{background-position:-288px -120px;}
.glyphicon.icon-chevron-down{background-position:-313px -119px;}
.glyphicon.icon-retweet{background-position:-336px -120px;}
.glyphicon.icon-shopping-cart{background-position:-360px -120px;}
.glyphicon.icon-folder-close{background-position:-384px -120px;}
.glyphicon.icon-folder-open{background-position:-408px -120px;width:16px;}
.glyphicon.icon-resize-vertical{background-position:-432px -119px;}
.glyphicon.icon-resize-horizontal{background-position:-456px -118px;}
.glyphicon.icon-hdd{background-position:0 -144px;}
.glyphicon.icon-bullhorn{background-position:-24px -144px;}
.glyphicon.icon-bell{background-position:-48px -144px;}
.glyphicon.icon-certificate{background-position:-72px -144px;}
.glyphicon.icon-thumbs-up{background-position:-96px -144px;}
.glyphicon.icon-thumbs-down{background-position:-120px -144px;}
.glyphicon.icon-hand-right{background-position:-144px -144px;}
.glyphicon.icon-hand-left{background-position:-168px -144px;}
.glyphicon.icon-hand-up{background-position:-192px -144px;}
.glyphicon.icon-hand-down{background-position:-216px -144px;}
.glyphicon.icon-circle-arrow-right{background-position:-240px -144px;}
.glyphicon.icon-circle-arrow-left{background-position:-264px -144px;}
.glyphicon.icon-circle-arrow-up{background-position:-288px -144px;}
.glyphicon.icon-circle-arrow-down{background-position:-312px -144px;}
.glyphicon.icon-globe{background-position:-336px -144px;}
.glyphicon.icon-wrench{background-position:-360px -144px;}
.glyphicon.icon-tasks{background-position:-384px -144px;}
.glyphicon.icon-filter{background-position:-408px -144px;}
.glyphicon.icon-briefcase{background-position:-432px -144px;}
.glyphicon.icon-fullscreen{background-position:-456px -144px;}


dom\assets\icomoon\css\icomoon.css
@font-face {
	font-family: 'IcoMoon';
	src: url('../fonts/IcoMoon.eot');
	src: url('../fonts/IcoMoon.eot?#iefix') format('embedded-opentype'),
		url('../fonts/IcoMoon.svg#IcoMoon') format('svg'),
		url('../fonts/IcoMoon.woff') format('woff'),
		url('../fonts/IcoMoon.ttf') format('truetype');
	font-weight: normal;
	font-style: normal;
}

[data-icon]:before {
	font-family: 'IcoMoon';
	content: attr(data-icon);
	speak: none;
}
.icomoon[class^="icon-"],
.icomoon[class*=" icon-"] {
	display: inline-block !important;
	width: 14px !important;
	height: 14px !important;
	*margin-right: .3em !important;
	line-height: 14px !important;
	background-image: none !important; /* ADDED */
	background-position: 0 0 !important; /* ADDED */
}
.icomoon[class^="icon-"]:before,
.icomoon[class*=" icon-"]:before {
	font-family: 'IcoMoon' !important;
	font-style: normal !important;
	speak: none !important;
}
.icomoon.icon-home:before {
	content: "\21";
}
.icomoon.icon-user:before {
	content: "\22";
}
.icomoon.icon-checkedout:before,
.icomoon.icon-lock:before,
.icomoon.icon-locked:before {
	content: "\23";
}
.icomoon.icon-comment:before,
.icomoon.icon-comments:before {
	content: "\24";
}
.icomoon.icon-comments-2:before {
	content: "\25";
}
.icomoon.icon-share-alt:before,
.icomoon.icon-out:before {
	content: "\26";
}
.icomoon.icon-share:before,
.icomoon.icon-redo:before {
	content: "\27";
}
.icomoon.icon-undo:before {
	content: "\28";
}
.icomoon.icon-file-add:before {
	content: "\29";
}
.icomoon.icon-new:before,
.icomoon.icon-plus:before {
	content: "\2a";
}
.icomoon.icon-apply:before,
.icomoon.icon-edit:before,
.icomoon.icon-pencil:before {
	content: "\2b";
}
.icomoon.icon-pencil-2:before {
	content: "\2c";
}
.icomoon.icon-folder-open:before,
.icomoon.icon-folder:before {
	content: "\2d";
}
.icomoon.icon-folder-close:before,
.icomoon.icon-folder-2:before {
	content: "\2e";
}
.icomoon.icon-picture:before {
	content: "\2f";
}
.icomoon.icon-pictures:before {
	content: "\30";
}
.icomoon.icon-list:before,
.icomoon.icon-list-view:before {
	content: "\31";
}
.icomoon.icon-power-cord:before {
	content: "\32";
}
.icomoon.icon-cube:before {
	content: "\33";
}
.icomoon.icon-puzzle:before {
	content: "\34";
}
.icomoon.icon-flag:before {
	content: "\35";
}
.icomoon.icon-tools:before {
	content: "\36";
}
.icomoon.icon-cogs:before {
	content: "\37";
}
.icomoon.icon-options:before,
.icomoon.icon-cog:before {
	content: "\38";
}
.icomoon.icon-equalizer:before {
	content: "\39";
}
.icomoon.icon-wrench:before {
	content: "\3a";
}
.icomoon.icon-brush:before {
	content: "\3b";
}
.icomoon.icon-eye-open:before,
.icomoon.icon-eye:before {
	content: "\3c";
}
.icomoon.icon-checkbox-unchecked:before {
	content: "\3d";
}
.icomoon.icon-checkin:before,
.icomoon.icon-checkbox:before {
	content: "\3e";
}
.icomoon.icon-checkbox-partial:before {
	content: "\3f";
}
.icomoon.icon-asterisk:before,
.icomoon.icon-star-empty:before {
	content: "\40";
}
.icomoon.icon-star-2:before {
	content: "\41";
}
.icomoon.icon-featured:before,
.icomoon.icon-star:before {
	content: "\42";
}
.icomoon.icon-calendar:before {
	content: "\43";
}
.icomoon.icon-calendar-2:before {
	content: "\44";
}
.icomoon.icon-question-sign:before,
.icomoon.icon-help:before {
	content: "\45";
}
.icomoon.icon-support:before {
	content: "\46";
}
.icomoon.icon-pending:before,
.icomoon.icon-warning:before {
	content: "\48";
}
.icomoon.icon-publish:before,
.icomoon.icon-save:before,
.icomoon.icon-ok:before,
.icomoon.icon-checkmark:before {
	content: "\47";
}
.icomoon.icon-unpublish:before,
.icomoon.icon-cancel:before {
	content: "\4a";
}
.icomoon.icon-eye-close:before,
.icomoon.icon-minus:before {
	content: "\4b";
}
.icomoon.icon-purge:before,
.icomoon.icon-trash:before {
	content: "\4c";
}
.icomoon.icon-envelope:before,
.icomoon.icon-mail:before {
	content: "\4d";
}
.icomoon.icon-mail-2:before {
	content: "\4e";
}
.icomoon.icon-unarchive:before,
.icomoon.icon-drawer:before {
	content: "\4f";
}
.icomoon.icon-archive:before,
.icomoon.icon-drawer-2:before {
	content: "\50";
}
.icomoon.icon-box-add:before {
	content: "\51";
}
.icomoon.icon-box-remove:before {
	content: "\52";
}
.icomoon.icon-search:before {
	content: "\53";
}
.icomoon.icon-filter:before {
	content: "\54";
}
.icomoon.icon-camera:before {
	content: "\55";
}
.icomoon.icon-play:before {
	content: "\56";
}
.icomoon.icon-music:before {
	content: "\57";
}
.icomoon.icon-grid-view:before {
	content: "\58";
}
.icomoon.icon-grid-view-2:before {
	content: "\59";
}
.icomoon.icon-menu:before {
	content: "\5a";
}
.icomoon.icon-thumbs-up:before {
	content: "\5b";
}
.icomoon.icon-thumbs-down:before {
	content: "\5c";
}
.icomoon.icon-delete:before,
.icomoon.icon-remove:before,
.icomoon.icon-cancel-2:before {
	content: "\49";
}
.icomoon.icon-save-new:before,
.icomoon.icon-plus-2:before {
	content: "\5d";
}
.icomoon.icon-ban-circle:before,
.icomoon.icon-minus-sign:before,
.icomoon.icon-minus-2:before {
	content: "\5e";
}
.icomoon.icon-key:before {
	content: "\5f";
}
.icomoon.icon-quote:before {
	content: "\60";
}
.icomoon.icon-quote-2:before {
	content: "\61";
}
.icomoon.icon-database:before {
	content: "\62";
}
.icomoon.icon-location:before {
	content: "\63";
}
.icomoon.icon-zoom-in:before {
	content: "\64";
}
.icomoon.icon-zoom-out:before {
	content: "\65";
}
.icomoon.icon-expand:before {
	content: "\66";
}
.icomoon.icon-contract:before {
	content: "\67";
}
.icomoon.icon-expand-2:before {
	content: "\68";
}
.icomoon.icon-contract-2:before {
	content: "\69";
}
.icomoon.icon-health:before {
	content: "\6a";
}
.icomoon.icon-wand:before {
	content: "\6b";
}
.icomoon.icon-unblock:before,
.icomoon.icon-refresh:before {
	content: "\6c";
}
.icomoon.icon-vcard:before {
	content: "\6d";
}
.icomoon.icon-clock:before {
	content: "\6e";
}
.icomoon.icon-compass:before {
	content: "\6f";
}
.icomoon.icon-address:before {
	content: "\70";
}
.icomoon.icon-feed:before {
	content: "\71";
}
.icomoon.icon-flag-2:before {
	content: "\72";
}
.icomoon.icon-pin:before {
	content: "\73";
}
.icomoon.icon-lamp:before {
	content: "\74";
}
.icomoon.icon-chart:before {
	content: "\75";
}
.icomoon.icon-bars:before {
	content: "\76";
}
.icomoon.icon-pie:before {
	content: "\77";
}
.icomoon.icon-dashboard:before {
	content: "\78";
}
.icomoon.icon-lightning:before {
	content: "\79";
}
.icomoon.icon-move:before {
	content: "\7a";
}
.icomoon.icon-next:before {
	content: "\7b";
}
.icomoon.icon-previous:before {
	content: "\7c";
}
.icomoon.icon-first:before {
	content: "\7d";
}
.icomoon.icon-last:before {
	content: "\e000";
}
.icomoon.icon-loop:before {
	content: "\e001";
}
.icomoon.icon-shuffle:before {
	content: "\e002";
}
.icomoon.icon-arrow-first:before {
	content: "\e003";
}
.icomoon.icon-arrow-last:before {
	content: "\e004";
}
.icomoon.icon-chevron-up:before,
.icomoon.icon-uparrow:before,
.icomoon.icon-arrow-up:before {
	content: "\e005";
}
.icomoon.icon-chevron-right:before,
.icomoon.icon-arrow-right:before {
	content: "\e006";
}
.icomoon.icon-chevron-down:before,
.icomoon.icon-downarrow:before,
.icomoon.icon-arrow-down:before {
	content: "\e007";
}
.icomoon.icon-chevron-left:before,
.icomoon.icon-arrow-left:before {
	content: "\e008";
}
.icomoon.icon-arrow-up-2:before {
	content: "\e009";
}
.icomoon.icon-arrow-right-2:before {
	content: "\e00a";
}
.icomoon.icon-download:before,
.icomoon.icon-arrow-down-2:before {
	content: "\e00b";
}
.icomoon.icon-arrow-left-2:before {
	content: "\e00c";
}
.icomoon.icon-play-2:before {
	content: "\e00d";
}
.icomoon.icon-menu-2:before {
	content: "\e00e";
}
.icomoon.icon-arrow-up-3:before {
	content: "\e00f";
}
.icomoon.icon-arrow-right-3:before {
	content: "\e010";
}
.icomoon.icon-arrow-down-3:before {
	content: "\e011";
}
.icomoon.icon-arrow-left-3:before {
	content: "\e012";
}
.icomoon.icon-print:before,
.icomoon.icon-printer:before {
	content: "\e013";
}
.icomoon.icon-color-palette:before {
	content: "\e014";
}
.icomoon.icon-camera-2:before {
	content: "\e015";
}
.icomoon.icon-file:before {
	content: "\e016";
}
.icomoon.icon-file-remove:before {
	content: "\e017";
}
.icomoon.icon-save-copy:before,
.icomoon.icon-copy:before {
	content: "\e018";
}
.icomoon.icon-cart:before {
	content: "\e019";
}
.icomoon.icon-basket:before {
	content: "\e01a";
}
.icomoon.icon-broadcast:before {
	content: "\e01b";
}
.icomoon.icon-screen:before {
	content: "\e01c";
}
.icomoon.icon-tablet:before {
	content: "\e01d";
}
.icomoon.icon-mobile:before {
	content: "\e01e";
}
.icomoon.icon-users:before {
	content: "\e01f";
}
.icomoon.icon-briefcase:before {
	content: "\e020";
}
.icomoon.icon-download:before {
	content: "\e021";
}
.icomoon.icon-upload:before {
	content: "\e022";
}
.icomoon.icon-bookmark:before {
	content: "\e023";
}
.icomoon.icon-out-2:before {
	content: "\e024";
}


dom\framework\bootstrap\core.php
<?php
/**                               ______________________________________________
*                          o O   |                                              |
*                 (((((  o      <     JDom Class - Cook Self Service library    |
*                ( o o )         |______________________________________________|
* --------oOOO-----(_)-----OOOo---------------------------------- www.j-cook.pro --- +
* @version		2.6
* @package		Cook Self Service
* @subpackage	JDom
* @license		GNU General Public License
* @author		Jocelyn HUARD
*
*             .oooO  Oooo.
*             (   )  (   )
* -------------\ (----) /----------------------------------------------------------- +
*               \_)  (_/
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );


class JDomFrameworkBootstrapCore extends JDomFrameworkBootstrap
{	
	protected $loadCss;
	protected $loadJs;
	
	protected $cssRtl;
	
	
	protected $hostedSource = '';

	/*
	 * Constuctor
	 * 	@namespace 	: requested class
	 *  @options	: Configuration
	 *
	 *
	 */
	function __construct($args)
	{
		parent::__construct($args);
	}
	
	function build()
	{
		//Bootstrap should not be used
		if (!$this->useFramework('bootstrap'))
			return;
		
		//Bootstrap is already in the core since Joomla 3.0. And already loaded.
		if ($this->jVersion('3.0'))
			return;
		
		$jsFile = 'bootstrap.min.js';
		$assetFile = $this->assetFilePath('js', $jsFile);
		
		if (file_exists($assetFile))
			$this->attachJs[] = $jsFile;
		
		//Fallback
		else
			$this->addScript($this->hostedSource);
	}
	
	function buildCss()
	{
		//Bootstrap should not be used
		if (!$this->useFramework('bootstrap'))
			return;
/* hack */
		// fix to add the FULL bootstrap CSS
		$this->attachCss[] = 'bootstrap.min.css';
		$this->attachCss[] = 'bootstrap-responsive.min.css';
		$this->attachCss[] = 'bootstrap-extended.css';
/* hack */

		//Some fixes and compatibility
		$this->attachCss[] = 'bootstrap-legacy.css';
	}
}


dom\html\grid\task\state\default.php
<?php
/**                               ______________________________________________
*                          o O   |                                              |
*                 (((((  o      <     JDom Class - Cook Self Service library    |
*                ( o o )         |______________________________________________|
* --------oOOO-----(_)-----OOOo---------------------------------- www.j-cook.pro --- +
* @version		2.6
* @package		Cook Self Service
* @subpackage	JDom
* @license		GNU General Public License
* @author		Jocelyn HUARD
*
*             .oooO  Oooo.
*             (   )  (   )
* -------------\ (----) /----------------------------------------------------------- +
*               \_)  (_/
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );


class JDomHtmlGridTaskStateDefault extends JDomHtmlGridTaskState
{
	protected $task;

	protected $strNO;
	protected $strYES;

	/*
	 * Constuctor
	 * 	@namespace 	: requested class
	 *  @options	: Configuration
	 * 	@dataKey	: database field name
	 * 	@dataObject	: complete object row (stdClass or Array)
	 * 	@dataValue	: value  default = dataObject->dataKey
	 * 	@num		: Num position in list
	 *
	 *  @commandAcl : ACL Command to see or not this
	 *  @enabled	: Determines if enabled
	 *  @tooltip	: Show the description in tooltip
	 *  @ctrl		: controller to call (prefix)
	 *	@task		: Task name (used also for the icon class if taskIcon is empty)
	 *	@taskIcon	: Task icon
	 *	@label		: Button title, Label text description
	 *	@viewType	: View mode (icon/text/both) default: icon
	 *
	 *	@taskYes		: task to execute when value is true
	 *	@taskNo			: task to execute when value is no
	 *	@strYES			: text to show when value is true
	 *	@strNO			: text to show when value is no
	 *	@strUndefined	: text to show when value is undefined
	 */
	function __construct($args)
	{

		parent::__construct($args);

		$this->arg('task'				, null, $args, 'default');
	
		$this->arg('strNO'				, null, $args);
		$this->arg('strYES'				, null, $args);
		
		if ((bool)$this->dataValue)
			$this->enabled = false;
		
		if (!$this->enabled)
			$this->tooltip = false;
		
		$this->taskYes = null;

/* hack */			
		$icon = ' icomoon';
		if(isset($this->library) AND $this->library != ''){
			$icon = ' '. $this->library;
		}
/* hack */
		
		$icons = array(0=> 'star-empty'. $icon, 1=> 'star'. $icon); /* hack */
		if (!$this->jVersion('3.0'))
			$icons = array(0=> 'notdefault'. $icon, 1=> 'default'. $icon); /* hack */


		if ($this->togglable)
		{
			if (empty($this->strYES))
				$this->strYES = '';

			if (empty($this->strNO))
				$this->strNO = 'JDEFAULT';
		}
		
		
		//Add the descriptions in the tooltip. Same description is used for each state
		if (!empty($this->strYES))
			$this->strYES = JText::_($this->strYES) . '::' . $this->description;
	
		if (!empty($this->strNO))
			$this->strNO = JText::_($this->strNO) . '::' . $this->description;
		
		
		// TODO : You can eventually customize your behaviors icons and strings here
		$this->states	= array(

			// When value = 1
			1	=> array(
			
				null,	// Task to execute
				$this->strYES,	// Text
				$this->strYES,	// Tooltip description when boolean is enabled
				$this->strYES,	// Tooltip description when boolean is disabled
				$this->tooltip,	// Show tooltip ?
				$icons[1],		// Css class when active (enabled)
				$icons[1]),		// Css class when inactive (disabled)
				
			// When value = 0 (see before)			
			0	=> array($this->task,		$this->strNO,	$this->strNO,	$this->strNO,	$this->tooltip,	$icons[0],	$icons[0]),
			''	=> array($this->task,		$this->strNO,	$this->strNO,	$this->strNO,	$this->tooltip,	$icons[0],	$icons[0]),
		);
		
		
	}
	
	function build()
	{
		$html = $this->buildHtml();
		return $html;
	}
}


dom\html\grid\task\default.php
<?php
/**                               ______________________________________________
*                          o O   |                                              |
*                 (((((  o      <     JDom Class - Cook Self Service library    |
*                ( o o )         |______________________________________________|
* --------oOOO-----(_)-----OOOo---------------------------------- www.j-cook.pro --- +
* @version		2.6
* @package		Cook Self Service
* @subpackage	JDom
* @license		GNU General Public License
* @author		Jocelyn HUARD
*
*             .oooO  Oooo.
*             (   )  (   )
* -------------\ (----) /----------------------------------------------------------- +
*               \_)  (_/
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );


class JDomHtmlGridTaskDefault extends JDomHtmlGridTask
{
	var $level = 4;			//Namespace position
	var $last = true;		//This class is last call


	/*
	 * Constuctor
	 * 	@namespace 	: requested class
	 *  @options	: Configuration
	 * 	@dataKey	: database field name
	 * 	@dataObject	: complete object row (stdClass or Array)
	 * 	@dataValue	: value  default = dataObject->dataKey
	 * 	@num		: Num position in list
	 *	@commandAcl : ACL rights to toggle
	 */
	function __construct($args)
	{
		parent::__construct($args);
		$this->arg('commandAcl'		, null, $args, 'core.edit.state');
	}

	function build()
	{
		$html = '';
		$ctrl = ($this->ctrl?$this->ctrl.'.':'');

/* hack */
		$icon = ' icomoon';
		if(isset($this->library) AND $this->library != ''){
			$icon = ' '. $this->library;
		}		
/* hack */
		
		if ($this->dataValue)
		{
			$this->taskIcon = 'default' . $icon; /* hack */
			$html = $this->buildHtml();
		}
		else
		{
			$html = JDom::_('html.grid.task', array_merge($this->options, array(
				'task' => $ctrl . 'default',
				'taskIcon' => 'default_no' . $icon /* hack */

			)));

		}

		return $html;
	}

}


dom\html\grid\task.php
<?php
/**                               ______________________________________________
*                          o O   |                                              |
*                 (((((  o      <     JDom Class - Cook Self Service library    |
*                ( o o )         |______________________________________________|
* --------oOOO-----(_)-----OOOo---------------------------------- www.j-cook.pro --- +
* @version		2.6
* @package		Cook Self Service
* @subpackage	JDom
* @license		GNU General Public License
* @author		Jocelyn HUARD
*
*             .oooO  Oooo.
*             (   )  (   )
* -------------\ (----) /----------------------------------------------------------- +
*               \_)  (_/
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );


class JDomHtmlGridTask extends JDomHtmlGrid
{
	var $fallback = 'task';


	protected $commandAcl;
	protected $enabled;
	protected $tooltip;
	protected $ctrl;
	protected $task;
	protected $taskIcon;
	protected $label;
	protected $viewType;
	protected $target;
	protected $description;

	/*
	 * Constuctor
	 * 	@namespace 	: requested class
	 *  @options	: Configuration
	 * 	@dataKey	: database field name
	 * 	@dataObject	: complete object row (stdClass or Array)
	 * 	@dataValue	: value  default = dataObject->dataKey
	 * 	@num		: Num position in list
	 *
	 *  @commandAcl : ACL Command to see or not this
	 *  @enabled	: Determines if enabled
	 *  @tooltip	: Show the description in tooltip
	 *  @ctrl		: controller to call (prefix)
	 *	@task		: Task name (used also for the icon class if taskIcon is empty)
	 *	@taskIcon	: Task icon
	 *	@label		: Button title, Label text description
	 *  @description : Description of the task. (in tooltip)
	 *	@viewType	: View mode (icon/text/both) default: icon
	 *  @target 	: target when a link
	 *
	 *
	 */
	function __construct($args)
	{
		parent::__construct($args);

		$this->arg('commandAcl'		, null, $args);
		$this->arg('enabled'		, null, $args, true);
		$this->arg('tooltip'		, null, $args);
		$this->arg('ctrl'			, null, $args);
		$this->arg('task'			, null, $args);
		$this->arg('taskIcon'		, null, $args);
		$this->arg('label'			, null, $args);
		$this->arg('description'	, null, $args);
		$this->arg('viewType'		, null, $args, 'both');
		$this->arg('target'			, null, $args);

		//Default tooltip value (depending on viewType)
		if ($this->tooltip === null)
		{
			if ($this->viewType == 'icon')
				$this->tooltip = false;
			else
				$this->tooltip = true;
		}

		//Uset tasks if ACL does not permit
		if ($this->commandAcl && !$this->access($this->commandAcl))
			$this->enabled = false;

		if (!$this->enabled)
			$this->tooltip = false;
		
		$this->getIconName();
		
	}
/* hack */
	function getIconName()
	{	
		if (empty($this->taskIcon)){
			$this->taskIcon = $this->getTaskExec();
		}
		
		$name = $this->taskIcon = $this->getTaskExec();
		
		$icon = ' icomoon';
		if(isset($this->library) AND $this->library != ''){
			$icon = ' '. $this->library;
		}
		
		$this->taskIcon = $this->taskIcon .$icon;

		return $name;
	}
/* hack */
	
	function getTaskExec($ctrl = false)
	{

		//Get the task behind the controller alias (Joomla 2.5)
		if (!$task = $this->task)
			return;

		$ctrlName = "";

		$parts = explode(".", $task);
		$len = count($parts);
		$taskName = $parts[$len - 1]; //Last
		if ($len > 1)
			$ctrlName = $parts[0];


		if ($ctrl)
			return $ctrlName . "." . $taskName;

		return $taskName;
	}

}

dom\html\icon.php
<?php
/**                               ______________________________________________
*                          o O   |                                              |
*                 (((((  o      <     JDom Class - Cook Self Service library    |
*                ( o o )         |______________________________________________|
* --------oOOO-----(_)-----OOOo---------------------------------- www.j-cook.pro --- +
* @version		2.6
* @package		Cook Self Service
* @subpackage	JDom
* @license		GNU General Public License
* @author		Jocelyn HUARD
*
*             .oooO  Oooo.
*             (   )  (   )
* -------------\ (----) /----------------------------------------------------------- +
*               \_)  (_/
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );


class JDomHtmlIcon extends JDomHtml
{
	protected $icon;
	protected $tooltip;
	protected $title;
	protected $color;
	protected $size;
	protected $library;
	protected $availableLibraries = array('icomoon', 'glyphicon');
	
	/*
	 * Constuctor
	 * 	@namespace 	: requested class
	 *  @options	: Configuration
	 * 	@dataKey	: database field name
	 * 	@dataObject	: complete object row (stdClass or Array)
	 * 	@dataValue	: value  default = dataObject->dataKey
	 *
	 *	@icon		: Icon name see : http://icomoon.io/#preview-free
	 *  @tooltip	: Has a tooltip
	 *  @tilte		: Title for Tooltip
	 *  @library	: Icon library
	 */
	function __construct($args)
	{
		parent::__construct($args);

		$this->arg('icon', null, $args);
		$this->arg('tooltip', null, $args);
		$this->arg('title', null, $args);
		$this->arg('color', null, $args);
		$this->arg('size', null, $args);

		$this->arg('library', null, $args);
		
		$parts = explode('-', $this->icon);
		if ((count($parts) > 1) && in_array($parts[0], $this->availableLibraries))
		{
			$this->library = array_shift($parts);
			$this->icon = implode('-', $parts);
		}
	}

	function build()
	{
		if ($this->library)
		{
			switch($this->library)
			{				
				case '':
					$icons = $this->getIcons();
					break;

				case 'icomoon':
					JDom::_('html.icon.icomoon');
					$this->buildFont();			
					break;
					
				case 'glyphicon':
					JDom::_('html.icon.glyphicon');
					break;
			}
		}		
		
		$this->addClass($this->getIconClass());

		$html = '<i <%STYLE%><%CLASS%><%SELECTORS%>></i>';
		return $html;
	}
	
	public function getIconClass()
	{
		if ($this->library)
		{
			switch($this->library)
			{				
				case '':
					$icons = $this->getIcons();
					break;

				case 'icomoon':
					JDom::_('html.icon.icomoon');
					$this->buildFont();			
					break;
					
				case 'glyphicon':
					JDom::_('html.icon.glyphicon');
					break;
			}
			return 'icon-' . $this->icon .' '. $this->library; /* hack */
		}		
			
		return 'icon-' . $this->icon . ($this->library?' ' . $this->library :' icomoon'); /* hack */
	}
	
	protected function buildFont()
	{
		if ($color = $this->color)
			switch($color)
			{
				case 'default':
				case 'primary':
				case 'info':
				case 'success':
				case 'warning':
				case 'danger':
					$this->addClass('color-' . $color);	
					break;
						
				default:
					$this->addStyle('color', '#' . ltrim($color, '#'));						
					break;
			}
			
			
		if ($size = $this->size)
		{
			$this->addStyle('font-size', $size);
			$this->addStyle('width', 'inherit');
			$this->addStyle('height', 'inherit');
		}
		
	}
	
	protected function parseVars($vars)
	{
		return parent::parseVars(array_merge(array(
			'STYLE'		=> $this->buildDomStyles(),
			'CLASS'			=> $this->buildDomClass(),		//With attrib name
			'SELECTORS'		=> $this->buildSelectors(),
		), $vars));
	}

}

dom\html\link\button\toolbar.php
<?php
/**                               ______________________________________________
*                          o O   |                                              |
*                 (((((  o      <     JDom Class - Cook Self Service library    |
*                ( o o )         |______________________________________________|
* --------oOOO-----(_)-----OOOo---------------------------------- www.j-cook.pro --- +
* @version		2.6
* @package		Cook Self Service
* @subpackage	JDom
* @license		GNU General Public License
* @author		Jocelyn HUARD
*
*             .oooO  Oooo.
*             (   )  (   )
* -------------\ (----) /----------------------------------------------------------- +
*               \_)  (_/
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );


class JDomHtmlLinkButtonToolbar extends JDomHtmlLinkButton
{
	var $fallback = 'standard';

	protected $item;
	protected $name;
	protected $text;
	protected $task;
	protected $message;
	protected $checkList;
	protected $align;
	protected $ui;
	protected $display;
	
	protected $alertConfirm;

	/*
	 * Constuctor
	 * 	@namespace 	: Requested class
	 *  @options	: Parameters
	 *  //@bar		: Joomla Toolbar
	 *
	 *
	 *  @item		: Joomla Toolbar Item arguments (array)  (Overwrite $bar parameter)
	 *	@align		: Item alignement  (float)
	 *  @alertConfirm : Alert a Confirm box
	 *  @checkList	: Check in list
	 *  @ui			: Rendering type (default : bootstrap)
	 *  @display	: Display of the button (all/icon/text)
	 * 
	 */
	function __construct($args)
	{
		parent::__construct($args);
		$this->arg('item'	, null, $args);
		$this->arg('checkList'	, null, $args);
		$this->arg('align'	, null, $args);
		$this->arg('ui'	, null, $args, 'bootstrap');
		$this->arg('display', null, $args, 'all');

	}

	function getIconFromTask()
	{
		if ($this->icon)
			return $this->icon;
		
		$icon = $this->name;
		
		if ($this->ui == 'bootstrap')
		{
			switch($icon)
			{
				case 'preview': return 'eye';
			}	
		}
		return $icon;
	}
	
	function setStylesFromTask()
	{
		//Define the button styles (color, width)
		if ($this->ui == 'bootstrap')
		{
			switch($this->name)
			{
				case 'new':
				case 'apply':
					$this->addClass('btn-success');
					$this->addClass('input-medium');
					break;
			}			
		}
		
		
	}
	
	function build()
	{
		$this->setStylesFromTask();
		
		
		if ($this->ui == 'bootstrap')
		{
			$this->addClass('btn btn-small');
		}
		else
		{		
			$this->addClass('button');
		}
		
		if ($this->href || $this->route)
		{
			//Special treatment when the item is a direct link
			$this->content = $this->buildContent();
			
			//Handle the click in a 'a' markup. li transfers its styles to the link markup
			$html =		'<li id="<%LI_ID%>">'.LN
					.	$this->buildLink()
					.	'</li>' .LN;
	
			return $html;
		}
		
		// Handle the click in the li element
		$html =		'<li<%CLASS%> style="<%LI_STYLE%>" id="<%LI_ID%>"  onclick="<%COMMAND%>">'.LN
				.	$this->buildContent()
				.	'</li>' .LN;

		return $html;
	}
	
	function buildContent()
	{
		$html =	'<div class="<%CONTENT_CLASS%>" style="cursor:pointer">'.LN
			.	$this->buildIconText() .LN
			.	'</div>';
		
		return $html;
	}
	
	function buildIconText()
	{
		$icon = $this->getIconFromTask();
		
		$html = '';
			
		if ($this->ui == 'bootstrap')
		{
			// Icon
			if (in_array($this->display, array('all', 'icon')))
				$html .= '<i class="icon-' . $icon . ($this->library?' ' . $this->library :' icomoon') . '"></i>'.LN; /* hack */

			// Caption
			if (in_array($this->display, array('all', 'text')))
				$html .= '<span class="text" style="white-space:nowrap"><%TEXT%></span>'.LN;
			
		}
		else
		{
			// Icon
			if (in_array($this->display, array('all', 'icon')))
				$html .=	'<span class="' . 'icon-16 ' . $icon . '"></span>' .LN;
			
			// Caption
			if (in_array($this->display, array('all', 'text')))
				$html .= '<span class="text" style="white-space:nowrap"><%TEXT%></span>' .LN;
			
		}
		return $html;		
	}
	
	
	protected function parseVars($vars)
	{
		$alignStyle = null;
				
		switch($this->align)
		{
			case 'left':
			case 'right':
				$alignStyle = "float: " . $this->align . ";";
				break;

			case 'center':
				$alignStyle = "display: inline-block;";
				break;
		}

		$this->jsCommand();
		
		$contentClass = 'task';
		if ($this->ui == 'bootstrap')
			$contentClass = '';
		
		return parent::parseVars(array_merge(array(
			'LI_STYLE' 		=> "list-style:none; " . $alignStyle,
			'LI_ID' 		=> 'toolbar-' . $this->task,
			'CONTENT_CLASS' 	=> $contentClass,
			'COMMAND' 		=> ($this->link_js?htmlspecialchars($this->link_js):""),
			'TEXT' 			=> $this->JText($this->text),
			'CLASS'		=> $this->buildDomClass(),
		), $vars));
	}

	function getTaskExec($ctrl = false)
	{

		//Get the task behind the controller alias (Joomla 2.5)
		if (!$task = $this->task)
			return;

		$ctrlName = "";

		$parts = explode(".", $task);
		$len = count($parts);
		$taskName = $parts[$len - 1]; //Last
		if ($len > 1)
			$ctrlName = $parts[0];


		if ($ctrl)
			return $ctrlName . "." . $taskName;

		return $taskName;
	}

}
The administrator has disabled public write access.
The following user(s) said Thank You: admin, jcbenton

Icons: better compatibility 28 Sep 2013 23:32 #11226

  • jcbenton
  • jcbenton's Avatar
  • Offline
  • Premium Member
  • Posts: 125
  • Thank you received: 9
  • Karma: 3
Thank you for posting this. I did apply all of the hacks, but in my case it does not help. The items still display incorrectly on the backend. Hopefully admin will get this fixed in the builder soon.
--
Jerry Benton
The administrator has disabled public write access.

Icons: better compatibility 28 Sep 2013 23:39 #11227

  • Tomaselli
  • Tomaselli's Avatar
  • Offline
  • Elite Member
  • Posts: 293
  • Thank you received: 87
  • Karma: 46
this mainly fix the icons full compatibility. and the modal bootstrap.
are you using a fresh default joomla 3.x installation? or there are extra things installed (BE templates, plugins)?
It is a quick workaround, surely the admin will find a better solution. let me know if I can help you in some way.
The administrator has disabled public write access.
The following user(s) said Thank You: admin

Icons: better compatibility 28 Sep 2013 23:41 #11228

  • jcbenton
  • jcbenton's Avatar
  • Offline
  • Premium Member
  • Posts: 125
  • Thank you received: 9
  • Karma: 3
Joomla 2.5 actually.

The component has the same problem in J-Cooks sandbox, so I doubt it has to do with any extension.
--
Jerry Benton
The administrator has disabled public write access.

Icons: better compatibility 28 Sep 2013 23:51 #11229

  • Tomaselli
  • Tomaselli's Avatar
  • Offline
  • Elite Member
  • Posts: 293
  • Thank you received: 87
  • Karma: 46
I see, I'm sure the Admin will fix that soon.
The administrator has disabled public write access.

Icons: better compatibility 29 Sep 2013 23:54 #11247

  • admin
  • admin's Avatar
  • Offline
  • Administrator
  • Chef
  • Posts: 3711
  • Thank you received: 987
  • Karma: 140
Your wishes are granted.

Included, fixed, and many thanks.
I have reviewed this aspects many times and I must admit your CSS is excellent.
For the moment it seems to looks perfect cross compatible.
I have changed few things, and added some also...

There are now a lot of Joomla fixes in Cook...
Coding is now a piece of cake
The administrator has disabled public write access.
The following user(s) said Thank You: Tomaselli

Icons: better compatibility 30 Sep 2013 07:56 #11251

  • Tomaselli
  • Tomaselli's Avatar
  • Offline
  • Elite Member
  • Posts: 293
  • Thank you received: 87
  • Karma: 46
thanks for the kind words, however I just added the css for what I've seen, including also the default bootstrap modal, broken by the default backend joomla template.
This means, other fixes maybe needed.
The administrator has disabled public write access.
Time to create page: 0.094 seconds

Get Started