administrator/ 40755 0 0 0 12000772076 10771 5ustar 0 0 administrator/components/ 40755 0 0 0 12000772076 13156 5ustar 0 0 administrator/components/com_jce/ 40755 0 0 0 12000772112 14544 5ustar 0 0 administrator/components/com_jce/adapters/ 40755 0 0 0 12000772100 16344 5ustar 0 0 administrator/components/com_jce/classes/ 40755 0 0 0 12000772100 16176 5ustar 0 0 administrator/components/com_jce/controller/ 40755 0 0 0 12000772100 16724 5ustar 0 0 administrator/components/com_jce/elements/ 40755 0 0 0 12000772100 16355 5ustar 0 0 administrator/components/com_jce/helpers/ 40755 0 0 0 12000772100 16203 5ustar 0 0 administrator/components/com_jce/includes/ 40755 0 0 0 12000772100 16347 5ustar 0 0 administrator/components/com_jce/media/ 40755 0 0 0 12000772076 15634 5ustar 0 0 administrator/components/com_jce/media/css/ 40755 0 0 0 12000772100 16410 5ustar 0 0 administrator/components/com_jce/media/img/ 40755 0 0 0 12000772100 16374 5ustar 0 0 administrator/components/com_jce/media/img/menu/ 40755 0 0 0 12000772100 17340 5ustar 0 0 administrator/components/com_jce/media/js/ 40755 0 0 0 12000772100 16234 5ustar 0 0 administrator/components/com_jce/models/ 40755 0 0 0 12000772100 16024 5ustar 0 0 administrator/components/com_jce/packages/ 40755 0 0 0 12000772076 16333 5ustar 0 0 administrator/components/com_jce/packages/editors/ 40755 0 0 0 12000772100 17770 5ustar 0 0 administrator/components/com_jce/packages/modules/ 40755 0 0 0 12000772100 17767 5ustar 0 0 administrator/components/com_jce/packages/quickicon/ 40755 0 0 0 12000772100 20304 5ustar 0 0 administrator/components/com_jce/sql/ 40755 0 0 0 12000772100 15340 5ustar 0 0 administrator/components/com_jce/tables/ 40755 0 0 0 12000772100 16013 5ustar 0 0 administrator/components/com_jce/views/ 40755 0 0 0 12000772076 15712 5ustar 0 0 administrator/components/com_jce/views/config/ 40755 0 0 0 12000772100 17143 5ustar 0 0 administrator/components/com_jce/views/config/tmpl/ 40755 0 0 0 12000772100 20117 5ustar 0 0 administrator/components/com_jce/views/cpanel/ 40755 0 0 0 12000772100 17140 5ustar 0 0 administrator/components/com_jce/views/cpanel/tmpl/ 40755 0 0 0 12000772100 20114 5ustar 0 0 administrator/components/com_jce/views/help/ 40755 0 0 0 12000772100 16626 5ustar 0 0 administrator/components/com_jce/views/help/tmpl/ 40755 0 0 0 12000772100 17602 5ustar 0 0 administrator/components/com_jce/views/installer/ 40755 0 0 0 12000772100 17673 5ustar 0 0 administrator/components/com_jce/views/installer/tmpl/ 40755 0 0 0 12000772100 20647 5ustar 0 0 administrator/components/com_jce/views/legend/ 40755 0 0 0 12000772100 17134 5ustar 0 0 administrator/components/com_jce/views/legend/tmpl/ 40755 0 0 0 12000772100 20110 5ustar 0 0 administrator/components/com_jce/views/mediabox/ 40755 0 0 0 12000772100 17466 5ustar 0 0 administrator/components/com_jce/views/mediabox/tmpl/ 40755 0 0 0 12000772100 20442 5ustar 0 0 administrator/components/com_jce/views/preferences/ 40755 0 0 0 12000772100 20177 5ustar 0 0 administrator/components/com_jce/views/preferences/tmpl/ 40755 0 0 0 12000772100 21153 5ustar 0 0 administrator/components/com_jce/views/profiles/ 40755 0 0 0 12000772100 17521 5ustar 0 0 administrator/components/com_jce/views/profiles/tmpl/ 40755 0 0 0 12000772100 20475 5ustar 0 0 administrator/components/com_jce/views/updates/ 40755 0 0 0 12000772100 17343 5ustar 0 0 administrator/components/com_jce/views/updates/tmpl/ 40755 0 0 0 12000772100 20317 5ustar 0 0 administrator/components/com_jce/views/users/ 40755 0 0 0 12000772100 17037 5ustar 0 0 administrator/components/com_jce/views/users/tmpl/ 40755 0 0 0 12000772100 20013 5ustar 0 0 administrator/language/ 40755 0 0 0 12000772076 12554 5ustar 0 0 administrator/language/en-GB/ 40755 0 0 0 12000772100 13430 5ustar 0 0 components/ 40755 0 0 0 12000772077 10277 5ustar 0 0 components/com_jce/ 40755 0 0 0 12000772102 11663 5ustar 0 0 components/com_jce/editor/ 40755 0 0 0 12000772077 13164 5ustar 0 0 components/com_jce/editor/elements/ 40755 0 0 0 12000772100 14763 5ustar 0 0 components/com_jce/editor/extensions/ 40755 0 0 0 12000772077 15363 5ustar 0 0 components/com_jce/editor/extensions/aggregator/ 40755 0 0 0 12000772100 17470 5ustar 0 0 components/com_jce/editor/extensions/aggregator/vimeo/ 40755 0 0 0 12000772077 20624 5ustar 0 0 components/com_jce/editor/extensions/aggregator/vimeo/js/ 40755 0 0 0 12000772100 21223 5ustar 0 0 components/com_jce/editor/extensions/aggregator/vimeo/tmpl/ 40755 0 0 0 12000772100 21563 5ustar 0 0 components/com_jce/editor/extensions/aggregator/youtube/ 40755 0 0 0 12000772077 21201 5ustar 0 0 components/com_jce/editor/extensions/aggregator/youtube/js/ 40755 0 0 0 12000772100 21600 5ustar 0 0 components/com_jce/editor/extensions/aggregator/youtube/tmpl/ 40755 0 0 0 12000772100 22140 5ustar 0 0 components/com_jce/editor/extensions/browser/ 40755 0 0 0 12000772100 17031 5ustar 0 0 components/com_jce/editor/extensions/browser/css/ 40755 0 0 0 12000772100 17621 5ustar 0 0 components/com_jce/editor/extensions/browser/js/ 40755 0 0 0 12000772100 17445 5ustar 0 0 components/com_jce/editor/extensions/filesystem/ 40755 0 0 0 12000772100 17532 5ustar 0 0 components/com_jce/editor/extensions/links/ 40755 0 0 0 12000772100 16466 5ustar 0 0 components/com_jce/editor/extensions/links/joomlalinks/ 40755 0 0 0 12000772100 21010 5ustar 0 0 components/com_jce/editor/extensions/links/joomlalinks/css/ 40755 0 0 0 12000772100 21600 5ustar 0 0 components/com_jce/editor/extensions/links/joomlalinks/img/ 40755 0 0 0 12000772100 21564 5ustar 0 0 components/com_jce/editor/extensions/mediaplayer/ 40755 0 0 0 12000772100 17642 5ustar 0 0 components/com_jce/editor/extensions/mediaplayer/jceplayer/ 40755 0 0 0 12000772077 21635 5ustar 0 0 components/com_jce/editor/extensions/mediaplayer/jceplayer/css/ 40755 0 0 0 12000772100 22410 5ustar 0 0 components/com_jce/editor/extensions/mediaplayer/jceplayer/js/ 40755 0 0 0 12000772100 22234 5ustar 0 0 components/com_jce/editor/extensions/mediaplayer/jceplayer/tmpl/ 40755 0 0 0 12000772100 22574 5ustar 0 0 components/com_jce/editor/extensions/popups/ 40755 0 0 0 12000772100 16674 5ustar 0 0 components/com_jce/editor/extensions/popups/.externalToolBuilders/ 40755 0 0 0 12000772100 23124 5ustar 0 0 components/com_jce/editor/extensions/popups/jcemediabox/ 40755 0 0 0 12000772077 21163 5ustar 0 0 components/com_jce/editor/extensions/popups/jcemediabox/css/ 40755 0 0 0 12000772100 21736 5ustar 0 0 components/com_jce/editor/extensions/popups/jcemediabox/js/ 40755 0 0 0 12000772100 21562 5ustar 0 0 components/com_jce/editor/extensions/popups/jcemediabox/tmpl/ 40755 0 0 0 12000772100 22122 5ustar 0 0 components/com_jce/editor/extensions/popups/window/ 40755 0 0 0 12000772077 20220 5ustar 0 0 components/com_jce/editor/extensions/popups/window/css/ 40755 0 0 0 12000772100 20773 5ustar 0 0 components/com_jce/editor/extensions/popups/window/js/ 40755 0 0 0 12000772100 20617 5ustar 0 0 components/com_jce/editor/extensions/popups/window/tmpl/ 40755 0 0 0 12000772100 21157 5ustar 0 0 components/com_jce/editor/extensions/search/ 40755 0 0 0 12000772100 16613 5ustar 0 0 components/com_jce/editor/extensions/search/css/ 40755 0 0 0 12000772100 17403 5ustar 0 0 components/com_jce/editor/extensions/search/js/ 40755 0 0 0 12000772100 17227 5ustar 0 0 components/com_jce/editor/extensions/search/link/ 40755 0 0 0 12000772077 17565 5ustar 0 0 components/com_jce/editor/libraries/ 40755 0 0 0 12000772077 15140 5ustar 0 0 components/com_jce/editor/libraries/classes/ 40755 0 0 0 12000772100 16560 5ustar 0 0 components/com_jce/editor/libraries/classes/extensions/ 40755 0 0 0 12000772100 20757 5ustar 0 0 components/com_jce/editor/libraries/css/ 40755 0 0 0 12000772100 15713 5ustar 0 0 components/com_jce/editor/libraries/css/jquery/ 40755 0 0 0 12000772077 17247 5ustar 0 0 components/com_jce/editor/libraries/css/jquery/jce/ 40755 0 0 0 12000772100 17773 5ustar 0 0 components/com_jce/editor/libraries/css/jquery/jce/images/ 40755 0 0 0 12000772100 21240 5ustar 0 0 components/com_jce/editor/libraries/img/ 40755 0 0 0 12000772100 15677 5ustar 0 0 components/com_jce/editor/libraries/js/ 40755 0 0 0 12000772100 15537 5ustar 0 0 components/com_jce/editor/libraries/js/extensions/ 40755 0 0 0 12000772100 17736 5ustar 0 0 components/com_jce/editor/libraries/js/jquery/ 40755 0 0 0 12000772100 17056 5ustar 0 0 components/com_jce/editor/libraries/mediaplayer/ 40755 0 0 0 12000772100 17417 5ustar 0 0 components/com_jce/editor/libraries/plupload/ 40755 0 0 0 12000772110 16744 5ustar 0 0 components/com_jce/editor/libraries/views/ 40755 0 0 0 12000772077 16275 5ustar 0 0 components/com_jce/editor/libraries/views/browser/ 40755 0 0 0 12000772077 17760 5ustar 0 0 components/com_jce/editor/libraries/views/browser/tmpl/ 40755 0 0 0 12000772100 20717 5ustar 0 0 components/com_jce/editor/libraries/views/plugin/ 40755 0 0 0 12000772100 17556 5ustar 0 0 components/com_jce/editor/libraries/views/plugin/tmpl/ 40755 0 0 0 12000772100 20532 5ustar 0 0 components/com_jce/editor/libraries/views/popups/ 40755 0 0 0 12000772077 17623 5ustar 0 0 components/com_jce/editor/libraries/views/popups/tmpl/ 40755 0 0 0 12000772100 20562 5ustar 0 0 components/com_jce/editor/libraries/views/search/ 40755 0 0 0 12000772077 17542 5ustar 0 0 components/com_jce/editor/libraries/views/search/tmpl/ 40755 0 0 0 12000772100 20501 5ustar 0 0 components/com_jce/editor/libraries/xml/ 40755 0 0 0 12000772077 15740 5ustar 0 0 components/com_jce/editor/libraries/xml/config/ 40755 0 0 0 12000772100 17170 5ustar 0 0 components/com_jce/editor/libraries/xml/help/ 40755 0 0 0 12000772100 16653 5ustar 0 0 components/com_jce/editor/tiny_mce/ 40755 0 0 0 12000772112 14761 5ustar 0 0 components/com_jce/editor/tiny_mce/langs/ 40755 0 0 0 12000772100 16062 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/ 40755 0 0 0 12000772077 16454 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/advlist/ 40755 0 0 0 12000772100 20105 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/anchor/ 40755 0 0 0 12000772100 17711 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/anchor/css/ 40755 0 0 0 12000772100 20501 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/anchor/img/ 40755 0 0 0 12000772100 20465 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/article/ 40755 0 0 0 12000772100 20062 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/article/classes/ 40755 0 0 0 12000772100 21517 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/article/css/ 40755 0 0 0 12000772100 20652 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/article/img/ 40755 0 0 0 12000772100 20636 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/article/js/ 40755 0 0 0 12000772100 20476 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/article/langs/ 40755 0 0 0 12000772100 21166 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/article/tmpl/ 40755 0 0 0 12000772100 21036 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/autolink/ 40755 0 0 0 12000772100 20265 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/autosave/ 40755 0 0 0 12000772100 20266 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/browser/ 40755 0 0 0 12000772101 20123 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/browser/classes/ 40755 0 0 0 12000772101 21560 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/browser/js/ 40755 0 0 0 12000772101 20537 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/browser/langs/ 40755 0 0 0 12000772101 21227 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/cleanup/ 40755 0 0 0 12000772101 20067 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/cleanup/classes/ 40755 0 0 0 12000772101 21524 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/code/ 40755 0 0 0 12000772101 17352 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/code/classes/ 40755 0 0 0 12000772101 21007 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/code/css/ 40755 0 0 0 12000772101 20142 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/code/img/ 40755 0 0 0 12000772101 20126 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/contextmenu/ 40755 0 0 0 12000772101 21011 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/core/ 40755 0 0 0 12000772101 17370 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/directionality/ 40755 0 0 0 12000772101 21463 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/dragupload/ 40755 0 0 0 12000772101 20562 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/dragupload/css/ 40755 0 0 0 12000772101 21352 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/dragupload/img/ 40755 0 0 0 12000772101 21336 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/format/ 40755 0 0 0 12000772101 17730 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/format/classes/ 40755 0 0 0 12000772101 21365 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/fullscreen/ 40755 0 0 0 12000772101 20602 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/imgmanager/ 40755 0 0 0 12000772101 20547 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/imgmanager/classes/ 40755 0 0 0 12000772101 22204 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/imgmanager/css/ 40755 0 0 0 12000772101 21337 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/imgmanager/js/ 40755 0 0 0 12000772101 21163 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/imgmanager/langs/ 40755 0 0 0 12000772101 21653 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/imgmanager/tmpl/ 40755 0 0 0 12000772101 21523 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/inlinepopups/ 40755 0 0 0 12000772101 21165 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/inlinepopups/classes/ 40755 0 0 0 12000772101 22622 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/inlinepopups/css/ 40755 0 0 0 12000772101 21755 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/kitchensink/ 40755 0 0 0 12000772101 20752 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/layer/ 40755 0 0 0 12000772101 17554 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/link/ 40755 0 0 0 12000772101 17375 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/link/classes/ 40755 0 0 0 12000772101 21032 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/link/css/ 40755 0 0 0 12000772101 20165 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/link/img/ 40755 0 0 0 12000772101 20151 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/link/js/ 40755 0 0 0 12000772101 20011 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/link/langs/ 40755 0 0 0 12000772101 20501 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/link/tmpl/ 40755 0 0 0 12000772101 20351 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/lists/ 40755 0 0 0 12000772101 17576 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/media/ 40755 0 0 0 12000772101 17517 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/media/classes/ 40755 0 0 0 12000772101 21154 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/media/css/ 40755 0 0 0 12000772101 20307 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/media/img/ 40755 0 0 0 12000772101 20273 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/nonbreaking/ 40755 0 0 0 12000772101 20735 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/noneditable/ 40755 0 0 0 12000772101 20724 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/paste/ 40755 0 0 0 12000772101 17554 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/paste/classes/ 40755 0 0 0 12000772101 21211 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/paste/css/ 40755 0 0 0 12000772101 20344 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/paste/js/ 40755 0 0 0 12000772101 20170 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/paste/tmpl/ 40755 0 0 0 12000772101 20530 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/preview/ 40755 0 0 0 12000772101 20121 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/preview/classes/ 40755 0 0 0 12000772101 21556 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/preview/css/ 40755 0 0 0 12000772101 20711 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/print/ 40755 0 0 0 12000772101 17574 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/searchreplace/ 40755 0 0 0 12000772101 21241 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/searchreplace/classes/ 40755 0 0 0 12000772101 22676 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/searchreplace/css/ 40755 0 0 0 12000772101 22031 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/searchreplace/js/ 40755 0 0 0 12000772101 21655 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/searchreplace/langs/ 40755 0 0 0 12000772101 22345 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/searchreplace/tmpl/ 40755 0 0 0 12000772101 22215 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/source/ 40755 0 0 0 12000772101 17740 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/source/classes/ 40755 0 0 0 12000772101 21375 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/source/css/ 40755 0 0 0 12000772101 20530 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/source/css/codemirror/ 40755 0 0 0 12000772101 22675 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/source/css/codemirror/theme/ 40755 0 0 0 12000772101 23777 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/source/img/ 40755 0 0 0 12000772101 20514 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/source/js/ 40755 0 0 0 12000772101 20354 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/source/js/codemirror/ 40755 0 0 0 12000772101 22521 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/source/tmpl/ 40755 0 0 0 12000772101 20714 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/spellchecker/ 40755 0 0 0 12000772101 21104 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/spellchecker/classes/ 40755 0 0 0 12000772101 22541 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/spellchecker/css/ 40755 0 0 0 12000772101 21674 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/spellchecker/img/ 40755 0 0 0 12000772101 21660 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/style/ 40755 0 0 0 12000772101 17600 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/style/classes/ 40755 0 0 0 12000772101 21235 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/style/css/ 40755 0 0 0 12000772101 20370 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/style/js/ 40755 0 0 0 12000772101 20214 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/style/langs/ 40755 0 0 0 12000772101 20704 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/style/tmpl/ 40755 0 0 0 12000772101 20554 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/tabfocus/ 40755 0 0 0 12000772101 20246 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/tabfocus/classes/ 40755 0 0 0 12000772101 21703 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/table/ 40755 0 0 0 12000772101 17527 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/table/classes/ 40755 0 0 0 12000772101 21164 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/table/css/ 40755 0 0 0 12000772101 20317 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/table/js/ 40755 0 0 0 12000772101 20143 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/table/langs/ 40755 0 0 0 12000772101 20633 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/table/tmpl/ 40755 0 0 0 12000772101 20503 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/textcase/ 40755 0 0 0 12000772101 20260 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/textcase/img/ 40755 0 0 0 12000772101 21034 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/visualblocks/ 40755 0 0 0 12000772101 21141 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/visualblocks/classes/ 40755 0 0 0 12000772101 22576 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/visualblocks/css/ 40755 0 0 0 12000772101 21731 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/visualchars/ 40755 0 0 0 12000772101 20764 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/visualchars/classes/ 40755 0 0 0 12000772101 22421 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/wordcount/ 40755 0 0 0 12000772101 20464 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/xhtmlxtras/ 40755 0 0 0 12000772101 20656 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/xhtmlxtras/classes/ 40755 0 0 0 12000772101 22313 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/xhtmlxtras/css/ 40755 0 0 0 12000772101 21446 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/xhtmlxtras/js/ 40755 0 0 0 12000772101 21272 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/xhtmlxtras/langs/ 40755 0 0 0 12000772101 21762 5ustar 0 0 components/com_jce/editor/tiny_mce/plugins/xhtmlxtras/tmpl/ 40755 0 0 0 12000772101 21632 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/ 40755 0 0 0 12000772077 16260 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/ 40755 0 0 0 12000772102 20012 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/css/ 40755 0 0 0 12000772101 20601 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/img/ 40755 0 0 0 12000772101 20565 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/js/ 40755 0 0 0 12000772101 20425 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/langs/ 40755 0 0 0 12000772101 21115 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/skins/ 40755 0 0 0 12000772077 21154 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/skins/classic/ 40755 0 0 0 12000772101 22561 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/skins/classic/img/ 40755 0 0 0 12000772101 23335 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/skins/default/ 40755 0 0 0 12000772102 22565 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/skins/default/img/ 40755 0 0 0 12000772102 23341 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/skins/highcontrast/ 40755 0 0 0 12000772102 23636 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/skins/o2k7/ 40755 0 0 0 12000772102 21723 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/skins/o2k7/img/ 40755 0 0 0 12000772102 22477 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/advanced/tmpl/ 40755 0 0 0 12000772102 20766 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/none/ 40755 0 0 0 12000772102 17204 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/none/skins/ 40755 0 0 0 12000772077 20346 5ustar 0 0 components/com_jce/editor/tiny_mce/themes/none/skins/default/ 40755 0 0 0 12000772102 21757 5ustar 0 0 components/com_jce/media/ 40755 0 0 0 12000772077 12755 5ustar 0 0 components/com_jce/media/css/ 40755 0 0 0 12000772102 13532 5ustar 0 0 components/com_jce/media/img/ 40755 0 0 0 12000772102 13516 5ustar 0 0 components/com_jce/media/js/ 40755 0 0 0 12000772102 13356 5ustar 0 0 components/com_jce/views/ 40755 0 0 0 12000772077 13033 5ustar 0 0 components/com_jce/views/popup/ 40755 0 0 0 12000772102 14163 5ustar 0 0 components/com_jce/views/popup/tmpl/ 40755 0 0 0 12000772102 15137 5ustar 0 0 language/ 40755 0 0 0 12000772076 7674 5ustar 0 0 language/en-GB/ 40755 0 0 0 12000772102 10552 5ustar 0 0 administrator/components/com_jce/access.xml100644 0 0 1610 12000772076 16633 0ustar 0 0
administrator/components/com_jce/adapters/extension.php100644 0 0 17070 12000772076 21227 0ustar 0 0 parent = $parent; } /** * Setup manifest data * @param object $manifest */ function setManifest($manifest) { // element foreach(array( 'name', 'version', 'description', 'installfile', 'uninstallfile' ) as $item) { $this->set($item, WFXMLHelper::getElement($manifest, $item)); } // attribute foreach(array( 'folder', 'extension', 'core' ) as $item) { $this->set($item, WFXMLHelper::getAttribute($manifest, $item)); } // elements foreach(array( 'files', 'languages', 'media' ) as $item) { $this->set($item, WFXMLHelper::getElements($manifest, $item)); } return true; } /** * Install method * * @access public * @return boolean True on success */ public function install() { // Get a database connector object $db = $this->parent->getDBO(); // Get the extension manifest object $manifest = $this->parent->getManifest(); // setup manifest data $this->setManifest($manifest); $this->parent->set('name', $this->get('name')); $this->parent->set('version', $this->get('version')); $this->parent->set('message', $this->get('description')); $plugin = $this->get('plugin'); $folder = $this->get('folder'); $extension = $this->get('extension'); if (version_compare($this->version, '2.0.0', '<')) { $this->parent->abort(WFText::_('WF_INSTALLER_INCORRECT_VERSION')); return false; } if(!empty($folder)) { $this->parent->setPath('extension_root', JPATH_COMPONENT_SITE . DS . 'editor' . DS . 'extensions' . DS . $folder); } else { $this->parent->abort(WFText::_('WF_INSTALLER_EXTENSION_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_NO_EXTENSION_FOLDER')); } /** * --------------------------------------------------------------------------------------------- * Filesystem Processing Section * --------------------------------------------------------------------------------------------- */ // Set overwrite flag if not set by Manifest $this->parent->setOverwrite(true); // If the extension directory does not exist, lets create it $created = false; if(!file_exists($this->parent->getPath('extension_root'))) { if(!$created = JFolder::create($this->parent->getPath('extension_root'))) { $this->parent->abort(WFText::_('WF_INSTALLER_EXTENSION_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_MKDIR_ERROR') . ' : "' . $this->parent->getPath('extension_root') . '"'); return false; } } /* * If we created the extension directory and will want to remove it if we * have to roll back the installation, lets add it to the installation * step stack */ if($created) { $this->parent->pushStep( array('type' => 'folder', 'path' => $this->parent->getPath('extension_root'))); } // Copy all necessary files if(!$this->parent->parseFiles($this->get('files'), -1)) { // Install failed, roll back changes $this->parent->abort(); return false; } // Parse optional tags -- language files for plugins $this->parent->parseLanguages($this->get('languages'), 0); $this->parent->parseMedia($this->get('media'), 0); // Load the language file $language = JFactory::getLanguage(); $language->load('com_jce_' . trim($plugin) . '_' . trim($extension), JPATH_SITE); /** * --------------------------------------------------------------------------------------------- * Finalization and Cleanup Section * --------------------------------------------------------------------------------------------- */ // Lastly, we will copy the manifest file to its appropriate place. if(!$this->parent->copyManifest(-1)) { // Install failed, rollback changes $this->parent->abort(WFText::_('WF_INSTALLER_EXTENSION_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_SETUP_COPY_ERROR')); return false; } // post-install $this->addIndexfiles(); return true; } /** * Add index.html files to each folder * @access private */ private function addIndexfiles() { jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); // get the base file $file = WF_ADMINISTRATOR . DS . 'index.html'; $path = $this->parent->getPath('extension_root'); if(is_file($file) && is_dir($path)) { JFile::copy($file, $path . DS . basename($file)); // admin component $folders = JFolder::folders($path, '.', true, true); foreach($folders as $folder) { JFile::copy($file, $folder . DS . basename($file)); } } } /** * Uninstall method * * @access public * @param int $id The id of the extension to uninstall * @return boolean True on success */ public function uninstall($id) { // Initialize variables $retval = true; $id = explode('.', $id); if(count($id) < 2) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_EXTENSION_UNINSTALL') . ' : ' . WFText::_('WF_INSTALLER_EXTENSION_FIELD_EMPTY')); return false; } $folder = ''; $extension = ''; if(count($id) > 2) { $plugin = $id[0]; $folder = $id[1]; $extension = $id[2]; } else { $plugin = null; $folder = $id[0]; $extension = $id[1]; } $this->parent->set('name', $extension); // Get the extension folder so we can properly build the plugin path if(trim($extension) == '') { JError::raiseWarning(100, WFText::_('WF_INSTALLER_EXTENSION_UNINSTALL') . ' : ' . WFText::_('WF_INSTALLER_EXTENSION_FIELD_EMPTY')); return false; } if($plugin) { // Set the plugin root path $this->parent->setPath('extension_root', JPATH_COMPONENT_SITE . DS . 'editor' . DS . 'tiny_mce' . DS . 'plugins' . DS . $plugin . DS . 'extensions' . DS . $folder); } else { $this->parent->setPath('extension_root', JPATH_COMPONENT_SITE . DS . 'editor' . DS . 'extensions' . DS . $folder); } $manifest = $this->parent->getPath('extension_root') . DS . $extension . '.xml'; if(file_exists($manifest)) { $xml = WFXMLHelper::getXML($manifest); if(!$this->setManifest($xml)) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_EXTENSION_UNINSTALL') . ' : ' . WFText::_('WF_INSTALLER_MANIFEST_INVALID')); } $this->parent->set('name', WFText::_($this->get('name'))); $this->parent->set('version', $this->get('version')); $this->parent->set('message', $this->get('description')); // can't remove a core plugin if($this->get('core') == 1) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_EXTENSION_UNINSTALL') . ' : ' . JText::sprintf('WF_INSTALLER_WARNCOREEXTENSION', WFText::_($this->get('name')))); return false; } // Remove the extension files $this->parent->removeFiles($this->get('files'), -1); // Remove all media and languages as well $this->parent->removeFiles($this->get('languages'), 0); $this->parent->removeFiles($this->get('media'), 0); JFile::delete($manifest); } else { JError::raiseWarning(100, WFText::_('WF_INSTALLER_EXTENSION_UNINSTALL') . ' : ' . WFText::_('WF_INSTALLER_CUSTOM_UNINSTALL_ERROR')); return false; } return $retval; } } administrator/components/com_jce/adapters/language.php100644 0 0 16055 12000772076 21000 0ustar 0 0 parent = $parent; } /** * Setup manifest data * @param object $manifest */ function setManifest($manifest) { // element foreach (array( 'name', 'version', 'description', 'tag' ) as $item) { $this->set($item, WFXMLHelper::getElement($manifest, $item)); } // elements foreach (array( 'administration', 'site', 'tinymce' ) as $item) { $this->set($item, WFXMLHelper::getElements($manifest, $item)); } return true; } /** * Install method * * @access public * @return boolean True on success */ public function install() { // Get the extension manifest object $manifest = $this->parent->getManifest(); // setup manifest data $this->setManifest($manifest); $this->parent->set('name', $this->get('name')); $this->parent->set('version', $this->get('version')); $this->parent->set('message', $this->get('description')); // Check language tag - if we didn't, we may be trying to install from an older language package if (!$this->get('tag')) { $this->parent->abort(WFText::_('WF_INSTALLER_LANGUAGE_INSTALL').' : '.WFText::_('WF_INSTALLER_LANGUAGE_NO_TAG')); return false; } $folder = $this->get('tag'); // Set the installation target paths $this->parent->setPath('extension_site', JPATH_SITE . DS . "language" . DS . $folder); $this->parent->setPath('extension_administrator', JPATH_ADMINISTRATOR . DS . "language" . DS . $folder); // Set overwrite flag if not set by Manifest if (!$this->parent->getOverwrite()) { $this->parent->setOverwrite(true); } // Copy admin files if ($this->parent->parseFiles($this->get('administration'), 1) === false) { $this->parent->abort(); return false; } // Copy site files if ($this->parent->parseFiles($this->get('site')) === false) { $this->parent->abort(); return false; } // Copy tinymce files $this->parent->setPath('extension_site', JPATH_COMPONENT_SITE . DS . 'editor' . DS . 'tiny_mce'); if ($this->parent->parseFiles($this->get('tinymce')) === false) { $this->parent->abort(); return false; } $this->addIndexfiles($this->parent->getPath('site')); // Set path back to site for manifest $this->parent->setPath('extension_site', JPATH_SITE . DS . "language" . DS . $folder); // Lastly, we will copy the manifest file to its appropriate place. if (!$this->parent->copyManifest(0)) { // Install failed, rollback changes $this->parent->abort(WFText::_('WF_INSTALLER_LANGUAGE_INSTALL').' : '.WFText::_('WF_INSTALLER_SETUP_COPY_ERROR')); return false; } return true; } /** * Add index.html files to each folder * @access private */ private function addIndexfiles($path) { jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); // get the base file $file = WF_ADMINISTRATOR . DS . 'index.html'; if (is_file($file) && is_dir($path)) { JFile::copy($file, $path . DS . basename($file)); // admin component $folders = JFolder::folders($path, '.', true, true); foreach ($folders as $folder) { JFile::copy($file, $folder . DS . basename($file)); } } } /** * Uninstall method * * @access public * @param string $tag The tag of the language to uninstall * @return mixed Return value for uninstall method in component uninstall file */ function uninstall($tag) { // Set defaults $this->parent->set('name', $tag); $this->parent->set('version', ''); // Clean tag $tag = trim($tag); $path = JPATH_SITE.DS.'language'.DS.$tag; if (!JFolder::exists($path)) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_LANGUAGE_UNINSTALL').' : '.WFText::_('WF_INSTALLER_LANGUAGE_PATH_EMPTY')); return false; } // Because JCE languages don't have their own folders we cannot use the standard method of finding an installation manifest $manifest = $path.DS.$tag.'.com_jce.xml'; if (file_exists($manifest)) { $xml = WFXMLHelper::getXML($manifest); if (!$this->setManifest($xml)) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_LANGUAGE_UNINSTALL'). ' : '.WFText::_('WF_INSTALLER_MANIFEST_INVALID')); } // Set the installation target paths $this->parent->setPath('extension_site', $path); $this->parent->setPath('extension_administrator', JPATH_ADMINISTRATOR.DS."language".DS.$tag); if (!$this->parent->removeFiles($this->get('site'))) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_LANGUAGE_UNINSTALL').' : '.WFText::_('WF_INSTALL_DELETE_FILES_ERROR')); return false; } if (!$this->parent->removeFiles($this->get('administration'), 1)) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_LANGUAGE_UNINSTALL').' : '.WFText::_('WF_INSTALL_DELETE_FILES_ERROR')); return false; } $this->parent->setPath('extension_site', JPATH_COMPONENT_SITE . DS . 'editor' . DS . 'tiny_mce'); if (!$this->parent->removeFiles($this->get('tinymce'))) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_LANGUAGE_UNINSTALL').' : '.WFText::_('WF_INSTALL_DELETE_FILES_ERROR')); return false; } JFile::delete($manifest); } else { JError::raiseWarning(100, WFText::_('WF_INSTALLER_LANGUAGE_UNINSTALL').' : '.WFText::_('WF_INSTALLER_MANIFEST_ERROR')); return false; } return true; } } administrator/components/com_jce/adapters/plugin.php100644 0 0 41205 12000772076 20506 0ustar 0 0 parent = $parent; } /** * Setup manifest data * @param object $manifest */ private function setManifest($manifest) { // element foreach (array( 'name', 'version', 'description', 'installfile', 'uninstallfile', 'icon' ) as $item) { $this->set($item, WFXMLHelper::getElement($manifest, $item)); } // attribute foreach (array( 'group', 'type', 'plugin', 'core', 'editable', 'row' ) as $item) { $this->set($item, WFXMLHelper::getAttribute($manifest, $item)); } // elements foreach (array( 'files', 'languages', 'media' ) as $item) { $this->set($item, WFXMLHelper::getElements($manifest, $item)); } return true; } /** * Install method * * @access public * @return boolean True on success */ public function install() { // Get a database connector object $db = $this->parent->getDBO(); // Get the extension manifest object $manifest = $this->parent->getManifest(); // setup manifest data $this->setManifest($manifest); $this->parent->set('name', $this->get('name')); $this->parent->set('version', $this->get('version')); $this->parent->set('message', $this->get('description')); $plugin = $this->get('plugin'); $group = $this->get('group'); $type = $this->get('type'); // JCE Plugin if (!empty($plugin)) { if (version_compare($this->version, '2.0.0', '<')) { $this->parent->abort(WFText::_('WF_INSTALLER_INCORRECT_VERSION')); return false; } $this->parent->setPath('extension_root', JPATH_COMPONENT_SITE . DS . 'editor' . DS . 'tiny_mce' . DS . 'plugins' . DS . $plugin); } else { // Non-JCE plugin type, probably JCE MediaBox or JCE Editor if ($type == 'plugin' && ($group == 'system' || $group == 'editors')) { require_once(JPATH_LIBRARIES . DS . 'joomla' . DS . 'installer' . DS . 'adapters' . DS . 'plugin.php'); $adapter = new JInstallerPlugin($this->parent, $db); $this->parent->setAdapter('plugin', $adapter); return $adapter->install(); } else { $this->parent->abort(WFText::_('WF_INSTALLER_EXTENSION_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_NO_PLUGIN_FILE')); return false; } } /** * --------------------------------------------------------------------------------------------- * Filesystem Processing Section * --------------------------------------------------------------------------------------------- */ // If the extension directory does not exist, lets create it $created = false; if (!file_exists($this->parent->getPath('extension_root'))) { if (!$created = JFolder::create($this->parent->getPath('extension_root'))) { $this->parent->abort(WFText::_('WF_INSTALLER_PLUGIN_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_MKDIR_ERROR') . ' : "' . $this->parent->getPath('extension_root') . '"'); return false; } } // Set overwrite flag if not set by Manifest $this->parent->setOverwrite(true); /* * If we created the extension directory and will want to remove it if we * have to roll back the installation, lets add it to the installation * step stack */ if ($created) { $this->parent->pushStep(array( 'type' => 'folder', 'path' => $this->parent->getPath('extension_root') )); } // Copy all necessary files if (!$this->parent->parseFiles($this->get('files'), -1)) { // Install failed, roll back changes $this->parent->abort(); return false; } // install languages $this->parent->parseLanguages($this->get('languages'), 0); // install media $this->parent->parseMedia($this->get('media'), 0); // Load the language file $language = JFactory::getLanguage(); $language->load('com_jce_' . trim($plugin), JPATH_SITE); $install = $this->get('install.script'); if ($install) { // Make sure it hasn't already been copied (this would be an error in the xml install file) if (!file_exists($this->parent->getPath('extension_root') . DS . $install)) { $path['src'] = $this->parent->getPath('source') . DS . $install; $path['dest'] = $this->parent->getPath('extension_root') . DS . $install; if (!$this->parent->copyFiles(array( $path ))) { // Install failed, rollback changes $this->parent->abort(JText('WF_INSTALLER_PLUGIN_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_PHP_INSTALL_FILE_ERROR')); return false; } } } $uninstall = $this->get('uninstall.script'); if ($uninstall) { // Make sure it hasn't already been copied (this would be an error in the xml install file) if (!file_exists($this->parent->getPath('extension_root') . DS . $uninstall)) { $path['src'] = $this->parent->getPath('source') . DS . $uninstall; $path['dest'] = $this->parent->getPath('extension_root') . DS . $uninstall; if (!$this->parent->copyFiles(array( $path ))) { // Install failed, rollback changes $this->parent->abort(JText('WF_INSTALLER_PLUGIN_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_PHP_UNINSTALL_FILE_ERROR')); return false; } } } // Install plugin install default profile layout if a row is set if (is_numeric($this->get('row')) && intval($this->get('row'))) { // Add to Default Group $profile = JTable::getInstance('profiles', 'WFTable'); $query = 'SELECT id' . ' FROM #__wf_profiles' . ' WHERE name = ' . $db->Quote('Default'); $db->setQuery($query); $id = $db->loadResult(); $profile->load($id); // Add to plugins list $plugins = explode(',', $profile->plugins); if (!in_array($this->get('plugin'), $plugins)) { $plugins[] = $this->get('plugin'); } $profile->plugins = implode(',', $plugins); if ($this->get('icon')) { if (!in_array($this->get('plugin'), preg_split('/[;,]+/', $profile->rows))) { // get rows as array $rows = explode(';', $profile->rows); // get key (row number) $key = intval($this->get('row')) - 1; // get row contents as array $row = explode(',', $rows[$key]); // add plugin name to end of row $row[] = $this->get('plugin'); // add row data back to rows array $rows[$key] = implode(',', $row); $profile->rows = implode(';', $rows); } } if (!$profile->store()) { JError::raiseWarning(100, 'WF_INSTALLER_PLUGIN_PROFILE_ERROR'); } } /** * --------------------------------------------------------------------------------------------- * Finalization and Cleanup Section * --------------------------------------------------------------------------------------------- */ // Lastly, we will copy the manifest file to its appropriate place. if (!$this->parent->copyManifest(-1)) { // Install failed, rollback changes $this->parent->abort(WFText::_('WF_INSTALLER_PLUGIN_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_SETUP_COPY_ERROR')); return false; } /* * If we have an install script, lets include it, execute the custom * install method, and append the return value from the custom install * method to the installation message. */ $install = $this->get('install.script'); if ($install) { if (file_exists($this->parent->getPath('extension_root') . DS . $install)) { ob_start(); ob_implicit_flush(false); require_once($this->parent->getPath('extension_root') . DS . $install); if (function_exists('jce_install')) { if (jce_install() === false) { $this->parent->abort(WFText::_('WF_INSTALLER_PLUGIN_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_CUSTOM_INSTALL_ERROR')); return false; } } else if (function_exists('com_install')) { if (com_install() === false) { $this->parent->abort(WFText::_('WF_INSTALLER_PLUGIN_INSTALL') . ' : ' . WFText::_('WF_INSTALLER_CUSTOM_INSTALL_ERROR')); return false; } } $msg = ob_get_contents(); ob_end_clean(); if ($msg != '') { $this->parent->set('extension.message', $msg); } } } else { $this->parent->set('extension.message', ''); } // post-install $this->addIndexfiles(); return true; } /** * Add index.html files to each folder * @access private */ private function addIndexfiles() { jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); // get the base file $file = WF_ADMINISTRATOR . DS . 'index.html'; $path = $this->parent->getPath('extension_root'); if (is_file($file) && is_dir($path)) { JFile::copy($file, $path . DS . basename($file)); // admin component $folders = JFolder::folders($path, '.', true, true); foreach ($folders as $folder) { JFile::copy($file, $folder . DS . basename($file)); } } } /** * Uninstall method * * @access public * @param string $name The name of the plugin to uninstall * @return boolean True on success */ public function uninstall($name) { // Initialize variables $row = null; $retval = true; $db = $this->parent->getDBO(); $this->parent->set('name', $name); // Set the plugin root path $this->parent->setPath('extension_root', JPATH_COMPONENT_SITE . DS . 'editor' . DS . 'tiny_mce' . DS . 'plugins' . DS . $name); $manifest = $this->parent->getPath('extension_root') . DS . $name . '.xml'; // Load the language file $language = JFactory::getLanguage(); $language->load('com_jce_' . trim($name), JPATH_SITE); if (file_exists($manifest)) { $xml = WFXMLHelper::getXML($manifest); if (!$this->setManifest($xml)) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_PLUGIN_UNINSTALL') . ' : ' . WFText::_('WF_INSTALLER_MANIFEST_INVALID')); } $this->parent->set('name', $this->get('name')); $this->parent->set('version', $this->get('version')); $this->parent->set('message', $this->get('description')); // can't remove a core plugin if ($this->get('core') == 1) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_PLUGIN_UNINSTALL') . ' : ' . JText::sprintf('WF_INSTALLER_WARNCOREPLUGIN', WFText::_($this->get('name')))); return false; } // Remove all media and languages as well $this->parent->removeFiles($this->get('languages'), 0); $this->parent->removeFiles($this->get('media'), 0); /** * --------------------------------------------------------------------------------------------- * Custom Uninstallation Script Section * --------------------------------------------------------------------------------------------- */ // Now lets load the uninstall file if there is one and execute the uninstall function if it exists. $uninstall = $this->get('uninstall.script'); if ($uninstall) { // Element exists, does the file exist? if (is_file($this->parent->getPath('extension_root') . DS . $uninstall)) { ob_start(); ob_implicit_flush(false); require_once($this->parent->getPath('extension_root') . DS . $uninstall); if (function_exists('com_uninstall')) { if (com_uninstall() === false) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_PLUGIN_UNINSTALL') . ' : ' . WFText::_('WF_INSTALLER_CUSTOM_UNINSTALL_ERROR')); $retval = false; } } $msg = ob_get_contents(); ob_end_clean(); if ($msg != '') { $this->parent->set('extension.message', $msg); } } } // Remove from Groups JTable::addIncludePath(WF_ADMINISTRATOR . DS . 'groups'); $rows = JTable::getInstance('profiles', 'WFTable'); $query = 'SELECT id, name, plugins, rows' . ' FROM #__wf_profiles'; $db->setQuery($query); $profiles = $db->loadObjectList(); foreach ($profiles as $profile) { $plugins = explode(',', $profile->plugins); // Existence check if (in_array($this->get('plugin'), $plugins)) { // Load tables $rows->load($profile->id); // Remove from plugins list foreach ($plugins as $k => $v) { if ($this->get('plugin') == $v) { unset($plugins[$k]); } } $rows->plugins = implode(',', $plugins); // Remove from rows if ($this->get('icon')) { $lists = array(); foreach (explode(';', $profile->rows) as $list) { $icons = explode(',', $list); foreach ($icons as $k => $v) { if ($this->get('plugin') == $v) { unset($icons[$k]); } } $lists[] = implode(',', $icons); } $rows->rows = implode(';', $lists); } if (!$rows->store()) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_PLUGIN_UNINSTALL') . ' : ' . JText::sprintf('WF_INSTALLER_REMOVE_FROM_GROUP_ERROR', $prows->name)); } } } } else { JError::raiseWarning(100, WFText::_('WF_INSTALLER_PLUGIN_UNINSTALL') . ' : ' . WFText::_('WF_INSTALLER_MANIFEST_ERROR')); $retval = false; } // remove the plugin folder if (!JFolder::delete($this->parent->getPath('extension_root'))) { JError::raiseWarning(100, WFText::_('WF_INSTALLER_PLUGIN_UNINSTALL') . ' : ' . WFText::_('WF_INSTALLER_PLUGIN_FOLDER_ERROR')); $retval = false; } return $retval; } }administrator/components/com_jce/classes/error.php100644 0 0 1054 12000772076 20151 0ustar 0 0 administrator/components/com_jce/classes/packer.php100644 0 0 11702 12000772076 20306 0ustar 0 0 setProperties($config); } function setFiles($files = array()) { $this->files = $files; } function getFiles() { return $this->files; } function setContentStart($start ='') { $this->start = $start; } function getContentStart() { return $this->start; } function setContentEnd($end ='') { $this->end = $end; } function getContentEnd() { return $this->end; } function setType($type) { $this->type = $type; } function getType() { return $this->type; } /** * Get encoding * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. */ private function _getEncoding() { // Check if it supports gzip $encodings = (isset($_SERVER['HTTP_ACCEPT_ENCODING'])) ? strtolower($_SERVER['HTTP_ACCEPT_ENCODING']) : ""; $encoding = preg_match( '/\b(x-gzip|gzip)\b/', $encodings, $match) ? $match[1] : ""; // Is northon antivirus header if (isset($_SERVER['---------------'])) { $encoding = "x-gzip"; } return $encoding; } function pack($minify = true, $gzip = false) { $type = $this->getType(); // Headers if ($type == 'javascript') { header("Content-type: application/x-javascript; charset: UTF-8"); } if ($type == 'css') { header("Content-type: text/css; charset: UTF-8"); } header("Vary: Accept-Encoding"); // expires after 7 days $expires = 60 * 60 * 24 * 7; header("Cache-Control: maxage=".$expires); // Handle proxies header("Expires: " . gmdate ("D, d M Y H:i:s", time() + $expires) . " GMT"); $files = $this->getFiles(); $encoding = self::_getEncoding(); $zlib = extension_loaded('zlib') && ini_get('zlib.output_compression'); $gzip = $gzip && !empty($encoding) && $zlib && function_exists('gzencode'); $content = $this->getContentStart(); foreach($files as $file) { $content .= $this->getText($file); } $content .= $this->getContentEnd(); // pack javascript if($minify) { if($this->getType() == 'javascript') { $content = $this->jsmin($content); } if($this->getType() == 'css') { $content = $this->cssmin($content); } } // Generate GZIP'd content if($gzip) { header("Content-Encoding: " . $encoding); $content = gzencode($content, 9, FORCE_GZIP); } // stream to client die($content); } function jsmin($data) { return $data; } /** * Simple CSS Minifier * @param $data Data string to minify */ function cssmin($data) { $data = str_replace('\r\n', '\n', $data); $data = preg_replace('#\s+#', ' ', $data); $data = preg_replace('#/\*.*?\*/#s', '', $data); $data = preg_replace('#\s?([:\{\};,])\s?#', '$1', $data); $data = str_replace(';}', '}', $data); return trim($data); } /** * Import CSS from a file * @param file File path where data comes from * @param $data Data from file */ function importCss($data) { if(preg_match_all('#@import url\([\'"]?([^\'"\)]+)[\'"]?\);#i', $data, $matches)) { $data = ''; foreach($matches[1] as $match) { $data .= $this->getText(realpath($this->get('_cssbase') . DS . $match)); } return $data; } return ''; } function getText($file) { if($file && is_file($file)) { if($text = file_get_contents($file)) { // process css files if($this->getType() == 'css') { if(strpos($text, '@import') !== false) { // store the base path of the current file $this->set('_cssbase', dirname($file)); // process import rules $text = $this->importCss($text) . preg_replace('#@import url\([\'"]?([^\'"\)]+)[\'"]?\);#i', '', $text); } // store the base path of the current file $this->set('_imgbase', dirname($file)); // process urls $text = preg_replace_callback('#url\s?\([\'"]?([^\'"\))]+)[\'"]?\)#', array('WFPacker', 'processPaths'), $text); } // make sure text ends in a semi-colon; if ($this->getType() == 'javascript') { $text = rtrim(trim($text), ';') . ';'; } return $text; } } return ''; } function processPaths($data) { $path = str_replace(JPATH_SITE, '', realpath($this->get('_imgbase') . DS . $data[1])); if($path) { return "url('" . JURI::root(true) . str_replace(DS, '/', $path) . "')"; } return "url('" . $data[1] . "')"; } } ?>administrator/components/com_jce/classes/parameter.php100644 0 0 21737 12000772076 21032 0ustar 0 0 _data = new StdClass(); if ($data) { if (!is_object($data)) { $data = json_decode($data); } if ($keys) { if (!is_array($keys)) { $keys = explode('.', $keys); } $this->_key = $keys; foreach ($keys as $key) { $data = isset($data->$key) ? $data->$key : $data; } } $this->bindData($this->_data, $data); } } /** * Method to recursively bind data to a parent object. * * @param object $parent The parent object on which to attach the data values. * @param mixed $data An array or object of data to bind to the parent object. * * @return void * @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved. */ public function bindData(&$parent, $data) { // Ensure the input data is an array. if (is_object($data)) { $data = get_object_vars($data); } else { $data = (array) $data; } foreach ($data as $k => $v) { if (self::is_assoc($v) || is_object($v)) { $parent->$k = new stdClass(); $this->bindData($parent->$k, $v); } else { $parent->$k = $v; } } } public function getAll($name = '') { $results = array(); if ($name) { $groups = array($name => $this->getNumParams($name)); } else { $groups = $this->getGroups(); } foreach ($groups as $group => $num) { if (!isset($this->_xml[$group])) { return null; } $data = new StdClass(); foreach ($this->_xml[$group]->children() as $param) { $key = $param->attributes('name'); $value = $this->get($key, $param->attributes('default')); $data->$key = $value; } $results[$group] = $data; } if ($name) { return $results[$name]; } return $results; } private function isEmpty($value) { return (is_string($value) && $value == "") || (is_array($value) && empty($value)); } /** * Get a parameter value. * * @param string Registry path (e.g. editor.width) * @param string Optional default value, returned if the internal value is null. * @return mixed Value of entry or null * @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved. */ public function get($path, $default = '', $allowempty = true) { // set default value as result $result = $default; // Explode the registry path into an array $nodes = is_array($path) ? $path : explode('.', $path); // Initialize the current node to be the registry root. $node = $this->_data; $found = false; // Traverse the registry to find the correct node for the result. foreach ($nodes as $n) { if (isset($node->$n)) { $node = $node->$n; $found = true; } else { $found = false; break; } } if ($found) { $result = $node; if ($allowempty === false) { if (self::isEmpty($result)) { $result = $default; } } } if (is_numeric($result)) { $result = intval($result); } return $result; } /** * Render all parameters * * @access public * @param string The name of the control, or the default text area if a setup file is not found * @return array Array of all parameters, each as array Any array of the label, the form element and the tooltip * @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved. */ public function getParams($name = 'params', $group = '_default') { if (!isset($this->_xml[$group])) { return false; } $results = array(); $parent = $this->_xml[$group]->attributes('parent'); foreach ($this->_xml[$group]->children() as $param) { $results[] = $this->getParam($param, $name, $group, $parent); // get sub-parameters if ($param->attributes('parameters')) { jimport('joomla.filesystem.folder'); // load manifest files for extensions $files = JFolder::files(JPATH_SITE.DS.$param->attributes('parameters'), '\.xml$', false, true); // get the base key for the parameter $keys = explode('.', $param->attributes('name')); foreach ($files as $file) { $key = $keys[0] . '.' . basename($file, '.xml'); $results[] = new WFParameter($this->_data, $file, $key); } } } return $results; } /** * Render a parameter type * * @param object A param tag node * @param string The control name * @return array Any array of the label, the form element and the tooltip * @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved. */ public function getParam(&$node, $control_name = 'params', $group = '_default', $parent = '') { //get the type of the parameter $type = $node->attributes('type'); $element = $this->loadElement($type); // error happened if ($element === false) { $result = array(); $result[0] = $node->attributes('name'); $result[1] = WFText::_('Element not defined for type').' = '.$type; $result[5] = $result[0]; return $result; } $key = $node->attributes('name'); if ($node->attributes('group')) { $key = $node->attributes('group') . '.' . $node->attributes('name'); } // get value $value = $this->get($key, $node->attributes('default')); // get value if value is object or has parent if (is_object($value) || $parent) { $group = $parent ? $parent . '.' . $group : $group; $value = $this->get($group . '.' . $node->attributes('name'), $node->attributes('default')); } return $element->render($node, $value, $control_name); } private function _cleanAttribute($matches) { return $matches[1] . '="' . preg_replace('#([^a-z0-9_-]+)#i', '', $matches[2]) . '"'; } public function render($name = 'params', $group = '_default') { $params = $this->getParams($name, $group); $html = ''; return $html; } /** * Check if a parent attribute is set. If it is, this parameter groups is included by the parent */ public function hasParent() { foreach ($this->_xml as $name => $group) { if ($group->attributes('parent')) { return true; } } return false; } public static function mergeParams($params1, $params2, $toObject = true) { $merged = $params1; foreach ($params2 as $key => $value) { if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { $merged[$key] = self::mergeParams($merged[$key], $value); } else { if ($value !== '') { $merged[$key] = $value; } } } if ($toObject) { return self::array_to_object($merged); } return $merged; } /** * Method to determine if an array is an associative array. * * @param array An array to test. * @return boolean True if the array is an associative array. * @link http://www.php.net/manual/en/function.is-array.php#98305 */ private static function is_assoc($array) { return (is_array($array) && (count($array) == 0 || 0 !== count(array_diff_key($array, array_keys(array_keys($array)))))); } /** * Convert an associate array to an object * @param array Associative array */ public static function array_to_object($array) { $object = new StdClass(); foreach ($array as $key => $value) { $object->$key = is_array($value) ? self::array_to_object($value) : $value; } return $object; } } administrator/components/com_jce/classes/text.php100644 0 0 3254 12000772076 20010 0ustar 0 0 _($string); if ($translated == $string) { if ($default) { return $default; } if (strpos($string, 'WF_') !== false) { $view = JRequest::getWord('view', ''); // remove prefix $translated = preg_replace(array('#^(WF_)#', '#(LABEL|OPTION|FILEGROUP|' . strtoupper($view) . ')_#', '#_(DESC|TITLE)#'), '', $string); $translated = ucwords(strtolower(str_replace('_', ' ', $translated))); } } return $translated; } /** * Translate a string with variables * @param string $string * @copyright Copyright © 2005 - 2007 Open Source Matters. All rights reserved. */ public static function sprintf($string) { $language = JFactory::getLanguage(); $args = func_get_args(); if (count($args) > 0) { $args[0] = $language->_($args[0]); return call_user_func_array('sprintf', $args); } return ''; } }administrator/components/com_jce/classes/xml.php100644 0 0 4351 12000772076 17623 0ustar 0 0 message); } } return $xml; } /** * Get the name of the element. * * Warning: don't use getName() as it's broken up to php 5.2.3 * * @return string */ public function name() { if (version_compare(phpversion(), '5.2.3', '>')) { return (string) $this->getName(); } // Workaround php bug number 41867, fixed in 5.2.4 return (string) $this->aaa->getName(); } /** * Legacy method to get the element data. * * @return string * @deprecated 1.6 - Feb 5, 2010 */ public function data() { return (string) $this; } /** * Legacy method gets an elements attribute by name. * * @param string * @return string * @deprecated 1.6 - Feb 5, 2010 */ public function getAttribute($name) { return (string) $this->attributes()->$name; } }administrator/components/com_jce/config.xml100644 0 0 477 12000772076 16631 0ustar 0 0
administrator/components/com_jce/controller.php100644 0 0 23221 12000772076 17566 0ustar 0 0 registerTask('apply', 'save'); $this->registerTask('unpublish', 'publish'); // load helpers wfimport('admin.helpers.parameter'); wfimport('admin.helpers.extension'); wfimport('admin.helpers.xml'); } private function loadMenu() { $view = JRequest::getWord('view', 'cpanel'); $model = $this->getModel($view); JSubMenuHelper::addEntry(WFText::_('WF_CPANEL'), 'index.php?option=com_jce&view=cpanel', $view == 'cpanel'); $subMenus = array( 'WF_CONFIGURATION' => 'config', 'WF_PROFILES' => 'profiles', 'WF_INSTALL' => 'installer' ); if (JPluginHelper::isEnabled('system', 'jcemediabox')) { $subMenus['WF_MEDIABOX'] = 'mediabox'; } foreach ($subMenus as $menu => $item) { if ($model->authorize($item)) { JSubMenuHelper::addEntry(WFText::_($menu), 'index.php?option=com_jce&view=' . $item, $view == $item); } } } /** * Create the View. * This is an overloaded function of JController::getView * and includes addition of the JDocument Object with required scripts and styles * @return object */ public function getView($name = '', $type = '', $prefix = '', $config = array()) { $language = JFactory::getLanguage(); $language->load('com_jce', JPATH_ADMINISTRATOR); $document = JFactory::getDocument(); if (!$name) { $name = JRequest::getWord('view', 'cpanel'); } if (!$type) { $type = $document->getType(); } if (empty($config)) { $config = array( 'base_path' => dirname(__FILE__) ); } $view = parent::getView($name, $type, $prefix, $config); $document = JFactory::getDocument(); $document->setTitle(WFText::_('WF_ADMINISTRATION') . ' :: ' . WFText::_('WF_' . strtoupper($name))); $model = $this->getModel($name); // jquery versions $document->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/js/jquery/jquery-' . WF_JQUERY . '.min.js?version=' . $model->getVersion()); $document->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/js/jquery/jquery-ui-' . WF_JQUERYUI . '.custom.min.js?version=' . $model->getVersion()); // jQuery noConflict $document->addScriptDeclaration('jQuery.noConflict();'); $scripts = array(); switch ($name) { case 'help': $scripts[] = 'help.js'; break; default: // load Joomla! core javascript if (method_exists('JHtml', 'core')) { JHtml::core(); } require_once(JPATH_ADMINISTRATOR . DS . 'includes' . DS . 'toolbar.php'); JToolBarHelper::title(WFText::_('WF_ADMINISTRATION') . ' ›› ' . WFText::_('WF_' . strtoupper($name)), 'logo.png'); $params = WFParameterHelper::getComponentParams(); $theme = $params->get('preferences.theme', 'jce'); $scripts = array_merge(array( 'tips.js', 'html5.js' )); // Load admin scripts $document->addScript(JURI::root(true) . '/administrator/components/com_jce/media/js/jce.js?version=' . $model->getVersion()); $options = array( 'labels' => array( 'ok' => WFText::_('WF_LABEL_OK'), 'cancel' => WFText::_('WF_LABEL_CANCEL'), 'select' => WFText::_('WF_LABEL_SELECT'), 'save' => WFText::_('WF_LABEL_SAVE'), 'saveclose' => WFText::_('WF_LABEL_SAVECLOSE'), 'alert' => WFText::_('WF_LABEL_ALERT'), 'required' => WFText::_('WF_MESSAGE_REQUIRED') ) ); $document->addScriptDeclaration('jQuery(document).ready(function($){$.jce.init(' . json_encode($options) . ');});'); $view->addHelperPath(dirname(__FILE__) . DS . 'helpers'); $this->addModelPath(dirname(__FILE__) . DS . 'models'); $view->loadHelper('toolbar'); $view->loadHelper('tools'); $view->loadHelper('xml'); $view->loadHelper($name); $this->loadMenu(); break; } if ($model = $this->getModel($name)) { $view->setModel($model, true); } // Load site scripts foreach ($scripts as $script) { $document->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/js/' . $script . '?version=' . $model->getVersion()); } require_once(dirname(__FILE__) . DS . 'helpers' . DS . 'system.php'); $app = JFactory::getApplication(); $app->registerEvent('onAfterRender', 'WFSystemHelper'); $view->assignRef('document', $document); return $view; } public function pack() { } /** * Display View * @return */ public function display($cachable = false, $params = false) { $view = $this->getView(); $view->display(); } /** * Generic cancel method * @return */ public function cancel() { // Check for request forgeries JRequest::checkToken() or die('Invalid Token'); $this->setRedirect(JRoute::_('index.php?option=com_jce&view=cpanel', false)); } public function check() { // we already no its broken.. if (JRequest::getCmd('task') == 'repair') { return; } // add models path JModel::addIncludePath(dirname(__FILE__) . DS . 'models'); $profiles = JModel::getInstance('profiles', 'WFModel'); $state = $profiles->checkTable(); // Check Profiles DB if (!$state) { $link = JHTML::link('index.php?option=com_jce&task=repair&type=tables', WFText::_('WF_DB_CREATE_RESTORE')); self::_redirect(WFText::_('WF_DB_PROFILES_ERROR') . ' - ' . $link, 'error'); } if ($state) { if (!$profiles->checkTableContents()) { $link = JHTML::link('index.php?option=com_jce&task=repair&type=tables', WFText::_('WF_DB_CREATE_RESTORE')); self::_redirect(WFText::_('WF_DB_PROFILES_ERROR') . ' - ' . $link, 'error'); } } jimport('joomla.plugin.helper'); // Check Editor is installed if (JPluginHelper::getPlugin('editors', 'jce') === false) { $link = JHTML::link('index.php?option=com_jce&task=repair&type=editor', WFText::_('WF_EDITOR_INSTALL')); self::_redirect(WFText::_('WF_EDITOR_INSTALLED_MANUAL_ERROR') . ' - ' . $link, 'error'); } } public function repair() { $app = JFactory::getApplication(); $type = JRequest::getWord('type', 'tables'); switch ($type) { case 'tables' : // add models path JModel::addIncludePath(dirname(__FILE__) . DS . 'models'); $profiles = JModel::getInstance('profiles', 'WFModel'); $profiles->installProfiles(); $this->setRedirect(JRoute::_('index.php?option=com_jce&view=cpanel', false)); break; case 'editor' : $source = dirname(__FILE__) . DS . 'packages' . DS . 'editors'; if (is_dir($source)) { jimport('joomla.installer.installer'); $installer = new JInstaller(); if ($installer->install($source)) { $app->enqueueMessage(WFText::_('WF_EDITOR_INSTALL_SUCCESS')); } else { $app->enqueueMessage(WFText::_('WF_EDITOR_INSTALL_FAILED')); } $this->setRedirect(JRoute::_('index.php?option=com_jce&view=cpanel', false)); } break; } } public function authorize($task) { $view = JRequest::getWord('view', 'cpanel'); $model = $this->getModel($view); if (!$model->authorize($task)) { if ($model->authorize('manage')) { $this->setRedirect('index.php?option=com_jce', WFText::_('JERROR_ALERTNOAUTHOR'), 'error'); } else { $this->setRedirect('index.php', WFText::_('JERROR_ALERTNOAUTHOR'), 'error'); } return false; } return true; } private static function _redirect($msg = '', $state = '') { $app = JFactory::getApplication(); if ($msg) { $app->enqueueMessage($msg, $state); } JRequest::setVar('view', 'cpanel'); JRequest::setVar('task', ''); return false; } } ?>administrator/components/com_jce/controller/config.php100644 0 0 3720 12000772076 21015 0ustar 0 0 registerTask( 'apply', 'save' ); } function save() { // Check for request forgeries JRequest::checkToken() or die('RESTRICTED'); $db = JFactory::getDBO(); $task = $this->getTask(); $client = JRequest::getWord( 'client', 'site' ); // get params $component = WFExtensionHelper::getComponent(); // create params object from json string $params = json_decode($component->params); $registry = new JRegistry(); $registry->loadArray(JRequest::getVar('params', '', 'POST', 'ARRAY')); // set preference object $params->editor = $registry->toObject(); // set params as JSON string $component->params = json_encode($params); if (!$component->check()) { JError::raiseError(500, $component->getError() ); } if (!$component->store()) { JError::raiseError(500, $component->getError() ); } $component->checkin(); $msg = JText::sprintf('WF_CONFIG_SAVED'); switch ( $task ) { case 'apply': $this->setRedirect( 'index.php?option=com_jce&view=config', $msg ); break; case 'save': default: $this->setRedirect( 'index.php?option=com_jce&view=cpanel', $msg ); break; } } } ?>administrator/components/com_jce/controller/cpanel.php100644 0 0 1347 12000772076 21015 0ustar 0 0 getModel('cpanel'); $feeds = $model->getFeeds(); exit(json_encode(array('feeds' => $feeds))); } } ?>administrator/components/com_jce/controller/editor.php100644 0 0 3712 12000772076 21037 0ustar 0 0 load('com_jce', JPATH_ADMINISTRATOR); $layout = JRequest::getCmd('layout'); $plugin = JRequest::getCmd('plugin'); if ($layout) { switch ($layout) { case 'editor': if ($task == 'pack') { jimport('joomla.application.component.model'); JModel::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'models'); require_once(WF_EDITOR_CLASSES . DS . 'editor.php'); $model = JModel::getInstance('editor', 'WFModel'); $model->pack(); } break; case 'theme': $theme = JRequest::getWord('theme'); if ($theme && is_dir(WF_EDITOR_THEMES . DS . $theme)) { require_once(WF_EDITOR_THEMES . DS . $theme .DS. 'theme.php'); } else { JError::raiseError(500, WFText::_('Theme not found!')); } break; case 'plugin': $file = basename(JRequest::getCmd('file', $plugin)); $path = WF_EDITOR_PLUGINS . DS . $plugin; if (is_dir($path) && file_exists($path . DS . $file . '.php')) { include_once($path . DS . $file . '.php'); } else { JError::raiseError(500, WFText::_('File ' . $file . ' not found!')); } break; } exit(); } else { JError::raiseError(500, WFText::_('No Layout')); } } } ?>administrator/components/com_jce/controller/help.php100644 0 0 1257 12000772076 20503 0ustar 0 0 administrator/components/com_jce/controller/installer.php100644 0 0 4556 12000772076 21555 0ustar 0 0 registerTask( 'disable', 'enable' ); $language = JFactory::getLanguage(); $language->load( 'com_installer', JPATH_ADMINISTRATOR ); } /** * Install an extension * * @access public * @return void * @since 1.5 */ function install() { // Check for request forgeries JRequest::checkToken() or jexit( 'RESTRICTED' ); $model = $this->getModel('installer'); if ($model->install()) { $cache =JFactory::getCache('mod_menu'); $cache->clean(); } $view = $this->getView(); $view->setModel($model, true); $view->display(); } /** * Remove (uninstall) an extension * * @static * @param array An array of identifiers * @return boolean True on success * @since 1.0 */ function remove() { // Check for request forgeries JRequest::checkToken() or jexit( 'RESTRICTED' ); $model = $this->getModel('installer'); $items = array( 'plugin' => JRequest::getVar('pid', array (), '', 'array'), 'extension' => JRequest::getVar('eid', array (), '', 'array'), 'language' => JRequest::getVar('lid', array (), '', 'array'), 'related' => JRequest::getVar('rid', array (), '', 'array') ); // Uninstall the chosen extensions foreach ($items as $type => $ids) { if (count($ids)) { foreach ($ids as $id) { if ($id) { if ($model->remove($id, $type)) { $cache =JFactory::getCache('mod_menu'); $cache->clean(); } } } } } $view = $this->getView(); $view->setModel($model, true); $view->display(); } } ?>administrator/components/com_jce/controller/mediabox.php100644 0 0 3644 12000772076 21345 0ustar 0 0 registerTask( 'apply', 'save' ); } function save() { // Check for request forgeries JRequest::checkToken() or die( 'RESTRICTED' ); $db = JFactory::getDBO(); if (WF_JOOMLA15) { $row = JTable::getInstance('plugin'); $query = 'SELECT id FROM #__plugins' . ' WHERE folder = ' . $db->Quote('system') . ' AND element = ' . $db->Quote('jcemediabox') ; $db->setQuery($query); $id = $db->loadResult(); } else { // get component table $row = JTable::getInstance('extension'); $id = $row->find(array( 'type' => 'plugin', 'element' => 'jcemediabox' )); } $row->load($id); $task = $this->getTask(); if (!$row->bind(JRequest::get('post'))) { JError::raiseError(500, $row->getError()); } if (!$row->check()) { JError::raiseError(500, $row->getError() ); } if (!$row->store()) { JError::raiseError(500, $row->getError() ); } $row->checkin(); $msg = JText::sprintf('WF_MEDIABOX_SAVED'); switch ( $task ) { case 'apply': $this->setRedirect( 'index.php?option=com_jce&view=mediabox', $msg ); break; case 'save': default: $this->setRedirect( 'index.php?option=com_jce&view=cpanel', $msg ); break; } } } ?>administrator/components/com_jce/controller/popup.php100644 0 0 2051 12000772076 20707 0ustar 0 0 addViewPath(JPATH_COMPONENT . DS . 'views'); $view = $this->getView('popup', $document->getType()); $view->assignRef('document', $document); $view->display(); } }administrator/components/com_jce/controller/preferences.php100644 0 0 5271 12000772076 22054 0ustar 0 0 registerTask( 'apply', 'save' ); } function filter($data) { $model = $this->getModel('preferences'); $form = $model->getForm(); if (is_a($form, 'JForm')) { return $form->filter($data); } return $data; } function save() { // Check for request forgeries JRequest::checkToken() or die( 'RESTRICTED' ); $db = JFactory::getDBO(); $post = JRequest::getVar('params', '', 'POST', 'ARRAY'); $registry = new JRegistry(); $registry->loadArray($post); // get params $component = WFExtensionHelper::getComponent(); // create params object from json string $params = json_decode($component->params); // set preferences object $preferences = $registry->toObject(); if (isset($preferences->rules)) { jimport('joomla.access.rules'); if (class_exists('JRules')) { $data = $this->filter($post); $rules = new JRules($data['rules']); $asset = JTable::getInstance('asset'); $option = JRequest::getCmd('option'); if (!$asset->loadByName($option)) { $root = JTable::getInstance('asset'); $root->loadByName('root.1'); $asset->name = $option; $asset->title = $option; $asset->setLocation($root->id,'last-child'); } $asset->rules = (string) $rules; if (!$asset->check() || !$asset->store()) { JError::raiseError(500, $asset->getError()); return false; } // Joomla! 1.5 } else { $params->access = $preferences->rules; } } if (isset($preferences->preferences)) { $params->preferences = $preferences->preferences; // set params as JSON string $component->params = json_encode($params); if (!$component->check()) { JError::raiseError(500, $row->getError()); } if (!$component->store()) { JError::raiseError(500, $row->getError()); } $component->checkin(); } $close = 0; if ($this->getTask() == 'save') { $close = 1; } $this->setRedirect('index.php?option=com_jce&view=preferences&tmpl=component&close=' . $close, WFText::_('WF_PREFERENCES_SAVED')); } } ?>administrator/components/com_jce/controller/profiles.php100644 0 0 30055 12000772076 21414 0ustar 0 0 registerTask('apply', 'save'); $this->registerTask('unpublish', 'publish'); $this->registerTask('enable', 'publish'); $this->registerTask('disable', 'publish'); $this->registerTask('orderup', 'order'); $this->registerTask('orderdown', 'order'); } function remove() { // Check for request forgeries JRequest::checkToken() or die( 'RESTRICTED' ); $db = JFactory::getDBO(); $user = JFactory::getUser(); $cid = JRequest::getVar( 'cid', array(0), 'post', 'array' ); JArrayHelper::toInteger($cid, array(0)); if (count( $cid ) < 1) { JError::raiseError(500, WFText::_('WF_PROFILES_SELECT_ERROR') ); } $cids = implode( ',', $cid ); $query = 'DELETE FROM #__wf_profiles' . ' WHERE id IN ( '.$cids.' )' ; $db->setQuery( $query ); if (!$db->query()) { JError::raiseError(500, $db->getErrorMsg() ); } $msg = JText::sprintf('WF_PROFILES_DELETED', count( $cid )); $this->setRedirect( 'index.php?option=com_jce&view=profiles', $msg ); } function copy() { // Check for request forgeries JRequest::checkToken() or die( 'RESTRICTED' ); $db = JFactory::getDBO(); $user = JFactory::getUser(); $cid = JRequest::getVar( 'cid', array(0), 'post', 'array' ); JArrayHelper::toInteger($cid, array(0)); $n = count( $cid ); if ($n == 0) { return JError::raiseWarning( 500, WFText::_('WF_PROFILES_SELECT_ERROR')); } $row = JTable::getInstance('profiles', 'WFTable'); foreach ($cid as $id){ // load the row from the db table $row->load( (int) $id ); $row->name = JText::sprintf('WF_PROFILES_COPY_OF', $row->name ); $row->id = 0; $row->published = 0; if (!$row->check()) { return JError::raiseWarning( 500, $row->getError() ); } if (!$row->store()) { return JError::raiseWarning( 500, $row->getError() ); } $row->checkin(); $row->reorder( 'ordering='.$db->Quote( $row->ordering ) ); } $msg = JText::sprintf('WF_PROFILES_COPIED', $n); $this->setRedirect( 'index.php?option=com_jce&view=profiles', $msg ); } function save() { // Check for request forgeries JRequest::checkToken() or die( 'RESTRICTED' ); $db = JFactory::getDBO(); $row = JTable::getInstance('profiles', 'WFTable'); $task = $this->getTask(); // get components $components = JRequest::getVar( 'components', array(), 'post', 'array' ); // get usertypes $types = JRequest::getVar( 'usergroups', array(), 'post', 'array' ); // get users $users = JRequest::getVar( 'users', array(), 'post', 'array' ); if (!$row->bind(JRequest::get('post'))) { JError::raiseError(500, $row->getError() ); } $row->types = implode(',', $types); $row->components = implode(',', $components); $row->users = implode(',', $users); $data = new StdClass(); // get params array $params = JRequest::getVar('params', array(), 'POST', 'array'); if (isset($params['editor'])) { $data->editor = WFParameterHelper::toObject($params['editor']); } $plugins = explode(',', $row->plugins); foreach ($plugins as $plugin) { // add plugin params to array if (isset($params[$plugin])) { $data->$plugin = WFParameterHelper::toObject($params[$plugin]); } } $row->params = json_encode($data); if (!$row->check()) { JError::raiseError(500, $row->getError()); } if (!$row->store()) { JError::raiseError(500, $row->getError()); } $row->checkin(); switch ( $task ) { case 'apply': $msg = JText::sprintf('WF_PROFILES_SAVED_CHANGES', $row->name ); $this->setRedirect( 'index.php?option=com_jce&view=profiles&task=edit&cid[]='. $row->id, $msg ); break; case 'save': default: $msg = JText::sprintf('WF_PROFILES_SAVED', $row->name ); $this->setRedirect( 'index.php?option=com_jce&view=profiles', $msg ); break; } } /** * Generic publish method * @return */ function publish() { // Check for request forgeries JRequest::checkToken() or die ('Invalid Token'); $db = JFactory::getDBO(); $user = JFactory::getUser(); $cid = JRequest::getVar('cid', array (0), 'post', 'array'); JArrayHelper::toInteger($cid, array (0)); switch($this->getTask()) { case 'publish': case 'enable': $publish = 1; break; case 'unpublish': case 'disable': $publish = 0; break; } $view = JRequest::getCmd('view'); if (count($cid) < 1) { $action = $publish ? WFText::_('WF_LABEL_PUBLISH') : WFText::_('WF_LABEL_UNPUBLISH'); JError::raiseError(500, JText::sprintf('WF_PROFILES_VIEW_SELECT', $view, $action)); } $cids = implode(',', $cid); $query = 'UPDATE #__wf_profiles SET published = '.(int)$publish .' WHERE id IN ( '.$cids.' )' .' AND ( checked_out = 0 OR ( checked_out = '.(int)$user->get('id').' ))' ; $db->setQuery($query); if (!$db->query()) { JError::raiseError(500, $db->getErrorMsg()); } if (count($cid) == 1) { $row = JTable::getInstance('profiles', 'WFTable'); $row->checkin($cid[0]); } $this->setRedirect('index.php?option=com_jce&view=profiles'); } function order() { // Check for request forgeries JRequest::checkToken() or jexit( 'Invalid Token' ); $db = JFactory::getDBO(); $cid = JRequest::getVar( 'cid', array(0), 'post', 'array' ); JArrayHelper::toInteger($cid, array(0)); $uid = $cid[0]; $inc = ( $this->getTask() == 'orderup' ? -1 : 1 ); $row = JTable::getInstance('profiles', 'WFTable'); $row->load( $uid ); $row->move( $inc ); $this->setRedirect( 'index.php?option=com_jce&view=profiles' ); } function saveorder( ) { // Check for request forgeries JRequest::checkToken() or jexit( 'RESTRICTED' ); $cid = JRequest::getVar( 'cid', array(0), 'post', 'array' ); JArrayHelper::toInteger($cid, array(0)); $db = JFactory::getDBO(); $total = count( $cid ); $order = JRequest::getVar( 'order', array(0), 'post', 'array' ); JArrayHelper::toInteger($order, array(0)); $cid = JRequest::getVar( 'cid', array(0), 'post', 'array' ); JArrayHelper::toInteger($cid, array(0)); $row = JTable::getInstance('profiles', 'WFTable'); $conditions = array(); // update ordering values for ( $i=0; $i < $total; $i++ ) { $row->load( (int) $cid[$i] ); if ($row->ordering != $order[$i]) { $row->ordering = $order[$i]; if (!$row->store()) { JError::raiseError(500, $db->getErrorMsg() ); } // remember to updateOrder this group $condition = ' AND ordering > -10000 AND ordering < 10000'; $found = false; foreach ( $conditions as $cond ) { if ($cond[1]==$condition) { $found = true; break; } } if (!$found) $conditions[] = array($row->id, $condition); } } // execute updateOrder for each group foreach ( $conditions as $cond ) { $row->load( $cond[0] ); $row->reorder( $cond[1] ); } $msg = WFText::_( 'WF_PROFILES_ORDERING_SAVED' ); $this->setRedirect( 'index.php?option=com_jce&view=profiles', $msg ); } function cancelEdit() { // Check for request forgeries JRequest::checkToken() or die('RESTRICTED'); $view = JRequest::getCmd('view'); $db =JFactory::getDBO(); $row =JTable::getInstance($view, 'WFTable'); $row->bind(JRequest::get('post')); $row->checkin(); $this->setRedirect(JRoute::_('index.php?option=com_jce&view='.$view, false)); } function export() { $mainframe = JFactory::getApplication(); $db = JFactory::getDBO(); $tmp = $mainframe->getCfg('tmp_path'); $buffer = ''; $buffer .= "\n".''; $buffer .= "\n\t".''; $cid = JRequest::getVar( 'cid', array(0), 'post', 'array' ); JArrayHelper::toInteger($cid, array(0)); if (count( $cid ) < 1) { JError::raiseError(500, WFText::_('WF_PROFILES_SELECT_ERROR')); } $cids = implode( ',', $cid ); // get froup data $query = 'SELECT * FROM #__wf_profiles' . ' WHERE id IN ('.$cids.')' ; $db->setQuery($query); $profiles = $db->loadObjectList(); foreach ($profiles as $profile) { // remove some stuff unset($profile->id); unset($profile->checked_out); unset($profile->checked_out_time); // set published to 0 $profile->published = 0; $buffer .= "\n\t\t"; $buffer .= ''; foreach ($profile as $key => $value) { if ($key == 'params') { $buffer .= "\n\t\t\t".'<'.$key.'>'; if ($value) { $params = explode("\n", $value); foreach ($params as $param) { if ($param !== '') { $buffer .= "\n\t\t\t\t".''.$param.''; } } $buffer .= "\n\t\t\t\t"; } $buffer .= ''; } else { $buffer .= "\n\t\t\t".'<'.$key.'>'.$this->encodeData($value).''; } } $buffer .= "\n\t\t"; } $buffer .= "\n\t"; $buffer .= "\n"; // set_time_limit doesn't work in safe mode if (!ini_get('safe_mode')) { @set_time_limit(0); } $name = 'jce_profile_'.date('Y_m_d').'.xml'; header("Pragma: public"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Expires: 0"); header("Content-Transfer-Encoding: binary"); header ("Content-Type: text/xml"); header('Content-Disposition: attachment;' .' filename="'.$name.'";' ); echo $buffer; exit(); } /** * Process XML restore file * @param object $xml * @return boolean */ function import() { // Check for request forgeries JRequest::checkToken() or die('RESTRICTED'); $mainframe = JFactory::getApplication(); $tmp = $mainframe->getCfg('tmp_path'); $file = JRequest::getVar('import', '', 'files', 'array'); $input = JRequest::getVar('import_input'); $model = $this->getModel('profiles', 'WFModel'); jimport('joomla.filesystem.file'); if (!is_array($file)) { $mainframe->enqueueMessage(WFText::_('WF_PROFILES_UPLOAD_NOFILE'), 'error'); } else { if (!$file['name'] || !$file['tmp_name']) { if (JFile::exists($input)) { $this->processImport($input); } else { $mainframe->enqueueMessage(WFText::_('WF_PROFILES_IMPORT_NOFILE'), 'error'); } } else { // Check if there was a problem uploading the file. if ($file['error'] || $file['size'] < 1) { $mainframe->enqueueMessage(WFText::_('WF_PROFILES_UPLOAD_FAILED'), 'error'); } else { $dest = $tmp.DS.$file['name']; if (JFile::upload($file['tmp_name'], $dest)) { if (JFile::exists($dest)) { $model->processImport($dest); } else { $mainframe->enqueueMessage(WFText::_('WF_PROFILES_UPLOAD_FAILED'), 'error'); } } else { $mainframe->enqueueMessage(WFText::_('WF_PROFILES_UPLOAD_FAILED'), 'error'); } } } } $this->setRedirect('index.php?option=com_jce&view=profiles'); } /** * CDATA encode a parameter if it contains & < > characters, eg: * @param object $param * @return CDATA encoded parameter or parameter */ function encodeData($data) { if (preg_match('/[<>&]/', $data)) { $data = ''; } $data = preg_replace('/"/', '\"', $data); return $data; } } ?>administrator/components/com_jce/controller/updates.php100644 0 0 2224 12000772076 21213 0ustar 0 0 getModel('updates'); $result = array(); switch ($step) { case 'check': $result = $model->check(); break; case 'download': $result = $model->download(); break; case 'install': $result = $model->install(); break; } exit($result); } } ?>administrator/components/com_jce/elements/browser.php100644 0 0 4473 12000772076 20672 0ustar 0 0 attributes() as $k => $v) { if ($v != '') { $attributes[$k] = $v; } } /* * Required to avoid a cycle of encoding & * html_entity_decode was used in place of htmlspecialchars_decode because * htmlspecialchars_decode is not compatible with PHP 4 */ $value = htmlspecialchars(html_entity_decode($value, ENT_QUOTES), ENT_QUOTES); $attributes['class'] = ( $node->attributes('class') ? $node->attributes('class') . ' text_area' : 'text_area' ); $control = $control_name.'['.$name.']'; $html = ''; $attributes['value'] = $value; $attributes['type'] = 'text'; $attributes['name'] = $control; $attributes['id'] = preg_replace('#[^a-z0-9_-]#i', '', $control_name.$name); $filter = isset($attributes['data-filter']) ? $attributes['data-filter'] : ''; $html .= ' $v) { if (!in_array($k, array('default', 'label', 'description'))) { $html .= ' ' . $k . ' = "' . $v . '"'; } } $html .= ' />'; $options = array( 'width' => 765, 'height' => 480, 'modal' => true, 'id' => $attributes['id'] . '_browser' ); $model = JModel::getInstance('WFModel'); $html .= ''; return $html; } } ?>administrator/components/com_jce/elements/extension.php100644 0 0 2657 12000772076 21225 0ustar 0 0 attributes('class') ? 'class="'.$node->attributes('class').' text_area"' : 'class="text_area"' ); $control = $control_name.'['.$name.']'; return ''; } } ?>administrator/components/com_jce/elements/list.php100644 0 0 7404 12000772076 20157 0ustar 0 0 attributes('class')) { $attribs[] = 'class="' . $class . '"'; } else { $attribs[] = 'class="inputbox"'; } foreach ($node->children() as $option) { $val = $option->attributes('value'); $text = $option->data(); $disabled = $option->attributes('disabled') ? true : false; $text = strpos($text, 'WF_') === false ? $text : WFText::_($text); if (is_array($value)) { $key = array_search($val, $value); if ($key !== false) { $options[$key] = JHTML::_('select.option', $val, $text, 'value', 'text', $disabled); } } else { $options[] = JHTML::_('select.option', $val, $text, 'value', 'text', $disabled); } // create temp values $values[] = $val; } // re-sort options by key ksort($options); // method to append additional values to options array if (is_array($value)) { $diff = array_diff($values, $value); foreach ($node->children() as $option) { $val = $option->attributes('value'); $text = $option->data(); $text = strpos($text, 'WF_') === false ? $text : WFText::_($text); if (in_array($val, $diff)) { $options[] = JHTML::_('select.option', $val, $text); } } } // revert to default values if ($value === '') { $value = $node->attributes('defaults'); } // editable lists if (strpos($class, 'editable') !== false) { // pattern data attribute for editable select input box if ($node->attributes('pattern')) { $attribs[] = 'data-pattern="' . $node->attributes('pattern') . '"'; } $value = strpos($value, 'WF_') === false ? $value : WFText::_($value); // editable lists - add value to list if (!in_array($value, $values) && !$node->attributes('multiple')) { $options[] = JHTML::_('select.option', $value, $value); } } // pattern data attribute for editable select input box if ($node->attributes('parent')) { $attribs[] = 'data-parent="' . preg_replace(array('#^params#', '#([^\w]+)#'), '', $control_name) . $node->attributes('parent') . '"'; } // multiple lists if ($node->attributes('multiple')) { $attribs[] = 'multiple="multiple"'; $ctrl .= '[]'; $value = !is_array($value) ? preg_split('#[|,]#', $value) : $value; } return JHTML::_('select.genericlist', $options, $ctrl, implode(' ', $attribs), 'value', 'text', $value, $control_name . $name); } } ?> administrator/components/com_jce/elements/text.php100644 0 0 7661 12000772076 20175 0ustar 0 0 attributes() as $k => $v) { if ($v != '') { $attributes[$k] = $v; } } if (strpos($name, 'max_size') !== false || strpos($node->attributes('class'), 'upload_size') !== false) { $uploadsize = intval($this->getUploadValue()); $attributes['max'] = $uploadsize; } /* * Required to avoid a cycle of encoding & * html_entity_decode was used in place of htmlspecialchars_decode because * htmlspecialchars_decode is not compatible with PHP 4 */ $value = htmlspecialchars(html_entity_decode($value, ENT_QUOTES), ENT_QUOTES); $attributes['class'] = ( $node->attributes('class') ? $node->attributes('class') . ' text_area' : 'text_area' ); $control = $control_name . '[' . $name . ']'; $html = ''; $attributes['value'] = $value; $attributes['type'] = 'text'; $attributes['name'] = $control; $attributes['id'] = preg_replace('#[^a-z0-9_-]#i', '', $control_name . $name); // pattern data attribute for editable select input box if ($node->attributes('parent')) { $attributes['data-parent'] = preg_replace(array('#^params#', '#([^\w]+)#'), '', $control_name) . $node->attributes('parent'); } $html .= ' $v) { if (!in_array($k, array('default', 'label', 'description'))) { $html .= ' ' . $k . ' = "' . $v . '"'; } } $html .= ' />'; if (strpos($name, 'max_size') !== false) { $html .= $this->uploadSize(); } return $html; } function uploadSize() { return ' ' . WFText::_('WF_SERVER_UPLOAD_SIZE') . ' : ' . $this->getUploadValue(); } function getUploadValue() { $upload = trim(ini_get('upload_max_filesize')); $post = trim(ini_get('post_max_size')); $upload = $this->convertValue($upload); $post = $this->convertValue($post); if (intval($upload) <= intval($post)) { return $upload; } return $post; } function convertValue($value) { $unit = 'KB'; // GB if ($value > 1073741824) $unit = 'GB'; // MB if ($value > 1048576) $unit = 'MB'; // Convert to bytes switch (strtolower($value{strlen($value) - 1})) { case 'g': $value *= 1073741824; break; case 'm': $value *= 1048576; break; case 'k': $value *= 1024; break; } // Convert to unit value switch (strtolower($unit{0})) { case 'g': $value /= 1073741824; break; case 'm': $value /= 1048576; break; case 'k': $value /= 1024; break; } return preg_replace('/[^0-9]/', '', $value) . ' ' . $unit; } } ?>administrator/components/com_jce/elements/textarea.php100644 0 0 3710 12000772076 21015 0ustar 0 0 '' ); foreach ($attributes as $k => $v) { $av = $node->attributes($k); if ($av || $v) { $v = !$av ? $v : $av; $attribs .= ' ' . $k . '="' . $v . '"'; } } // pattern data attribute for editable select input box if ($node->attributes('parent')) { $attribs .= 'data-parent="' . preg_replace(array('#^params#', '#([^\w]+)#'), '', $control_name) . $node->attributes('parent') . '"'; } $rows = $node->attributes('rows'); $cols = $node->attributes('cols'); $class = ( $node->attributes('class') ? 'class="' . $node->attributes('class') . '"' : 'class="text_area"' ); // convert
tags so they are not visible when editing $value = str_replace('
', "\n", $value); return ''; } } ?>administrator/components/com_jce/helpers/browser.php100644 0 0 1435 12000772076 20513 0ustar 0 0 getBrowserLink($element, $filter); } } administrator/components/com_jce/helpers/editor.php100644 0 0 2427 12000772076 20320 0ustar 0 0 #', // replace template css etc. '#]+>#', // remove body class etc. '#]*>#', // remove extra line breaks '#\n{4}+#' ); $replace = array( '', '', '', '' ); $buffer = preg_replace(str_replace('/', '\/', $search), $replace, $buffer); JResponse::setBody($buffer); return true; } } ?>administrator/components/com_jce/helpers/extension.php100644 0 0 3263 12000772076 21045 0ustar 0 0 load($id); } else { $component->loadByOption($option); } } else { // get component table $component =JTable::getInstance('extension'); if(!$id) { $id = $component->find( array('type' => 'component', 'element' => $option)); } $component->load($id); } return $component; } public static function getPlugin($id =null, $element ='jce', $folder ='editors') { if(WF_JOOMLA15) { $plugin =JTable::getInstance('plugin'); if(!$id) { $db =JFactory::getDBO(); $query = 'SELECT id FROM #__plugins' . ' WHERE folder = ' . $db->Quote($folder) . ' AND element = ' . $db->Quote($element); $db->setQuery($query); $id = $db->loadResult(); } $plugin->load($id); } else { // get component table $plugin =JTable::getInstance('extension'); if(!$id) { $id = $plugin->find( array('type' => 'plugin', 'folder' => $folder, 'element' => $element)); } $plugin->load($id); // map extension_id to id $plugin->id = $plugin->extension_id; } return $plugin; } } administrator/components/com_jce/helpers/parameter.php100644 0 0 1711 12000772076 21005 0ustar 0 0 bind($data); return $param->toObject(); } public static function getComponentParams($key = '', $path = '') { require_once(JPATH_COMPONENT_ADMINISTRATOR . DS . 'classes' . DS . 'parameter.php'); $component = JComponentHelper::getComponent('com_jce'); return new WFParameter($component->params, $path, $key); } }administrator/components/com_jce/helpers/system.php100644 0 0 5102 12000772076 20347 0ustar 0 0 params); $theme = $params->get('preferences.theme', 'jce'); $site_path = JPATH_COMPONENT_SITE . DS . 'editor' . DS . 'libraries' . DS . 'css'; $admin_path = JPATH_COMPONENT_ADMINISTRATOR . DS . 'media' . DS . 'css'; // Load styles $styles = array(); if (!JFolder::exists($site_path . DS . 'jquery' . DS . $theme)) { $theme = 'jce'; } if (JFolder::exists($site_path . DS . 'jquery' .DS. $theme)) { $files = JFolder::files($site_path . DS . 'jquery' .DS. $theme, '\.css'); foreach ($files as $file) { $styles[] = 'components/com_jce/editor/libraries/css/jquery/' . $theme . '/' . $file; } } // admin global css $styles = array_merge($styles, array( 'administrator/components/com_jce/media/css/global.css' )); if (JFile::exists($admin_path . DS . $view . '.css')) { $styles[] = 'administrator/components/com_jce/media/css/' . $view . '.css'; } return $styles; } function loadStyles() { $styles = $this->getStyles(); $out = ''; foreach ($styles as $style) { $out .= '' . "\n"; } return $out; } function onAfterRender() { $buffer = JResponse::getBody(); $buffer = preg_replace('#([\s\S]+?)<\/head>#', '$1' . $this->loadStyles() . '', $buffer); JResponse::setBody($buffer); return true; } } ?>administrator/components/com_jce/helpers/toolbar.php100644 0 0 13724 12000772076 20516 0ustar 0 0 getTag(); $sub = explode('.', $type); $category = array_shift($sub); $article = implode('.', $sub); $link = '&category=' . $category . '&article=' . $article; $bar = JToolBar::getInstance('toolbar'); $options = array( 'width' => 780, 'height' => 560, 'modal' => true ); $html = ''; $html .= '' . WFText::_('WF_HELP') . ''; $bar->appendButton('Custom', $html, 'help'); } /** * Writes a configuration button and invokes a cancel operation (eg a checkin) * @param string The name of the component, eg, com_content * @param int The height of the popup * @param int The width of the popup * @param string The name of the button * @param string An alternative path for the configuation xml relative to JPATH_SITE * @since 1.0 */ public static function preferences() { $bar = JToolBar::getInstance('toolbar'); $options = array( 'width' => 760, 'height' => 540, 'modal' => true ); $html = ''; $html .= '' . WFText::_('WF_PREFERENCES') . ''; $bar->appendButton('Custom', $html, 'config'); } /** * Writes a configuration button and invokes a cancel operation (eg a checkin) * @param string The name of the component, eg, com_content * @param int The height of the popup * @param int The width of the popup * @param string The name of the button * @param string An alternative path for the configuation xml relative to JPATH_SITE * @since 1.0 */ public static function updates($enabled = false) { $bar = JToolBar::getInstance('toolbar'); // Add a configuration button $options = array( 'width' => 760, 'height' => 540, 'modal' => true ); if ($enabled) { $html = ''; $html .= '' . WFText::_('WF_UPDATES') . ''; } else { $html = '' . WFText::_('WF_UPDATES_NOSUPPORT') . ''; } $bar->appendButton('Custom', $html, 'config'); } public static function access() { $bar = JToolBar::getInstance('toolbar'); $options = array( 'width' => 760, 'height' => 540, 'modal' => true, 'buttons' => '{}' ); $html = ''; $html .= '' . WFText::_('WF_ACCESS') . ''; $bar->appendButton('Custom', $html, 'access'); } public static function export() { $icon = WF_JOOMLA15 ? 'unarchive' : 'export'; self::custom('export', $icon . '.png', $icon . '_f2.png', WFText::_('WF_PROFILES_EXPORT'), true); } public static function save($task = 'save') { return JToolBarHelper::save($task); } public static function apply($task = 'apply') { return JToolbarHelper::apply($task); } public static function cancel($task = 'cancel') { return JToolbarHelper::cancel($task); } public static function editListx($task = 'edit') { return JToolbarHelper::editListx($task); } public static function addNewx($task = 'add') { return JToolbarHelper::addNewx($task); } public static function custom($task = '', $icon = '', $iconOver = '', $alt = '', $listSelect = true, $x = false) { return JToolbarHelper::custom($task, $icon, $iconOver, $alt, $listSelect, $x); } public static function publishList($task = 'publish') { return JToolbarHelper::publishList($task); } public static function unpublishList($task = 'unpublish') { return JToolbarHelper::unpublishList($task); } public static function deleteList($msg = '', $task = 'remove') { return JToolbarHelper::deleteList($msg, $task); } } ?>administrator/components/com_jce/helpers/tools.php100644 0 0 7730 12000772076 20174 0ustar 0 0 setQuery($query); return $db->loadResultArray(); } public static function parseColors($file) { $data = ''; $colors = array(); $file = realpath($file); if ($file && is_file($file)) { $data = JFile::read($file); } if ($data) { if (preg_match_all('/@import url\(([^\)]+)\)/', $data, $matches)) { $template = self::getTemplates(); foreach ($matches[1] as $match) { $file = JPATH_SITE.DS.'templates'.DS.$template.DS.'css'.DS.$match; if ($file) { self::parseColors($file); } } } preg_match_all('/#[0-9a-f]{3,6}/i', $data, $matches); $colors = $matches[0]; } return $colors; } public static function getTemplateColors() { jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $colors = array(); $path = ''; $templates = self::getTemplates(); foreach($templates as $template) { // Template CSS $path = JPATH_SITE . DS . 'templates' . DS . $template . DS . 'css'; // get the first path that exists if (is_dir($path)) { break; } // reset path $path = ''; } if ($path) { $files = JFolder::files($path, '\.css$', false, true); foreach ($files as $file) { $colors = array_merge($colors, WFToolsHelper::parseColors($file)); } } return implode(",", array_unique($colors)); } public static function getOptions($params) { $options = array( 'editableselects' => array('label' => WFText::_('WF_TOOLS_EDITABLESELECT_LABEL')), 'extensions' => array( 'labels' => array( 'type_new' => WFText::_('WF_EXTENSION_MAPPER_TYPE_NEW'), 'group_new' => WFText::_('WF_EXTENSION_MAPPER_GROUP_NEW'), 'acrobat' => WFText::_('WF_FILEGROUP_ACROBAT'), 'office' => WFText::_('WF_FILEGROUP_OFFICE'), 'flash' => WFText::_('WF_FILEGROUP_FLASH'), 'shockwave' => WFText::_('WF_FILEGROUP_SHOCKWAVE'), 'quicktime' => WFText::_('WF_FILEGROUP_QUICKTIME'), 'windowsmedia' => WFText::_('WF_FILEGROUP_WINDOWSMEDIA'), 'silverlight' => WFText::_('WF_FILEGROUP_SILVERLIGHT'), 'openoffice' => WFText::_('WF_FILEGROUP_OPENOFFICE'), 'divx' => WFText::_('WF_FILEGROUP_DIVX'), 'real' => WFText::_('WF_FILEGROUP_REAL'), 'video' => WFText::_('WF_FILEGROUP_VIDEO'), 'audio' => WFText::_('WF_FILEGROUP_AUDIO') ) ), 'colorpicker' => array( 'template_colors' => self::getTemplateColors(), 'custom_colors' => $params->get('editor.custom_colors'), 'labels' => array( 'title' => WFText::_('WF_COLORPICKER_TITLE'), 'picker' => WFText::_('WF_COLORPICKER_PICKER'), 'palette' => WFText::_('WF_COLORPICKER_PALETTE'), 'named' => WFText::_('WF_COLORPICKER_NAMED'), 'template' => WFText::_('WF_COLORPICKER_TEMPLATE'), 'custom' => WFText::_('WF_COLORPICKER_CUSTOM'), 'color' => WFText::_('WF_COLORPICKER_COLOR'), 'apply' => WFText::_('WF_COLORPICKER_APPLY'), 'name' => WFText::_('WF_COLORPICKER_NAME') ) ), 'browser' => array( 'title' => WFText::_('WF_BROWSER_TITLE') ) ); return $options; } } ?>administrator/components/com_jce/helpers/xml.php100644 0 0 3626 12000772076 17634 0ustar 0 0 document->getElementByPath($name); return $element ? $element->data() : $default; } else { return (string)$xml->$name; } } public static function getElements($xml, $name) { if ($xml instanceof JSimpleXML) { //if (is_a($xml, 'JSimpleXML')) { $element = $xml->document->getElementByPath($name); if (is_a($element, 'JSimpleXMLElement') && count($element->children())) { return $element; } } else { return $xml->$name; } return array(); } public static function getAttribute($xml, $name, $default = '') { //if (is_a($xml, 'JSimpleXML')) { if ($xml instanceof JSimpleXML) { $value = (string) $xml->document->attributes($name); } else { $value = (string)$xml->attributes()->$name; } return $value ? $value : $default; } public static function getXML($file) { // use JSimpleXML if (!method_exists('JFactory', 'getXML')) { $xml = JFactory::getXMLParser('Simple'); if (!$xml->loadFile($file)) { unset($xml); return false; } } else { $xml = WFXMLElement::getXML($file); } return $xml; } }administrator/components/com_jce/includes/base.php100644 0 0 1742 12000772076 20107 0ustar 0 0 administrator/components/com_jce/includes/constants.php100644 0 0 3273 12000772076 21212 0ustar 0 0 administrator/components/com_jce/includes/loader.php100644 0 0 3305 12000772076 20440 0ustar 0 0 administrator/components/com_jce/install.php100644 0 0 103414 12000772076 17074 0ustar 0 0 abort('JCE requires PHP 5.2.1 or later. Your server currently uses ' . PHP_VERSION); return false; } require_once($installer->getPath('extension_administrator') . DS . 'includes' . DS . 'base.php'); $manifest = $installer->get('manifest'); // get the version we're installing if ($manifest) { $new_version = $manifest->version; } else { $manifest = JApplicationHelper::parseXMLInstallFile($installer->getPath('source') . DS . 'jce.xml'); $new_version = $manifest['version']; } $state = false; // the current version $current_version = $new_version; // get the current version $xml_file = $installer->getPath('extension_administrator') . DS . 'jce.xml'; if (is_file($xml_file)) { $xml = JApplicationHelper::parseXMLInstallFile($xml_file); if (preg_match('/([0-9\.]+)(beta|rc|dev|alpha)?([0-9]+?)/i', $xml['version'])) { // component version is less than current if (version_compare($xml['version'], $new_version, '<')) { $current_version = $xml['version']; } // invalid component version, check for groups table } else { // check for old tables if (self::checkTable('#__jce_groups')) { $current_version = '1.5.0'; } // check for old tables if (self::checkTable('#__jce_profiles')) { $current_version = '2.0.0beta1'; } } } else { // check for old tables if (self::checkTable('#__jce_groups')) { $current_version = '1.5.0'; } } // perform upgrade if (version_compare($current_version, $new_version, '<')) { $state = self::upgrade($current_version); } else { // install plugins first $state = self::installProfiles(); } if ($state) { $language = JFactory::getLanguage(); $language->load('com_jce', JPATH_ADMINISTRATOR, null, true); $language->load('com_jce.sys', JPATH_ADMINISTRATOR, null, true); // legacy (JCE 1.5) cleanup if (!defined('JPATH_PLATFORM')) { self::legacyCleanup(); } $message = '
'; $message .= '

' . JText::_('WF_ADMIN_TITLE') . ' ' . $new_version . '

'; $message .= '
    '; $message .= '
  • ' . JText::_('WF_ADMIN_DESC') . '
  • '; // install packages (editor plugin, quickicon etc) $packages = dirname(__FILE__) . DS . 'packages'; // install additional packages if (is_dir($packages)) { $message .= self::installPackages($packages); } $message .= '
'; $message .= '
'; $installer->set('message', $message); // post-install self::addIndexfiles(array(dirname(__FILE__), JPATH_SITE . DS . 'components' . DS . 'com_jce', JPATH_PLUGINS . DS . 'jce')); } else { $installer->abort(); return false; } } public static function uninstall() { $db = JFactory::getDBO(); // remove Profiles table if its empty $query = 'SELECT COUNT(id) FROM #__wf_profiles'; $db->setQuery($query); if (!$db->loadResult()) { if (method_exists($db, 'dropTable')) { $db->dropTable('#__wf_profiles'); } else { $query = 'DROP TABLE IF EXISTS #__wf_profiles'; $db->setQuery($query); } $db->query(); } // remove packages self::removePackages(); } /** * Upgrade database tables and remove legacy folders * @return Boolean */ private static function upgrade($version) { $app = JFactory::getApplication(); $db = JFactory::getDBO(); jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $admin = JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce'; $site = JPATH_SITE . DS . 'components' . DS . 'com_jce'; require_once($admin . DS . 'helpers' . DS . 'parameter.php'); // add tables path JTable::addIncludePath($admin . DS . 'tables'); // upgrade from 1.5.x to 2.0.0 (only in Joomla! 1.5) if (version_compare($version, '2.0.0', '<') && !defined('JPATH_PLATFORM')) { // check for groups table / data if (self::checkTable('#__jce_groups') && self::checkTableContents('#__jce_groups')) { jimport('joomla.plugin.helper'); // get plugin $plugin = JPluginHelper::getPlugin('editors', 'jce'); // get JCE component $table = JTable::getInstance('component'); $table->loadByOption('com_jce'); // process params to JSON string $params = WFParameterHelper::toObject($table->params); // set params $table->params = json_encode(array('editor' => $params)); // store $table->store(); // get all groups data $query = 'SELECT * FROM #__jce_groups'; $db->setQuery($query); $groups = $db->loadObjectList(); // get all plugin data $query = 'SELECT id, name, icon FROM #__jce_plugins'; $db->setQuery($query); $plugins = $db->loadAssocList('id'); $map = array('advlink' => 'link', 'advcode' => 'source', 'tablecontrols' => 'table', 'styleprops' => 'style'); if (self::createProfilesTable()) { foreach ($groups as $group) { $row = JTable::getInstance('profiles', 'WFTable'); $rows = array(); // transfer row ids to names foreach (explode(';', $group->rows) as $item) { $icons = array(); foreach (explode(',', $item) as $id) { // spacer if ($id == '00') { $icon = 'spacer'; } else { if (isset($plugins[$id])) { $icon = $plugins[$id]['icon']; // map old icon names to new if (isset($map[$icon])) { $icon = $map[$icon]; } } } $icons[] = $icon; } $rows[] = str_replace(array('cite,abbr,acronym,del,ins,attribs', 'search,replace', 'ltr,rtl', 'readmore,pagebreak', 'cut,copy,paste'), array('xhtmlxtras', 'searchreplace', 'directionality', 'article', 'paste'), implode(',', $icons)); } // re-assign rows $row->rows = implode(';', $rows); $names = array('anchor'); // transfer plugin ids to names foreach (explode(',', $group->plugins) as $id) { if (isset($plugins[$id])) { $name = $plugins[$id]['name']; // map old icon names to new if (isset($map[$name])) { $name = $map[$name]; } $names[] = $name; } } // re-assign plugins $row->plugins = implode(',', $names); // convert params to JSON $params = WFParameterHelper::toObject($group->params); $data = new StdClass(); foreach ($params as $key => $value) { $parts = explode('_', $key); $node = array_shift($parts); // special consideration for imgmanager_ext!! if (strpos($key, 'imgmanager_ext_') !== false) { $node = $node . '_' . array_shift($parts); } // convert some nodes if (isset($map[$node])) { $node = $map[$node]; } $key = implode('_', $parts); if ($value !== '') { if (!isset($data->$node) || !is_object($data->$node)) { $data->$node = new StdClass(); } // convert Link parameters if ($node == 'link' && $key != 'target') { $sub = $key; $key = 'links'; if (!isset($data->$node->$key)) { $data->$node->$key = new StdClass(); } if (preg_match('#^(content|contacts|static|weblinks|menu)$#', $sub)) { if (!isset($data->$node->$key->joomlalinks)) { $data->$node->$key->joomlalinks = new StdClass(); $data->$node->$key->joomlalinks->enable = 1; } $data->$node->$key->joomlalinks->$sub = $value; } else { $data->$node->$key->$sub = new StdClass(); $data->$node->$key->$sub->enable = 1; } } else { $data->$node->$key = $value; } } } // re-assign params $row->params = json_encode($data); // re-assign other values $row->name = $group->name; $row->description = $group->description; $row->users = $group->users; $row->types = $group->types; $row->components = $group->components; $row->published = $group->published; $row->ordering = $group->ordering; // add area data if ($row->name == 'Default') { $row->area = 0; } if ($row->name == 'Front End') { $row->area = 1; } if (self::checkTable('#__wf_profiles')) { $name = $row->name; // check for existing profile $query = 'SELECT id FROM #__wf_profiles' . ' WHERE name = ' . $db->Quote($name); $db->setQuery($query); // create name copy if exists while ($db->loadResult()) { $name = JText::sprintf('WF_PROFILES_COPY_OF', $name); $query = 'SELECT id FROM #__wf_profiles' . ' WHERE name = ' . $db->Quote($name); $db->setQuery($query); } // set name $row->name = $name; } if (!$row->store()) { $app->enqueueMessage('Conversion of group data failed : ' . $row->name, 'error'); } else { $app->enqueueMessage('Conversion of group data successful : ' . $row->name); } unset($row); } // Drop tables $query = 'DROP TABLE IF EXISTS #__jce_groups'; $db->setQuery($query); $db->query(); // If profiles table empty due to error, install profiles data if (!self::checkTableContents('#__wf_profiles')) { self::installProfiles(); } } else { return false; } // Install profiles } else { self::installProfiles(); } // Drop tables $query = 'DROP TABLE IF EXISTS #__jce_plugins'; $db->setQuery($query); $db->query(); // Drop tables $query = 'DROP TABLE IF EXISTS #__jce_extensions'; $db->setQuery($query); $db->query(); // Remove Plugins menu item $query = 'DELETE FROM #__components' . ' WHERE admin_menu_link = ' . $db->Quote('option=com_jce&type=plugins'); $db->setQuery($query); $db->query(); // Update Component Name $query = 'UPDATE #__components' . ' SET name = ' . $db->Quote('COM_JCE') . ' WHERE ' . $db->Quote('option') . '=' . $db->Quote('com_jce') . ' AND parent = 0'; $db->setQuery($query); $db->query(); // Fix links for other views and edit names $menus = array('install' => 'installer', 'group' => 'profiles', 'groups' => 'profiles', 'config' => 'config'); $row = JTable::getInstance('component'); foreach ($menus as $k => $v) { $query = 'SELECT id FROM #__components' . ' WHERE admin_menu_link = ' . $db->Quote('option=com_jce&type=' . $k); $db->setQuery($query); $id = $db->loadObject(); if ($id) { $row->load($id); $row->name = $v; $row->admin_menu_link = 'option=com_jce&view=' . $v; if (!$row->store()) { $mainframe->enqueueMessage('Unable to update Component Links for view : ' . strtoupper($v), 'error'); } } } // remove old admin language files $folders = JFolder::folders(JPATH_ADMINISTRATOR . DS . 'language', '.', false, true, array('.svn', 'CVS', 'en-GB')); foreach ($folders as $folder) { $name = basename($folder); $files = array($name . '.com_jce.ini', $name . '.com_jce.menu.ini', $name . '.com_jce.xml'); foreach ($files as $file) { if (is_file($folder . DS . $file)) { @JFile::delete($folder . DS . $file); } } } // remove old site language files $folders = JFolder::folders(JPATH_SITE . DS . 'language', '.', false, true, array('.svn', 'CVS', 'en-GB')); foreach ($folders as $folder) { $files = JFolder::files($folder, '^' . basename($folder) . '\.com_jce([_a-z0-9]+)?\.(ini|xml)$', false, true); @JFile::delete($files); } // remove legacy admin folders $folders = array('cpanel', 'config', 'css', 'groups', 'plugins', 'img', 'installer', 'js'); foreach ($folders as $folder) { if (is_dir($admin . DS . $folder)) { @JFolder::delete($admin . DS . $folder); } } // remove legacy admin files $files = array('editor.php', 'helper.php', 'updater.php'); foreach ($files as $file) { if (is_file($admin . DS . $file)) { @JFile::delete($admin . DS . $file); } } // remove legacy admin folders $folders = array('controller', 'css', 'js'); foreach ($folders as $folder) { if (is_dir($site . DS . $folder)) { @JFolder::delete($site . DS . $folder); } } // remove legacy admin files $files = array('popup.php'); foreach ($files as $file) { if (is_file($site . DS . $file)) { @JFile::delete($site . DS . $file); } } if (!defined('JPATH_PLATFORM')) { // remove old plugin folder $path = JPATH_PLUGINS . DS . 'editors'; if (is_dir($path . DS . 'jce')) { @JFolder::delete($path . DS . 'jce'); } } return true; }// end JCE 1.5 upgrade // cleanup javascript and css files moved to site if (version_compare($version, '2.0.10', '<')) { $path = $admin . DS . 'media'; $scripts = array('colorpicker.js', 'help.js', 'html5.js', 'select.js', 'tips.js'); foreach ($scripts as $script) { if (is_file($path . DS . 'js' . DS . $script)) { @JFile::delete($path . DS . 'js' . DS . $script); } } if (is_dir($path . DS . 'js' . DS . 'jquery')) { @JFolder::delete($path . DS . 'js' . DS . 'jquery'); } $styles = array('help.css', 'select.css', 'tips.css'); foreach ($styles as $style) { if (is_file($path . DS . 'css' . DS . $style)) { @JFile::delete($path . DS . 'css' . DS . $style); } } // delete jquery if (is_dir($path . DS . 'css' . DS . 'jquery')) { @JFolder::delete($path . DS . 'css' . DS . 'jquery'); } // remove popup controller if (is_dir($site . DS . 'controller')) { @JFolder::delete($site . DS . 'controller'); } } // delete error.php file if (version_compare($version, '2.0.12', '<')) { if (is_file($site . DS . 'editor' . DS . 'libraries' . DS . 'classes' . DS . 'error.php')) { @JFile::delete($site . DS . 'editor' . DS . 'libraries' . DS . 'classes' . DS . 'error.php'); } } // remove old jQuery and jQuery UI versions if (version_compare($version, '2.0.20', '<')) { $path = $site . DS . 'editor' . DS . 'libraries' . DS . 'js' . DS . 'jquery'; $files = array('jquery-1.7.1.min.js', 'jquery-ui-1.8.17.custom.min.js', 'jquery-ui-layout.js'); foreach ($files as $file) { if (is_file($path . DS . $file)) { @JFile::delete($path . DS . $file); } } } if (version_compare($version, '2.1', '<')) { if (is_dir($admin . DS . 'plugin')) { @JFolder::delete($admin . DS . 'plugin'); } // Add Visualblocks plugin $query = 'SELECT id FROM #__wf_profiles'; $db->setQuery($query); $profiles = $db->loadObjectList(); $profile = JTable::getInstance('Profiles', 'WFTable'); if (!empty($profiles)) { foreach ($profiles as $item) { $profile->load($item->id); if (strpos($profile->rows, 'visualblocks') === false) { $profile->rows = str_replace('visualchars', 'visualchars,visualblocks', $profile->rows); } if (strpos($profile->plugins, 'visualblocks') === false) { $profile->plugins = str_replace('visualchars', 'visualchars,visualblocks', $profile->plugins); } $profile->store(); } } } if (version_compare($version, '2.1.1', '<')) { @JFile::delete($admin . DS . 'classes' . DS . 'installer.php'); // Add Visualblocks plugin $query = 'SELECT id FROM #__wf_profiles'; $db->setQuery($query); $profiles = $db->loadObjectList(); $profile = JTable::getInstance('Profiles', 'WFTable'); if (!empty($profiles)) { foreach ($profiles as $item) { $profile->load($item->id); // add anchor to end of plugins list if (strpos($profile->rows, 'anchor') !== false) { $profile->plugins .= ',anchor'; } $profile->store(); } } // delete old anchor stuff $theme = $site . DS . 'editor' . DS . 'tiny_mce' . DS . 'themes' . DS . 'advanced'; foreach(array('css/anchor.css', 'js/anchor.js', 'tmpl/anchor.php', 'skins/default/img/items.gif') as $item) { if (JFile::exists($theme . DS . $item)) { @JFile::delete($theme . DS . $item); } } // delete popup.php if (is_file($site . DS . 'popup.php')) { @JFile::delete($site . DS . 'popup.php'); } } // remove old jQuery and jQuery UI versions if (version_compare($version, '2.2.0', '<')) { $path = $site . DS . 'editor' . DS . 'libraries' . DS . 'js' . DS . 'jquery'; $file = 'jquery-ui-1.8.20.custom.min.js'; if (is_file($path . DS . $file)) { @JFile::delete($path . DS . $file); } } // Add "Blogger" profile and selete some stuff if (version_compare($version, '2.2.1', '<')) { $path = $site . DS . 'editor' . DS . 'extensions' . DS . 'browser'; $files = array('css/search.css', 'js/search.js', 'search.php'); foreach($files as $file) { if (is_file($path . DS . $file)) { @JFile::delete($path . DS . $file); } } // Blogger $file = $admin . DS . 'models' . DS . 'profiles.xml'; $xml = WFXMLElement::getXML($file); if ($xml) { foreach ($xml->profiles->children() as $profile) { if ($profile->attributes()->name == 'Blogger') { $row = JTable::getInstance('profiles', 'WFTable'); foreach ($profile->children() as $item) { switch ($item->name()) { case 'rows': $row->rows = $item->data(); break; case 'plugins': $row->plugins = $item->data(); break; default: $key = $item->name(); $row->$key = $item->data(); break; } } $row->store(); } } } } return true; } private static function createProfilesTable() { // add models path JModel::addIncludePath(dirname(__FILE__) . DS . 'models'); $profiles = JModel::getInstance('profiles', 'WFModel'); return $profiles->createProfilesTable(); } private static function installProfiles() { // add models path JModel::addIncludePath(dirname(__FILE__) . DS . 'models'); $profiles = JModel::getInstance('profiles', 'WFModel'); return $profiles->installProfiles(); } /** * Install additional packages * @return Array or false * @param object $path[optional] Path to package folder */ private static function installPackages($source) { jimport('joomla.installer.installer'); $mainframe = JFactory::getApplication(); $db = JFactory::getDBO(); $result = ''; JTable::addIncludePath(JPATH_LIBRARIES . DS . 'joomla' . DS . 'database' . DS . 'table'); $packages = array( 'editors' => array('jce'), 'quickicon' => array('jcefilebrowser'), 'modules' => array('mod_jcefilebrowser') ); foreach ($packages as $folder => $element) { // Joomla! 2.5 if (defined('JPATH_PLATFORM')) { if ($folder == 'modules') { continue; } // Joomla! 1.5 } else { if ($folder == 'quickicon') { continue; } } $installer = new JInstaller(); $installer->setOverwrite(true); if ($installer->install($source . DS . $folder)) { if (method_exists($installer, 'loadLanguage')) { $installer->loadLanguage($source . DS . $folder); } if ($installer->message) { $result .= '
  • ' . JText::_($installer->message, $installer->message) . '
  • '; } // enable quickicon if ($folder == 'quickicon') { $plugin = JTable::getInstance('extension'); foreach ($element as $item) { $id = $plugin->find(array('type' => 'plugin', 'folder' => $folder, 'element' => $item)); $plugin->load($id); $plugin->publish(); } } // enable module if ($folder == 'modules') { $module = JTable::getInstance('module'); foreach ($element as $item) { $id = self::getModule($item); $module->load($id); $module->position = 'icon'; $module->ordering = 100; $module->published = 1; $module->store(); } } // add index files self::addIndexfiles(array($installer->getPath('extension_root'))); } else { $result .= '
  • ' . JText::_($installer->message, $installer->message) . '
  • '; } } return $result; } private static function getModule($name) { // Joomla! 2.5 if (defined('JPATH_PLATFORM')) { $module = JTable::getInstance('extension'); return $module->find(array('type' => 'module', 'element' => $name)); // Joomla! 1.5 } else { $db = JFactory::getDBO(); $query = 'SELECT id FROM #__modules' . ' WHERE module = ' . $db->Quote($name); $db->setQuery($query); return $db->loadResult(); } } private static function getPlugin($folder, $element) { // Joomla! 2.5 if (defined('JPATH_PLATFORM')) { $plugin = JTable::getInstance('extension'); return $plugin->find(array('type' => 'plugin', 'folder' => $folder, 'element' => $element)); // Joomla! 1.5 } else { $plugin = JTable::getInstance('plugin'); $db = JFactory::getDBO(); $query = 'SELECT id FROM #__plugins' . ' WHERE folder = ' . $db->Quote($folder) . ' AND element = ' . $db->Quote($element); $db->setQuery($query); return $db->loadResult(); } } /** * Uninstall the editor * @return boolean */ private static function removePackages() { $app = JFactory::getApplication(); $db = JFactory::getDBO(); jimport('joomla.module.helper'); jimport('joomla.installer.installer'); $plugins = array( 'editors' => array('jce'), 'quickicon' => array('jcefilebrowser') ); $modules = array('mod_jcefilebrowser'); // items to remove $items = array( 'plugin' => array(), 'module' => array() ); foreach ($plugins as $folder => $elements) { foreach ($elements as $element) { $item = self::getPlugin($folder, $element); if ($item) { $items['plugin'][] = $item; } } } foreach ($modules as $module) { $item = self::getModule($module); if ($item) { $items['module'][] = $item; } } foreach ($items as $type => $extensions) { if ($extensions) { foreach ($extensions as $id) { $installer = new JInstaller(); $installer->uninstall($type, $id); $app->enqueueMessage($installer->message); } } } } private static function addIndexfiles($paths) { jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); // get the base file $file = JPATH_ADMINISTRATOR . DS . 'components' . 'com_jce' . DS . 'index.html'; if (is_file($file)) { foreach((array) $paths as $path) { if (is_dir($path)) { // admin component $folders = JFolder::folders($path, '.', true, true); foreach ($folders as $folder) { JFile::copy($file, $folder . DS . basename($file)); } } } } } private static function legacyCleanup() { $db = JFactory::getDBO(); // Drop tables $query = 'DROP TABLE IF EXISTS #__jce_groups'; $db->setQuery($query); $db->query(); // Drop tables $query = 'DROP TABLE IF EXISTS #__jce_plugins'; $db->setQuery($query); $db->query(); } private static function checkTable($table) { $db = JFactory::getDBO(); $tables = $db->getTableList(); if (!empty($tables)) { // swap array values with keys, convert to lowercase and return array keys as values $tables = array_keys(array_change_key_case(array_flip($tables))); $app = JFactory::getApplication(); $match = str_replace('#__', strtolower($app->getCfg('dbprefix', '')), $table); return in_array($match, $tables); } // try with query $query = 'SELECT COUNT(id) FROM ' . $table; $db->setQuery($query); return $db->query(); } /** * Check table contents * @return boolean * @param string $table Table name */ private static function checkTableContents($table) { $db = JFactory::getDBO(); $query = 'SELECT COUNT(id) FROM ' . $table; $db->setQuery($query); return $db->loadResult(); } } ?>administrator/components/com_jce/install.script.php100644 0 0 3300 12000772076 20330 0ustar 0 0 getParent() : $parent->parent; return WFInstall::install($installer); } public function uninstall() { if (!class_exists('WFInstall')) { require_once(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce' . DS . 'install.php'); } return WFInstall::uninstall(); } public function update($parent) { return $this->install($parent); } function preflight($type, $parent) { $db = JFactory::getDBO(); // remove admin menu emtries $db = JFactory::getDBO(); $db->setQuery('DELETE FROM #__menu WHERE alias = "jce" AND menutype = "main"'); $db = JFactory::getDBO(); $db->setQuery('DELETE FROM #__menu WHERE alias LIKE "wf-menu-%" AND menutype = "main"'); $db->query(); $db->setQuery('DELETE FROM #__assets WHERE title = "com_jce"'); $db->query(); } } ?>administrator/components/com_jce/jce.php100644 0 0 3511 12000772076 16124 0ustar 0 0 WF_ADMINISTRATOR )); // load default controller } else { $controller = new WFController(array( 'base_path' => WF_ADMINISTRATOR )); } // check Authorisations switch ($view) { case 'editor': case 'help': case 'popup': break; default: if ($view == 'cpanel') { $view = 'manage'; } // Authorise $controller->authorize($view); // check state of extension $controller->check(); break; } // Perform the Request task $controller->execute($task); $controller->redirect(); ?> administrator/components/com_jce/jce.xml100644 0 0 7504 12000772100 16127 0ustar 0 0 JCE Ryan Demmer 16 July 2012 Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html info@joomlacontenteditor.net www.joomlacontenteditor.net 2.2.4 WF_ADMIN_DESC install.php install.php install.script.php editor media views index.html jce.php licence.txt mediaplayer en-GB.com_jce.xml sql/mysql.sql sql/sqlsrv.sql sql/sqlsrv.sql JCE WF_MENU_CPANEL WF_MENU_CONFIG WF_MENU_PROFILES WF_MENU_INSTALL adapters classes controller elements helpers includes media models packages sql tables views access.xml controller.php config.xml index.html install.php install.script.php jce.php licence.txt en-GB.com_jce.ini en-GB.com_jce.menu.ini en-GB.com_jce.sys.ini en-GB.plg_editors_jce.ini en-GB.plg_editors_jce.sys.ini administrator/components/com_jce/licence.txt100644 0 0 43254 12000772076 17045 0ustar 0 0 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. administrator/components/com_jce/media/css/colorpicker.css100644 0 0 1756 12000772076 21560 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ @import url('../../../../../components/com_jce/editor/tiny_mce/themes/advanced/css/colorpicker.css'); #colorpicker.ui-dialog-content {height:290px;} #colorpicker_preview {position:relative;top:0;margin:5px 0 0;} #colorpicker_web ul, #colorpicker_named ul, #colorpicker_template ul {margin: 0;} span.colorpicker_widget {background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1000px;width: 16px;height: 16px;cursor: pointer;vertical-align: middle;display: inline-block;margin: 4px 5px 2px 5px;} administrator/components/com_jce/media/css/cpanel.css100644 0 0 4444 12000772076 20503 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ ul#cpanel { list-style: none outside none; margin: 0; padding: 0; } ul#cpanel li.cpanel-icon { margin: 5px; text-align:center; font-size: 8.5pt; border:1px solid #F0F0F0; width:100px; height:100px; display: block; float: left; text-shadow: 0 1px 0 #FFFFFF; -moz-box-shadow: 0.5pt 0.5pt 0.8pt #cccccc; -webkit-box-shadow: 1px 1px 1px #cccccc; box-shadow: 1px 1px 1px #cccccc; padding: 5px; } html[dir="rtl"] ul#cpanel li.cpanel-icon { float: right; } ul#cpanel li.cpanel-icon span { background: url('../img/cpanel.png') no-repeat 0 0; display: block; height: 48px; margin: 15px 25px 5px; } ul#cpanel li.cpanel-icon span.config { background-position: 0 0; } ul#cpanel li.cpanel-icon span.profiles { background-position: 0 -48px; } ul#cpanel li.cpanel-icon span.install { background-position: 0 -96px; } ul#cpanel li.cpanel-icon span.mediabox { background-position: 0 -144px; } ul#cpanel li.cpanel-icon span.browser { background-position: 0 -192px; } ul#cpanel li.cpanel-icon a { color:#666666; text-decoration:none; vertical-align:middle; display: block; } ul.newsfeed { list-style: none !important; margin: 0; padding: 0; } ul.newsfeed li { margin: 0; padding: 0px 0px 0px 25px; background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -400px; line-height: 20px; } ul.newsfeed.loading li { background : url("../../../../../components/com_jce/editor/libraries/img/load.gif") no-repeat 0 0; } ul#table_status { } #jce ul.adminformlist { margin: 5px 5px 5px 0; display: inline-block; } #jce ul.adminformlist li span.updates { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1040px; line-height: 20px; padding: 0px 0px 0px 25px; display: inline-block; } administrator/components/com_jce/media/css/extensions.css100644 0 0 14660 12000772076 21461 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ */ #jce div.extension_mapper { min-width : 200px; margin: 5px 0 5px 215px; position: relative; float : left; } html[dir="rtl"] #jce div.extension_mapper { margin: 5px 215px 5px 0; } #jce div.extension_group_container { width: 130px; height: 160px; border: 1px solid #9FBBDD; padding:1px; margin:1px; float: left; background-color: #fff; } #jce div.sortable-highlight { border: 1px dashed #9FBBDD; float : left; } html[dir="rtl"] #jce div.extension_group_container { float: right; } #jce div.extension_group_container div { margin: 0 1px; } #jce div.extension_group_container div.extension_group_titlebar { position: relative; height: 40px; } #jce div.extension_group_container div.extension_list_container { width: inherit; height: 70px; margin: 0; overflow: hidden; } #jce div.extension_group_container span.extension_group_title { text-align: center; display: inline-block; line-height: 20px; width: 96px; padding: 0 16px; } html[dir="rtl"] #jce div.extension_group_container span.extension_group_title { padding: 0 10px 0 0; } #jce div.jce_extensions_group { background-color:white; display:inline-block; height:22px; line-height:22px; vertical-align:middle; cursor: default; padding-left: 22px; } #jce div.extension_group_container div.extension_list_container input { vertical-align: middle; margin-top: 2px; padding: 1px; font-size: inherit; vertical-align: middle; height: 14px; margin: 1px 0; line-height: 12px; } #jce div.extension_group_container div.extension_list_scroll_top, #jce div.extension_group_container div.extension_list_scroll_bottom { visibility:hidden; height:10px; margin: 1px; background-position: center center; background-repeat: no-repeat; border:1px solid #9FBBDD; cursor: pointer; } #jce div.extension_list_scroll_top span.extension_list_scroll_top_icon, #jce div.extension_list_scroll_bottom span.extension_list_scroll_bottom_icon { position: relative; width: 16px; height: 10px; margin: -3px 0 0 -8px; left: 50%; } html[dir="rtl"] #jce div.extension_list_scroll_top span.extension_list_scroll_top_icon, html[dir="rtl"] #jce div.extension_list_scroll_bottom span.extension_list_scroll_bottom_icon { margin: -3px -8px 0 0; right: 50%; } #jce div.extension_list_container ul.extension_list { list-style : none; margin:0; padding:0; min-height: 100%; } #jce div.extension_list_container ul.extension_list li { border: 1px solid #9FBBDD; cursor:move; height:20px; line-height: 16px; margin:1px; padding:0 0 0 22px; vertical-align:middle; display: block; min-width: 100px; position: relative; background-color: #FFF; } html[dir="rtl"] #jce div.extension_list_container ul.extension_list li { padding:0 22px 0 0; } #jce div.extension_list_container ul.extension_list li span input.duplicate { color: red; } #jce div.extension_list_container ul.extension_list li.sortable-highlight { border: 1px dashed #9FBBDD; } #jce div.extension_mapper span.checkbox { position: absolute; right: 0; top: 0; } #jce div.extension_mapper span.checkbox.view { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1180px; right: 20px; opacity: 0.3; filter:alpha(opacity=30); -ms-filter:alpha(opacity=30); } html[dir="rtl"] #jce div.extension_mapper span.checkbox.view { right: auto; left: 20px; } #jce div.extension_mapper span.checkbox.checked.view { opacity: 1; filter:alpha(opacity=100); -ms-filter:alpha(opacity=100); } #jce span.extension_edit { display : inline-block; width : 20px; height : 20px; background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1080px; vertical-align: middle; } #jce span.extension_edit.loader { background : url("../../../../../components/com_jce/editor/libraries/img/load.gif") no-repeat center; } #jce div.extension_list_add { height : 20px; border: 1px dashed #888; } #jce div.extension_mapper div.extension_group_add { width: 130px; height: 160px; border: 1px solid #9FBBDD; padding:1px; margin:1px; float: left; position: relative; border: 1px dashed #888; font-size: 0.9em; } html[dir="rtl"] #jce div.extension_mapper div.extension_group_add { float: right; } #jce div.extension_mapper div.extension_group_add span { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -540px; color: #888; cursor: pointer; display: inline-block; height: 20px; line-height: 20px; margin: auto; position: absolute; text-align: center; top: 60px; vertical-align: middle; width: 130px; } #jce div.extension_mapper span.extension_group_remove { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -560px; cursor:pointer; height:20px; width: 20px; display: inline-block; position: absolute; right: 0; top: 0; } #jce div.extension_group_container div.extension_list_add span { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -540px; cursor:pointer; display: inline-block; text-align: center; font-size: 0.9em; color: #888; line-height: 20px; padding: 0 0 0 25px; text-align: center; vertical-align: middle; } html[dir="rtl"] #jce div.extension_group_container div.extension_list_add span { padding: 0 25px 0 0; background-position: right -540px; } #jce div.extension_group_container ul.extension_list li span.extension_list_remove { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -560px; cursor:pointer; height:20px; width: 20px; /*float: right;*/ position: absolute; right:0; top:0; display: inline-block; } #jce div.extension_group_container span.extension_group_title.custom input { height: 14px; line-height: 10px; padding: 1px; margin: 1px; } #jce div.extension_group_container span.extension_group_handle { position: absolute; left: 0; top: 0; cursor : move; display: inline-block; margin: 2px 0; opacity : 0.6; filter:alpha(opacity=60); -ms-filter:alpha(opacity=60); } administrator/components/com_jce/media/css/global.css100644 0 0 1111 12000772076 20465 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ @import url("styles.css"); @import url('../../../../../components/com_jce/editor/libraries/css/tips.css'); @import url("icons.css");administrator/components/com_jce/media/css/icons.css100644 0 0 4404 12000772076 20350 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ .icon-48-logo { background-image: url(../img/logo.png); } span.icon-remove, span.icon-add, span.icon-legend { cursor: pointer; line-height: 20px; height: 20px; float: left; margin: 2px; padding-right: 2px; } .icon-remove { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -340px; } .icon-add { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -300px; } .icon-download { display: block; line-height: 20px; background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1160px; padding-left: 22px; vertical-align: middle; } .icon-text { margin-left: 22px; vertical-align: middle; line-height: 20px; } .icon-edit { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1080px; line-height: 20px; float: left; padding-right: 2px; } .icon-update { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat; line-height: 20px; float: left; padding-right: 2px; } button#update.check span.icon-update { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1040px; } ul#table_status { list-style: none; margin:0; padding:0; } ul#table_status li { list-style: none; margin:0; padding: 0 0 0 20px; line-height: 20px; } span.ok, span.error, span.update_icon { display: inline-block; height: 20px; width: 20px; } span.ok, ul#table_status li.ok { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -520px; } span.error, ul#table_status li.error { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1060px; }administrator/components/com_jce/media/css/install.css100644 0 0 2365 12000772076 20707 0ustar 0 0 #jce ul.install { margin : 0; padding : 0; list-style: none; } #jce ul.install p:first-child { margin-top : 0; } #jce ul.install li.success, #jce ul.install li.error { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAA/ElEQVR42r2WSw3EMAxEy6AQAqEQAqUQCmEhBMJCWCiBUAiBkPXBUqWx00kurvQuXcVvM3U+W+99CnmSkIE0O36meBFuoXvob4VJR4JdB/dFirBTkUoOoa4IgCocVmQl7SWeDIxibSjDuKoz4JpolEtozsx2T1TIv7LwNMoj0u6alqzLkorsbEhcGPdPOCFGmJWK4IPeXGK/KchMPS+2siIBDi8hdWwZXman6EUlT5e5NX2RX/Q7I1kSkXU1loxF55soYWEmITOyzYDrYkUyagbS3iDjErceXbAoIxKyYMkWBLKPlfAtKGRTDTsmQg6+kKM8+nISf90Ku0D+AZuTX+E9pD0pAAAAAElFTkSuQmCC); background-repeat: no-repeat; background-position: 0 0; padding : 6px 30px; color : black; font-weight: normal; min-height : 30px; } #jce ul.install li.error { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAA5klEQVR42sWWQRHEIAxF6wAJlVAJSFkJlYIEJCClEpCAhOw/5MAkZEL3kO3Mu3Tm5zefFDiIaAs8J8iCc1e/U7yADsigg+KZWgaJxfSSApJrxCYXeAD9AmsvbaRNhhWPWiM71iHNZFzPQnBvDMoNxqKztDIqzldp/DTKZMTTZZhwp20SyY9rIJlmPI1WN7cRZ51MqoqJY9RdsZFY0D4Va4AElSFBg8ast4qtyHVz8XUnOLJ4mVmgI7KpQqNqOkbCzDX5v9EnLLqwYQgZ77AfNmwLCtlUw46JkIMv5CiPvpzEX7fCLpBfzJ0lkTq3HI0AAAAASUVORK5CYII=); } administrator/components/com_jce/media/css/installer.css100644 0 0 3556 12000772076 21241 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ @import url("upload.css"); #jce button.install_discover.install.disabled { color: #BBBBBB; } #jce button.install_discover.discover { margin-left: 0px; } #jce button span.icon-discover, #jce button span.icon-install, #jce button span.icon-remove { left: 0; margin-top: -10px; width: 20px; height: 20px; padding: 0; } #jce button.install_discover span.icon-discover { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1040px; } #jce button span.icon-install { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -480px; } #jce button span.icon-remove { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -180px; } #jce button.loading span.icon-install, #jce button.loading span.icon-discover, #jce button.loading span.icon-remove { background : url("../../../../../components/com_jce/editor/libraries/img/load.gif") no-repeat center; } #jce div#install_discovered { clear: both; margin: 0 0 0 5px; } #jce dl.adminformlist { display: block; } #jce dl.adminformlist > dd > span { margin-top: 2px; display: inline-block; position: relative; } #jce table.install-summary tr.odd, #jce table.install-summary tr:hover { background-color: inherit; } #jce #installer_filter_plugin, #jce #installer_filter_extension { margin: 0 5px; } html[dir="rtl"] .ui-jce .ui-tabs .ui-tabs-nav li { float: right; } administrator/components/com_jce/media/css/layout.css100644 0 0 17216 12000772076 20577 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ html { overflow-y: visible !important; } #profileLayoutTable { position: relative; } #jce ul#profileLayoutTable > li { margin-bottom: 10px; } #profileLayoutTable ul { margin: 0 !important; list-style: none; position: relative; padding : 0 2px; } #profileLayoutTable ul.sortableList { padding: 0; display: inline-block; position: relative; } #profileLayoutTable span.profileLayoutContainer { display: block; float: left; position: relative; margin-left: 10px; } #profileLayoutTable li:first-child span.profileLayoutContainer { margin: 35px 0 0 10px; } #profileLayoutTable span.profileLayoutContainerToolbar, #profileLayoutTable span.profileLayoutContainerEditor, #profileLayoutTable span.profileLayoutContainerStatusBar { display: block; position: relative; } #profileLayoutTable span.profileLayoutContainerEditor { margin: 1px 0; width: 600px; padding: 5px 2px 5px 1px; } #profileLayoutTable span.profileLayoutContainerEditor p { line-height: 16px; margin: 2px 5px; white-space: normal; } #profileLayoutTable span.profileLayoutContainerStatusBar { margin: 0 20px 1px 0; } #profileLayoutTable span.profileLayoutContainerStatusBar span.mceStatusbar { padding : 0 3px 0 0; } #profileLayoutTable span.profileLayoutContainerStatusBar span.mceStatusbar > span { padding: 0 2px; float: left; display: inline-block; } #profileLayoutTable span.profileLayoutContainerToolbar + span.profileLayoutContainerEditor { margin: 0 0 1px 0; } #profileLayoutTable span.profileLayoutContainerStatusBar .mcePathLabel { padding: 3px 2px 2px 0; } #profileLayoutTable span.profileLayoutContainerStatusBar a.mceResize { cursor: default; float: right; margin: 0 -3px 0 0; } #jce span#editor_toggle { padding : 5px; line-height: 20px; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; cursor: default; } #jce span.widthMarker { border: 1px dashed #999; border-bottom-width: 0; display: block; left: 0; padding: 40px 1px 0 2px; position: absolute; text-align: center; top: -24px; } #jce span.widthMarker span { background: none repeat scroll 0 0 #FFFFFF; display: inline-block; left: 50%; line-height: 20px; margin: 0 0 0 -25px; position: absolute; top: -10px; width: 50px; text-align: center; } #jce ul.sortableList.group { margin: 20px 0px 0px 0px; } #jce ul.sortableList li.sortableListItem { position: relative; padding: 0 20px 0 0; margin: 0 0 1px 0; height: 28px; } #jce ul.sortableList li.sortableListItem div.sortableRow { white-space: nowrap; padding: 0px 3px; height: 26px; margin: 0; min-width: 597px; /* Prevent spacing in inline-block spans */ font-size: 0; letter-spacing: normal; word-spacing: normal; position: relative; } #jce ul.sortableList li.sortableListItem div.sortableRow span.sortableRowItem { /* Prevent spacing in inline-block spans */ font-size: 0; letter-spacing: normal; word-spacing: normal; } #jce ul.sortableList.mceLeft li.sortableListItem div.sortableRow { text-align: left; } #jce ul.sortableList.mceCenter li.sortableListItem div.sortableRow { text-align: center; } #jce ul.sortableList.mceRight li.sortableListItem div.sortableRow { text-align: right; } #jce ul.sortableList li.sortableListItem div.sortableRow span.sortableRowItem { cursor: move; display: inline-block; height: 20px; margin: 2px 1px 0 0; min-width: 20px; vertical-align: top; font-size : 0; position: relative; } #jce.ie7 ul.sortableList li.sortableListItem div.sortableRow span.sortableRowItem { font-size : 0.01em; } #jce.ie8 ul.sortableList li.sortableListItem div.sortableRow span.sortableRowItem { float : left; } #jce ul.sortableList li.sortableListItem div.sortableRow span.sortableRowItem.ui-state-highlight { border-style: dashed; min-width: 5px; } #jce ul.sortableList li.sortableListItem div.sortableRow span.sortableRowItem.spacer { min-width: 0px; margin: 3px 0 0; clear: none; } #jce ul.sortableList li.sortableListItem div.sortableRow span.sortableRowItem img { border: 0; padding: 0; margin: 0 } #jce ul.sortableList li.sortableListItem.ui-state-highlight, #jce ul.sortableList li.sortableRowItem.ui-state-highlight, #jce span.profileLayoutContainer span.sortableContainer.ui-state-highlight { border: 1px dashed #CCCCCC; } #jce span.profileLayoutContainer span.sortableContainer.ui-state-highlight { display: block; } #jce span.profileLayoutContainer span.sortableContainer.ui-state-highlight:first-child { margin: 0 0 1px 0; } #jce span.sortableRowItem.ui-sortable-helper { opacity: 0.8; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter: alpha(opacity=80); } #jce span.sortableRowItem span.mceButton { cursor: move; height: auto; } #jce span.sortableRowItem span.mceButton img { cursor: move; } #jce span.sortableRowHandle { height: 26px; border: 1px solid #CCC; cursor: move; background-color: #F0F0EE; text-align: center; margin: -28px -19px 0 0; position: relative; display: block; float: right; } #jce span.sortableRowHandle span.ui-icon { margin: 5px 0 0; cursor: move; } #jce span.sortableContainerHandle { border: 1px solid #CCC; cursor: move; background-color: #F0F0EE; text-align: center; margin: 0 0 0 -20px; position: relative; display: block; float: left; height: 20px; } #jce span.sortableContainerHandle span.ui-icon { margin: 2px 0 0; } #jce span.sortableHandle img { margin-top: 5px; } #jce span.sortableOption { width: 20px; height: 30px; display: inline-block; position: absolute; top: 0; right: -20px; } html[dir="rtl"] #jce span.sortableOption { left: -20px; right: auto; } #jce span.sortableOption span { width: 20px; height: 20px; display: inline-block; cursor: pointer; vertical-align: middle; } #jce span.sortableOption span { margin: 5px 0; background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -300px; } #jce span.profileLayoutContainerCurrent span.sortableOption span { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -180px; } #jce span.sortableRemove.hidden { visibility: hidden; } #jce button#layout-legend { margin: 0 0 0 7px; } #jce a.dialog.legend { display: inline-block; margin: 0 0 10px 8px; } /* IE7 */ #jce.ie7 span.sortableHandle { position: absolute; right: 20px; } #jce.ie7 span.widthMarker { margin-top: -20px; } #jce.ie7 ul.sortableList li.sortableListItem { clear: none; float: none; } #jce.ie7 ul.sortableList li.sortableListItem div.sortableRow { font-size: 0.01em; } #jce.ie7 ul.sortableList li.sortableListItem div.sortableRow span.sortableRowItem { vertical-align: baseline; } administrator/components/com_jce/media/css/legend.css100644 0 0 1553 12000772076 20475 0ustar 0 0 /** * @package JCE * @copyright Copyright � 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ @import url("../../../../../components/com_jce/editor/tiny_mce/themes/advanced/skins/default/ui.css"); @import url("../../../../../components/com_jce/editor/tiny_mce/themes/advanced/skins/default/ui.admin.css"); #jce span.mceIcon { background-color: #F0F0EE !important; } #jce p.title, #jce p.description { margin : 2px 0; } #jce p.title { font-weight: bold; } #jce span.defaultSkin { display: inline-block; } administrator/components/com_jce/media/css/module.css100644 0 0 1213 12000772076 20515 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ #cpanel div.icon span.jce-file-browser { background: url("../img/cpanel.png") no-repeat scroll 0 -192px transparent; display: block; height: 48px; margin: 14px auto; width: 48px; }administrator/components/com_jce/media/css/preferences.css100644 0 0 764 12000772076 21523 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ .ui-jce #jce .ui-accordion { width: auto; }administrator/components/com_jce/media/css/profiles.css100644 0 0 11335 12000772076 21101 0ustar 0 0 /** * @package JCE * @copyright Copyright (c) 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ @import url("../../../../../components/com_jce/editor/libraries/css/select.css"); @import url("upload.css"); @import url("colorpicker.css"); @import url("extensions.css"); @import url("../../../../../components/com_jce/editor/libraries/css/files.css"); /*@import url("../../../../../components/com_jce/editor/tiny_mce/themes/advanced/skins/default/ui.css");*/ @import url("layout.css"); #profile-list a { text-decoration: underline; } table#profiles_restrictions p { margin : 0 0 5px 0; padding : 0; } table#profiles_restrictions p label, table#profiles_restrictions p input { vertical-align : middle; } table#profiles_restrictions p button { margin : 5px 5px 0 0; } div#plugin_params h3 span.defaultSkin span.mceIcon, div#plugin_params h3 img { display: inline-block; vertical-align:middle; margin: 0 10px 0 0; } div#plugin_params h3.plugin_params_visible { display : block; } div#plugin_params h3.plugin_params_hidden { display : none; } input#components-all, input#components-select, label[for="components-all"], label[for="components-select"] { clear: none; float: none; display: inline; margin: 0 5px 0 0; } #jce a.ui-button span.icon-add, #jce a.ui-button span.icon-remove, #jce a.ui-button span.icon-legend { left: 0; margin-top: -10px; width: 20px; height: 20px; padding: 0; } #jce #search { width: 200px; } #jce a.ui-button span.icon-legend { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -880px; } #jce a.ui-button span.icon-remove { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -180px; } #jce a.ui-button span.icon-add { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -300px; } #jce span.profiles-enable, #jce span.profiles-disable { background: url(../img/tick.png) no-repeat 0 0; width: 20px; height: 20px; display: inline-block; cursor: pointer; } #jce span.profiles-disable { background: url(../img/error.png) no-repeat 0 0; } #jce span.profiles-enable.loading, #jce span.profiles-disable.loading { background : url("../../../../../components/com_jce/editor/libraries/img/load.gif") no-repeat center; } #jce input[type="radio"] + label { display: inline; } #jce table tfoot td, table tfoot th { text-align:center; } #jce .jgrid span.state { display:inline-block; height:12px; width: 12px; vertical-align: middle; } #jce .jgrid span.text { display: none; } #jce a.saveorder { display: inline-block; float: none; vertical-align: middle; } div#plugin_params span.mceIcon { display: inline-block; vertical-align: middle; margin: 0 2px 0 0; } div#plugin_params fieldset { margin-left: 0; } div#plugin_params h2 { font-size: 1.5em; padding: 0 0.1em } #jce #tabs h2 { margin: 0 0 0.8em 0; } #jce td.order span { width:18px; display: inline-block; } #jce td.order span a span span { display: none; } #jce span.browser { width: 20px; height: 20px; background: transparent url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -960px; cursor: pointer; display: inline-block; vertical-align:middle; } html[dir="rtl"] .ui-jce .ui-tabs-vertical .ui-tabs-nav { border-width: 0 0 0 1px; float: right; padding: 0 0.2em 0 0.1em; } html[dir="rtl"] .ui-jce .ui-tabs-vertical .ui-tabs-nav li.ui-tabs-selected { padding-left: 0.1em; border-right-width: 1px; margin-right: -1px; } html[dir="rtl"] .ui-jce .ui-tabs-vertical .ui-tabs-nav li { margin: 0 1px 0.2em 0; border-left: 0 none; } html[dir="rtl"] .ui-jce .ui-tabs-vertical .ui-tabs-panel { margin: 0 13em 0 0; } #jce #tabs-setup ul li span.list { width : 300px; display: inline-block; } #jce #users { width : 100%; padding: 2px 5px; } #jce input.checkbox-list-toggle-all { margin : 2px 6px; } #jce input.checkbox-list-toggle-all + label { margin : 0 5px; } #jce #tabs-setup input.checkbox-list-toggle-all { margin : 2px 1px; } #jce input[name="area[]"] { margin : 2px; } #jce input[name="area[]"] + label { margin : 0 5px; } #jce ul.checkbox-list { border: 1px solid #EEEEEE; height: 200px; overflow: auto; padding: 2px 5px; white-space: nowrap; word-wrap: normal; margin : 0; list-style : none; min-width : 200px; } #jce ul.checkbox-list li label { margin : 0 5px; }administrator/components/com_jce/media/css/styles.css100644 0 0 27766 12000772076 20620 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ #jce, #jce td { font-size: 11px; } #jce.dialog:hover, #jce.dialog:visited { text-decoration: none; } #jce .ui-tabs .ui-tabs-hide { display: block !important; position: absolute; top: -10000px; left: -10000px; } #jce .ui-tabs-nav .ui-state-disabled { display:none !important; } #jce .ui-addselect { background-color:#DDD; } #jce fieldset { padding: 5px; margin: 5px 0; clear:none; } #jce input, #jce textarea, #jce select, #jce img, #jce label { float: none; margin: 0; padding: 0; font-size: 1em; clear: none; display: inline; } #jce fieldset button { float: none; } #jce fieldset textarea { padding: 2px; width: 300px; } #jce input[type="checkbox"] { border: none; } #jce input[type="text"], #jce input[type="password"], #jce select { height: 20px; line-height: 18px; padding: 1px 2px; } #jce input[type="checkbox"], input[type="radio"] { height: auto; border: 0 none; } #jce input[disabled], select[disabled] { opacity : 0.5; } #jce legend { font-size: 1.1em; font-weight: bold; border: 0 none; margin: auto; padding: 0 5px; width: auto; } #jce select.inputbox.levels, select.inputbox.users { width: 200px; } #jce select { min-width : 50px; } #jce select[multiple] { height: auto !important; } #jce input, label { vertical-align: middle; } #jce label { line-height: 24px; } #jce input[type="radio"] + label { margin: 0 0 0 5px; } #jce fieldset label { font-size: 1em; } #jce button { cursor: pointer; min-width: 50px; min-height: 24px; vertical-align:middle; padding: 1px; float: none; font-size: 1em; clear: none; } div#jce { padding: 5px; background-color: #FFFFFF; } div#jce textarea { max-width : 375px; } div#jce textarea.text_area { padding: 5px; } div#jce button { margin : 0 2px 0 3px; font-size: 10.5px; } /* Parameters */ #jce fieldset.adminform { color: #000000; font-family: Verdana,Arial,sans-serif; font-size: 1em; } #jce ul.adminformlist { /*display: inline-block;*/ } /* Mission Control resets */ #jce ul.adminformlist li label { clear: none; float: none; width: auto; padding: 0; } #jce ul.adminformlist, #jce dl.adminformlist, dl.adminformlist > dd, #jce ul.adminformlist > li { list-style: none outside none !important; margin: 5px; padding: 0; display: inline-block; } #jce ul.adminformlist + ul { display: block; clear: left; } #jce dl.adminformlist dt { margin: 5px; font-weight: bold; } #jce ul.adminformlist > li, #jce dl.adminformlist > dd { vertical-align: middle; background: url('../img/list_label_bg.gif') repeat-y; margin: 2px; float: left; clear: both; display: inline-block; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; border-top-left-radius: 5px; border-bottom-left-radius: 5px; width: 100%; } html[dir="rtl"] #jce ul.adminformlist > li, html[dir="rtl"] #jce dl.adminformlist > dd { background-position: right; } #jce ul.adminformlist > li > div { margin-left: 215px; } #jce ul.adminformlist > li > div h4 { margin-left: 10px; } #jce ul.adminformlist > li { line-height: 30px; } #jce dl.adminformlist > dd { display: block; float: none; } #jce dl.adminformlist dd { margin: 10px 2px; } #jce ul.adminformlist > li > label:first-child, #jce ul.adminformlist > li > h4:first-child, #jce ul.adminformlist > li > span:first-child, #jce dl.adminformlist > dd > label:first-child, #jce dl.adminformlist > dd > span:first-child { display: inline-block; margin: 2px 5px; width: 200px; max-width: 200px; min-width: 200px; padding: 0 0 0 5px; vertical-align: top; line-height: 30px; float: left; } html[dir="rtl"] #jce ul.adminformlist > li > label:first-child, html[dir="rtl"] #jce ul.adminformlist > li > h4:first-child, html[dir="rtl"] #jce ul.adminformlist > li > span:first-child, html[dir="rtl"] #jce dl.adminformlist > dd > label:first-child, html[dir="rtl"] #jce dl.adminformlist > dd > span:first-child { float: none; } #jce ul.adminformlist li input, #jce ul.adminformlist li textarea, #jce ul.adminformlist li select, #jce dl.adminformlist dd input, #jce dl.adminformlist dd textarea, #jce dl.adminformlist dd select { vertical-align: middle; } #jce .ui-widget { font-size: 1em; } #jce td.ui-state-default { text-align:right; width: 150px; vertical-align:middle; } #jce img.pluginicon { vertical-align: middle; line-height: 20px; padding: 0 3px 3px 0; text-align: right; } #jce ul.widget-checklist { list-style : none; margin: 0 !important; padding: 0; display: inline-block; min-width : 200px; } #jce ul.widget-checklist li { line-height : 20px; width: 100%; margin: 1px 0; padding: 0; background-repeat: no-repeat; background-position: 98% center; padding: 2px; } #jce ul.widget-checklist li.flash { background-image: url('../img/flash.gif'); } #jce ul.widget-checklist li.silverlight { background-image: url('../img/silverlight.gif'); } #jce ul.widget-checklist li.gears { background-image: url('../img/gears.gif'); } #jce ul.widget-checklist li.browserplus { background-image: url('../img/browserplus.gif'); } #jce ul.widget-checklist li.html5 { background-image: url('../img/html5.gif'); } #jce ul.widget-checklist li.ui-state-highlight { border: 1px dashed #ccc; height: 22px; } /* Formats */ #jce ul.widget-checklist.sortable li span.widget-checklist-p {} #jce ul.widget-checklist.sortable li span.widget-checklist-address {font-style:italic} #jce ul.widget-checklist.sortable li span.widget-checklist-pre {font-family:monospace} #jce ul.widget-checklist.sortable li span.widget-checklist-h1 {font-weight:bolder; font-size: 1.8em} #jce ul.widget-checklist.sortable li span.widget-checklist-h2 {font-weight:bolder; font-size: 1.5em} #jce ul.widget-checklist.sortable li span.widget-checklist-h3 {font-weight:bolder; font-size: 1.17em} #jce ul.widget-checklist.sortable li span.widget-checklist-h4 {font-weight:bolder; font-size: 1em} #jce ul.widget-checklist.sortable li span.widget-checklist-h5 {font-weight:bolder; font-size: .83em} #jce ul.widget-checklist.sortable li span.widget-checklist-h6 {font-weight:bolder; font-size: .75em} #jce ul.widget-checklist.sortable li input { cursor: default; } #jce ul.widget-checklist.sortable li, ul.widget-checklist.sortable li label { cursor: move; } #jce ul.widget-checklist li span { vertical-align:middle; line-height:20px; } #jce span.viewbox, #jce span.checkbox { cursor:pointer; display: inline-block; height:20px; width:20px; } #jce span.checkbox { background: transparent url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -740px; } #jce span.checkbox.checked { background: transparent url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -760px; } #jce span.checkbox.disabled { opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30); } #jce div.loader { background: #FFFFFF url("../../../../../components/com_jce/editor/tiny_mce/themes/advanced/skins/default/img/progress.gif") no-repeat center center; width: 100%; height: 100%; z-index: 100; position: absolute; top: 0; left: 0; } #jce span.widget-password { width: 20px; height: 20px; display: inline-block; margin-left: 5px; background: transparent url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1140px; cursor: pointer; vertical-align: middle; } #jce span.widget-password.locked { background: transparent url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1120px; } #jce table { width: 100%; border: 1px solid #CCC; border-right-width: 0; border-spacing: 0; } #jce table th, #jce table td { padding: 5px; border-spacing: 0; line-height: 20px; } #jce table thead th, #jce table tbody td { border-bottom: 1px solid #bbbbbb; border-left: 1px solid #ffffff; border-right: 1px solid #cccccc; border-top: 1px solid #ffffff; } #jce table th{ font-size: 1.1em; text-shadow: 0px 1px 1px rgba(255,255,255,1); } #jce table th, #jce table tfoot td { background-color: #F0F0F0; } #jce table tbody tr:last-child td { border-bottom-width: 0; } #jce table tfoot td { border: 0; border-right: 1px solid #cccccc; border-top: 1px solid #bbbbbb; } #jce table[cellspacing="0"] { border: 1px solid #CCC; } #jce table[cellspacing="0"] td { border: 0; } #jce table tr.odd { background-color: #F8F8F8; } #jce table tbody tr:hover { background-color: #f4f8fd; } #jce table#profiles-toolbar tbody tr:hover, #jce table#users-toolbar tbody tr:hover { background-color: inherit; } #jce div.limit select { margin: 0 0 0 5px; } #jce table div.pagination { display:table; margin:0 auto; padding:0; } input.placeholder, textarea.placeholder { color: #bbb; } /** IE Specific **/ input.ie_input_text { height: 20px; line-height: 18px; padding: 1px; } button.ie_button { min-width: 0; height: 26px; } input.ie_upload_input_file { position : absolute; top : 0; right : 0; font-size : 20px; padding : 0; margin : 0; } /* Parameter Lists */ dl.adminformlist dd.ie_adminformlist, #jce ul.adminformlist li.ie_adminformlist { list-style: none outside none !important; margin: 5px; padding: 0; } #jce dl.adminformlist dd.ie_adminformlist { display: block; float: none; } #jce ul.adminformlist li.ie_adminformlist label.ie_adminformlist_child, #jce ul.adminformlist li.ie_adminformlist span.ie_adminformlist_child, #jce dl.adminformlist dd.ie_adminformlist label.ie_adminformlist_child, #jce dl.adminformlist dd.ie_adminformlist span.ie_adminformlist_child { display: inline-block; margin: 2px 5px; width: 200px; max-width: 200px; min-width: 200px; padding: 0 0 0 5px; vertical-align: top; font-weight: normal; } #jce ul.adminformlist li.ie_adminformlist, #jce dl.adminformlist dd.ie_adminformlist { line-height: 24px; vertical-align: middle; background: url('../img/list_label_bg.gif') repeat-y; margin: 2px; float: left; clear: both; display: inline-block; -moz-border-radius-topleft: 5px; -moz-border-radius-bottomleft: 5px; -webkit-border-top-left-radius: 5px; -webkit-border-bottom-left-radius: 5px; border-top-left-radius: 5px; border-bottom-left-radius: 5px; width: 100%; } body.ui-jce .ui-dialog-content.ui-widget-content { padding: 10px; } #jce a.dialog:hover, #jce a.dialog:active { text-decoration: none; } #jce #accordian ul { list-style: none; margin: 0; padding: 0; } #jce #search { width: 200px; } #toolbar span.icon-32-update span.icon-32-error { background: url('../img/error.png') no-repeat bottom right; } #jce #profiles-toolbar span.upload-container { float: right; display : inline-block; position: relative; } html[dir="rtl"] #jce #profiles-toolbar span.upload-container { float: left; } #jce #profiles-toolbar label[for="search"] { margin : 0 5px; } html[dir="rtl"] div.ui-dialog-buttonset button.ui-button span.ui-button-text { padding: 0.4em 2.1em 0.4em 1em } html[dir="rtl"] .ui-jce .ui-tabs .ui-tabs-nav li { float: right; } administrator/components/com_jce/media/css/updates.css100644 0 0 5353 12000772076 20706 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ body#jce { background: #FFFFFF none !important; } #jce button span.icon-update, #jce button span.icon-install { left: 0; margin-top: -10px; width: 20px; height: 20px; padding: 0; } #jce button.check span.icon-update { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1040px; } #jce button.install span.icon-install { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -480px; } #jce button.loading span.icon-update { background: url("../../../../../components/com_jce/editor/libraries/img/load.gif") no-repeat 0 0; } #jce span.priority { line-height: 20px; width: 80%; display: block; text-align: center; font-weight: bold; color : #000000; } #jce span.priority.high { background-color: #FFCCCC; color: #CC0000; border: 1px solid #CC0000; } #jce span.priority.medium { background-color: #FFFFCC; border: 1px solid #FFD700; color: #CCAC00; } #jce span.priority.low { background-color: #BBDDFF; border: 1px solid #0000CD; color : #0000CD; } #jce span.priority.installed { background-color: #BBEEAA; border: 1px solid #008000; color : #008000; } #jce span.checkbox.loader, #jce span.checkbox.checked.loader, #jce span.checkbox.checked.disabled.loader { background: url("../../../../../components/com_jce/editor/libraries/img/load.gif") no-repeat center center; cursor: default; } #jce span.checkbox.tick, #jce span.checkbox.checked.tick, #jce span.checkbox.checked.disabled.tick { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -760px; cursor: default; } #jce span.checkbox.error, #jce span.checkbox.checked.error, #jce span.checkbox.checked.disabled.error { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1060px; cursor: default; } #jce span.checkbox.alert, #jce span.checkbox.checked.alert, #jce span.checkbox.checked.disabled.alert { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -20px; cursor: default; } #jce table.adminlist tbody tr:hover { background-color: #FFD; } #jce table.adminlist tbody tr { line-height: 20px; } #jce fieldset { margin : 10px 0 0 0; } #jce div#updates-info { height: 200px; overflow: auto; } #jce tr.selected { font-weight: bold; } administrator/components/com_jce/media/css/upload.css100644 0 0 4270 12000772076 20522 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ span.upload_button_container { position: relative; overflow: hidden; float: left; min-width: 50px; min-height: 20px; vertical-align: middle; } span.upload_input_container { position: relative; overflow: hidden; float: left; vertical-align: middle; } span.upload_button_container input[type="text"] { padding: 2px; } span.upload_button_container input[type="file"] { position : absolute; top : 0; right : 0; font-size : 20px; padding : 0; margin : 0; height : 26px; } #jce span.upload_button_container button { margin-left: 5px; } #jce button span.browse, #jce button span.import { left: 0; margin-top: -10px; width: 20px; height: 20px; } #jce button span.browse { left : 0; background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -1100px; !important; } #jce button span.import { background: url("../../../../../components/com_jce/editor/libraries/img/icons.png") no-repeat 0 -480px; !important; } #jce button.ui-state-loading span.ui-icon { background : url("../../../../../components/com_jce/editor/libraries/img/load.gif") no-repeat center; } #jce span.upload_clear { cursor: pointer; display: inline-block; margin: 7px 0 0 0; position: absolute; right: 5px; } html[dir="rtl"] #jce span.upload_clear { left : 0; right: auto; margin: 7px 0 0 5px; } #jce #upload_button { } #jce label[for="import"] { float: left; margin: 0 5px; line-height: 28px; } html[dir="rtl"] #jce label[for="import"] { float: right; } #jce input.upload_text { float: left; color: #888; height: 24px; } #jce input.upload_text.upload_file { color: #888; } #jce input.upload_text.placeholder { color: #888; } administrator/components/com_jce/media/img/cpanel.png100644 0 0 30743 12000772076 20504 0ustar 0 0 ‰PNG  IHDR0ðFêç3 IDATxœí½y”\Çyú«å.Ý=Ý=3=KÏŠÁ ö€E2P¢µX²)Æf‘‘Gò“ŸŸ|rd?ʼn|’Ø’ŸÄŒÎ‹^$<Ó²([ MZ†Â A€ ±  f_z½KU½?êÞžîY0$è|çÔܹÕU÷~¿ú¾újûª.p›nÓmºM·ég"Óî›thPõþ³sMʸà€+ad9€f[Ô¿¿|]7x^öÃ_üâ7îÞ½{WSSÓÒ[ÁÝ\ÔßßÿîžûÖ·¾õ:4¯W€–¥i€Ý»wïJ§ÓK•Rø …t:½t÷îÝ»Êy*%€t:½Ô÷} ø¾ÿ^ꂉsŽH$‚@+^J”RÈçóæÀó<(¥L&i†§\…¢”*ePJáÛßþ6¾ýío#•JUˆôýŽ÷<¯‚ÏðfV (¥¦"‰NûA‰Ÿ.r¤”RÎú B<*µfv*”RPJgX…÷2þ…^@GG:::ðä“O–âP7¦BRÊ÷5þÑG<þøã¿˜ Qª…4]”ïu|9…ñØ šWá ¦—Ð{þüy|å+_)¥Ù¶m[9€ùÍèl:¾àZñ‡BSSšššð“Ÿüä†ÓÿÚ¯ýb±b±~çw~gÁuàš*´ÐørݽÙégS¡’ÀáÇQ__úúz<ýôÓ³Ùj¸áôs½7us$0[ÉM×ÝîîîNÃ3„¡¼$¦ƒ)Œÿä'?‰T*…T*…Ïþó7œ~®÷.H ±BÓKnÆ75ý\ñAÜœ h9â7ÞxñxñxÏ>ûl)þÁDcc#ñÈ#Ì[r×›~ Ðr¾çmæjoEûP¦B%šW…ÊéV`Œ•øœ 3Ìe%V­Z5ë ~‘vãzâgk‰¯)½{÷âøñã€»îº ShoÁx`> ,Ø ÝªøÙ¬Ð5UhzIÜêøù*13”—ÄæÍ›ñA‰”ó\qc…c¥Y‰ññqÌFïw|cccÀ*/×§,³§§§ß4M0Æf ÿnUhhh@WWN:ÕÀ xP)Óî~öÙgOÝsÏ=¤££#MA–±üÿò@c¬"núýl¿…ùæzGøþ“'O^ýÆ7¾q*p:dšˆ‘+ìÐ:«L?8t Àœ ËD,°Àrµ·ŠÃ9hºä߀f¾ˆYDØŒ[ÄäµHA3]þŸ}à6ݦÛt›nÓmºM·ia4ÝW⺨¨Àݰšà=ðNxÀäÍ`òZtÚ€M“À/§£Ñî¦ÖÖX,e¾(‹b ¯/?œÏŒ|àê vÐxO膴ÛrÀo¯]±bÃÛ¶µ×ÕÕÅÓ„”…|ÃCC“Ï8p²opP˜Àä$ðÏó@ÿÍfØõfˆuEàwïX¹rçÝ÷Þ»¼ººÚò<ù|ÅBBpÓ´87ë FÇGG(ƒï:’J’À}õUUZ³qc+çœd³Y 8Žƒb±ˆL6ƒwÏœ…ms{qgçÊx4j»zôžŸ?IØØÐØ˜ˆÚ¶=>™AÏÅËp\P ÀÄDKÚkñ›¿º¹ÿU»:™¬Íçïðô äÖàÀrÛ0 ÇqpñÜ;ø¥+ѽ¡ ®£§a„Rèj¯CMCþãû_ ŒÐãm‚Ó}¥È… ñà‡Wâ‘ÏÞbp 4)¥ù/ à:PÒ#>ÐÀܵ þ§òè¤141«@0fy¸ø…ƒ7^? à7vÁÞÁ#¿ 59™5˜iaßÞ_ðœ¼S‘Öà RH!‘s•±ºê7»ñµB ba¥h(JXs®|óCøÛ/ÄÿxOl3ñKvŸØ³}ß=›_aF"p |nB Q‘V@úÂ÷ɸæC«¡Š|¾¾#ÅbUµV"‘¢±DÊdÆÛÇú—^îéø“;ñYfàÌÕ³øÊ@n¡|-Ø ¹@³Eü£}អ[ £ã“¾áû³ßu104ŠÆh–§êk7µtuÅSKß=knµuÕ¦‚Ç£uuU4‘ê`í^û’×7/µ`J`dljU{\~çß=œr¹"¤˜É¼>2Ù<§ˆGïíˆU'#ŒÛ ~ìЫX½q êÒiõÐNܹuò™<„ç#7™Å;6A1Ž92Û¶,”ŸëîÌÀÑ~x÷v 8<Ý;>r~ÀŽÆ¹iÚ†ð}9xåâØkÏýøÜ[G’ÃC0A^FRu]ÍìSŸ» «×uÀq<8q@ xþ߯øÐÄDn2k@AÕ(ü´sŸ×Û—èžÃ?ÚÉ+—ûWùÎ?D%•z QÒÄàÐhG¿ƒ‘>¹%–ËÜ/‰z§±~Ç*Œ\è¡´Ô'€¢(:ããEù/ooãwþâšÆ&ü&½óñqÝ*T¢Ï\2éa2ÝÜœ[³u·™n]NÓ­Ëéš­»Ítssn2^%~óÿú\ûŠ•-Öøx*“+Õ“rÏõàü‹/ÿrë;7ÇׯJ-Ð ýú%ðé¿_no‚+×f2°í¨[½éCXVÜ0lçOÉ™T]ìë·OŸ‰†íŸÀ¹ƒä:‡•j~k3„»kÝš–ÅûîZrWMÜ&“šyÓ4ÀX¥Æ)…À¯ßE±¨ýûc1#ˆSàc£H¾ð<̉Q.¡I"ݾшVoÓŽàÜå1&È¥T¼æŸÿ(c/û’'ÿ GžÃBŒh9€ûÿÜ‚W¼—Å톻V7¯‰šœŒ!„‚aÌUוö©ðý©>Düí 0ò½°ЍNØXqç8Ñ_€P.„²´RÉ*˜|ô‘ºÉñ{åó·xúÅúªî¯ }è"ΞzL/©.D‘zˆ|纶ææúdUÍd¦¥8Ÿ»»¤øžßóô®!Ñ÷Ô?"þóƒ`‘Ô¶Ö aU#ÚÛêA¤‰7{s0-–­Ø”IPÆÈ]÷v/^Ýò/ÆÞÜúÚÀŒöi¨CÓΟ‚؇KoÏÀ«ƒËÛ7ÆSR(¡f¨ÌLZ¾ïÃÌbè‡OA\ìE]UK—4 ©©‘x•îѹ.E·‚Ð(E()¶7@åÓ ÊGª.É÷ܽ­zåòucgvž¾üƒgOŽmø>Z~ò+è;4\éG|%7ßù§Mµ|dÎõ¢÷ož†3>ŒºT3¶¯j†«‚’ ™ñq(ÑX Mâ©36$g “aјÀZÓDÁ)brl UÑ(ªëêb±DbcU[ëÊÓßy⯇ÎÙ÷WhH3 >õ+Ó:¡~TókQ·xsQ¢ª£©>±M±L˜†Óà°L}Cu’ “• Ç£þõ—áŽfQS]ºÖv0BÏf‘Ëåà¸.LÓ„ašÁŠíÁ’•ËÑÙى˗ÃÏ@!VD&›E1Ÿ‡_,B)‰X2a$V.]-–ï=_SDuýndO>”†€¡,\zvmw¼|ñB_ý_9ÅËÛ›#©ê¤Å .93eŒsÅW‰„)óg{ÍÖ§\5PÏHûêõµ©¶Ã+èI^I)7@ù”•’hii‹@IíÌ-«âÈù—>Å”Âs8…<JMÄe{?²ÏLV>ÿÔO#6Zr@ß÷§ @Aáàÿ[þwø|aÕð»WRõ@¸˜A(P¦±ïê‘•=uµ«w´¤š 7“…ë8@™/P¹QWR!—ËÁ€„’ F<ÇuKþq!JA¤„ð<äGÇ`E£èØÚ}gfp0ÛóÚÁ-‰†£aðÜ´:@âÕ?}±†“°¢Õ †V1W|p}åBµz2Ñ‘/t-[³6ÒØÞž*Nfàù>ç d–úC¤”ÚÜz¾=¯45-93/äÄÌhÍÝëV]zûñ±Âx7‚E“@åâCnóÍý3To°Àöv®Z¥ Ä): œ_³•Jjsëé¹Tåyð…¯+âl ¡»ÛJ)x…¢5uõfsszì\ÿŠð÷Rª „ÎO(@!ï]ÞUxƒ'Qè ˜Ïè½Q ºÝ¡Ð“O]_UiSÊßAPéPH‚¼å“«*üS>6žÉƒw«ÙÞ{›nÓÿŽô y«„´}ûöxuuu½eY)JiR*N)ú¾oçÜ‘Ræ !)å˜ã8#ãããC/¿üræ}÷èîî6Úc±X›ëº-”ÒØõä—RæLÓìËår—{=êÍŸk&]7€]»vñT*µD)Õ…ÀÓ½¶º6²ýŽ;;››[ÛkS©–ªDU½5k ËŠ‚Žïä]×Ëe³C££c}½½{¿zøüèèh!xìeBȹ‘‘‘³Ï=÷Üu™Æë°oß¾Îù Jé¸{öÎî•ë×6§[VGŒH»ë»p¥Wùp©€`ŠÔ`àœƒ›†á™& E§÷j_ß;G_?vüå_<Rʳ¾ïŸúéOÚwÓìÝ»wclç<¹sÕ¦ö­ß¶¥­¦i3s‘(æ]¾¡ L@Ø€4aŠ`„ÝY#ºƒgÛ,Ë‘˜¼r¹ïµC¯¾úêÁ—^êõ}BñöSO=5çLD9ÍÛ“íîî66nܸÉ0ŒÍ„èö=´s×Ú},­ª7È¡¢åŽ |P@Q@2PL0”èQÑ@(úø¾Bˆ•ª¯ë\²¤kq{k9vìØ c¬µ««‹%‰Áþþþk.3]@ww·ÑÞÞ¾‰1vÇòÖÖšßþåÏíÛØ°ìclÈOˆ¡<¤¯Ÿ­ˆf^1@1]ò•H0̤ e÷ „€iY‰E‹­]»fÝ?0Ð?91Q“L&Y,¸ˆkX·nÝ&wlX±¤þ7>¶÷¥‰ÔNq59éC)½Î%ƒÝ½Š’€’‡ê­Be¥O¦ï§¡4èòIÔ7Ôwv-Òßß·mçΛ³NÌ `Ïž=k,˺sŲ–ÚG>uß¾ÎTd+ÆG¡\ åSÝAÑÃYÝý,©P(9Mºôu=× ‚Á”’¨©­m]ÔÞ¹|årïÄøDuGG‡sîܹY]rf°oß¾BÈ”Òèï>¶oßÊÎȯ‚HQÒå@èñB™Q­8 )šÑHÓŒ10BËv-iiÔÖÖ¶644’—^|ñ!$±|ùò±3gÎÌhøfصkçœßÉkùíÇ>²cÛæÆ úâ€PB·G¡¤*‚h’È€yª¥ ,›.2Æô•²’T(Ñ逦tzq*•Ê;vlPJÉZZZz{zzæ>hb±ØR)åÒw­m_¿~Ñ_ŒBÒ"ñx$™«É%ò`1ŒêA9•A:‰Rožõ¤´'R e¡Œùp&B6ìØ¹sg»”ri,›qlV…º»»h4z'€äÃïÙÝœ¶Ö 1¼ÁOÔ`å1(ÏУ›˜‰ÈâÔ,oDÃò´vµ£¹¹µ5µˆEc08׃xpJÁ˜.}VfjóR ‘H$‰DÜçŸþ$žL&/”[¥ kÖ¬ébŒmܵksç¶;×= DÖJêÊ€ \‚!" ¤Ãa.K£jK â+`UGÁ-#ÐwÃ0DŒ'DA)…ïû`”*4pÓ˜‡Ò+™Éd2•Éä.\¼Ø£,Ë9þüè¬*¤”j÷<ëÖ­Y#Odóùbùb7‚¢°à‚AHAê²`ÍEDïjFôîEà±y÷EF,©z¤jR08/³DS[uZ@*áKÜLlÞܽ&8yª}VÚ²eK"‹m­©©©þ¥üÒ>!UÒ÷|ŸC¡(¤" …V%ËMmi^6]5ç%Ë4Aïû¥ÒGpU¥+±¢Öë‡+¸žJ¥Î÷õõ9@ÙÌ\$ip]·jÓ¦M‹#Ñê¶Ìä8‰‚R¾0áú&\fôŠðÌ"lÓA4Ö YS1·922’9tèЙŸýìg80»wïnܳgÏâmÛ¶-K¥R¥øh$ %\×…’jŠa9Ÿ^DH&’m[·o]üƒþ ‰DxÆ—(¥ê)¥¤£cq›ï (p½›Zp!áû>õàúœb^I”¦(.\èûîw¿{ð›ßüæ™òøï}ï{ãßûÞ÷NéK_:ÿðÃhñâÅ-%IX\Ç…”ª‚q%Ã:èµ8‰ŽÅm”Ò“Bˆzg+†Q+„ µµõ;€žA NP(Å …_HxÔG´ªܨ+í¶Îd2O>ùäóû÷ï?ÙÐÐpÀ;RÊs@)í°zÿþýÅh4ê=úè£{ãñxÐ˲œs¸Ž£Ÿ%QRŸr©š†f!1 £´QµÀuÝ$c Éd¢NIB‚é‚ÐRJAHË®­ØB~üøñãû÷ï+‹õNNN>ÛÓÓsµL¯wtt\I$÷ìß¿ßÛ¶m[û¶mÛî d”CúE­Brêü ­B€‚‚RñD².ä5Ì;uÄç1!1-» e½GB(e „PBõÉ{åÖåÈ‘#§lÛœów¦1èéé¹Ê9ǶmqäÈ‘Såy)§ð= áI_B á+H_®l “0¸U-„ œóÒðµ$Ïól¥lÛŠåóÅŠE>U*Žð^Á0Œ >|øcLRJ{¦3’a=„yøðáKåy¥ž¨\çJ¾D°M3&¥„çyö ”Râû> {Œs-š„$e8»0Á˜dŒÉùŽ8 Ó•Á ¤¶4×$¢H”R„•­ÿ–THQ§XÌÓ@e(cºÃU8çàœÃóý Ú¹sg‹iš2‰´Ïö~ˆD"í¦iÊ;w¶”çu]žïé5gáþaR*ä ù|9¯<ÏË EÇçœë~J°0¡gàç †Áá{•6lذÜ4MI)]ºgÏž†éÌïÙ³§RºÔ4M¹aÆååy ù"„t!¤!|HéAJB ) ¥‰\6;€¼(S!Îù¤¢arrr¸ºº¦M»¶iIéþ @05²ò…¨¨>÷¹ÏÙ¿¿TJm»ÿþûßœœ¼‰D¢MJ¹Ô4ͦ‡zhMGGdžò¼Ù|¾rA@uúç$èÆ¥Grã“cÃA%.mï*pg„s¾ddxàjçâÅã!Óú††@(^9`L 1Öìܹó>Bˆzâ‰'$€¦ššš“Œ1|ö³Ÿ]»cÇŽû¢ÑhM`Ü¿‚ËêuP#˯SV( #ƒýýWC^gp]w˜BΞ}·oËÖíz  @©§H hp/„¨°VÕÕÕ÷Þ{ïg–.]ºôÔ©S'Ž=Ú ÝÝÝí+V¬XÕÞÞ¾±œy8mý-®¤Î f·#RhFÄ©ƒá'`Ȩ20 ïöœëB×u‡gˆD"ý2/½t°gï¾õÕT×´T¨O©«;§”Ô«ŒlªWFkV¬XqïŠ+î}ðÁq-:M¾w" fÕÉ\E$׎H!»ØÛ­÷«`ˆLD12žï;tè¥Ji&àUK&ü§¯¯Ïihhh(òµë×­«nmkë$ ¥RR*yf_ܾe/ÄåìÏà“pì~¸Æ|3Ÿàó<|–‡ $uA9pîôÙ×^|þàiÏóÎ9rä ¥¥…û¾¿Ü¶mýúõ+-Ó´H©Užl„¤”‚T ¾ÐC©.oB‘Š(.áãðù0„QÐ!x’{p]/óÂß¿òóžsW&c¯ö÷÷—T¨@ÿdKKKúÌ™3äŽ;îH¶´´,*'µ™Î¼TBJx¾‡¢ëÀõ]h·Ê°¥à=¸#yøçÇã W `Â÷,PP("!™ J >Ïã/Þ>ÿzñuüõà8xõøØÐw†ŸaŒõ=zôÌâ­’›ËåNÙ¶½ø™gž>ÖѱhI*U×4Ý/d^) ©ô‚µ¾ðQt|øžv‚’¾€ò$Œ<`æ€h .£zÐÍÕ£f¸ÁtëM$C6q®5Š·ÇGðéú ÈüÃ¥5XKr¹Ü)Ìá/4%áááÑT*UÝÓÓc·µµ‘+V”:ýaŸhŠy=›JAHÝr–ÎG ̨p?˜µTó,PIS­¢ ™ÂOz†±¸f|ßÇ»'§Õ~çäÉ“‡0Í%¶•z?ŸÏ¿FÓßüæ7_M§Óu›7o¾KéÞUÀü”úh ¨Òµb <°|Ö. Jj)pa#–i€ÏHª5ƒJðÏ¡Ž”ôóùü[˜eYuÖ™¹ñññ‰t:M<Ï[ÜÛÛ;ØÙÙ«¯oh’Á†…)Ƨ˜¡ïC§GW折`ˆB € T2@PÊñÝóÇóMu‹Ï÷pùÊÉþñïŽÿ»Ùx½¦Éèèè¸Û¶ííëׯO=ú裻V¯]³Q3© a%ìxI!tŸ^ ={-¨˜EÀ(V0€»†¯¥ð¯øŸâr>ð™ƒ+ÞX¹ñL÷]m”RâØ›?=: {Gñy<6Ÿñ6ÛÛÛïfŒm]ºtiâ ¿õ…ݹuˇ¦@ˆ)RÈÒU‰€«™çÎÃ%`À°™|­w¯D®¯PÁB Bf0öU—QŠ·ßxæ(~ ›æ[à—-Ë"cccÏ<óÌ…D²:W—J%"±hUXC5‚¬¬ƵDhÕ ¯z’€íÆ·ýÃnM¢è8T%Š®‹Éqô`prƒ£CÁðä8ó9`|¨ÏàñS+ìžIDAT7Ÿ©Tj ¥t !$õá¸iïƒûÖ®Y»vM4­Ò™„R¨R]PB•$À]€9€á–p0|ŠB6›ýÌÄäË·(DÎ9˜È¡««R.ÌT!‚£øòü*TAÉd²“1¶I±öîÝÛ²ãžKW,_ÞUר.©Ôê£dÀ x€Q$0]`øêÀÕÏœûù›‡ÞýñáŸõcì-!Ä‘‰‰‰óøŽ`}k7¤Ž÷ÅW°i6žæž®JË‚‰DVsÎWI)» ¾¾ÞºûÞ{[V­Zžnnm©¯­®®‰Eª–eÙ n¦XÌŽg's#c—.õ8wòêÏ_{±ohtØJé9ß÷O …·¡*…‹CØ‘ÚHà…±£øêìæóآЦ–C»Ép¼P(ôèpÚ4ÍŽ+W®´ýõþý.€ ó<¯DRÊI—\×íÞnåAŸóeðPA<§ŒklEYÚ¹)+C\×=0^Í‹SJ“”Ò„"J)µfÆX^J9)¥œBdŒCôhÿ7ͪ € PT?O²yÝJEW…W…˜}vad` ¿¾âáÎáëPÆÝÐ݈Qh7Q¸IÎ7‰(4óQÌíM© iË ÒËë6ݦÛt›nU˜Ñ¿úÕGo#×C÷õ¯?þ_ðO…ùB¥–X(EàÇ_ÿú»UL-„>öÕ¯þËòûY»ås—$šm“ÅÔ2«ï pyÿxºn ù iJ…Ê—|>À(ç(W¡@>zq| ÀÆ?™ÿè‰é›þ‚¡° Q}å0`€Åô=³€T ¨‹‰(3!õt¦É_¿sªÏ¦Êøœ `êsYS_1³¬†(ŒàB©×¼`¡š DÀ4ƒiÆÙÔú9’ ) ÔWµQ/œtµ*y¡Óø¬Z¡éHEƒq%™À`ñ©hæ³.àÏ7¸Ÿ°›ëÒ§PGèR6Pš@sRÿ/0QÐ×*«’UÆç ªìY–©¾jªÔÃ`b&148Ç&ŠúÊ©þ=bè`ð)5ó| à¾Ð³€¸Äm Ññ¡ ƬJ^¦óY \·.ú„fÈJžS-z“¶¡A0ª%Pãh‘Û\ƒ4Cá>@ý ÀgSªúGè’7¹N1fJ`úga¦$PV‰ËQwÖifÌ@]L‚Ô¿eªÔ%féxOhuȹ%úQS§'ÐÏä ð%Ptõ³)ÓR3x%/ªŒÏÊë@y¦×Ï| ‰hÒÕÍX\¿ éêv½- žÐ%øƒ€S-•*S3&•¾æ èi&Õé8ÓR­ÅÃb‚ùp2Àœu Â •‰éÕ3/é…nÆÁGc2=ëÀÆŽíàT—, õC%” ¥Ú™L[Wh¦£¦6§œá«hL`dJeg|Ih.+!f•€þIOÜzÔÃ¥‘^üÏçGÞÍaÇŠ= Ð¥z/@¯Ã+Ì&%ÚÄZL›G“{°¤–%•Âzäù•ùœ`.*§p¤ïûøþËßÅšÖuh­M—*N3Ui• 61À6Sê’7™Ž2Ðù <ƒžÉÇ»¶ •;{! „¡·¯ã£(‹SR E·ˆÿ𣯡ü쀩P§õ3tKßZáÐêÓ¦º2]ê´LjŒ†ÆaŠUÆç Ð2då¦Ëñ<=Ýí80¶¥7.†¡Éa|ùÿý}´¦š·ãèJ/FkªM5ͨO¦‘®®+©PHaƒXšuUºôÃ%¶Óûet®J앵¢,“”®”ð|ŽëêMþÅ"LS`. ôÂà'ûN—>IÁ‡ÁÔVU£¹¶ Õ±$“àŒÁ \v8ã`Œ£9Y‡„E*–@]´¬lIWL³BÞœ¹™Äìu@)Uòã)8âvñêõàœ£º*9•aIRpÆQ(æáy.Æ2ã0 “0¸Ó0ap޾Ñ>Aç5±Õ4bI*]Á‹,ãs€r½*7]Æèž)Oó2§'£hÀf˜0Á9Çh ò`šféeš€a€HT€2@`@)¾âðWN†a(Ïpì*þ%£åüVð9+€éVhIg׬_/©cp­R&‡e°, ¶m"±a[\Gb°,Ó4`,pœbàÒ®òž'PHéÂ÷\W"Ç9,Ë„mù0M¦)`Y¸irPå 7r~~. ;‚ªšZÔµw Î0g;€9ºÓ ¸H„ @@)=Û®m§”$x>¢¡81w¤uè\µéš(\ÏÃÙK}¸üö1¤—.…ª)s.)ãs€Š:p“‡”BHx®€’ë*ÀÏÀ8…µ«W£±.‰†x€Å ¬êX F“8þòI,¿g"ÑhÙ³ÄìYØÊ†(-•¾G”¾ˆtC=‰Q^1,%hmL"]_‹K.T¸.LÿZ×T; ƲýÕ×xO¼òÂ(¯ZÂ)ŠËg¤¹cY §Þ<…®²¸r>r§¿\NÎ ïϬD.“3ŒRotQ}tFšÁI¹LfÊ—ºŒÏ¦x^iúáýÀ8„cVæ€JŒóé]›Ši’€b¡À2ÝÔôž0]N]]ÈŽõ£¶y)á0¦&%L _AGWW‰UÆgHÁ·˜\Çaжví¿Ϲ@”Ф£±u¿÷寶._¶<³XI·Mƒ‘Ñ¡aÿËÿçïž½”8Qr¬,k ‰`³ €yƒƒoDb‹ô}ò¾!D&—u?À¶ e]]F"³ŠùŒûã=9ñGÿ÷WÿýWÿÍö—^x![ôý¬ëºn˜·xêÔ7¡ŸÁ­ÿV-€nJi+€€œ”ò2€sñxüþ'žø›G¾öµ?üËÞÞÞW¯^=b_ÃZÚÔÔôgÏ?ÿŠzàcË–-[§'¸¡3wßGÍf³Ã/¿üþâ/þŸ/ž:u2oÛ¦qåÊ•3ógý`ÑîÍ›·ýÏS§®ª7þ~ù·ÒÕ tã™îc”^v˜¦ÙnÛö “““ÇœK}«”û#1Lù$•ÿ_B~3A¸M·é6ݦ[L3Ì(çü>{Êãüþ¿äôt7þöWnÈÕ¡rx6 óïýò÷Ÿ?ÑLšîj°ö?ýôïÑiŸñ7ï3Æ‚ x0¹e”ýÏËByš0O進°ú3Ÿy Ð_Œ½^ºñãû? T!!ÄbøÁã•ÒLÜûsd¸Þ§üOnÅsÝj4]…ôìÜŒAý{=È¿ñçÏên³iS¥Ÿµììš-ÙM¤³7Ü©œSccSãè¤R¶†nÄ<88üö@ø{1XŽ —t-Ëš5è£7Y³&,{)ç|Îß2c3K…Œf\€X0H@ œ(V4­€UôG n ~øµ¯=Ì´Bz7—š¶jarôô5×GÈ™ñá¸@©‡Oüá>Ì¡BsQè™Þ{éÒ¬¿+oÝKêðo~õþ…$àÏ~}çöàßí×LЃe~ssÖ '‹ÎV+pÜ{5=I””3—Yßõ»gЇûVjܦîîŠû˱¸~¤T ÿd*}¹h)™é0„Xà¾S:R@C€ÒkÌ¿¾Eêݲ³­—ÓlÊK4´.=/ìÀÊŒ¡9VUZ¦JEƒ•z¢}'l°™v9ȵ+NÄꪴg—Áµ‰КV7i ãùÀ{K)ížP¶Js]*äMÛ…Z£¥ŠÒÒBÄ¢ZVò129°€dT{uçôËâ–vt2™^¹ÏÞZ51 1¡¯×@¥” ŒU|Bï†ê@ÈðÔ(ÁU (á—Ë—7VàÕŨV•*Sw>Z= 8KMµ' N#¤vÛJŸ±mÚýL(¥ܽ† Í _(€R 'wÊ×çš3zfÃêF±0„‘ = Ïóp®ç8’‘8jb5ˆÛ5Èc¬Ì½Æ Ü)G?FÆ€¶æ0wF K`âFU¨˜9_‘xJ²t•Á>c¡® ŸÆ°a"bFÐTÝŠ®ÆU L¯‡…n: %ߣˆ˜\¡¯ï(ZÖtƒë¥`1-@H9u¨ÍBX–/¯°¶=ßûäµO+éÁmÛ”n:=ñükP$pqãÚ Ä6¼,BÞˆ •ï&}¯í¼/µÕ3gC#ð7RBeîÇ àºnðÉFm¤Rxó‡7wr{ý'(!˜Ì‚±ü0"–(7`0K/±× €.}Y’€T |Á]Á…Qhç_z÷ ÎÑŠt"…úDÚkГ3ü%f•ÀôÅäðÿð8ÁÐγ… €L9o”“RÀÔ9ZSv¾±v%8çhIo…irùCc´¸0sÖ!õ©6ÐÁ4±0"¡Út–{j©ÐK7(«ÐÎsÎ`ñ¸Ëb0 Ã,3£¾}VH*ýÅ!…>e úaOÿìÔÖzhnÊ µùâ쀂’§àVÄ4A…ô Ž é»B ÌL8àG¿¸çèsºšõ½^ ¸÷¥™jLpôH¶MÕbåª:Ü»ë$L£ìÓI„‚Ê-‘8¬TVu3àe'Q½ or Â-@JoÊΆÂó´Ži/˜©s\¼U!áyúhª@N¾ÏaÈå ŒÚhijÃÆ½S&ºËŒ(ÌêFDƒ›ú€2#R À\¡?Z Œ’îh“$îY]ù%“àì¨h¨GËò@Ç=@~š_D99'O~åº!àfÔW ÿ³é»´=Ù©‡•Y ;Lö¾YrcÉè]¾ d'õ3€šÚÚ§àìSOý§¹„t}-±@ØH¹°–8p)ו0 ˜ÜüT¯T‘Ùíüõ¸f_ˆ€èƒ¡ÍhOÏ<¼c€auÍ€Œê­èWB¾nÌšÕL;S„GòøÁy*aWâüyÌK¡E«Ñz¤uå*0Ò¯=Þ•¶Ìbço ­>¾ëÀwÝRgî³ÿ¡¿-ùHå}ØQ,·óóÑuÕ§X@!¯g æ²Ñ7ƒÊíü|´` PJá pŠ~ç+¬O›'š>èù¾”EçÃ#££PñN@!›]h7±€Rʘ €R ë>Š7Žü¶F(­”ôt¾Ðf–MKöŸõ‡l¼þæ;ã`¸g_R°ÐÎ_žZsI@)…݇ëêÃN¶m»â!áôúôxÇqLM·zzýÈé¿;Λ?YÓóxßÉ÷oxl·` „m˜Ó:þaɆñá5ì‡ùB‰xÁV*ÏóP]]ˆ› t_~Ô¦˜vÓIø7<;š‡ðìñ_ð…©Vñâ¾àºèo=¼À”¥e éø+hPÿª"¶l&ì=£“ÿù¡É6]ÿT蟜×âœôÿÔNTÊ•9ÀIEND®B`‚administrator/components/com_jce/media/img/error.png100644 0 0 1353 12000772076 20346 0ustar 0 0 ‰PNG  IHDR‰ pHYs  šœIDAT8­SMoQ½C vªh5~Ä’FjlâÆ&VºqÓØEãBcÜøúÄ?Еk7Æè¸qî c“FW5“B¨Š3æyït†0cuSnòxwî;çðîÇ8ç0N SŒ´Æ.(þ놯áÌÀäbλ¸oÀÖàÍ=ÎÆ«áKA¸#IÒú¥……ôÌÜœ"'áŒV‹UwwÕòÎN‘1¶qŸó·AÑ¿Ÿ£X2™Ì]_YÉ@8³, TUuxŠ¢€(Š`1f~Ìç º¦åD}‚Ï0M9}±´ººhZV̶mÐ477ÁíåeÀ?A@äÜüÏoÝîƒG#éûš‚õZ»0?Ÿn¶Û1Òu ÃfE>ÅZ­èŒÅR³³iâ èøš‚Å^:–J)ûnŠl·ÛP«Õ‘½rì¢Ð(õé©)…8øùÔ RÜshÇÃs<’¨nƒ~ôfŒN*• –3 !Œcç ÏY§#Ç Ñî´0`!°G©â-9Þ&Œ1‹Çã &KœQó ö¾ëõú5Þhȱ‘'YÈfNb”‰~¿ßgÄûš‚×_«V÷'±>2¢há C¶P€Û¥’ã{qÚ[¦©Ý¡ùM|_Uµ¡)ãh)Š+¡d|OGʬ2V$Žsèþøæbq°eQÌÝL$2“1ÀÔ¸à³î®¡Ø–® ÛÎ=ùß`»x¸‹¢a=¦/G"Êqì<ý¶mö¥×S Ýnqó×1Âønˆ/€š4ëÄ)€ÓWn¸‚£2C`¬WõÀçOïju á'4𛤚zeòMƃ†úÐÁe  íú½àQv_—"äqÿ\/M`~СIEND®B`‚administrator/components/com_jce/media/img/list_label_bg.gif100644 0 0 73 12000772076 21716 0ustar 0 0 GIF89aÈ‘ïïïÿÿÿÿÿÿ!ù,È „©Ëí£œ´Úë ;administrator/components/com_jce/media/img/logo.png100644 0 0 11047 12000772076 20176 0ustar 0 0 ‰PNG  IHDR00Wù‡ pHYs ë ë‚‹ZÙIDAThÅY p\Å™þæ’F£Ã’,˺|cqØLÌ¹ÄØ,KX–6!ÀBmÈK6U  ‡+ 0 961x$¡ ÈWð!,[–dÝÇŒ4÷Ì~_÷¼ÑHdIÕV…´Ôïõëî×ý}ÿÕýzN§1&»ïºë.÷˜º±}>÷çué´ç/ar©2'¹YNež y÷ä´ý=‹ƒ™É]™{´7•¾º?ÿö[{[.ïE øF.½—}'ç•¿a‘S¦RiäûÒ'N®|{vÕ¸û9Û23f9pÀ/[¿mÿ¯VoÝ;i\±ãùf¿!ÌÏÚMÁÅ ´táÌY’«®XúC¾ð­Q$hB޽×=ÿîÇ­õ·¬I¿Öx8N¦RÊ¡D*ŒóÎ<Äò0³Ó–{fßlVŸL_õ79·}T9É÷’©!fÝ<”é£9?éL|ñžé[ž~›pÓߔٯ[·Îø„K{çw¦£ñ'V>¸ù†ÛW,Hœ¿`š÷`ljºPäs#ÏëB"íB<™F,™ç1N,Ër»]p³Ÿ Œ]þ––1ÍO½« —FqAŠùÉå÷lô\wî¼#W-9¾MíÌ.Ïo¼¡Š^ßsäÉ[º o^~ªëPç KÞ;!àÆ‘`»»"ˆDãðºÒ()ÊCY±…<¸½nJ“XŠž/WqÁEB†ß'3É`$«.÷™å4ß1ÙA‚prFl†ãäùÜÁX<½ópw銓¦½Â‘­_¿Þã8±»7ñ—ú‹§ŒÏ–•—àÁ÷{ðãw!:A Çøx“ÜQÌœyuãP?½3'W ¬´ÑhAö‹‰¨ÇÛM0J¹WS1ê’‘ÿ¨:óà4dGâ ú¼. ‹)`_¸ ÐaÒñåHÆynÜ»á]l W`êôZtFèkïÅpo?ZúãxûÐ1`ëÇ(HF0k‚ËNœ„³—‡úySP8¾}ƒÃkLx¼™Hì²3öU Ä÷’ŒFIÚ},™4ZfSv´,*ñDîþå&üø¶GPC@'×aaýÉðÏ­G÷ÔiØÛDÿ±2` á¡>ìììÂÎç¶ã‰§ßÄü)åø‡eó±ü‚S0mf-B¡zûBF£>±KNvnâÿy·=]$0âw™ÎYŠYr–@:v¤§Ïnx/oÞ†«¯]Ž«¾v!ªj*ÐÞÚc¢•›ŽžrHè.äN2Œ,•Tš&Äœ`›²Ô 088FUm%N_v \>/<=4BšRˆ†#(†Q=®¡´‡:úqßKX4s"8g*>¬Ÿ€¶4!ÜÖo™zá**D¨»þäüqÛ\t6MëÆKÐA1F™•HX9 8ŸódLˆÂýLˆ€ŠÒ‘]Œ®íÍǰö¿äÑœ ŒþÜœ¬˜€ J˨¬„·¼ƒ…Iü¼+û¸iq^½öxüà*üvë Ü ïPßu¡Œ>ÕÍP»ê?‚æÃÇpϽס­sÃѬƒ[¸ºÊ´ð|ÙD Iÿ¯j@ BU4ŷ–Öã©ÇÖ!HöÓgMA ¨i¶+Gi §)½Ôjó=ˆøÆaUc¿Û·÷-«ÆùsÎÄ-ÏíAÌÕOAÑPˆ[Û\§.À3¿~½=AÜ÷È7º0(¨Âù/tàžºñúM'àß6W`Wã'HÕ£¿»é’<'ð»Ww"øµⱟÝjÆŽD¡¸tg¤o¬XhIÆi#þb±›«{“´Ȅ̶€o§]n´wô ûX/n¸ñR<øÔwPW]˜¢SqžŠ¸òùjšd"A¤‡ëh‡·¯®Ú øÎá"ÜñëmxòÜ\{驈x+˜XOU5’rxN9o½ßŒÛ¾¹E~c6š_: eF"¡gëÄiFI6ŒQA–€X°ÙØ[œÕÙíñ˜ÐÚÞÚE§-À/6>€¯\÷Oð „líâè)¸ã$0‚Üü…äz€¶vøËýx½zþyÍŸ±¢ ^s2P2ÉÊZx«I¢¨ÔØú‡xbõ&L›:ÑX\02, ‘±Z1!²DÌ´Û ŸÈ]eF&9oëÑ.F¡(n¾í_ñÓ5wãô%õH·w!ŘïN%àNDàŽ1‡àîG¤«žhm3æàâ—»Ú¹›¯™‹ü"jb||µ5$Ä}Æ4´$ÑÄ QLM$ð &« ŠUØL$WaLÊÐ 9Kàhÿ¸!‹j_”aìæ.´ÀïC‚uím˜5{2þÙwñÀãÿ…Ùu•HíÝÔ‘¤4#Ùø1’;÷Í-˜Hç\œÅÊ• ðÒ€;Þ|[¯žŽÒâ2ÄK«èu(™9“fÕâ†ÛךùøÆâΗ‚#&ýiÇÐÏlØäqbVj©Š%1ÄŽ!î(ó<.äsÕÌã¶Ù¯gÞ-úûCðq³vι8û‚Åxñ™-øí†7Q3{Ni˜³¹‡ª(6þ´¯7Ž}ô›¹ÓðƒÛѹñ]l¹²®=Š>Æ¥y +ÑâpЋÇ×½‡;¾¾[£f¡ sQUXS°žù‘Ûå¦Q¤¦< h†}<•D’[ìX’u4QÛ}ôx:‰fFª¢‚||éªåøÒ•Ë©÷?Úû°±=„ÆŽZ•@Eàcάj<{81ît7ÿK¾¸±!_ »ú¹;^r2Ö76cɇ-˜=© a£—óåg0™0™Ã`™˜Vcmƒ•EÂ|q1"7ÕÊo/Þ-Ü\4\x˜Ž×ôI;üjJr}x烃xqíq¬3B©Ï,Ê,ég@(AË‘c˜5µ/¥0^z›.[Œ ^hCØ“„b9"ÔȳöbÕ”RPÓŠC âÐç’ðÛØ”õÛÀý;k¤ ;›ý<ï* ¼Ú|ŒÕ^eš—´‘Ï‰ø¹º üy>|㺋±åÕûq÷ª+PÍŸäîHõt#Å8MºÐÜÚ‰IS+°É5 ›^Ù+&!íõsõM(ÁGñBì댢(_Ð$D ÎâᔟJêe’”€;ÒWg#}V ¸É"!Blô°,™göÍóyL¹­½AúÈå+NÇó_¯œsÒM‡‘<ÜJM$H"M]˜2½¿ –a÷[;ð‹å“1÷¡¼Ð‡(m½+æ¢Ï9ÌÌɹÌB—ÁëܲLè›ÖHßG)¬Ûd;¨ì΀WfiÄ’t!À("!tt3¸ÿ¶X{ÇrÌq‡Ø}Ç$)𔟴õ`æ 3ðÐ7 þ܈ïŸ7™_~^Ô•`R ÍG¶Ï±ùŸ¤ÊcÓ( Y<ÈÞ¤Ìj€_‡¸Û¾¼LŒ&eú*r¹¹ÿcØån³µ½‹çÕbË}—à«§”#¹§ÃüD±­‰Aà¸%'á¶ßwbY¨ ×-¬¡&<èˆ)PüˆôCe*9i„t  b1R´Ž£gQË"H™–%–{Ïø†i³ë § ü"ÂP$‰Õ7.Ū•S¢Ó‡øµÇ£îH»1å¼¥¸~M#n®D}íx4qƒçËÏ`àÜÖàÊÁnŠ#œYû)ãj&pSæÝ‘x–œTZ°Z‘ÔGÎ.-IŽv ¹¦¸ÂîoÄ-ËçàÉ˧#y´An¯»xŽÇ©_„~þ¾WïÇ`2qGA‚8Ž„V€‚•›F°€eïìÌs2Žªgb[¬±}+m¥ØèÄg•MfßLÙŸça”òà@Ç®\\‡GVÔ!ÑÞž¼¡»Ôê)UØ-GËÛïp+^޶¡ hŠÂ"!YŸ² c1YBìkÔ »#yc>|– éÎÔ;Zb½uxMäDª I‘u²aÀI4÷Eqõi5xèÂZDàØ@Œ«o'¦žÕ€‡Þ:ŠSãm().ä)ÉHü&a›²p|ðe/²DrȰ·Q©±ƒKhêVÒ™õAk„Ím³¶%<¥4Ï’lë@×/®Â£Õ`¸}á¾i?qM; ßÿåŸpZMÂüÐ`µ á‰Äè4j%vš¬ÓêÉÚaÏ7=|ciB‚Uuä02‰8“irgRÙµKÛt5ÒÊ ÆqE}.ž[ŠÖ`{º£Ü†Oóköá…ÍÛqÖy ±‹ŸŸÚJ(9㘇Ì%‡€Ý¶ ŽÌîA0eŽ r*›H¤»ÉªËØ++¤Eù‰úJS²\3:Õœ$pžÔðSPbH¡‹'Tª¸ˆÕ²ÖÅ ×.ÅÍw<3ŽçÅH$ÆzŽ£ì˜J†€„7*©¨:ýÞ”Õ‹ë¦6[ïø…1Z«fÖÜS6f§zŽãD­úòŒ¥ÐI¡©/†qãJаx6žZûæÔ”™(¥wmlEÀÂRËÀp1EçYrÈ ˆÉÖN%lùk@gÑs{­Ãk õÐ8v<¡°+?)ò{ÐÕ3€K/jÀ[5!ØÖÒ’€ýÐá;c`Æb›@É n‹°Šj•P ÓÕ|™!f8ã¼ì¯k‘Tv4©QÙdžÍ<,'øPÆïî³–ÎÇê_½‚ãy¦ÓikŽÎlö>¢j¶(«åhLZ¡mÒ]uªQ9ã7"c«ÙbËV’´Â)£QÓM̳:ëOÉ€wʼkDuòòŠK϶ÝMØ»m'ª*Æ!Jfó¦½äÐßl-H•m½­Í½ZjÚxeøð6ò–vd²oÕ0"ššºš¤ýw&¼‘ˆÓé$"Æ/±ëÿýr|Ü´øÌ\΋¼;Q(]Rèés´az9?Päô65Ɉpš²0M„“–cê8„ÀyágëTo³óŽ^°€x7šïh…ξ!Ì›3Aâêî4ÂÐÏ]La]€õ üe#ÖO©üŸx,yù‘žÁä̉¥ÞÞÁˆÙUj0KÊĦi×)JÏ”DôLB,Í…à=î4¼ìcøÓJlWZÙ¹µu³rò½¿–dRZtŒ"àæü_dDÏú1Q¥Á+îÝðvÊëõ{Ÿ¹þìqê[¿÷=ðÇIÉÒêÐ!ñõ‡_~ÿñ§ßmòÖÖ”òN³iJÀ.RŠ,b¥xo¾Y–sòßF§weh ÆY% %ÎÅጉHb:ñ–vRÏúaÛø ï"¢¤C¶ýGºqÜÄ2¬úòi/V\Åê³F5àÝ<É­ø3>8Ôuûïw7ŸŠ'óM/éR-ÞÜX²¼Ugkôì´©-›’E½5“ác.GÏ$[г,›„\Ôxb~]yë%‹f­a§Ÿ2ëøÎ8¿ÅGhlË<:C³D‘‚åÏ3i^na–Å)åb”$mdȹ«ƒ!–S÷—ú}®u™_æ?…k¬ ÅÌEìÿ^’ÏÅ¡²,rÄ*sZÿ÷þÔŸ(¹\IEND®B`‚administrator/components/com_jce/media/img/menu/jce-config.png100644 0 0 1057 12000772076 22166 0ustar 0 0 ‰PNG  IHDRóÿasBIT|dˆ pHYs  ÒÝ~ütEXtSoftwareAdobe Fireworks CS5qµã6©IDAT8¥“¿ªQ‡¿³ç¬ÐÅ]ÿ "Sê ˜êâ+¤ò)lD$…6>€`c•çÈ ¤U¸h±+î.^­<»'E®!"Nõc˜ù˜ß0#Œ1<ÖSÝ€¾] ð`ïðS_W«Õ÷F£Ñù_;B¶Ûí¯~¿?··^¯wN§‹Åc çóùŸz·Û±\.ñ}Ÿz½Þ\ Zk’$AJI’$„aˆçyø¾—¢ˆñxL¤i o­5J)´ÖDQÄh4"Â0Äu]|ßGJÉd2!—ËñnWZ€ºlÛFkeYL§S²Ù,q3Ùï÷”J%r¹µZí P7@Ç öû=žç‘Ïç©V«!˜Ífd2´Öd2.—ËuŸÇã‘Á`Àáp¸›Æu]Ç¡R©Üå…7€­µÆÃ|>GJy·ô;À¶•¦)Åb×u)—Ë$Ir+üHg³Y¥„—õzýÚl6?w»]Œ1ضM¯×Ãã8´Z-Œ1´Ûm”Rl6›W!ÄE!^€o€÷à)‡À|âϨxϾóoµ3ïÿ/޾–IEND®B`‚administrator/components/com_jce/media/img/menu/jce-cpanel.png100644 0 0 1151 12000772076 22156 0ustar 0 0 ‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe< IDATxÚœS=oA}{·çµîr6§äÄ"tH¢°¨\ä$.–@DgQ!!Ñ ŠD¢L“.…«ô´¤Á±ì\Œï“™õùdLÁÇHÏ;·;ovÞÌZ4›Íëø?û*“$Ùèv»oÂ0ü'¦eYhµZ8‚Û/(W ! ­¦ij™ù+2B÷îM0WÆqlYnÔjuû÷ÑÌa.':AáÂ?GLu!%Ú[öÍ‚‚ 5K $&óÆølˆ·w®ëÀ{ïŽñþþ-í7_aïÑÖlÿÃg¸%O_ÈܼÖF!ƒŸû¹¯l'÷írEúþ­nN"L<ütB“p¯¬ãñá¤%qiã*žSù$¥¼æÁ"QÌ*àÎfÒXLU„ë–ˆdA 3°ÏgDfðd@S‹ãIž@KX[±¦©n­’A{4k˜,“|6'ý¬ñ3 )¼ÚÙÔ2$ß”Í[¿ŸÇq0×­ÁÆ\Q¯×w)`syÖívûåâw§Óy²CÉO¨Âôcš•ÆF¯‹3?u]÷—àétJ-Ïz¡‹&ûý>sSJÁóûnf¾«ë\ž pôPa·Û«‡††ªéKÕ¾…yéƒGð¡¥¥_Rî°­ÛƒIEND®B`‚administrator/components/com_jce/media/img/menu/jce-profiles.png100644 0 0 1333 12000772076 22541 0ustar 0 0 ‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<}IDATxÚ”RKOQþî¼:}`- -¥åB¢ÄF bˆF‰’H, M”D6Jpëo`qëc/;wD£1q¡1$$lŒèb-Ti±¥­N;Ïy•®<É7÷Üs¾óÝ3ç^²«BöMáR$L;´z£—ðÌ0°µÇyûƒؽª¬Í‡‡þææm§zQÇò—¥l6‘œŽ&ðè(WZŽWÕ·¸]êò‰%›ÍÂ×q²áÛJrˆ¸/(;LFŸJ ¤s¨ý¾Sj¼^D&&Ð;8ã¹£|I«:èÛü à Zã>xŒ¸}´­ø»T%,—`— …ƒ(ň¬š]®¨çŸäêOÝuÌ¡p?LëNù W1•:8__ϾZ/h8¸8wR»î>Šœ¬‘‡ÛõE{W*½8½¸Ð`B~±[¯›JÉù%“öî¢ ƒÖ2LHÁ¼‡Šl9Ï ÙHÄ¿ÞÚî<[éXÊÙø!ëïÈc¥DEEB`Äû×¶0°)Ÿ?÷djF‘=5þN7lv;„ß­5¡[7¯¯½|— Úâåx7–ö«¾“ÞÞk¡É±qQ’`hÀ‚Úˆè¶Mº‡Þ+ý—M‘yò[Û!}k'CqI×1#á±w»êÔvv Ó©=üÑÑQë>O=¶Vžóôœ¹ä>êù8ót›BóÂýrÔñ‹•ÚYrš¦¹=F¹ŒT*Uæàb{Æ9‚$:y¯¥y!<"ÖŽtB½H·¢+&Óy¬ð¼»nžÝù”¾@óé *ùÊWhïçŒÍ9.ÀŸHpwý+Öþ 0S†ëFÚ}ymIEND®B`‚administrator/components/com_jce/media/img/menu/logo.png100644 0 0 1702 12000772076 21117 0ustar 0 0 ‰PNG  IHDRóÿasBIT|dˆ pHYs  ÒÝ~ütEXtSoftwareAdobe FireworksO³NtEXtCreation Time01/29/09ƾHšIDAT8m“Ío”eÅÏ}ž÷wfZ(öƒN§í¤Z…-–øÕÖÖDâBƒb¢ %ü.þ®Ø¸Ñ„ˆ!q#Õ…hR41ù0–’’(µM!Cg¦-3óÎÌûñ¸˜ºónîêžœsî9ÊZk¾½ñ໕í-‚µ€âGˆã˜\OÇ•3c¹sêÒÂâ÷N™:”í6F“tÒ!Mµ†J)Z¨­ch¥XZ+…i×ühJ`v¤«OÖY®¹ì­˜èˆ˜ë'ÛßK¥R÷(v‡šÑBoW»¹¿òdV}s÷ûóÕ.~~™ÁWO’àqѧxç.o µsáÃS ʱ¹U%Ž,(0"¬—ž²V(£óg?š{v_ë«0þ6µM†08~Œk<æ«/æ©m?1LK# cK¹Z§æèɳÏõfºxnh?7oÜãö­Eþ\-RlëfúÔQ¼¾}ÌÏßáÞíE¦'†Ð-›µ:f=õþ…9+ŠÜP†©™“Z–~ûÊz‘{²¼vx?Ùƒ9®Ý*àO;œ¥F”k>a3Dçß;?W‰-Q`‰-¼’?ÎTþÃ{ÓìÚ.q3h£ç™#Gs\^®õbºö$Y-UÑ‘E\--ÄqÌF©Lg¦›·ÞÎ3y¤`ù>WÿòqÍèè WŠ R:ÆÕ‚8Zã9BÊÒŽ‹ ÄAÄ™éãüôÉëœË|ýwƒç€‰»ˆ¬ÆsZ/”ÂÑ W+\1xF“2š”#Ø Àõ\.¾ûç4_>ŒHl–Iz ŒH+J…QBBkFHºš¤18¢¨…ðÙé '|®mà—¶p‹O½%A-‚1‚ˆÂh…«5žÑ´' )GXÍ›ýŒgXY-`ˆw$XQ - …Ö‚Á1 Ï8¸ZãhE5„X }™Nj•ˆ`:Û¯¯l×^ÚLH3ˆh†00Ôݪ¯)›‘µøADµR"ÜŽvª[õøÀîä¯ÊZ›¾t}釥ÂÖË®#ès Ö¶Úø_wv#éëüå‡fÿ« :EW„{IEND®B`‚administrator/components/com_jce/media/img/spacer.gif100644 0 0 117 12000772076 20430 0ustar 0 0 GIF89a¢ÿÿÿûüý“ˆˆ_oÿÿÿ!ù,Hº+¡>É2ÓY¯îØöMÀ´$;administrator/components/com_jce/media/img/tick.png100644 0 0 1155 12000772076 20147 0ustar 0 0 ‰PNG  IHDR‰ pHYs  šœIDAT8cüÿÿ?55™5Ld\&(ϸZô ãjaô #ÙËŒ ˜˜'¦¹$3üaja\Žj(I262²ë3”30ýòå CœsŒ>Ã_¦dWm #0È ÖË‹+8È ËI}øôñ÷Úýk¯3üþÛ€×@ƙŒs„Ï€hd… 33„¹…‚ÕÄ•¾|ýòïèå#w¾~þ4ñâ»-ÈêP\È8߃áß¿–$ÿDCæU3NòagfË’ä‘R~ðàÃÉK'ï~|÷qéÿ”s‘±‘s ã$31Á±zoÞ¼eåäÿ»rÃò ÿ²0³ÆÉ+(èþû÷ŸýÝÛ·>~þ°–áÝDzÿõÿÿ¡ˆâB†¿j–¬Xt‰ƒõ×éÛ§™ìt~3ċʊkü`ùÉþîýë§ß¾Û4¬›a. tðÃŽ©ÅØÉTëé¯çœœ �gøþâëëOwßaøù% hØt—Áø(^† 6eúß"e« ñ“ï÷ï??|:÷î ã¿„ÿÕßžÂÔa£±RÈÆêÁ ËÔÂe" óíü§; w~¤þ_÷ÿ:6CÅP &5P˜ò±ó11X2è2¦1œþßÉpá Pì'ÿ€Ò ö/ þŒXxˆn #P;s@if R ŠMþÅ‘è8*¢ &Š£A ÊYß|®ûº0IEND®B`‚administrator/components/com_jce/media/js/browser.js100644 0 0 5014 12000772103 20355 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.WFBrowserWidget={options:{element:null,plugin:{plugin:'browser',root:'',site:'',help:function(){var win=window.parent;if(typeof win.$jce!=='undefined'){window.parent.$jce.createDialog({src:'index.php?option=com_jce&view=help&tmpl=component§ion=editor&category=browser',type:'help',options:{width:780,height:560}});}else{$.Dialog.iframe('Help','index.php?option=com_jce&view=help&tmpl=component§ion=editor&category=browser',{width:780,height:560});}}},manager:{upload:{insert:false},expandable:false}},init:function(options){var self=this,win=window.parent,doc=win.document;$.extend(true,this.options,options);$('').appendTo(document.body);$.Plugin.init(this.options.plugin);$('button#insert, button#cancel').hide();if(this.options.element){$('button#insert').show().click(function(e){self.insert();self.close();e.preventDefault();});$('button#cancel').show().click(function(e){self.close();e.preventDefault();});var src=doc.getElementById(this.options.element).value||'';$('#src').val(src);} WFFileBrowser.init($('#src'),$.extend(this.options.manager,{}));},insert:function(){if(this.options.element){var src=WFFileBrowser.getSelectedItems(0);window.parent.document.getElementById(this.options.element).value=$(src).data('url')||'';}},close:function(){var win=window.parent;if(typeof win.$jce!=='undefined'){return win.$jce.closeDialog('#'+this.options.element+'_browser');} if(typeof win.SqueezeBox!=='undefined'){return win.SqueezeBox.close();}}};})(jQuery);var tinyMCE={addI18n:function(p,o){return $.Plugin.addI18n(p,o);}};administrator/components/com_jce/media/js/checklist.js100644 0 0 5152 12000772103 20646 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.fn.checkList=function(options){this.each(function(){return $.CheckList.init(this,options);});};$.CheckList={options:{valueAsClassName:false},init:function(el,options){var self=this;$.extend(this.options,options);var ul=document.createElement('ul');var elms=[];if(el.nodeName=='SELECT'){$.each($('option',el),function(){elms.push({name:$(this).html(),value:$(this).val(),selected:$(this).prop('selected')});});}else{$.each(el.value.split(','),function(){elms.push({name:this,value:this});});} $(el).hide();$(ul).addClass('widget-checklist').insertBefore(el);$.each(elms,function(){self.createElement(el,ul,this);});if($(el).hasClass('sortable')){$(ul).addClass('sortable').sortable({axis:'y',tolerance:'intersect',update:function(event,ui){self.setValue(el,$(ui.item).parent());},placeholder:"ui-state-highlight"}).disableSelection();}},createElement:function(el,ul,n){var self=this,d=document,li=d.createElement('li'),check=d.createElement('span');$(li).attr({title:n.value}).addClass('ui-widget-content ui-corner-all').appendTo(ul);$(check).addClass('checkbox').addClass(function(){return n.selected?'checked':'';}).click(function(){$(this).toggleClass('checked');self.setValue(el,ul);}).appendTo(li);$(li).append(''+n.name+'');},setValue:function(el,ul){$list=$('li',ul);var x=$.map($('span.checked',$list),function(n){return $(n).parent('li').attr('title');});if(el.nodeName=='SELECT'){$(el).empty();$.each($list,function(i,item){var v=$(item).attr('title');var o=document.createElement('option');$(o).attr({'value':v}).prop('selected',!($.inArray(v,x)==-1)).appendTo(el);});}else{el.value=x.join(',');}}};})(jQuery);administrator/components/com_jce/media/js/cpanel.js100644 0 0 4003 12000772103 20131 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.jce.CPanel={init:function(options){if(options.feed){$('ul.newsfeed').addClass('loading').html('
  • '+options.labels.feed+'
  • ');$.getJSON("index.php?option=com_jce&view=cpanel&task=feed",{},function(r){$('ul.newsfeed').removeClass('loading').empty();$.each(r.feeds,function(k,n){$('ul.newsfeed').append('
  • '+n.title+'
  • ');});});} if(options.updates){$.getJSON("index.php?option=com_jce&view=updates&task=update&step=check",{},function(r){if(r&&r.length){$('div#jce ul.adminformlist').append('
  • '+options.labels.updates+''+options.labels.updates_available+'
  • ');$('a.dialog.updates','div#jce ul.adminformlist').click(function(e){$.jce.createDialog({width:760,height:540,src:$(this).attr('href'),options:$(this).data('options'),modal:true,type:'updates',title:$(this).attr('title')});e.preventDefault();});}});}}};})(jQuery);administrator/components/com_jce/media/js/extensions.js100644 0 0 23762 12000772103 21123 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.widget("ui.extensionmapper",{options:{labels:{'type_new':'Add new type...','group_new':'Add new group...'},defaults:''},_init:function(){var self=this,el=this.element,v=$(el).val()||'',name=$(el).attr('name').replace(/\[\]/,'');this.defaultMap={};var dv=this.options.defaults||$(el).data('default');if(dv){$.each(dv.split(';'),function(i,s){var parts=s.split('=');self.defaultMap[parts[0]]=parts[1].split(',');});} v=$.type(v)=='array'?v.join(';'):v;$input=$('').addClass(function(){return $(el).hasClass('create')?'create':'';}).insertBefore(el).hide().val(v);$(el).remove();this.element=$input;$('').val(v).insertBefore(this.element);$('').click(function(){var $edit=this;if(!this.mapper){$(this).addClass('loader');this.mapper=self._buildMapper();$(this.mapper).hide().insertAfter(this).slideDown(450,function(){$($edit).removeClass('loader');$('div.extension_group_container ul.extension_list',this).each(function(){if(this.firstChild.offsetHeight*this.childNodes.length>this.parentNode.offsetHeight){$(this).parent('div.extension_list_container').next('div.extension_list_scroll_bottom').css('visibility','visible');}});});}else{$(this.mapper).slideToggle(450);}}).insertAfter(this.element);},_buildMapper:function(){var self=this,v=$(this.element).val();var $container=$('');$.each(v.split(';'),function(i,s){$container.append(self._createGroup(s.split('=')));});if($(this.element).hasClass('create')){$('
    '+this.options.labels.group_new+'
    ').click(function(){var group=self._createGroup();$(group).hide().insertBefore(this).fadeIn('fast');self._createSortable($('ul.extension_list',group));}).appendTo($container);} this._createSortable($('ul.extension_list',$container));$container.sortable({tolerance:'intersect',placeholder:'sortable-highlight',handle:'span.extension_group_handle',update:function(event,ui){self._setValues();},start:function(event,ui){$(ui.placeholder).width($(ui.item).width()).height($(ui.item).height());}});return $container;},_createSortable:function(list){var self=this;$(list).sortable({connectWith:'ul.extension_list',placeholder:'sortable-highlight',update:function(event,ui){if(!ui.sender) return;self._showScroll($(ui.item).parent(),['bottom']);self._showScroll($(ui.sender),['top','bottom']);self._setValues();}});},_createGroup:function(values){var self=this;values=values||['custom','custom'];var $tmpl=$('
    '+'
    '+' '+' '+'
    '+'
    '+this.options.labels.type_new+'
    '+'
    '+'
    '+'
      '+'
      '+'
      '+'
      ');var name=values[0],list=values[1];if(name=='custom'){$('').change(function(){if(this.value=='') return;var v=this.value.toLowerCase();$('span.extension_group_title',$tmpl).addClass(v).attr('title',v);}).appendTo($('span.extension_group_title',$tmpl)).focus().pattern();$remove=$('').click(function(){$($tmpl).fadeOut('fast',function(){$tmpl.remove();self._setValues();});});$('div.extension_group_titlebar',$tmpl).append($remove);}else{var key=name.replace(/[\W]/g,'');if(this.defaultMap[key]){var $check=$('').addClass(function(){return name.charAt(0)=='-'?'':'checked';}).attr('aria-checked',!(name.charAt(0)=='-'));$check.click(function(){var s=name;if(s.charAt(0)==='-'){s=s.substr(1);} if($(this).is('.checked')){$(this).removeClass('checked').attr('aria-checked',false).prev('span.extension_group_title').attr('title','-'+s);}else{$(this).addClass('checked').attr('aria-checked',true).prev('span.extension_group_title').attr('title',s);} self._setValues();});$('div.extension_group_titlebar',$tmpl).append($check);}else{$remove=$('').click(function(){$($tmpl).fadeOut('fast',function(){$tmpl.remove();self._setValues();});});$('div.extension_group_titlebar',$tmpl).append($remove);} var title=this.options.labels[key]||(key.charAt(0).toUpperCase()+key.substr(1));$('span.extension_group_title',$tmpl).html(title);} $('span.extension_group_title',$tmpl).attr('title',name).addClass(name);$('div.extension_list_add span',$tmpl).click(function(){self._createItem('custom').hide().prependTo($('ul.extension_list',$tmpl)).fadeIn('fast',function(){var parent=this.parentNode;if(parent.firstChild.offsetHeight*parent.childNodes.length>parent.parentNode.offsetHeight){$(parent).parent('div.extension_list_container').next('div.extension_list_scroll_bottom').css('visibility','visible');} $(this).focus();});});$('div.extension_list_scroll_top',$tmpl).click(function(){self._scrollTo('top',$('ul.extension_list',$tmpl));});$('div.extension_list_scroll_bottom',$tmpl).click(function(){self._scrollTo('bottom',$('ul.extension_list',$tmpl));});$.each(list.split(','),function(){$('ul.extension_list',$tmpl).append(self._createItem(this));});return $tmpl;},_createItem:function(value){var self=this,v=value.replace(/[^a-z0-9]/i,''),$item;if(value=='custom'){$item=$('
    • '+' '+' '+'
    • ');$('input',$item).change(function(){if(this.value==''){$(this).removeClass('duplicate');$($item).removeClass(function(){return this.className.replace(/(file|custom)/,'');});return;} if(new RegExp(new RegExp('[=,]'+this.value+'[,;]')).test($(self.element).val())){$(this).addClass('duplicate');$item.addClass('duplicate');}else{$(this).removeClass('duplicate');$item.removeClass(function(){return this.className.replace(/(file|custom)/,'');}).addClass(this.value);if(this.value!=''){self._setValues();}}}).focus().pattern();$('span.extension_list_remove',$item).click(function(){$item.fadeOut('fast',function(){if($('input',$item).val()!=''){self._setValues();} var parent=this.parentNode;if(parent.firstChild.offsetHeight*parent.childNodes.length'+' '+value.replace(/[\W]+/,'')+''+' '+'');$('span.checkbox',$item).addClass(function(){return value.charAt(0)=='-'?'':'checked';}).attr('aria-checked',!(value.charAt(0)=='-')).click(function(){if($(this).is('.checked')){$(this).removeClass('checked').attr('aria-checked',false).prev('span.extension_title').attr('title','-'+v);}else{$(this).addClass('checked').attr('aria-checked',true).prev('span.extension_title').attr('title',v);} self._setValues();});} return $item;},_showScroll:function(el,dir){var p=$(el).parent(),m=parseFloat($(el).css('margin-top'));function check(el,p,dir){if(dir=='top'){return parseFloat(m)==0;}else{if(m==0){var c=$(el).children();return $(c).first().outerHeight()*c.length<$(p).outerHeight();}else{return(m+$(el).outerHeight())<$(p).outerHeight();}}} var scroll=(dir=='top')?p.prev():p.next();$.each(dir,function(n,s){if(check(el,p,s)){scroll.css('visibility','hidden');}else{scroll.css('visibility','visible');}});},_scrollTo:function(dir,ul){var self=this,p=$(ul).parent(),mt=parseFloat($(ul).css('margin-top')),x=$(ul).get(0).firstChild.offsetHeight,v=mt-x,inv;if(dir=='top'){v=mt+x;v=v+1;if(mt==0||v>0) return;}else{v=v-1;} inv=(dir=='top')?p.next():p.prev();$(ul).animate({'marginTop':v},500,function(){$(inv).css('visibility','visible');self._showScroll(ul,[dir]);});},_setValues:function(){var id=$(this.element).attr('id'),groups=[],title='';$('div.extension_group_container','#'+id+'_mapper').each(function(){var n=$('span.extension_group_title:first',this);if($(n).is('.custom')){title=$('input',n).val();}else{title=$(n).attr('title');} if(title){var list=[],v,title=title.toLowerCase();$('li span',this).each(function(){v=$('input',this).val()||$(this).attr('title');if(v){list.push(v);}});groups.push(title+'='+list.join(','));}});$(this.element).val(groups.join(';').replace(/([a-z]+)=;/g,''));},destroy:function(){$.Widget.prototype.destroy.apply(this,arguments);}});})(jQuery);administrator/components/com_jce/media/js/installer.js100644 0 0 2576 12000772103 20701 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.jce.Installer={init:function(options){$('#tabs').tabs();$('button#install_button').button({icons:{primary:'icon-install'}});$('button.install_uninstall').button({icons:{primary:'icon-remove'}}).click(function(e){if($('div#tabs input:checkbox:checked').length){$(this).addClass('ui-state-loading');$('input[name="task"]').val('remove');$('form[name="adminForm"]').submit();} e.preventDefault();});}};})(jQuery);administrator/components/com_jce/media/js/jce.js100644 0 0 13736 12000772103 17465 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.jce={options:{},init:function(options){var self=this;$.extend(true,this.options,options);$('body').addClass('ui-jce');$('.tooltip, .hasTip').tips({parent:'#jce'});$('div.icon a').addClass('ui-widget-content ui-corner-all');$('a.dialog').click(function(e){self.createDialog({src:$(this).attr('href'),options:$(this).data('options'),modal:$(this).hasClass('modal'),type:/(users|help|preferences|updates|browser|legend)/.exec($(this).attr('class'))[0],title:$(this).attr('title')});e.preventDefault();});if(!$.support.cssFloat){$('#jce').addClass('ie');if(!window.XMLHttpRequest){$('#jce').addClass('ie6');$('input:text').addClass('ie_input_text');$('ul.adminformlist > li, dl.adminformlist > dd').addClass('ie_adminformlist');$('ul.adminformlist > li > label:first-child, ul.adminformlist > li > span:first-child, dl.adminformlist > dd > label:first-child, dl.adminformlist > dd > span:first-child').addClass('ie_adminformlist_child');}else{if(!document.querySelector){$('#jce').addClass('ie7');}} if(!document.querySelector){$('button').addClass('ie_button');}else{if(!$.support.leadingWhitespace){$('#jce').addClass('ie8');}else{$('#jce').addClass('ie9');}}} $('button#filter_go').button({icons:{primary:'ui-icon-search'}});$('button#filter_reset').button({icons:{primary:'ui-icon-arrowrefresh-1-e'}});$('div#jce tbody tr:odd').addClass('odd');this._setDependants();this._formWidgets();},createDialog:function(o){var self=this;function _fixDialog(el,settings){if(parseFloat(el.style.height)==0){var h=settings.height;$(el).siblings('div').each(function(){h=h-parseFloat($(this).outerHeight());});h=h-$(el).outerHeight();$(el).css('height',h).dialog('option','position','center');}} var buttons={};var div=document.createElement('div');var loader=document.createElement('div');var iframe=document.createElement('iframe');var title=o.title||'';if(o.type=='users'){$.extend(buttons,{'$select':function(){iframe.contentWindow.selectUsers();$(this).dialog("close");}});} if(o.type=='preferences'){$.extend(buttons,{'$save':function(){iframe.contentWindow.submitform('apply');},'$saveclose':function(){iframe.contentWindow.submitform('save');}});} var src=o.src,data={};if($.type(o.options)=='string'){data=$.parseJSON(o.options.replace(/'/g,'"'));}else{data=o.options;} data=data||{};var settings={bgiframe:true,width:640,height:480,modal:o.modal||false,buttons:buttons,resizable:true,open:function(){_fixDialog(div,settings);$(loader).addClass('loader').appendTo(div);$(iframe).css({width:'100%',height:'100%'}).attr({src:src,scrolling:'auto',frameBorder:'no'}).appendTo(div).load(function(){$(loader).hide();});$('button').each(function(){var h=this.innerHTML;h=h.replace(/\$([a-z]+)/,function(a,b){return self.options.labels[b];});this.innerHTML=h;}).button();}};if(o.type=='confirm'||o.type=='alert'){var text=o.text||'';var title=o.title||(o.type=='alert'?self.options.labels.alert:'');$.extend(settings,{width:300,height:'auto',resizable:false,dialogClass:'ui-jce',buttons:{'$ok':function(){if(src){if(/function\([^\)]*\)\{/.test(src)){$.globalEval(src);}else{document.location.href=src;}} $(this).dialog("close");}},open:function(){_fixDialog(div,settings);$(div).attr('id','dialog-confirm').append(text);$('button').each(function(){var h=this.innerHTML;h=h.replace(/\$([a-z]+)/,function(a,b){return self.options.labels[b];});this.innerHTML=h;}).addClass('ui-state-default ui-corner-all');},close:function(){$(this).dialog('destroy');}});if(o.type=='confirm'){$.extend(settings.buttons,{'$cancel':function(){$(this).dialog("close");}});}} if(data.id){$(div).attr('id',data.id);} $(div).css('overflow','hidden').attr('title',title).dialog($.extend(settings,data));},closeDialog:function(el){$(el).dialog("close").remove();},_passwordWidget:function(el){var span=document.createElement('span');$(span).addClass('widget-password locked').insertAfter(el).click(function(){el=$(this).siblings('input[type="password"]');if($(this).hasClass('locked')){var input=document.createElement('input');$(el).hide();$(input).attr({type:'text',size:$(el).attr('size'),value:$(el).val(),'class':$(el).attr('class')}).insertAfter(el).change(function(){$(el).val(this.value);});}else{var n=$(this).siblings('input[type="text"]');var v=$(n).val();$(n).remove();$(el).val(v).show();} $(this).toggleClass('locked');});},_formWidgets:function(){var self=this;$('input[type="password"]').each(function(){self._passwordWidget(this);});$('input[placeholder]:not(:file), textarea[placeholder]').placeholder();$(':input[pattern]').pattern();$(':input[max]').max();$(':input[min]').min();},_setDependants:function(){$('[data-parent]').each(function(){var el=this,data=$(this).data('parent');$(this).parent().hide();var s=/([\w\.]+)\[([\w,]+)\]/.exec(data);if(s){var k=s[1],v=s[2].split(',');$('#params'+k.replace(/[^\w]+/g,'')).change(function(){var state=$.inArray(this.value,v)!=-1;if(state){$(el).parent().show();}else{$(el).parent().hide();} $(el).trigger('visibility:toggle',state);}).on('visibility:toggle',function(e,state){if(state){$(el).parent().show();}else{$(el).parent().hide();}}).change();}});}};})(jQuery);var $jce=jQuery.jce;administrator/components/com_jce/media/js/legend.js100644 0 0 2712 12000772103 20132 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.jce.Legend={init:function(){var $p=$('span.profileLayoutContainer',parent.window.document.getElementById('profileLayoutTable'));$('tr','#jce').hover(function(){$('span[data-name="'+$(this).attr('title')+'"]',$p).addClass('focus');},function(){$('span[data-name="'+$(this).attr('title')+'"]',$p).removeClass('focus');});if(!$.support.leadingWhitespace){$('.mceSplitButton .mceIcon').each(function(){$('').insertAfter(this);});}else{$('#jce').addClass('multiplebg');}}};})(jQuery);administrator/components/com_jce/media/js/parameter.js100644 0 0 2620 12000772103 20652 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.jce.Parameter={add:function(element,classname){$(document).ready(function($){var div='div.'+classname;$(div,$(element).parent()).hide();$(div+'[data-type="'+$(element).val()+'"]',$(element).parent()).show().find(':input').removeAttr('disabled');$(element).change(function(){$(div,$(this).parent()).hide();$(div+'[data-type="'+$(this).val()+'"]',$(this).parent()).show().find(':input').removeAttr('disabled');});});}};})(jQuery);administrator/components/com_jce/media/js/preferences.js100644 0 0 2415 12000772103 21175 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.jce.Preferences={init:function(){$('#tabs').tabs();$('#access-accordian').accordion({collapsible:true});$('.hasTip').removeClass('hasTip');},close:function(){this.init();window.setTimeout(function(){window.parent.document.location.href="index.php?option=com_jce&view=cpanel";},1000);}};})(jQuery);administrator/components/com_jce/media/js/profiles.js100644 0 0 20426 12000772103 20541 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){if(typeof Joomla==='undefined'){Joomla={};} Joomla.submitbutton=submitbutton=function(button){if(button=="cancelEdit"){try{Joomla.submitform(button);}catch(e){submitform(button);} return;} if($jce.Profiles.validate()){$jce.Profiles.onSubmit();try{Joomla.submitform(button);}catch(e){submitform(button);}}};$.jce.Profiles={options:{},init:function(options){var self=this;$.extend(true,this.options,options);$('#tabs').tabs();$('input.checkbox-list-toggle-all').click(function(){$('input',this.parentNode.parentNode).prop('checked',this.checked);});$('input[name="components-select"]').click(function(){$('input[type="checkbox"]','#components').prop('disabled',(this.value=='all')).filter(':checked').prop('checked',false);});$('a#users-add').button({icons:{primary:'icon-add'}});$('a#users-remove').button({icons:{primary:'icon-remove'}}).click(function(e){e.preventDefault();$('select#users').children(':selected').remove();return false;});$('a#layout-legend').button({icons:{primary:'icon-legend'}});$("select.editable, select.combobox").combobox(options.combobox);$("#tabs-editor").tabs().addClass('ui-tabs-vertical ui-helper-clearfix');$("#tabs-plugins").tabs({selected:-1}).addClass('ui-tabs-vertical ui-helper-clearfix');var dir=$('body').css('direction')=='rtl'?'right':'left';$("#tabs-editor ul.ui-tabs-nav > li, #tabs-plugins ul.ui-tabs-nav > li").removeClass('ui-corner-top').addClass('ui-corner-'+dir);$("#tabs-plugins").tabs('select',$('ul.ui-tabs-nav > li.ui-state-default:not(.ui-state-disabled):first','#tabs-plugins').index());$('input.color').colorpicker(options.colorpicker);$('select.extensions, input.extensions, textarea.extensions').extensionmapper(options.extensions);this.createLayout();$('select.checklist, input.checklist').checkList();$('input.autocomplete').each(function(){var el=this,v=$(el).attr('placeholder')||'';$(el).removeAttr('placeholder');$(el).autocomplete({source:v.split(',')||[]});});$('#paramseditorwidth').change(function(){var v=$(this).val()||600,s=v+'px';if(/%/.test(v)){s=v,v=600;}else{v=parseInt(v),s=v+'px';} $('span.widthMarker span','#profileLayoutTable').html(s);$('#editor_container').width(v);$('span.widthMarker, #statusbar_container span.mceStatusbar').width(v);});$('#paramseditorheight').change(function(){var v=$(this).val()||'auto';if(/%/.test(v)){v='auto';}else{if($.type(v)=='number'){v=parseInt(v);}}});$('#paramseditortoolbar_theme').change(function(){var v=$(this).val();if(v.indexOf('.')!=-1){v=v.split('.');var s=v[0]+'Skin';var c=v[1];v=s+' '+s+c.charAt(0).toUpperCase()+c.substring(1);}else{v+='Skin';} $('span.profileLayoutContainer').each(function(){var cls=this.className;cls=cls.replace(/([a-z0-9]+)Skin([a-z0-9]*)/gi,'');this.className=$.trim(cls);}).addClass(v);});$('#paramseditortoolbar_align').change(function(){var v=$(this).val();$('ul.sortableList','#toolbar_container').removeClass('mceLeft mceCenter mceRight').addClass('mce'+v.charAt(0).toUpperCase()+v.substring(1));self._fixLayout();}).change();$('#paramseditorpath').change(function(){$('span.mceStatusbar span.mcePathLabel').toggle($(this).val()==1);}).change();$('ul#profileAdditionalFeatures input:checkbox').click(function(){self.setPlugins();});$('#paramseditortoolbar_location').change(function(){var $after=$('#editor_container');if($(this).val()=='top'){$after=$('span.widthMarker');} $('#toolbar_container').insertAfter($after);}).change();$('#paramseditorstatusbar_location').change(function(){var v=$(this).val();$('#statusbar_container').show();if(v=='none'){$('#statusbar_container').hide();} var $after=$('#editor_container');if(v=='top'){$after=$('span.widthMarker');if($('#paramseditortoolbar_location').val()=='top'){$after=$('#toolbar_container');}} $('#statusbar_container').insertAfter($after);}).change();$('#paramseditorresizing').change(function(){var v=$(this).val();$('a.mceResize','#statusbar_container').toggle(v==1);}).change();$('#paramseditortoggle').change(function(){var v=$(this).val();$('#editor_toggle').toggle(v==1);}).change();$('#paramseditortoggle_label').on('change keyup',function(){if(this.value){$('#editor_toggle').text(this.value);}});},validate:function(){var required=[];$(':input.required').each(function(){if($(this).val()===''){required.push('
    • '+$('label[for="'+this.id+'"]').html()+'
    • ');}});if(required.length){var msg='

      '+$jce.options.labels.required+'

      ';msg+='
        ';msg+=required.join('');msg+='
      ';$jce.createDialog({type:'alert',text:msg,modal:true});return false;} return true;},onSubmit:function(){$('option','#users').prop('selected',true);$('div#tabs-editor, div#tabs-plugins').find(':input[name]').each(function(){if($(this).hasClass('placeholder')){$(this).attr('disabled','disabled');}});},_fixLayout:function(){$('span.mceButton, span.mceSplitButton').removeClass('mceStart mceEnd');$('span.mceListBox').parent('span.sortableRowItem').prev('span.sortableRowItem').children('span.mceButton:last, span.mceSplitButton:last').addClass('mceEnd');$('span.mceListBox').parent('span.sortableRowItem').next('span.sortableRowItem').children('span.mceButton:first, span.mceSplitButton:first').addClass('mceStart');},createLayout:function(){var self=this;$("ul.sortableList").sortable({connectWith:'ul.sortableList',axis:'y',update:function(event,ui){self.setRows();self.setPlugins();},placeholder:'sortableListItem ui-state-highlight'}).disableSelection();$('span.sortableOption').hover(function(){$(this).append('');},function(){$(this).empty();}).click(function(){var $parent=$(this).parent();var $target=$('ul.sortableList','#profileLayoutTable').not($parent.parent());$parent.hide().appendTo($target).show('slow');$(this).empty();self.setRows();self.setPlugins();});$('div.sortableRow').sortable({connectWith:'div.sortableRow',tolerance:'pointer',update:function(event,ui){self.setRows();self.setPlugins();self._fixLayout();},start:function(event,ui){$(ui.placeholder).width($(ui.item).width());},placeholder:'sortableRowItem ui-state-highlight'}).disableSelection();if(!$.support.leadingWhitespace){$('.mceSplitButton .mceIcon').not('.mceIconLayer').each(function(){$('').insertAfter(this);});}else{$('#jce').addClass('multiplebg');} this._fixLayout();},setRows:function(){var rows=[];$('div.sortableRow:has(span)','#toolbar_container').each(function(){rows.push($.map($('span.sortableRowItem',$(this)),function(el){return $(el).data('name');}).join(','));});$('input[name="rows"]').val(rows.join(';'));},setLayout:function(){var $spans=$('span.profileLayoutContainerCurrent > span').not('span.widthMarker');$.each(['toolbar','editor','statusbar'],function(){$('#paramseditor'+this+'_location').val($spans.index($('#'+this+'_container')));});},setPlugins:function(){var self=this,plugins=[];$('div.sortableRow span.plugin','#toolbar_container').each(function(){plugins.push($(this).data('name'));});$('ul#profileAdditionalFeatures input:checkbox:checked').each(function(){plugins.push($(this).val());});$('input[name="plugins"]').val(plugins.join(','));this.setParams(plugins);},setParams:function(plugins){var $tabs=$('div#tabs-plugins');$('div.ui-tabs-panel','div#tabs-plugins').each(function(i){var name=$(this).data('name');var s=$.inArray(name,plugins)!=-1;$(':input[name]',$(this)).prop('disabled',!s);if(!s){if($tabs.tabs('option','selected')==i){var n=0,x=$tabs.tabs('option','disabled');while(i==n){n++;if($.inArray(n,x)!=-1){n++;}} $tabs.tabs('select',n);} $tabs.tabs('disable',i);}else{$tabs.tabs('enable',i);}});}};})(jQuery);administrator/components/com_jce/media/js/update.js100644 0 0 15262 12000772103 20202 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.jce.Update={updates:{},options:{language:{'check':'Check for Updates','install':'Install Updates','installed':'Installed','no_updates':'No Updates Available','high':'High','medium':'Medium','low':'Low','full':'Full Install','patch':'Patch','auth_failed':'Authorisation Failed','install_failed':'Install Failed','update_info':'Update Information','install_info':'Install Information','check_updates':'Checking for Updates...'}},init:function(options){var t=this;$.extend(this.options,options);$('button#update-button').button({icons:{primary:'icon-update'}}).click(function(){t.execute(this);});this.check($('button#update-button'));},execute:function(el){if($(el).hasClass('check')){this.check(el);} if($(el).hasClass('install')){this.download(el);}},check:function(btn){var t=this;$('button.download').remove();$('button.install').remove();var list=$('table#updates-list tbody');var info=$('div#updates-info');$(list).html(''+this.options.language['check_updates']+'');$(info).empty();$(btn).addClass('loading').button('disable');var priority={1:''+this.options.language['high']+'',2:''+this.options.language['medium']+'',3:''+this.options.language['low']+''};$.post("index.php?option=com_jce&view=updates&task=update&step=check",{},function(r){$(btn).removeClass('loading');$(btn).button('enable');$(list).empty();if(r&&r.length){$(btn).clone().button({icons:{primary:'icon-install'},disabled:true,label:t.options.language.install}).click(function(){t.execute(this);}).insertAfter(btn).attr({'id':'install-button','disabled':'disabled'}).removeClass('check').addClass('install');$.each(r,function(n,s){$(list).append(''+s.title+''+t.options.language[s.type]+''+s.version+''+priority[s.priority]+'');var el=$('span[data-uid='+s.id+']');if(s.auth){if(parseInt(s.forced)==1||s.priority==1){$(el).addClass('checked').addClass('disabled');$('button#install-button').button('enable');if(s.negates){$('span[data-uid='+s.negates+']').removeClass('checked').addClass('disabled');}} if(parseInt(s.forced)==1){$(el).addClass('disabled');} if(s.required){$('span[data-uid='+s.required+']').addClass('checked');} $(el).click(function(){if($(this).hasClass('disabled')||$(this).hasClass('error')){return;} if($(this).hasClass('checked')){$(this).removeClass('checked');}else{$(this).addClass('checked');} if(s.negates){if($(this).hasClass('checked')){$('span[data-uid='+s.negates+']').removeClass('checked').addClass('disabled');}else{$('span[data-uid='+s.negates+']').removeClass('disabled');}} if($('span.checkbox.checked',$(list)).length){$('button#install-button').attr('disabled','').button('enable');}else{$('button#install-button').attr('disabled','disabled').button('disable');}});}else{$(el).addClass('disabled').addClass('alert');$(list).append(''+s.title+' : '+t.options.language['auth_failed']+'');} $(info).append('

      '+s.title+'

      '+s.text+'
      ');$('div#update_info_'+s.id).hide();if(n==0){$('div#update_info_'+s.id).fadeIn();$(el).parents('tr').addClass('selected');} $(el).parents('tr').click(function(){$('tr.selected',$(list)).removeClass('selected');$(this).addClass('selected');$(info).children('div.update_info').hide();$('div#update_info_'+s.id).fadeIn();});});$(list).find('tbody tr:odd').addClass('odd');}else{$(list).html(''+t.options.language['no_updates']+'');}},'json');},download:function(btn){var t=this,n=1;var s=$('table tbody span.checkbox.checked');$(s).addClass('disabled');$(btn).button('disable');$('button#update-button').button('disable');$.extend(t.updates,{'joomla':[],'jce':[]});$.each(s,function(){var el=this,uid=$(this).data('uid');$(el).removeClass('error').addClass('loader');$.post("index.php?option=com_jce&view=updates&task=update&step=download",{'id':uid},function(r){if(r&&r.error){$(el).removeClass('loader disabled').addClass('error');$(''+r.error+'').insertAfter($(el).parents('tbody tr'));}else{if(r.file){$(el).addClass('downloaded');$.extend(r,{'id':uid});t.updates[r.installer].push(r);}} if(n==(s.length)){t.install(btn);} n++;},'json');});},install:function(btn){var t=this,n=0;var s=$('table tbody span.checkbox.checked.downloaded');function __run(){var updates=t.updates['joomla'].length?t.updates['joomla']:t.updates['jce'];if(updates.length){var file=updates[0],id=file.id,el=$('span[data-uid='+id+']');if($(el).hasClass('downloaded')){$.post("index.php?option=com_jce&view=updates&task=update&step=install",file,function(r){$(el).removeClass('loader');if(r&&r.error){$(el).addClass('error').removeClass('check');$(''+r.error+'').insertAfter($(el).parents('tr'));}else{$(el).addClass('tick').removeClass('check');$('div#update_info_'+id,'').append('

      '+t.options.language['install_info']+'

      '+r.text+'
      ');$(el).parents('tr').find('span.priority').removeClass('high medium low').addClass('installed').html(t.options.language['installed']);} updates.splice(0,1);n++;if(n');var $buttoncontainer=$('').addClass('upload_button_container').insertBefore(this.element).append(this.element).hover(function(){$button.addClass('ui-state-hover');},function(){$button.removeClass('ui-state-hover');});var $inputcontainer=$('').addClass('upload_input_container').insertBefore($buttoncontainer);var $input=$('').attr({'type':'text','name':$(this.element).attr('name')+'_input','placeholder':$(this.element).attr('placeholder')}).addClass('ui-widget-content upload_text ui-corner-all').css({'width':o.width}).appendTo($inputcontainer);if(o.readonly){$input.prop('readonly','readonly').appendTo($buttoncontainer);} $('').addClass('upload_clear ui-icon ui-icon-circle-close').css('opacity',0.15).appendTo($inputcontainer).click(function(){$input.val('').focus();$(self.element).val('');});$button.html(o.labels.browse).button({icons:{primary:'browse'}}).click(function(e){e.preventDefault();});$(this.element).css({'width':'100%','height':'100%','font-size':'2em','opacity':0});$input.placeholder();$input.click(function(){if($(self.element).val()){$(this,self.element).val('');}});$button.insertBefore($(this.element));if(o.button){var btn=document.getElementById(o.button),submit=o.submit;$(btn).click(function(e){if($input.hasClass('placeholder')){$input.val('');} if(iframe){$form.attr('target',iframe.name);} if($(self.element).val()||$input.val()){$(this).addClass('ui-state-loading');$('input[name="task"]').val(o.task||'');$form.submit();} e.preventDefault();}).button({icons:{primary:'import'}});$buttoncontainer.append(btn);$('').css({'top':$button.css('margin-top'),'left':$button.css('margin-left'),'width':$button.outerWidth(),'height':$button.outerHeight()}).insertBefore(this.element).append(this.element);} if(!window.XMLHttpRequest){$(this.element).addClass('ie_upload_input_file');$input.addClass('ie_input_text');$button.addClass('ie_button');} $(this.element).change(function(){file=self.getFileName($(this).val());if(!new RegExp(re).test(file)){alert(o.labels.alert);$(this).val('');}else{$input.val(file).addClass('upload_file').removeClass('placeholder');}});},createIFrame:function(){var o=this.options;var iframe=document.getElementById('upload_iframe');if(!iframe){iframe=document.createElement('iframe');var $form=$('form[name="adminForm"]');$(iframe).attr({'src':'javascript:""','name':'upload_iframe','id':'upload_iframe'}).hide().load(function(e){var n=e.target,el;try{el=n.contentWindow.document||n.contentDocument||window.frames[n.id].document;}catch(ex){alert("UPLOAD SECURITY ERROR");return;} if(el.location.href=='about:blank'){return;} var result=el.body.innerHTML||el.documentElement.innerText||el.documentElement.textContent;if(result!=''){$form.removeAttr('target');if(!document.getElementById(o.report)){$('#jce').append('
      ');} $('div#'+o.report,'#jce').hide().html(result).fadeIn();} if(o.button){var btn=document.getElementById(o.button);$(btn).removeClass('loading');}}).appendTo($form);if(!$.support.cssFloat){window.frames['upload_iframe'].name='upload_iframe';} $('').attr({'type':'hidden','name':'method'}).val('iframe').appendTo($form);} return iframe;},getFileName:function(file){file=file.replace(/\\/g,'/');return file.substring(file.lastIndexOf('/')+1);},destroy:function(){$.Widget.prototype.destroy.apply(this,arguments);}});})(jQuery);administrator/components/com_jce/media/js/users.js100644 0 0 2647 12000772103 20044 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.jce.Users={select:function(){var u=[],v,s,o,h;s=window.parent.document.getElementById('users').options;$('input:checkbox:checked').each(function(){v=$(this).val();if(u=document.getElementById('username_'+v)){h=$.trim(u.innerHTML);if($.jce.Users.check(s,v)){return;} o=new Option(h,v);s[s.length]=o;}});},check:function(s,v){var a=[];$.each(s,function(i,n){a.push(n.value);});return a.indexOf(v)!=-1;}};window.selectUsers=$.jce.Users.select;})(jQuery);administrator/components/com_jce/models/commands.xml100644 0 0 15231 12000772076 20502 0ustar 0 0 help WF_HELP_TITLE WF_HELP_DESC help 0 1 1 WF_UNDO_TITLE WF_UNDO_DESC undo 1 undo 1 0 WF_REDO_TITLE WF_REDO_DESC redo 1 redo 1 0 WF_BOLD_TITLE WF_BOLD_DESC bold 1 bold 1 0 WF_ITALIC_TITLE WF_ITALIC_DESC italic 1 italic 1 0 WF_UNDERLINE_TITLE WF_UNDERLINE_DESC underline 1 underline 1 0 WF_FONTSELECT_TITLE WF_FONTSELECT_DESC fontselect 1 fontselect 2 0 WF_FONTSIZESELECT_TITLE WF_FONTSIZESELECT_DESC fontsizeselect 1 fontsizeselect 2 0 WF_STYLESELECT_TITLE WF_STYLESELECT_DESC styleselect 1 styleselect 1 0 WF_STRIKETHROUGH_TITLE WF_STRIKETHROUGH_DESC strikethrough 1 strikethrough 1 0 WF_JUSTIFYFULL_TITLE WF_JUSTIFYFULL_DESC justifyfull 1 justifyfull 1 0 WF_JUSTIFYCENTER_TITLE WF_JUSTIFYCENTER_DESC justifycenter 1 justifycenter 1 0 WF_JUSTIFYLEFT_TITLE WF_JUSTIFYLEFT_DESC justifyleft 1 justifyleft 1 0 WF_JUSTIFYRIGHT_TITLE WF_JUSTIFYRIGHT_DESC justifyright 1 justifyright 1 0 WF_FORMATSELECT_TITLE WF_FORMATSELECT_DESC formatselect 1 formatselect 1 0 WF_NEWDOCUMENT_TITLE WF_NEWDOCUMENT_DESC newdocument 1 newdocument 1 0 WF_FORECOLOR_TITLE WF_FORECOLOR_DESC forecolor 1 forecolor 2 0 WF_BACKCOLOR_TITLE WF_BACKCOLOR_DESC backcolor 1 backcolor 2 0 WF_UNLINK_TITLE WF_UNLINK_DESC unlink 1 unlink 4 0 WF_INDENT_TITLE WF_INDENT_DESC indent 1 indent 2 0 WF_OUTDENT_TITLE WF_OUTDENT_DESC outdent 1 outdent 2 0 WF_BLOCKQUOTE_TITLE WF_BLOCKQUOTE_DESC blockquote 1 blockquote 1 0 WF_NUMLIST_TITLE WF_NUMLIST_DESC numlist 1 numlist 2 0 WF_BULLIST_TITLE WF_BULLIST_DESC bullist 1 bullist 2 0 WF_CHARMAP_TITLE WF_CHARMAP_DESC charmap 1 charmap 2 0 WF_REMOVEFORMAT_TITLE WF_REMOVEFORMAT_DESC removeformat 1 removeformat 1 0 WF_HR_TITLE WF_HR_DESC hr 1 hr 3 0 WF_SUB_TITLE WF_SUB_DESC sub 1 sub 2 0 WF_SUP_TITLE WF_SUP_DESC sup 1 sup 2 0 WF_VISUALAID_TITLE WF_VISUALAID_DESC visualaid 1 visualaid 4 0 administrator/components/com_jce/models/config.php100644 0 0 1315 12000772076 20113 0ustar 0 0 administrator/components/com_jce/models/cpanel.php100644 0 0 6015 12000772076 20112 0ustar 0 0
    • GNU General Public License, version 2'; } function getFeeds() { $app = JFactory::getApplication(); $params = JComponentHelper::getParams('com_jce'); $limit = $params->get('feed_limit', 2); $feeds = array(); $options = array( 'rssUrl' => 'http://www.joomlacontenteditor.net/news/feed/rss/latest-news?format=feed', 'cache_time' => $params->get('feed_cachetime', 86400) ); // use this directly instead of JFactory::getXMLParserto avoid the feed data error jimport('simplepie.simplepie'); if (!is_writable(JPATH_BASE . DS . 'cache')) { $options['cache_time'] = 0; } $rss = new SimplePie($options['rssUrl'], JPATH_BASE . DS . 'cache', isset($options['cache_time']) ? $options['cache_time'] : 0); $rss->force_feed(true); $rss->handle_content_type(); if ($rss->init()) { $count = $rss->get_item_quantity(); if ($count) { $count = ($count > $limit) ? $limit : $count; for ($i = 0; $i < $count; $i++) { $feed = new StdClass(); $item = $rss->get_item($i); $feed->link = $item->get_link(); $feed->title = $item->get_title(); $feed->description = $item->get_description(); $feeds[] = $feed; } } } return $feeds; } } ?>administrator/components/com_jce/models/cpanel.xml100644 0 0 447 12000772076 20106 0ustar 0 0 administrator/components/com_jce/models/editor.php100644 0 0 100621 12000772076 20174 0ustar 0 0 getEditorSettings(); // set default component id $component_id = 0; $component_id = isset($component->extension_id) ? $component->extension_id : ($component->id ? $component->id : 0); $version = $this->getVersion(); // settings array for jce, tinymce etc $init = array(); $profile = $wf->getProfile(); if ($profile) { // get jqueryui theme $dialog_theme = $wf->getParam('editor.dialog_theme', 'jce'); $dialog_theme_css = JFolder::files(WF_EDITOR_LIBRARIES . DS . 'css' . DS . 'jquery' . DS . $dialog_theme, '\.css$'); $settings = array_merge($settings, array('theme' => 'advanced', 'component_id' => $component_id, 'plugins' => $this->getPlugins()), $this->getToolbar($profile->rows)); // Theme and skins $theme = array( 'toolbar_location' => array('top', 'top', 'string'), 'toolbar_align' => array('left', 'left', 'string'), 'statusbar_location' => array('bottom', 'bottom', 'string'), 'path' => array(1, 1, 'boolean'), 'resizing' => array(1, 0, 'boolean'), 'resize_horizontal' => array(1, 1, 'boolean'), 'resizing_use_cookie' => array(1, 1, 'boolean') ); foreach ($theme as $k => $v) { $settings['theme_advanced_' . $k] = $wf->getParam('editor.' . $k, $v[0], $v[1], $v[2]); } if (!$wf->getParam('editor.use_cookies', 1)) { $settings['theme_advanced_resizing_use_cookie'] = false; } $settings['width'] = $wf->getParam('editor.width'); $settings['height'] = $wf->getParam('editor.height'); // 'Look & Feel' $settings['jquery_ui'] = JURI::root(true) . '/components/com_jce/editor/libraries/css/jquery/' . $dialog_theme . '/' . basename($dialog_theme_css[0]); $skin = explode('.', $wf->getParam('editor.toolbar_theme', 'default', 'default')); $settings['skin'] = $skin[0]; $settings['skin_variant'] = isset($skin[1]) ? $skin[1] : ''; $settings['body_class'] = $wf->getParam('editor.content_style_reset', $wf->getParam('editor.highcontrast', 0)) == 1 ? 'mceContentReset' : ''; $settings['body_id'] = $wf->getParam('editor.body_id', ''); $settings['content_css'] = $this->getStyleSheets(); // Editor Toggle $settings['toggle'] = $wf->getParam('editor.toggle', 1, 1); $settings['toggle_label'] = htmlspecialchars($wf->getParam('editor.toggle_label', '[Toggle Editor]', '[Toggle Editor]')); $settings['toggle_state'] = $wf->getParam('editor.toggle_state', 1, 1); }// end profile //Other - user specified $userParams = $wf->getParam('editor.custom_config', ''); $baseParams = array('mode', 'cleanup_callback', 'save_callback', 'file_browser_callback', 'urlconverter_callback', 'onpageload', 'oninit', 'editor_selector'); if ($userParams) { $userParams = explode(';', $userParams); foreach ($userParams as $userParam) { $keys = explode(':', $userParam); if (!in_array(trim($keys[0]), $baseParams)) { $settings[trim($keys[0])] = count($keys) > 1 ? trim($keys[1]) : ''; } } } // set compression states $compress = array('javascript' => intval($wf->getParam('editor.compress_javascript', 0)), 'css' => intval($wf->getParam('editor.compress_css', 0))); // create token $token = WFToken::getToken(); $query = array('component_id' => $component_id, 'version' => $version); $query[$token] = 1; // set compression if ($compress['javascript']) { $document->addScript(JURI::base(true) . '/index.php?option=com_jce&view=editor&layout=editor&task=pack&component_id=' . $component_id . '&' . $token . '=1&version=' . $version); } else { $document->addScript($this->getURL(true) . '/tiny_mce/tiny_mce.js?version=' . $version); // Editor $document->addScript($this->getURL(true) . '/libraries/js/editor.js?version=' . $version); // languages TODO //$document->addScript(JURI::base(true) . '/index.php?option=com_jce&view=editor&layout=editor&task=pack&type=language&component_id=' . $component_id . '&' . $token . '=1&version=' . $version); } // set compression if ($compress['css']) { $document->addStyleSheet(JURI::base(true) . '/index.php?option=com_jce&view=editor&layout=editor&task=pack&type=css&component_id=' . $component_id . '&' . $token . '=1&version=' . $version); } else { // CSS $document->addStyleSheet($this->getURL(true) . '/libraries/css/editor.css?version=' . $version); // get plugin styles $this->getPluginStyles($settings); // get font-face and google fonts $fonts = trim(self::getCustomFonts($this->getStyleSheets(true))); if (!empty($fonts)) { $document->addStyleDeclaration($fonts); } } // Get all optional plugin configuration options $this->getPluginConfig($settings); // pass compresison states to settings $settings['compress'] = json_encode($compress); $output = ""; $i = 1; foreach ($settings as $k => $v) { // If the value is an array, implode! if (is_array($v)) { $v = ltrim(implode(',', $v), ','); } // Value must be set if ($v !== '') { // objects or arrays or functions or regular expression if (preg_match('/(\[[^\]*]\]|\{[^\}]*\}|function\([^\}]*\}|^#(.*)#$)/', $v)) { // replace hash delimiters with / for javascript regular expression $v = preg_replace('@^#(.*)#$@', '/$1/', $v); } // boolean else if (is_bool($v)) { $v = $v ? 'true' : 'false'; } // stringified booleans else if ($v == "true") { $v = 'true'; } else if ($v == "false") { $v = 'false'; } // anything that is not solely an integer else if (!is_numeric($v)) { if (strpos($v, '"') === 0) { $v = '"' . trim($v, '"') . '"'; } else { $v = '"' . str_replace('"', '\"', $v) . '"'; } } $output .= "\t\t\t" . $k . ": " . $v . ""; if ($i < count($settings)) { $output .= ",\n"; } } // Must have 3 rows, even if 2 are blank! if (preg_match('/theme_advanced_buttons([1-3])/', $k) && $v == '') { $output .= "\t\t\t" . $k . ": \"\""; if ($i < count($settings)) { $output .= ",\n"; } } $i++; } $tinymce = "{\n"; $tinymce .= preg_replace('/,?\n?$/', '', $output) . " }"; $init[] = $tinymce; $document->addScriptDeclaration("\t\ttry{WFEditor.init(" . implode(',', $init) . ");}catch(e){}"); if ($profile) { if ($wf->getParam('editor.callback_file')) { $document->addScript(JURI::root(true) . '/' . $wf->getParam('editor.callback_file')); } // add callback file if exists if (is_file(JPATH_SITE . DS . 'media' . DS . 'jce' . DS . 'js' . DS . 'editor.js')) { $document->addScript(JURI::root(true) . '/media/jce/js/editor.js'); } // add custom editor.css if exists if (is_file(JPATH_SITE . DS . 'media' . DS . 'jce' . DS . 'css' . DS . 'editor.css')) { $document->addStyleSheet(JURI::root(true) . '/media/jce/css/editor.css'); } } } /** * Get the current version * @return Version */ function getVersion() { // Get Component xml $xml = JApplicationHelper::parseXMLInstallFile(WF_ADMINISTRATOR . DS . 'jce.xml'); // return cleaned version number or date $version = preg_replace('/[^0-9a-z]/i', '', $xml['version']); if (!$version) { return date('Y-m-d', strtotime('today')); } return $version; } /** * Get default settings array * @return array */ public function getEditorSettings() { wfimport('editor.libraries.classes.token'); $wf = WFEditor::getInstance(); $language = JFactory::getLanguage(); $settings = array('token' => WFToken::getToken(), 'base_url' => JURI::root(), 'language' => $wf->getLanguage(), //'language_load' => false, 'directionality' => $language->isRTL() ? 'rtl' : 'ltr', 'theme' => 'none', 'plugins' => ''); return $settings; } /** * Return a list of icons for each JCE editor row * * @access public * @param string The number of rows * @return The row array */ private function getToolbar($toolbar) { $model = JModel::getInstance('plugins', 'WFModel'); $db = JFactory::getDBO(); $rows = array('theme_advanced_buttons1' => '', 'theme_advanced_buttons2' => '', 'theme_advanced_buttons3' => ''); $plugins = $model->getPlugins(); $commands = $model->getCommands(); $icons = array_merge($commands, $plugins); $lists = explode(';', $toolbar); $x = 0; for ($i = 1; $i <= count($lists); $i++) { $items = array(); foreach (explode(',', $lists[$x]) as $item) { if ($item == 'spacer') { $items[] = '|'; } else { if (isset($icons[$item])) { $items[] = $icons[$item]->icon; } } } if (!empty($items)) { $rows['theme_advanced_buttons' . $i] = implode(',', $items); } $x++; } return $rows; } /** * Return a list of published JCE plugins * * @access public * @return string list */ private function getPlugins() { $db = JFactory::getDBO(); $wf = WFEditor::getInstance(); jimport('joomla.filesystem.file'); $plugins = array(); $profile = $wf->getProfile(); if (is_object($profile)) { $plugins = explode(',', $profile->plugins); $plugins = array_unique(array_merge(array('advlist', 'autolink', 'cleanup', 'core', 'code', 'dragupload', 'format', 'lists', 'wordcount'), $plugins)); $compress = $wf->getParam('editor.compress_javascript', 0); foreach ($plugins as $plugin) { $path = WF_EDITOR_PLUGINS . DS . $plugin; $language = $wf->getLanguage(); if (!JFolder::exists($path) || !JFile::exists($path . DS . 'editor_plugin.js')) { $this->removeKeys($plugins, $plugin); } if (!$compress) { if ($language != 'en') { // new language file $new = $path . DS . 'langs' . DS . $language . '.js'; // existing english file $en = $path . DS . 'langs' . DS . 'en.js'; if (JFile::exists($en) && !JFile::exists($new)) { // remove plugin and throw error $this->removeKeys($plugins, $plugin); JError::raiseNotice('SOME_ERROR_CODE', sprintf(WFText::_('PLUGIN NOT LOADED : LANGUAGE FILE MISSING'), 'components/com_jce/editor/tiny_mce/plugins/' . $plugin . '/langs/' . $language . '.js') . ' - ' . ucfirst($plugin)); } } } } } return $plugins; } /** * Get all loaded plugins config options * * @access public * @param array $settings passed by reference */ function getPluginConfig(&$settings) { $plugins = $settings['plugins']; if ($plugins && is_array($plugins)) { foreach ($plugins as $plugin) { $file = WF_EDITOR_PLUGINS . DS . $plugin . DS . 'classes' . DS . 'config.php'; if (file_exists($file)) { require_once ($file); // Create class name $classname = 'WF' . ucfirst($plugin) . 'PluginConfig'; // Check class and method if (class_exists($classname) && method_exists(new $classname, 'getConfig')) { call_user_func_array(array($classname, 'getConfig'), array(&$settings)); } } } } } /** * Get all loaded plugins styles * * @access public * @param array $settings passed by reference */ function getPluginStyles($settings) { $plugins = $settings['plugins']; if ($plugins && is_array($plugins)) { foreach ($plugins as $plugin) { $file = WF_EDITOR_PLUGINS . DS . $plugin . DS . 'classes' . DS . 'config.php'; if (file_exists($file)) { require_once ($file); // Create class name $classname = 'WF' . ucfirst($plugin) . 'PluginConfig'; // Check class and method if (class_exists($classname) && method_exists(new $classname, 'getStyles')) { call_user_func(array($classname, 'getStyles')); } } } } } /** * Remove keys from an array * * @return $array by reference * @param arrau $array Array to edit * @param array $keys Keys to remove */ function removeKeys(&$array, $keys) { if (!is_array($keys)) { $keys = array($keys); } $array = array_diff($array, $keys); } /** * Add keys to an array * * @return The string list with added key or the key * @param string The array * @param string The keys to add */ function addKeys(&$array, $keys) { if (!is_array($keys)) { $keys = array($keys); } $array = array_unique(array_merge($array, $keys)); } /** * Get a list of editor font families * * @return string font family list * @param string $add Font family to add * @param string $remove Font family to remove */ function getEditorFonts() { $wf = WFEditor::getInstance(); $add = explode(';', $wf->getParam('editor.theme_advanced_fonts_add', '')); $remove = preg_split('/[;,]+/', $wf->getParam('editor.theme_advanced_fonts_remove', '')); // Default font list $fonts = array('Andale Mono=andale mono,times', 'Arial=arial,helvetica,sans-serif', 'Arial Black=arial black,avant garde', 'Book Antiqua=book antiqua,palatino', 'Comic Sans MS=comic sans ms,sans-serif', 'Courier New=courier new,courier', 'Georgia=georgia,palatino', 'Helvetica=helvetica', 'Impact=impact,chicago', 'Symbol=symbol', 'Tahoma=tahoma,arial,helvetica,sans-serif', 'Terminal=terminal,monaco', 'Times New Roman=times new roman,times', 'Trebuchet MS=trebuchet ms,geneva', 'Verdana=verdana,geneva', 'Webdings=webdings', 'Wingdings=wingdings,zapf dingbats'); if (count($remove)) { foreach ($fonts as $key => $value) { foreach ($remove as $gone) { if ($gone) { if (preg_match('/^' . $gone . '=/i', $value)) { // Remove family unset($fonts[$key]); } } } } } foreach ($add as $new) { // Add new font family if (preg_match('/([^\=]+)(\=)([^\=]+)/', trim($new)) && !in_array($new, $fonts)) { $fonts[] = $new; } } natcasesort($fonts); return implode(';', $fonts); } /** * Return the current site template name * * @access public */ function getSiteTemplates() { $db = JFactory::getDBO(); $app = JFactory::getApplication(); $id = 0; if ($app->isSite()) { $menus = JSite::getMenu(); $menu = $menus->getActive(); if ($menu) { $id = isset($menu->template_style_id) ? $menu->template_style_id : $menu->id; } } // Joomla! 1.5 if (WF_JOOMLA15) { $query = 'SELECT menuid as id, template' . ' FROM #__templates_menu' . ' WHERE client_id = 0'; $db->setQuery($query); $templates = $db->loadObjectList(); // Joomla! 1.6+ } else { $query = 'SELECT id, template' . ' FROM #__template_styles' . ' WHERE client_id = 0' . ' AND home = 1'; $db->setQuery($query); $templates = $db->loadObjectList(); } $assigned = array(); foreach ($templates as $template) { if ($id == $template->id) { array_unshift($assigned, $template->template); } else { $assigned[] = $template->template; } } // return templates return $assigned; } function getStyleSheets($absolute = false) { jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $wf = WFEditor::getInstance(); // use system template as default $url = 'templates/system/css'; // use 'system' as default $template = 'system'; // use system editor.css as default $styles = 'templates/system/css/editor.css'; // stylesheets $stylesheets = array(); // files $files = array(); // get templates $templates = $this->getSiteTemplates(); foreach ($templates as $item) { // Template CSS $path = JPATH_SITE . DS . 'templates' . DS . $item; // get the first path that exists if (is_dir($path)) { // assign template $template = $item; // assign url $url = "templates/" . $template . "/css"; break; } } $global = intval($wf->getParam('editor.content_css', 1)); $profile = intval($wf->getParam('editor.profile_content_css', 2)); switch ($global) { // Custom template css files case 0 : // use getParam so result is cleaned $global_custom = $wf->getParam('editor.content_css_custom', ''); // Replace $template variable with site template name $global_custom = str_replace('$template', $template, $global_custom); // explode to array $files = explode(',', $global_custom); break; // Template css (template.css or template_css.css) case 1 : // Joomla! 1.5 standard $file = 'template.css'; $css = JFolder::files($path, '(base|core|template|template_css)\.css$', false, true); if (!empty($css)) { // use the first result $file = $css[0]; } // check for php version if (JFile::exists($file . '.php')) { $file = $file . '.php'; } $files[] = $url . '/' . basename($file); break; // Nothing, use system default case 2 : $files[] = 'templates/system/css/editor.css'; break; } switch ($profile) { // add to global config value case 0 : case 1 : $profile_custom = $wf->getParam('editor.profile_content_css_custom', ''); // Replace $template variable with site template name (defaults to 'system') $profile_custom = str_replace('$template', $template, $profile_custom); // explode to array $profile_custom = explode(',', $profile_custom); // add to existing list if ($profile == 0) { $files = array_merge($files, $profile_custom); // overwrite global config value } else { $files = $profile_custom; } break; // inherit global config value case 2 : break; } // remove duplicates $files = array_unique($files); // get the root directory $root = $absolute ? JPATH_SITE : JURI::root(true); // check for existence of each file and make array of stylesheets foreach ($files as $file) { if ($file && JFile::exists(JPATH_SITE . DS . $file)) { $stylesheets[] = $root . '/' . $file; } } // remove duplicates $stylesheets = array_unique($stylesheets); // default editor stylesheet if (count($stylesheets)) { $styles = implode(',', $stylesheets); } return $styles; } /** * Import CSS from a file * @param $data Data from file * @param file File path where data comes from */ private static function importCss($data, $path) { if (preg_match_all('#@import url\([\'"]?([^\'"\)]+)[\'"]?\);#i', $data, $matches)) { $fonts = array(); foreach ($matches[1] as $match) { if (strpos($match, 'http') === false) { $fonts[] = self::importFontFace(realpath($path . DS . $match)); } if (strpos($match, '://fonts.googleapis.com') !== false) { array_unshift($fonts, '@import url(' . $match . ');'); } } return implode("\n", $fonts); } return ''; } private static function importFontFace($file) { jimport('joomla.filesystem.file'); $content = ''; if (is_file($file)) { $content .= @JFile::read($file); } if ($content) { // @import if (strpos($content, '@import') !== false) { return self::importCss($content, dirname($file)); } // @font-face if (strpos($content, '@font-face') !== false) { $font = ''; preg_match_all('#\@font-face\s*\{([^}]+)\}#', $content, $matches, PREG_SET_ORDER); if ($matches) { $url = str_replace(DS, '/', str_replace(JPATH_SITE, JURI::root(true), dirname($file))); if ($url) { $url .= '/'; } foreach ($matches as $match) { $font .= preg_replace('#url\(([\'"]?)#', 'url($1' . $url, $match[0]); } } return $font; } } return ''; } private static function getCustomFonts($files) { $fonts = array(); foreach ((array) $files as $file) { $font = self::importFontFace($file); if ($font) { if (strpos($font, '@import') !== false) { array_unshift($fonts, $font); } else { $fonts[] = $font; } } } if (!empty($fonts)) { return "/* @font-face and Google Font rules for JCE */" . "\n" . str_replace("\n\n", "\n", implode("\n", $fonts)); } return ''; } function getURL($relative = false) { if ($relative) { return JURI::root(true) . '/components/com_jce/editor'; } return JURI::root() . 'components/com_jce/editor'; } /** * Pack / compress editor files */ public function pack() { // check token WFToken::checkToken('GET') or die('RESTRICTED'); $wf = WFEditor::getInstance(); require_once (JPATH_COMPONENT_ADMINISTRATOR . DS . 'classes' . DS . 'packer.php'); $type = JRequest::getWord('type', 'javascript'); // javascript $packer = new WFPacker(array('type' => $type)); $themes = 'none'; $plugins = array(); $languages = $wf->getLanguage(); $suffix = JRequest::getWord('suffix', ''); $component_id = JRequest::getInt('component_id', 0); if ($wf->checkUser()) { $themes = 'advanced'; $plugins = $this->getPlugins(); } $languages = explode(',', $languages); $themes = explode(',', $themes); // toolbar theme $toolbar = explode('.', $wf->getParam('editor.toolbar_theme', 'default')); switch ($type) { case 'language' : $files = array(); // Add core languages foreach ($languages as $language) { $file = WF_EDITOR . DS . "tiny_mce/langs/" . $language . ".js"; if (!JFile::exists($file)) { $file = WF_EDITOR . DS . "tiny_mce/langs/en.js"; } $files[] = $file; } // Add themes foreach ($themes as $theme) { foreach ($languages as $language) { $file = WF_EDITOR . DS . "tiny_mce/themes/" . $theme . "/langs/" . $language . ".js"; if (!JFile::exists($file)) { $file = WF_EDITOR . DS . "tiny_mce/themes/" . $theme . "/langs/en.js"; } $files[] = $file; } } // Add plugins foreach ($plugins as $plugin) { foreach ($languages as $language) { $file = WF_EDITOR . DS . "tiny_mce/plugins/" . $plugin . "/langs/" . $language . ".js"; if (!JFile::exists($file)) { $file = WF_EDITOR . DS . "tiny_mce/plugins/" . $plugin . "/langs/en.js"; } if (JFile::exists($file)) { $files[] = $file; } } } // reset type $type = 'javascript'; break; case 'javascript' : $files = array(); // add core file $files[] = WF_EDITOR . DS . "tiny_mce/tiny_mce" . $suffix . ".js"; // Add core languages foreach ($languages as $language) { $file = WF_EDITOR . DS . "tiny_mce/langs/" . $language . ".js"; if (!JFile::exists($file)) { $file = WF_EDITOR . DS . "tiny_mce/langs/en.js"; } $files[] = $file; } // Add themes foreach ($themes as $theme) { $files[] = WF_EDITOR . DS . "tiny_mce/themes/" . $theme . "/editor_template" . $suffix . ".js"; foreach ($languages as $language) { $file = WF_EDITOR . DS . "tiny_mce/themes/" . $theme . "/langs/" . $language . ".js"; if (!JFile::exists($file)) { $file = WF_EDITOR . DS . "tiny_mce/themes/" . $theme . "/langs/en.js"; } $files[] = $file; } } // Add plugins foreach ($plugins as $plugin) { $files[] = WF_EDITOR . DS . "tiny_mce/plugins/" . $plugin . "/editor_plugin" . $suffix . ".js"; foreach ($languages as $language) { $file = WF_EDITOR . DS . "tiny_mce/plugins/" . $plugin . "/langs/" . $language . ".js"; if (!JFile::exists($file)) { $file = WF_EDITOR . DS . "tiny_mce/plugins/" . $plugin . "/langs/en.js"; } if (JFile::exists($file)) { $files[] = $file; } } } // add Editor file $files[] = WF_EDITOR . DS . 'libraries' . DS . 'js' . DS . 'editor.js'; break; case 'css' : $context = JRequest::getWord('context', 'editor'); if ($context == 'content') { $files = array(); $files[] = WF_EDITOR_THEMES . DS . $themes[0] . DS . 'skins' . DS . $toolbar[0] . DS . 'content.css'; // get template stylesheets $styles = explode(',', $this->getStyleSheets(true)); foreach ($styles as $style) { if (JFile::exists($style)) { $files[] = $style; } } // load content styles dor each plugin if they exist foreach ($plugins as $plugin) { $content = WF_EDITOR_PLUGINS . DS . $plugin . DS . 'css' . DS . 'content.css'; if (JFile::exists($content)) { $files[] = $content; } } } else { $files = array(); $files[] = WF_EDITOR_LIBRARIES . DS . 'css' . DS . 'editor.css'; $dialog = $wf->getParam('editor.dialog_theme', 'jce'); $files[] = WF_EDITOR_THEMES . DS . $themes[0] . DS . 'skins' . DS . $toolbar[0] . DS . 'ui.css'; if (isset($toolbar[1])) { $files[] = WF_EDITOR_THEMES . DS . $themes[0] . DS . 'skins' . DS . $toolbar[0] . DS . 'ui_' . $toolbar[1] . '.css'; } // get external styles from config class for each plugin foreach ($plugins as $plugin) { $class = WF_EDITOR_PLUGINS . DS . $plugin . DS . 'classes' . DS . 'config.php'; if (JFile::exists($class)) { require_once ($class); $classname = 'WF' . ucfirst($plugin) . 'PluginConfig'; if (class_exists($classname) && method_exists(new $classname, 'getStyles')) { $files = array_merge($files, (array) call_user_func(array($classname, 'getStyles'))); } } } $fonts = trim(self::getCustomFonts($this->getStyleSheets(true))); if (!empty($fonts)) { $packer->getContentEnd($fonts); } } break; } $packer->setFiles($files); $packer->pack(); } public function getToken($id) { return ''; } } ?>administrator/components/com_jce/models/help.php100644 0 0 7256 12000772076 17610 0ustar 0 0 getTag(); return substr($tag, 0, strpos($tag, '-')); } function getTopics($file) { $result = ''; if(file_exists($file)) { // load xml $xml = WFXMLElement::getXML($file); if($xml) { foreach($xml->help->children() as $topic) { $subtopics = $topic->subtopic; $class = count($subtopics) ? ' class="subtopics"' : ''; $key = $topic->attributes()->key; $title = $topic->attributes()->title; $file = $topic->attributes()->file; // if file attribute load file if($file) { $result .= $this->getTopics(WF_EDITOR . DS . $file); } else { $result .= '' . trim(WFText::_($title)) . ''; } if(count($subtopics)) { $result .= ''; } } } } return $result; } /** * Returns a formatted list of help topics * * @access public * @return String * @since 1.5 */ function renderTopics() { $section = JRequest::getWord('section', 'admin'); $category = JRequest::getWord('category', 'cpanel'); $document =JFactory::getDocument(); $language =JFactory::getLanguage(); $document->setTitle(WFText::_('WF_HELP') . ' : ' . WFText::_('WF_' . strtoupper($category) . '_TITLE')); $file = WF_EDITOR_PLUGINS . DS . $category . DS . $category . ".xml"; switch ($section) { case 'admin' : $file = JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce' . DS . 'models' . DS . $category . '.xml'; break; case 'editor' : $file = WF_EDITOR_PLUGINS . DS . $category . DS . $category . ".xml"; if(!is_file($file)) { $file = WF_EDITOR_LIBRARIES . DS . 'xml' . DS . 'help' . DS . 'editor.xml'; } else { $language->load('com_jce_' . $category, JPATH_SITE); } break; } $result = ''; $result .= '
      ' . WFText::_('WF_' . strtoupper($category) . '_TITLE') . '
      '; $result .= $this->getTopics($file); $result .= '
      '; return $result; } } ?>administrator/components/com_jce/models/help.xml100644 0 0 262 12000772076 17567 0ustar 0 0 administrator/components/com_jce/models/installer.php100644 0 0 27552 12000772076 20676 0ustar 0 0 setRedirect(JRoute::_('index.php?option=com_jce&client=' . $client, false)); } /** * Get a JCE installer adapter * @param string $name adapter name eg: plugin. * @return $adapter instance */ function getAdapter($name) { // get installer instance $installer = JInstaller::getInstance(); // Try to load the adapter object require_once(JPATH_COMPONENT . DS . 'adapters' . DS . strtolower($name) . '.php'); $class = 'WFInstaller' . ucfirst($name); if (!class_exists($class)) { return false; } $adapter = new $class($installer); $adapter->parent = $installer; return $adapter; } function install($package = null) { $mainframe = JFactory::getApplication(); if (!$package) { $package = $this->_getPackage(); } // Was the package unpacked? if (!$package) { $this->setState('message', 'WF_INSTALLER_NO_PACKAGE'); return false; } // Get an installer instance $installer = JInstaller::getInstance(); // Set Adapter $type = $package['type']; $adapter = $this->getAdapter($type); $installer->setAdapter($type, $adapter); // Install the package if (!$installer->install($package['dir'])) { $result = false; } else { $result = true; } $this->_result[] = array( 'name' => $installer->get('name'), 'type' => $type, 'version' => $installer->get('version'), 'result' => $result, 'message' => $installer->get('message'), 'extension.message' => $installer->get('extension.message') ); $this->setState('install.result', $this->_result); // Cleanup the install files if (!is_file($package['packagefile'])) { $config = JFactory::getConfig(); $package['packagefile'] = $config->getValue('config.tmp_path') . DS . $package['packagefile']; } if (is_file($package['packagefile'])) { JInstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']); } return $result; } function remove($id, $type) { $mainframe = JFactory::getApplication(); $installer = JInstaller::getInstance(); // Use Joomla! Installer class for related extensions if ($type == 'related') { $table = WF_JOOMLA15 ? 'plugin' : 'extension'; $row = JTable::getInstance($table); // get extension data not returned by uninstall method $row->load($id); // get manifest $manifest = WF_JOOMLA15 ? JPATH_PLUGINS . $row->folder . DS . $row->element . '.xml' : JPATH_PLUGINS . DS . $row->folder . DS . $row->element . DS . $row->element . '.xml'; if (file_exists($manifest)) { $xml = JApplicationHelper::parseXMLInstallFile($manifest); if ($xml) { $installer->set('name', $xml['name']); $installer->set('version', $xml['version']); } } $result = $installer->uninstall('plugin', $id); } else { // Set Adapter $adapter = $this->getAdapter($type); $installer->setAdapter($type, $adapter); $result = $installer->uninstall($type, $id); } $result = $result ? true : false; $this->_result[] = array( 'name' => $installer->get('name'), 'type' => $type, 'version' => $installer->get('version'), 'result' => $result ); $this->setState('install.result', $this->_result); return $result; } /** * Get the install package or folder * @return Array $package */ function _getPackage() { $config = JFactory::getConfig(); jimport('joomla.filesystem.file'); // set standard method $upload = true; $package = null; // Get the uploaded file information $file = JRequest::getVar('install', null, 'files', 'array'); // get the file path information $path = JRequest::getString('install_input'); if (!(bool) ini_get('file_uploads') || !is_array($file)) { $upload = false; // no path either! if (!$path) { JError::raiseWarning('SOME_ERROR_CODE', WFText::_('WARNINSTALLFILE')); return false; } } // Install failed if ((!$file['tmp_name'] && !$file['name']) || ($file['error'] || $file['size'] < 1)) { $upload = false; if (!$path) { JError::raiseWarning('SOME_ERROR_CODE', WFText::_('WF_INSTALLER_NO_FILE')); return false; } } // uploaded file if ($upload && $file['tmp_name'] && $file['name']) { $dest = $config->getValue('config.tmp_path') . DS . $file['name']; $src = $file['tmp_name']; // upload file JFile::upload($src, $dest); // path to file } else { $dest = JPath::clean($path); } // Unpack the package file if (preg_match('/\.(zip|tar|gz|gzip|tgz|tbz2|bz2|bzip2)/i', $dest)) { // Make sure that zlib is loaded so that the package can be unpacked if (!extension_loaded('zlib')) { JError::raiseWarning('SOME_ERROR_CODE', WFText::_('WARNINSTALLZLIB')); return false; } $package = JInstallerHelper::unpack($dest); // might be a directory } else { if (!is_dir($dest)) { JError::raiseWarning('SOME_ERROR_CODE', WFText::_('WF_INSTALLER_INVALID_SRC')); return false; } // Detect the package type $type = @JInstallerHelper::detectType($dest); $package = array( 'packagefile' => null, 'extractdir' => null, 'dir' => $dest, 'type' => $type ); } $package['manifest'] = null; // set install method JRequest::setVar('install_method', 'install'); return $package; } function getExtensions() { $db = JFactory::getDBO(); $model = JModel::getInstance('plugins', 'WFModel'); // get an array of all installed plugins in plugins folder $extensions = $model->getExtensions(); return $extensions; } function getPlugins() { $model = JModel::getInstance('plugins', 'WFModel'); // get an array of all installed plugins in plugins folder $plugins = $model->getPlugins(); $rows = array(); $language = JFactory::getLanguage(); foreach ($plugins as $plugin) { if ($plugin->core == 0) { $rows[] = $plugin; $language->load('com_jce_' . trim($plugin->name), JPATH_SITE); } } return $rows; } /** * Get additional plugins such as JCE MediaBox etc. * @return */ function getRelated() { // Get a database connector $db = JFactory::getDBO(); $params = JComponentHelper::getParams('com_jce'); // pre-defined array of other plugins $related = explode(',', $params->get('related_extensions', 'jcemediabox,jceutilities,mediaobject,wfmediabox')); $where = ''; if (WF_JOOMLA15) { $query = 'SELECT id, name, element, folder FROM #__plugins'; } else { $query = 'SELECT extension_id as id, name, element, folder FROM #__extensions'; $where .= ' AND type = ' . $db->Quote('plugin'); } $query .= ' WHERE element IN (' . preg_replace('/([a-z0-9-_\.]+)/i', "'$1'", implode(',', $related)) . ')' . $where . ' ORDER BY name'; $db->setQuery($query); $rows = $db->loadObjectList(); $language = JFactory::getLanguage(); $numRows = count($rows); for ($i = 0; $i < $numRows; $i++) { $row = $rows[$i]; // Get the plugin xml file $file = JPATH_PLUGINS . DS . $row->folder . DS . $row->element . ".xml"; if(is_file($file)) { $xml = WFXMLElement::getXML($file); if($xml) { $row->title = (string)$xml->name; $row->author = (string)$xml->author; $row->version = (string)$xml->version; $row->creationdate = (string)$xml->creationDate; $row->description = (string)$xml->description; $row->authorUrl = (string)$xml->authorUrl; } } $language->load('plg_' . trim($row->folder) . '_' . trim($row->element), JPATH_ADMINISTRATOR); $language->load('plg_' . trim($row->folder) . '_' . trim($row->element), JPATH_SITE); } return $rows; } function getLanguages() { // Get the site languages $base = JLanguage::getLanguagePath(JPATH_SITE); $dirs = JFolder::folders($base); for ($i = 0; $i < count($dirs); $i++) { $lang = new stdClass(); $lang->folder = $dirs[$i]; $lang->baseDir = $base; $languages[] = $lang; } $rows = array(); foreach ($languages as $language) { $files = JFolder::files($language->baseDir . DS . $language->folder, '\.(com_jce)\.xml$'); foreach ($files as $file) { $data = JApplicationHelper::parseXMLInstallFile($language->baseDir . DS . $language->folder . DS . $file); $row = new StdClass(); $row->language = $language->folder; if ($row->language == 'en-GB') { $row->cbd = 'disabled="disabled"'; $row->style = ' style="color:#999999;"'; } else { $row->cbd = ''; $row->style = ''; } // If we didn't get valid data from the xml file, move on... if (!is_array($data)) { continue; } // Populate the row from the xml meta file foreach ($data as $key => $value) { $row->$key = $value; } $rows[] = $row; } } return $rows; } }administrator/components/com_jce/models/installer.xml100644 0 0 1434 12000772076 20656 0ustar 0 0 administrator/components/com_jce/models/legend.php100644 0 0 1324 12000772076 20104 0ustar 0 0 administrator/components/com_jce/models/mediabox.php100644 0 0 1151 12000772076 20434 0ustar 0 0 administrator/components/com_jce/models/mediabox.xml100644 0 0 230 12000772076 20422 0ustar 0 0 administrator/components/com_jce/models/model.php100644 0 0 12461 12000772076 17772 0ustar 0 0 authorise($action, 'com_jce')) { return false; } } else { // get rules from parameters $component = JComponentHelper::getComponent('com_jce'); $params = json_decode($component->params); $rules = isset($params->access) ? $params->access : null; if (is_object($rules)) { $action = ($task == 'admin' || $task == 'manage') ? 'core.' . $task : 'jce.' . $task; if (isset($rules->$action)) { $rule = $rules->$action; $gid = $user->gid; if (isset($rule->$gid) && $rule->$gid == 0) { return false; } } } } return true; } /** * Get the current version * @return Version */ public function getVersion() { // Get Component xml $xml = JApplicationHelper::parseXMLInstallFile(WF_ADMINISTRATOR . DS . 'jce.xml'); // return cleaned version number or date $version = preg_replace('/[^0-9a-z]/i', '', $xml['version']); if (!$version) { return date('Y-m-d', strtotime('today')); } return $version; } public function getStyles() { $view = JRequest::getCmd('view'); $params = JComponentHelper::getParams('com_jce'); $theme = $params->get('theme', 'smoothness'); $path = JPATH_COMPONENT . DS . 'media' . DS . 'css'; // Load styles $styles = array(); $files = JFolder::files($path . DS . $theme, '\.css'); foreach ($files as $file) { $styles[] = $theme . '/' . $file; } $styles = array_merge($styles, array('styles.css', 'tips.css', 'icons.css', 'select.css')); jimport('joomla.environment.browser'); $browser = JBrowser::getInstance(); if ($browser->getBrowser() == 'msie' && $browser->getMajor() < 8) { $styles[] = 'styles_ie.css'; } if (JFile::exists($path . DS . $view . '.css')) { $styles[] = $view . '.css'; } return $styles; } public function loadStyles() { $styles = $this->getStyles(); foreach ($styles as $style) { echo '' . "\n"; } } private function getIconType($icon) { // TODO - Enhance this later to get the type from xml if (in_array($icon, array('styleselect', 'formatselect', 'fontselect', 'fontsizeselect'))) { return 'mceListBox'; } if (in_array($icon, array('paste', 'numlist', 'bullist', 'forecolor', 'backcolor', 'spellchecker', 'textcase'))) { return 'mceSplitButton'; } return 'mceButton'; } public function getIcon($plugin) { if ($plugin->type == 'command') { $base = 'components/com_jce/editor/tiny_mce/themes/advanced/img/'; } else { $base = 'components/com_jce/editor/tiny_mce/plugins/' . $plugin->name . '/img/'; } $span = ''; $img = ''; $icons = explode(',', $plugin->icon); foreach ($icons as $icon) { if ($icon == '|' || $icon == 'spacer') { $span .= ''; } else { $path = $base . '/' . $icon . '.png'; if (JFile::exists(JPATH_SITE . DS . $path)) { $img = '' . WFText::_($plugin->title) . ''; } $span .= '' . $img . ''; } } return $span; } public function getBrowserLink($element = null, $filter = '') { require_once(JPATH_SITE . DS . 'components' . DS . 'com_jce' . DS . 'editor' . DS . 'libraries' . DS . 'classes' . DS . 'token.php'); $token = WFToken::getToken(); $url = 'index.php?option=com_jce&view=editor&layout=plugin&plugin=browser&standalone=1&' . $token . '=1'; if ($element) { $url .= '&element=' . $element; } if ($filter) { $url .= '&filter=' . $filter; } return $url; } } ?> administrator/components/com_jce/models/plugins.php100644 0 0 15021 12000772076 20346 0ustar 0 0 children() as $command) { $name = (string) $command->name; if ($name) { $commands[$name] = new StdClass(); foreach ($command->children() as $item) { $key = $item->name(); $value = $item->data(); $commands[$name]->$key = $value; } $commands[$name]->type = 'command'; } } } return $commands; } function getPlugins() { jimport('joomla.filesystem.folder'); $plugins = array(); // get core xml $xml = WFXMLElement::getXML(dirname(__FILE__) . DS . 'plugins.xml'); if ($xml) { foreach ($xml->children() as $plugin) { $name = (string) $plugin->name; if ($name) { $plugins[$name] = new StdClass(); foreach ($plugin->children() as $item) { $key = $item->name(); $value = $item->data(); $plugins[$name]->$key = $value; } $plugins[$name]->type = 'plugin'; //$plugins[$name]->author = ''; //$plugins[$name]->version = ''; //$plugins[$name]->creationdate = ''; //$plugins[$name]->description = ''; } } } unset($xml); // get all Plugins $folders = JFolder::folders(WF_EDITOR_PLUGINS, '.', false, true, array_merge(array('.svn', 'CVS'), array_keys($plugins))); foreach ($folders as $folder) { $name = basename($folder); $file = $folder . DS . $name . '.xml'; if (is_file($file)) { $xml = WFXMLElement::getXML($folder . DS . $name . '.xml'); if ($xml) { $params = $xml->params; if (!isset($plugins[$name])) { $plugins[$name] = new StdClass(); $plugins[$name]->name = $name; $plugins[$name]->title = (string) $xml->name; $plugins[$name]->icon = (string) $xml->icon; $editable = (int) $xml->attributes()->editable; $plugins[$name]->editable = $editable ? $editable : ($params && count($params->children()) ? 1 : 0); $row = (int) $xml->attributes()->row; $plugins[$name]->row = $row ? $row : 4; $plugins[$name]->core = (int) $xml->attributes()->core ? 1 : 0; } $plugins[$name]->author = (string) $xml->author; $plugins[$name]->version = (string) $xml->version; $plugins[$name]->creationdate = (string) $xml->creationDate; $plugins[$name]->description = (string) $xml->description; $plugins[$name]->authorUrl = (string) $xml->authorUrl; $plugins[$name]->type = 'plugin'; } } } return $plugins; } /** * Get a plugin's extensions * @param object $plugin * @return */ function getExtensions() { jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $extensions = array(); // recursively get all extension files $files = JFolder::files(WF_EDITOR_EXTENSIONS, '\.xml$', true, true); foreach ($files as $file) { $object = new StdClass(); $object->folder = basename(dirname($file)); $object->manifest = $file; $object->plugins = array(); $name = basename($file, '.xml'); $object->name = $name; $object->description = ''; $object->id = $object->folder . '.' . $object->name; $xml = WFXMLElement::getXML($file); if ($xml) { $plugins = (string) $xml->plugins; if ($plugins) { $object->plugins = explode(',', $plugins); } $object->name = (string) $xml->name; $object->title = (string) $xml->name; $object->description = (string) $xml->description; $object->creationdate = (string) $xml->creationDate; $object->author = (string) $xml->author; $object->version = (string) $xml->version; $object->type = (string) $xml->attributes()->folder; $object->authorUrl = (string) $xml->authorUrl; $object->folder = (string) $xml->attributes()->folder; $object->core = (int) $xml->attributes()->core ? 1 : 0; if ($object->core == 0) { // load language $language = JFactory::getLanguage(); $language->load('com_jce_' . $object->folder . '_' . $name, JPATH_SITE); } } $object->extension = $name; $extensions[] = $object; } return $extensions; } /** * Process import data from XML file * @param object $file XML file * @param boolean $install Can be used by the package installer * @return */ function processImport($file, $install = false) { return true; } }administrator/components/com_jce/models/plugins.xml100644 0 0 21250 12000772076 20360 0ustar 0 0 article WF_ARTICLE_TITLE WF_ARTICLE_DESC readmore,pagebreak 0 4 1 advlist WF_ADVLIST_TITLE WF_ADVLIST_DESC 0 0 1 WF_ANCHOR_TITLE WF_ANCHOR_DESC anchor 1 anchor 4 0 autosave WF_AUTOSAVE_TITLE WF_AUTOSAVE_DESC autosave 0 4 1 browser WF_BROWSER_TITLE WF_BROWSER_DESC 1 4 1 cleanup WF_CLEANUP_TITLE WF_CLEANUP_DESC cleanup 0 0 1 code WF_CODE_TITLE WF_CODE_DESC 0 0 1 contextmenu WF_CONTEXTMENU_TITLE WF_CONTEXTMENU_DESC 0 4 1 directionality WF_DIRECTIONALITY_TITLE WF_DIRECTIONALITY_DESC ltr,rtl 0 3 1 format WF_FORMAT_TITLE WF_FORMAT_DESC 0 0 1 fullscreen WF_FULLSCREEN_TITLE WF_FULLSCREEN_DESC fullscreen 0 3 1 imgmanager WF_IMGMANAGER_TITLE WF_IMGMANAGER_DESC imgmanager 1 4 1 inlinepopups WF_INLINEPOPUPS_TITLE WF_INLINEPOPUPS_DESC 0 4 1 layer WF_LAYER_TITLE WF_LAYER_DESC insertlayer,moveforward,movebackward,absolute 0 4 1 link WF_LINK_TITLE WF_LINK_DESC link 1 4 1 media WF_MEDIA_TITLE WF_MEDIA_DESC 1 4 1 nonbreaking WF_NONBREAKING_TITLE WF_NONBREAKING_DESC nonbreaking 0 4 1 paste WF_PASTE_TITLE WF_PASTE_DESC cut,copy,paste 1 2 1 preview WF_PREVIEW_TITLE WF_PREVIEW_DESC preview 0 3 1 print WF_PRINT_TITLE WF_PRINT_DESC print 0 3 1 searchreplace WF_SEARCHREPLACE_TITLE WF_SEARCHREPLACE_DESC search,replace 0 2 1 source WF_SOURCE_TITLE WF_SOURCE_DESC source 1 4 1 spellchecker WF_SPELLCHECKER_TITLE WF_SPELLCHECKER_DESC spellchecker 1 4 1 style WF_STYLE_TITLE WF_STYLE_DESC style 0 4 1 tabfocus WF_TABFOCUS_TITLE WF_TABFOCUS_DESC 0 0 1 table WF_TABLE_TITLE WF_TABLE_DESC table_insert,delete_table,|,row_props,cell_props,|,row_before,row_after,delete_row,|,col_before,col_after,delete_col,|,split_cells,merge_cells 1 3 1 textcase WF_TEXTCASE_TITLE WF_TEXTCASE_DESC textcase 0 4 1 visualchars WF_VISUALCHARS_TITLE WF_VISUALCHARS_DESC visualchars 0 4 1 wordcount WF_WORDCOUNT_TITLE WF_WORDCOUNT_DESC 0 0 1 xhtmlxtras WF_XHTMLXTRAS_TITLE WF_XHTMLXTRAS_DESC cite,abbr,acronym,del,ins,attribs 0 4 1 WF_KITCHENSINK_TITLE WF_KITCHENSINK_DESC kitchensink 1 kitchensink 1 0 administrator/components/com_jce/models/preferences.php100644 0 0 11325 12000772076 21171 0ustar 0 0 $action)) { $rule = $rules->$action; return (isset($rule->$gid) && $rule->$gid != 0); } } // set Manager to false, Administrator and Super Administrator to true return $gid > 23; } public function getForm($group = null) { jimport('joomla.form.form'); if (class_exists('JForm')) { JForm::addFormPath(JPATH_ADMINISTRATOR.'/components/com_jce'); $form = JForm::getInstance('com_jce.component', 'config', array('control' => 'params'), false, '/config'); if ($group) { return $form->getFieldset($group); } return $form; } else { $component = WFExtensionHelper::getComponent(); // get params definitions $params = json_decode($component->params); $rules = isset($params->access) ? $params->access : null; // Build the form control. $curLevel = 0; $actions = $this->getActions(); $groups = $this->getUserGroups(); $form = array(); foreach ($groups as $group) { $difLevel = $group->level - $curLevel; $html = array(); $item = new StdClass(); $html[] = '

      ' . str_repeat(' ', $curLevel = $group->level) . $group->text . '

      '; $html[] = '
      '; $html[] = ''; $html[] = ''; $html[] = ''; $html[] = ''; $html[] = ''; $html[] = ''; $html[] = ''; $html[] = ''; foreach ($actions as $action) { $html[] = ''; $html[] = ''; $html[] = ''; $html[] = ''; } $html[] = ''; $html[] = '
      ' . WFText::_('WF_RULES_ACTION') . '' . WFText::_('WF_RULES_SELECT_SETTING') . '
      '; $html[] = '  '; $html[] = '
      '; $html[] = '
      '; $item->input = implode('', $html); $form[] = $item; } return $form; } return null; } /** * Get Actions from access.xml file */ protected function getActions() { $file = JPATH_COMPONENT_ADMINISTRATOR . DS . 'access.xml'; $xml = WFXMLElement::getXML($file); $actions = array(); if ($xml) { // Iterate over the children and add to the actions. foreach ($xml->section->children() as $element) { if ($element->name() == 'action') { $actions[] = (object) array( 'name' => (string) $element['name'], 'title' => (string) $element['title'], 'description' => (string) $element['description'] ); } } } return $actions; } /** * Get a list of the user groups. */ protected function getUserGroups() { $db = JFactory::getDBO(); // Initialise variables. $db = JFactory::getDBO(); $query = 'SELECT a.id AS value, a.name AS text, COUNT(DISTINCT b.id) AS level, a.parent_id' . ' FROM #__core_acl_aro_groups AS a' . ' LEFT JOIN #__core_acl_aro_groups AS b ON a.lft >= b.lft AND a.rgt <= b.rgt' . ' WHERE a.id IN (23,24,25) AND b.id IN (23,24,25)' . ' GROUP BY a.id' . ' ORDER BY a.lft ASC' ; // Get the options. $db->setQuery($query); return $db->loadObjectList(); } }administrator/components/com_jce/models/preferences.xml100644 0 0 2603 12000772076 21161 0ustar 0 0 administrator/components/com_jce/models/profiles.php100644 0 0 42562 12000772076 20522 0ustar 0 0 setQuery($query); return $db->loadObject(); } /** * Get a profile assigned to a user type * @param object $type * @return */ function getUserProfileFromType($type) { $db = JFactory::getDBO(); if (!is_int($type)) { $query = 'SELECT id' . ' FROM #__core_acl_aro_groups' . ' WHERE name = ' . $db->Quote($type); $db->setQuery($query); $id = $db->loadResult(); } $query = 'SELECT *' . ' FROM #__wf_profiles' . ' WHERE ' . $type . ' IN (types)'; $db->setQuery($query); return $db->loadObject(); } /** * Convert row string into array * @param object $rows * @return */ function getRowArray($rows) { $out = array(); $rows = explode(';', $rows); $i = 1; foreach ($rows as $row) { $out[$i] = $row; $i++; } return $out; } /** * Get a plugin's extensions * @param object $plugin * @return */ function getExtensions($plugin) { $model = JModel::getInstance('plugins', 'WFModel'); $types = array(); $extensions = array(); $supported = ''; $manifest = WF_EDITOR_PLUGINS . DS . $plugin . DS . $plugin . '.xml'; if (is_file($manifest)) { $xml = WFXMLElement::getXML($manifest); // get the plugin xml file if ($xml) { $supported = (string) $xml->extensions; } } // get extensions supported by the plugin if ($supported) { $types = explode(',', $supported); } foreach ($model->getExtensions() as $extension) { // filter by plugin if (!empty($extension->plugins)) { // extension only supports specific plugins if (in_array($plugin, $extension->plugins)) { if (!empty($types) && in_array($extension->folder, $types)) { $extensions[] = $extension; } } // extension potentially supports all plugins } else { if (!empty($types) && in_array($extension->folder, $types)) { $extensions[] = $extension; } } } return $extensions; } function getPlugins($plugins = false) { $model = JModel::getInstance('plugins', 'WFModel'); $commands = array(); if (!$plugins) { $commands = $model->getCommands(); } $plugins = $model->getPlugins(); // only need plugins with xml files foreach ($plugins as $plugin => $properties) { if (!is_file(WF_EDITOR_PLUGINS . DS . $plugin . DS . $plugin . '.xml')) { unset($plugins[$plugin]); } } return array_merge($commands, $plugins); } function getUserGroups($area) { $db = JFactory::getDBO(); if (WF_JOOMLA15) { $front = array( '19', '20', '21' ); $back = array( '23', '24', '25' ); } else { jimport('joomla.access.access'); $query = 'SELECT id FROM #__usergroups'; $db->setQuery($query); $groups = $db->loadResultArray(); $front = array(); $back = array(); foreach ($groups as $group) { $create = JAccess::checkGroup($group, 'core.create'); $admin = JAccess::checkGroup($group, 'core.login.admin'); $super = JAccess::checkGroup($group, 'core.admin'); if ($super) { $back[] = $group; } else { // group can create if ($create) { // group has admin access if ($admin) { $back[] = $group; } else { $front[] = $group; } } } } } switch ($area) { case 0: return array_merge($front, $back); break; case 1: return $front; break; case 2: return $back; break; } return array(); } /** * Create the Profiles table * @return boolean */ public function createProfilesTable() { jimport('joomla.installer.helper'); $mainframe = JFactory::getApplication(); $db = JFactory::getDBO(); $driver = strtolower($db->name); switch ($driver) { default : case 'mysqli' : $driver = 'mysql'; break; case 'sqlazure' : $driver = 'sqlsrv'; break; } // speed up for mysql - most common if ($driver == 'mysql') { $query = "CREATE TABLE IF NOT EXISTS `#__wf_profiles` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, `users` text NOT NULL, `types` varchar(255) NOT NULL, `components` text NOT NULL, `area` tinyint(3) NOT NULL, `rows` text NOT NULL, `plugins` text NOT NULL, `published` tinyint(3) NOT NULL, `ordering` int(11) NOT NULL, `checked_out` tinyint(3) NOT NULL, `checked_out_time` datetime NOT NULL, `params` text NOT NULL, PRIMARY KEY (`id`) );"; $db->setQuery($query); if ($db->query()) { return true; } else { $error = $db->stdErr(); } // sqlsrv } else { $file = dirname(dirname(__FILE__)) . DS . 'sql' . DS . $driver . '.sql'; $error = null; if (is_file($file)) { $buffer = file_get_contents($file); if ($buffer) { $queries = JInstallerHelper::splitSql($buffer); if (count($queries)) { $query = $queries[0]; if ($query) { $db->setQuery(trim($query)); if (!$db->query()) { $mainframe->enqueueMessage(WFText::_('WF_INSTALL_TABLE_PROFILES_ERROR') . $db->stdErr(), 'error'); return false; } else { return true; } } else { $error = 'NO SQL QUERY'; } } else { $error = 'NO SQL QUERIES'; } } else { $error = 'SQL FILE EMPTY'; } } else { $error = 'SQL FILE MISSING'; } } $mainframe->enqueueMessage(WFText::_('WF_INSTALL_TABLE_PROFILES_ERROR') . !is_null($error) ? ' - ' . $error : '', 'error'); return false; } /** * Install Profiles * @return boolean * @param object $install[optional] */ public function installProfiles() { $app = JFactory::getApplication(); $db = JFactory::getDBO(); if ($this->createProfilesTable()) { $query = 'SELECT COUNT(id) FROM #__wf_profiles'; $db->setQuery($query); $profiles = array('Default' => false, 'Front End' => false); // No Profiles table data if (!$db->loadResult()) { $xml = dirname(__FILE__) . DS . 'profiles.xml'; if (is_file($xml)) { if (!$this->processImport($xml)) { $app->enqueueMessage(WFText::_('WF_INSTALL_PROFILES_ERROR'), 'error'); return false; } } else { $app->enqueueMessage(WFText::_('WF_INSTALL_PROFILES_NOFILE_ERROR'), 'error'); return false; } } return true; } return false; } /** * Process import data from XML file * @param object $file XML file * @param boolean $install Can be used by the package installer * @return */ public function processImport($file) { $app = JFactory::getApplication(); $db = JFactory::getDBO(); $view = JRequest::getCmd('view'); $language = JFactory::getLanguage(); $language->load('com_jce', JPATH_ADMINISTRATOR); JTable::addIncludePath(dirname(dirname(__FILE__)) . DS . 'tables'); $xml = WFXMLElement::getXML($file); if ($xml) { $n = 0; foreach ($xml->profiles->children() as $profile) { $row = JTable::getInstance('profiles', 'WFTable'); // get profile name $name = (string) $profile->attributes()->name; // backwards compatability if ($name) { // check for name $query = 'SELECT id FROM #__wf_profiles' . ' WHERE name = ' . $db->Quote($name); $db->setQuery($query); // create name copy if exists while ($db->loadResult()) { $name = JText::sprintf('WF_PROFILES_COPY_OF', $name); $query = 'SELECT id FROM #__wf_profiles' . ' WHERE name = ' . $db->Quote($name); $db->setQuery($query); } // set name $row->name = $name; } foreach ($profile->children() as $item) { switch ($item->name()) { case 'name': $name = $item->data(); // only if name set and table name not set if ($name && !$row->name) { // check for name $query = 'SELECT id FROM #__wf_profiles' . ' WHERE name = ' . $db->Quote($name); $db->setQuery($query); // create name copy if exists while ($db->loadResult()) { $name = JText::sprintf('WF_PROFILES_COPY_OF', $name); $query = 'SELECT id FROM #__wf_profiles' . ' WHERE name = ' . $db->Quote($name); $db->setQuery($query); } // set name $row->name = $name; } break; case 'description': $row->description = WFText::_($item->data()); break; case 'types': if (!$item->data()) { $area = $profile->area[0]->data(); $groups = $this->getUserGroups($area); $data = implode(',', array_unique($groups)); } else { $data = $item->data(); } $row->types = $data; break; case 'params': $params = array(); foreach ($item->children() as $param) { $params[] = $param->data(); } $row->params = implode("\n", $params); break; case 'rows': $row->rows = $item->data(); break; case 'plugins': $row->plugins = $item->data(); break; default: $key = $item->name(); $row->$key = $item->data(); break; } } if (!$row->store()) { $app->enqueueMessage(WFText::_('WF_PROFILES_IMPORT_ERROR'), $row->getError(), 'error'); return false; } else { $n++; } } return true; } } /** * Get default profile data * @return $row Profile table object */ function getDefaultProfile() { $mainframe = JFactory::getApplication(); $file = JPATH_COMPONENT . DS . 'models' . DS . 'profiles.xml'; $xml = WFXMLElement::getXML($file); if ($xml) { foreach ($xml->profiles->children() as $profile) { if ($profile->attributes()->default) { $row = JTable::getInstance('profiles', 'WFTable'); foreach ($profile->children() as $item) { switch ($item->name()) { case 'rows': $row->rows = $item->data(); break; case 'plugins': $row->plugins = $item->data(); break; default: $key = $item->name(); $row->$key = $item->data(); break; } } // reset name and description $row->name = ''; $row->description = ''; return $row; } } } return null; } function getEditorParams(&$row) { // get params definitions $xml = WF_EDITOR_LIBRARIES . DS . 'xml' . DS . 'config' . DS . 'profiles.xml'; // get editor params $params = new WFParameter($row->params, $xml, 'editor'); $params->addElementPath(JPATH_COMPONENT . DS . 'elements'); $params->addElementPath(WF_EDITOR . DS . 'elements'); $groups = $params->getGroups(); $row->editor_params = $params; $row->editor_groups = $groups; } function getLayoutParams(&$row) { // get params definitions $xml = WF_EDITOR_LIBRARIES . DS . 'xml' . DS . 'config' . DS . 'layout.xml'; // get editor params $params = new WFParameter($row->params, $xml, 'editor'); $params->addElementPath(JPATH_COMPONENT . DS . 'elements'); $params->addElementPath(WF_EDITOR . DS . 'elements'); $groups = $params->getGroups(); $row->layout_params = $params; $row->layout_groups = $groups; } function getPluginParameters() { } function getThemes() { jimport('joomla.filesystem.folder'); $path = WF_EDITOR_THEMES . DS . 'advanced' . DS . 'skins'; return JFolder::folders($path, '.', false, true); } /** * Check whether a table exists * @return boolean * @param string $table Table name */ public static function checkTable() { $db = JFactory::getDBO(); $tables = $db->getTableList(); if (!empty($tables)) { // swap array values with keys, convert to lowercase and return array keys as values $tables = array_keys(array_change_key_case(array_flip($tables))); $app = JFactory::getApplication(); $match = str_replace('#__', strtolower($app->getCfg('dbprefix', '')), '#__wf_profiles'); return in_array($match, $tables); } // try with query $query = 'SELECT COUNT(id) FROM #__wf_profiles'; $db->setQuery($query); return $db->query(); } /** * Check table contents * @return boolean * @param string $table Table name */ public static function checkTableContents() { $db = JFactory::getDBO(); $query = 'SELECT COUNT(id) FROM #__wf_profiles'; $db->setQuery($query); return $db->loadResult(); } }administrator/components/com_jce/models/profiles.xml100644 0 0 10573 12000772076 20530 0ustar 0 0 WF_PROFILES_DEFAULT_DESC 0 help,newdocument,undo,redo,spacer,bold,italic,underline,strikethrough,justifyfull,justifycenter,justifyleft,justifyright,spacer,blockquote,formatselect,styleselect,removeformat,cleanup;fontselect,fontsizeselect,forecolor,backcolor,spacer,paste,indent,outdent,numlist,bullist,sub,sup,textcase,charmap,hr;directionality,fullscreen,preview,source,print,searchreplace,spacer,table;visualaid,visualchars,visualblocks,nonbreaking,style,xhtmlxtras,anchor,unlink,link,imgmanager,spellchecker,article contextmenu,browser,inlinepopups,media,help,paste,searchreplace,directionality,fullscreen,preview,source,table,textcase,print,style,nonbreaking,visualchars,visualblocks,xhtmlxtras,imgmanager,anchor,link,spellchecker,article 1 1 WF_PROFILES_FRONTEND_DESC 1 help,newdocument,undo,redo,spacer,bold,italic,underline,strikethrough,justifyfull,justifycenter,justifyleft,justifyright,spacer,formatselect,styleselect;paste,searchreplace,indent,outdent,numlist,bullist,cleanup,charmap,removeformat,hr,sub,sup,textcase,nonbreaking,visualchars,visualblocks;fullscreen,preview,print,visualaid,style,xhtmlxtras,anchor,unlink,link,imgmanager,spellchecker,article contextmenu,inlinepopups,help,paste,searchreplace,fullscreen,preview,print,style,textcase,nonbreaking,visualchars,visualblocks,xhtmlxtras,imgmanager,anchor,link,spellchecker,article 0 2 Blogger Simple Blogging Profile 0 bold,italic,strikethrough,bullist,numlist,blockquote,spacer,justifyleft,justifycenter,justifyright,spacer,link,unlink,imgmanager,article,spellchecker,fullscreen,kitchensink;formatselect,underline,justifyfull,forecolor,paste,removeformat,charmap,indent,outdent,undo,redo,help link,imgmanager,article,spellchecker,fullscreen,kitchensink,paste,contextmenu,inlinepopups 0 3 {"editor":{"toggle":"0"}} administrator/components/com_jce/models/updates.php100644 0 0 31232 12000772076 20334 0ustar 0 0 array(), 'jce' => array()); // Get Component xml $com_xml = JApplicationHelper::parseXMLInstallFile(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce' . DS . 'jce.xml'); // set component version $versions['joomla']['com_jce'] = $com_xml['version']; // get mediabox version $mediabox_xml_file = WF_JOOMLA15 ? JPATH_PLUGINS . DS . 'system' . DS . 'jcemediabox.xml' : JPATH_PLUGINS . DS . 'system' . DS . 'jcemediabox' . DS . 'jcemediabox.xml'; // set mediabox version if (file_exists($mediabox_xml_file)) { $mediabox_xml = JApplicationHelper::parseXMLInstallFile($mediabox_xml_file); $versions['joomla']['plg_jcemediabox'] = $mediabox_xml['version']; } $model = JModel::getInstance('plugins', 'WFModel'); // get all plugins $plugins = $model->getPlugins(); // get all extensions $extensions = $model->getExtensions(); foreach ($plugins as $plugin) { if ($plugin->core == 0) { $file = WF_EDITOR_PLUGINS . DS . $plugin->name . DS . $plugin->name . '.xml'; $xml = JApplicationHelper::parseXMLInstallFile($file); $versions['jce']['jce_' . $plugin->name] = $xml['version']; } } foreach ($extensions as $extension) { if ($extension->core == 0) { $file = WF_EDITOR_EXTENSIONS . DS . $extension->folder . DS . $extension->extension . '.xml'; $xml = JApplicationHelper::parseXMLInstallFile($file); $versions['jce']['jce_' . $extension->folder . '_' . $extension->extension] = $xml['version']; } } return $versions; } /** * Check for extension updates * @return String JSON string of updates */ function check() { $result = false; // Get all extensions and version numbers $data = array('task' => 'check', 'jversion' => WF_JOOMLA15 ? '1.5' : '1.7'); wfimport('admin.helpers.extension'); $component = WFExtensionHelper::getComponent(); $params = new WFParameter($component->params, '', 'preferences'); // get update key $key = $params->get('updates_key', ''); $type = $params->get('updates_type', ''); // encode it if (!empty($key)) { $data['key'] = urlencode($key); } if ($type) { $data['type'] = $type; } $req = array(); // create request data foreach ($this->getVersions() as $type => $extension) { foreach ($extension as $item => $value) { $data[$type . '[' . urlencode($item) . ']'] = urlencode($value); } } foreach ($data as $key => $value) { $req[] = $key . '=' . urlencode($value); } // connect $result = $this->connect($this->url, implode('&', $req)); return $result; } /** * Download update * @return String JSON string */ function download() { jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $config = JFactory::getConfig(); $result = array('error' => WFText::_('WF_UPDATES_DOWNLOAD_ERROR')); $id = JRequest::getInt('id'); $file = $this->connect($this->url, 'task=download&id=' . $id); if ($file) { $data = json_decode($file); // get update file if ($data->name && $data->url && $data->hash) { $tmp = $config->getValue('config.tmp_path'); // create path for package file $path = $tmp . DS . basename($data->name); // download file if ($this->connect($data->url, null, $path)) { if (JFile::exists($path) && @filesize($path) > 0) { // check hash and file type if ($data->hash == md5(md5_file($path)) && preg_match('/\.(zip|tar|gz)$/', $path)) { $result = array('file' => basename($path), 'hash' => $data->hash, 'installer' => $data->installer, 'type' => isset($data->type) ? $data->type : ''); } else { // fail and delete file $result = array('error' => WFText::_('WF_UPDATES_ERROR_FILE_VERIFICATION_FAIL')); if (JFile::exists($path)) { @JFile::delete($path); } } } else { $result = array('error' => WFText::_('WF_UPDATES_ERROR_FILE_MISSING_OR_INVALID')); } } else { $result = array('error' => WFText::_('WF_UPDATES_DOWNLOAD_ERROR_DATA_TRANSFER')); } } else { $result = array('error' => WFText::_('WF_UPDATES_DOWNLOAD_ERROR_MISSING_DATA')); } } return json_encode($result); } /** * Install extension update * @return String JSON string */ function install() { jimport('joomla.installer.installer'); jimport('joomla.installer.helper'); jimport('joomla.filesystem.file'); $config = JFactory::getConfig(); $result = array('error' => WFText::_('WF_UPDATES_INSTALL_ERROR')); // get vars $file = JRequest::getCmd('file'); $hash = JRequest::getVar('hash', '', 'POST', 'alnum'); $method = JRequest::getWord('installer'); $type = JRequest::getWord('type'); // check for vars if ($file && $hash && $method) { $tmp = $config->getValue('config.tmp_path'); $path = $tmp . DS . $file; // check if file exists if (JFile::exists($path)) { // check hash if ($hash == md5(md5_file($path))) { if ($extract = JInstallerHelper::unpack($path)) { // get new Installer instance $installer = JInstaller::getInstance(); // set installer adapter if ($method == 'jce') { // create jce plugin adapter $model = JModel::getInstance('installer', 'WFModel'); $installer->setAdapter($extract['type'], $model->getAdapter($extract['type'])); } // install if ($installer->install($extract['extractdir'])) { // get destination path $path = $installer->getPath('extension_root'); // get manifest $manifest = basename($installer->getPath('manifest')); // delete update manifest if any eg: _iframes_155_156.xml if ($type == 'patch' && preg_match('/^_[0-9a-z_\.-]+\.xml$/', $manifest)) { if (JFile::exists($path . DS . $manifest)) { @JFile::delete($path . DS . $manifest); } } // installer message $result = array('error' => '', 'text' => WFText::_($installer->get('message'), $installer->get('message'))); } // cleanup package and extract dir JInstallerHelper::cleanupInstall($extract['packagefile'], $extract['extractdir']); } else { $result = array('error' => WFText::_('WF_UPDATES_ERROR_FILE_EXTRACT_FAIL')); } } else { $result = array('error' => WFText::_('WF_UPDATES_ERROR_FILE_VERIFICATION_FAIL')); } } else { $result = array('error' => WFText::_('WF_UPDATES_ERROR_FILE_MISSING_OR_INVALID')); } } return json_encode($result); } /** * @copyright Copyright (C) 2009 Ryan Demmer. All rights reserved. * @copyright Copyright (C) 2006-2010 Nicholas K. Dionysopoulos * @param String $url URL to resource * @param Array $data [optional] Array of key value pairs * @param String $download [optional] path to file to write to * @return Mixed Boolean or JSON String on error */ function connect($url, $data = '', $download = '') { @error_reporting(E_ERROR); jimport('joomla.filesystem.file'); $fp = false; $fopen = function_exists('file_get_contents') && function_exists('ini_get') && ini_get('allow_url_fopen'); // try file_get_contents first (requires allow_url_fopen) if ($fopen) { if ($download) { // use Joomla! installer function jimport('joomla.installer.helper'); return @JInstallerHelper::downloadPackage($url, $download); } else { $options = array('http' => array('method' => 'POST', 'timeout' => 10, 'content' => $data)); $context = stream_context_create($options); return @file_get_contents($url, false, $context); } // Use curl if it exists } else if (function_exists('curl_init')) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); // Pretend we are IE7, so that webservers play nice with us curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)'); //curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // The @ sign allows the next line to fail if open_basedir is set or if safe mode is enabled @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); @curl_setopt($ch, CURLOPT_MAXREDIRS, 20); @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); if ($data && !$download) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } // file download if ($download) { $fp = @fopen($download, 'wb'); @curl_setopt($ch, CURLOPT_FILE, $fp); } $result = curl_exec($ch); // file download if ($download && $result === false) { die(json_encode(array('error' => 'TRANSFER ERROR : ' . curl_error($ch)))); } curl_close($ch); // close fopen handler if ($fp) { @fclose($fp); } return $result; // error - no update support } else { return array('error' => WFText::_('WF_UPDATES_DOWNLOAD_ERROR_NO_CONNECT')); } return array('error' => WFText::_('WF_UPDATES_DOWNLOAD_ERROR_NO_CONNECT')); } function log($msg) { jimport('joomla.error.log'); $log = JLog::getInstance('updates.txt'); $log->addEntry(array('comment' => 'LOG: ' . $msg)); } } ?> administrator/components/com_jce/models/users.php100644 0 0 1272 12000772076 20011 0ustar 0 0 administrator/components/com_jce/packages/editors/en-GB.plg_editors_jce.ini100644 0 0 1374 12000772100 24616 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 WF_EDITOR_PLUGIN_TITLE ="JCE Editor Plugin" WF_EDITOR_PLUGIN_DESC ="JCE Editor Plugin for the JCE Editor Extension" WF_EDITOR_PLUGIN_PARAMS_DESC ="All Editor Parameters are set in the JCE Configuration and JCE Editor Profiles" PLUGIN_REMOVED_LANG_FILE_MISSING ="Plugin disabled. Lanaguage file '%s' missing" COMPONENT_NOT_INSTALLED ="The JCE Administration Component is not installed! The Editor cannot function without it!"administrator/components/com_jce/packages/editors/en-GB.plg_editors_jce.sys.ini100644 0 0 503 12000772100 25404 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 WF_EDITOR_PLUGIN_TITLE ="Editor - JCE" WF_EDITOR_PLUGIN_DESC ="JCE Editor Plugin for the JCE Editor Extension"administrator/components/com_jce/packages/editors/jce.php100644 0 0 14215 12000772076 21376 0ustar 0 0 setMetaData('X-UA-Compatible', 'IE=Edge', true); // Check for existence of Admin Component if (!is_dir(JPATH_SITE . DS . 'components' . DS . 'com_jce') || !is_dir(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce')) { JError::raiseWarning('SOME_ERROR_CODE', 'WF_COMPONENT_MISSING'); } $language->load('plg_editors_jce', JPATH_ADMINISTRATOR); $language->load('com_jce', JPATH_ADMINISTRATOR); // set admin base path $base = JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce'; // load constants and loader require_once($base . DS . 'includes' . DS . 'base.php'); // load model JModel::addIncludePath($base . DS . 'models'); $model = JModel::getInstance('editor', 'WFModel'); $model->buildEditor(); } /** * JCE WYSIWYG Editor - get the editor content * * @vars string The name of the editor */ public function onGetContent($editor) { //return "WFEditor.getContent('" . $editor . "');"; return $this->onSave($editor); } /** * JCE WYSIWYG Editor - set the editor content * * @vars string The name of the editor */ public function onSetContent($editor, $html) { return "WFEditor.setContent('" . $editor . "','" . $html . "');"; } /** * JCE WYSIWYG Editor - copy editor content to form field * * @vars string The name of the editor */ public function onSave($editor) { return "WFEditor.getContent('" . $editor . "');"; } /** * JCE WYSIWYG Editor - display the editor * * @vars string The name of the editor area * @vars string The content of the field * @vars string The width of the editor area * @vars string The height of the editor area * @vars int The number of columns for the editor area * @vars int The number of rows for the editor area * @vars mixed Can be boolean or array. */ public function onDisplay($name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null) { if (empty($id)) { $id = $name; } // Only add "px" to width and height if they are not given as a percentage if (is_numeric($width)) { $width .= 'px'; } if (is_numeric($height)) { $height .= 'px'; } if (empty($id)) { $id = $name; } $editor = ''; $editor .= $this->_displayButtons($id, $buttons, $asset, $author); return $editor; } public function onGetInsertMethod($name) { } private function _displayButtons($name, $buttons, $asset, $author) { // Load modal popup behavior JHTML::_('behavior.modal', 'a.modal-button'); $args['name'] = $name; $args['event'] = 'onGetInsertMethod'; $return = ''; $results[] = $this->update($args); foreach ($results as $result) { if (is_string($result) && trim($result)) { $return .= $result; } } if (is_array($buttons) || (is_bool($buttons) && $buttons)) { $results = $this->_subject->getButtons($name, $buttons, $asset, $author); /* * This will allow plugins to attach buttons or change the behavior on the fly using AJAX */ $return .= "\n
      \n"; foreach ($results as $button) { /* * Results should be an object */ if ($button->get('name')) { $modal = ($button->get('modal')) ? 'class="modal-button"' : null; $href = ($button->get('link')) ? 'href="' . JURI::base() . $button->get('link') . '"' : null; $onclick = ($button->get('onclick')) ? 'onclick="' . $button->get('onclick') . '"' : 'onclick="IeCursorFix(); return false;"'; $title = ($button->get('title')) ? $button->get('title') : $button->get('text'); $return .= "\n"; } } $return .= "
      \n"; } return $return; } } ?>administrator/components/com_jce/packages/editors/jce.xml100644 0 0 1211 12000772100 21343 0ustar 0 0 Editor - JCE 2.2.4 16 July 2012 Ryan Demmer info@joomlacontenteditor.net http://www.joomlacontenteditor.net 2006-2010 Ryan Demmer GNU/GPL Version 2 - http://www.gnu.org/licenses/gpl-2.0.html WF_EDITOR_PLUGIN_DESC jce.php administrator/components/com_jce/packages/modules/mod_jcefilebrowser.php100644 0 0 2763 12000772076 24465 0ustar 0 0 enabled === false) { return; } jimport('joomla.application.component.model'); JModel::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce' . DS . 'models'); $model = JModel::getInstance('model', 'WF'); // authorize if (!$model->authorize('browser')) { return; } JHtml::_('behavior.modal'); require_once(JPATH_ADMINISTRATOR.'/components/com_jce/helpers/browser.php'); $language = JFactory::getLanguage(); $language->load('com_jce', JPATH_ADMINISTRATOR); $document = JFactory::getDocument(); $document->addStyleSheet('components/com_jce/media/css/module.css'); $module = JModuleHelper::getModule('mod_jcefilebrowser'); $width = 800; $height = 600; $filter = ''; if ($module) { $params = new JParameter($module->params); $width = $params->get('width', 800); $height = $params->get('height', 600); $filter = $params->get('filter', ''); } $float = $language->isRTL() ? 'right' : 'left'; ?> administrator/components/com_jce/packages/modules/mod_jcefilebrowser.xml100644 0 0 1240 12000772076 24463 0ustar 0 0 JCE File Browser Ryan Demmer April 2012 Copyright (C) Ryan Demmer http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only info@joomlacontenteditor.net http://www.joomlacontenteditor.net 2.0.0 JCE File Browser Quick Icon Module mod_jcefilebrowser.php administrator/components/com_jce/packages/quickicon/en-GB.plg_quickicon_jcefilebrowser.ini100644 0 0 612 12000772100 27664 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 PLG_QUICKICON_JCEFILEBROWSER="Quick Icon - JCE File Browser" PLG_QUICKICON_JCEFILEBROWSER_XML_DESCRIPTION="Control Panel Quick Icon for the JCE File Browser" WF_QUICKICON_BROWSER="JCE File Browser"administrator/components/com_jce/packages/quickicon/en-GB.plg_quickicon_jcefilebrowser.sys.ini100644 0 0 542 12000772100 30503 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 PLG_QUICKICON_JCEFILEBROWSER="Quick Icon - JCE File Browser" PLG_QUICKICON_JCEFILEBROWSER_XML_DESCRIPTION="Control Panel Quick Icon for the JCE File Browser"administrator/components/com_jce/packages/quickicon/index.html100644 0 0 37 12000772076 22352 0ustar 0 0 administrator/components/com_jce/packages/quickicon/jcefilebrowser.php100644 0 0 5105 12000772100 24120 0ustar 0 0 loadLanguage(); } /** * This method is called when the Quick Icons module is constructing its set * of icons. You can return an array which defines a single icon and it will * be rendered right after the stock Quick Icons. * * @param $context The calling context * * @return array A list of icon definition associative arrays, consisting of the * keys link, image, text and access. * * @since 2.5 */ public function onGetIcons($context) { jimport('joomla.application.component.model'); JModel::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_jce' . DS . 'models'); $model = JModel::getInstance('model', 'WF'); if ($context != $this->params->get('context', 'mod_quickicon') || !$model->authorize('browser')) { return; } $document = JFactory::getDocument(); $language = JFactory::getLanguage(); $language->load('com_jce', JPATH_ADMINISTRATOR); $width = $this->params->get('width', 800); $height = $this->params->get('height', 600); $filter = $this->params->get('filter', ''); JHtml::_('behavior.modal'); $document->addScriptDeclaration( " window.addEvent('domready', function() { SqueezeBox.assign($$('#plg_quickicon_jcefilebrowser a'), { handler: 'iframe', size: {x: " . $width . ", y: " . $height . "} }); });" ); require_once(JPATH_ADMINISTRATOR . '/components/com_jce/helpers/browser.php'); return array(array( 'link' => WFBrowserHelper::getBrowserLink('', $filter), 'image' => 'header/icon-48-media.png', 'access' => array('jce.browser', 'com_jce'), 'text' => JText::_('WF_QUICKICON_BROWSER'), 'id' => 'plg_quickicon_jcefilebrowser' )); } } administrator/components/com_jce/packages/quickicon/jcefilebrowser.xml100644 0 0 1612 12000772076 24144 0ustar 0 0 plg_quickicon_jcefilebrowser Ryan Demmer April 2012 Copyright (C) 2012 Ryan Demmer. All rights reserved. http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL admin@joomla.org www.joomla.org 2.5.0 PLG_QUICKICON_JCEFILEBROWSER_XML_DESCRIPTION jcefilebrowser.php index.html en-GB.plg_quickicon_jcefilebrowser.ini en-GB.plg_quickicon_jcefilebrowser.sys.ini administrator/components/com_jce/sql/mysql.sql100644 0 0 1014 12000772076 17333 0ustar 0 0 CREATE TABLE IF NOT EXISTS `#__wf_profiles` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `description` varchar(255) NOT NULL, `users` text NOT NULL, `types` varchar(255) NOT NULL, `components` text NOT NULL, `area` tinyint(3) NOT NULL, `rows` text NOT NULL, `plugins` text NOT NULL, `published` tinyint(3) NOT NULL, `ordering` int(11) NOT NULL, `checked_out` tinyint(3) NOT NULL, `checked_out_time` datetime NOT NULL, `params` text NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8;administrator/components/com_jce/sql/sqlsrv.sql100644 0 0 1405 12000772076 17524 0ustar 0 0 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[#__wf_profiles]') AND type in (N'U')) BEGIN CREATE TABLE [#__wf_profiles]( [id] [bigint] IDENTITY(1,1) NOT NULL, [name] [nvarchar](250) NOT NULL, [description] [nvarchar](250) NOT NULL, [users] [text] NOT NULL, [types] [nvarchar](250) NOT NULL, [components] [nvarchar](max) NOT NULL, [area] [smallint] NOT NULL, [rows] [nvarchar](max) NOT NULL, [plugins] [nvarchar](max) NOT NULL, [published] [smallint] NOT NULL, [ordering] [int] NOT NULL, [checked_out] [smallint] NOT NULL, [checked_out_time] [datetime] NOT NULL, [params] [nvarchar](max) NOT NULL, CONSTRAINT [PK_#__wf_profiles_id] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ) END;administrator/components/com_jce/tables/profiles.php100644 0 0 3045 12000772076 20462 0ustar 0 0 administrator/components/com_jce/views/config/tmpl/default.php100644 0 0 2424 12000772076 22367 0ustar 0 0
      params->getGroups() as $group => $num): ?>
      params->render('params', $group) ?>
      administrator/components/com_jce/views/config/view.html.php100644 0 0 3106 12000772076 21702 0ustar 0 0 load('plg_editors_jce', JPATH_ADMINISTRATOR); $client = JRequest::getWord('client', 'site'); $model =$this->getModel(); $lists = array(); $component = WFExtensionHelper::getComponent(); $xml = WF_EDITOR_LIBRARIES.DS.'xml'.DS.'config'.DS.'editor.xml'; // get params definitions $params = new WFParameter($component->params, $xml, 'editor'); $params->addElementPath(JPATH_COMPONENT.DS.'elements'); $this->assignRef('model', $model); $this->assignRef('params', $params); $this->assignRef('client', $client); WFToolbarHelper::save(); WFToolbarHelper::apply(); WFToolbarHelper::help('config.about'); parent::display($tpl); } } administrator/components/com_jce/views/cpanel/tmpl/default.php100644 0 0 11140 12000772076 22377 0ustar 0 0
        model->authorize('config')) :?>
      • model->authorize('profiles')) :?>
      • model->authorize('installer')) :?>
      • model->authorize('browser')) :?>
      • model->authorize('mediabox')) :?>

      administrator/components/com_jce/views/cpanel/view.html.php100644 0 0 4375 12000772076 21710 0ustar 0 0 getModel(); $version = $model->getVersion(); $component = WFExtensionHelper::getComponent(); // get params definitions $params = new WFParameter($component->params, '', 'preferences'); $canUpdate = WFModelUpdates::canUpdate() && $model->authorize('installer'); $options = array( 'feed' => (int) $params->get('feed', 0), 'updates' => (int) $params->get('updates', $canUpdate ? 1 : 0), 'labels' => array( 'feed' => WFText::_('WF_CPANEL_FEED_LOAD'), 'updates' => WFText::_('WF_UPDATES'), 'updates_available' => WFText::_('WF_UPDATES_AVAILABLE') ) ); $this->document->addScript('components/com_jce/media/js/cpanel.js?version=' . $model->getVersion()); $this->document->addScriptDeclaration('jQuery(document).ready(function($){$.jce.CPanel.init(' . json_encode($options) . ')});'); if ($model->authorize('preferences')) { WFToolbarHelper::preferences(); } if ($model->authorize('installer')) { WFToolbarHelper::updates($canUpdate); } WFToolbarHelper::help('cpanel.about'); $this->assignRef('icons', $icons); $this->assignRef('model', $model); $this->assignRef('installer', $installer); $this->assignRef('params', $params); $this->assignRef('version', $version); parent::display($tpl); } } ?> administrator/components/com_jce/views/help/tmpl/default.php100644 0 0 1674 12000772076 22060 0ustar 0 0
      model->renderTopics();?>
      administrator/components/com_jce/views/help/view.html.php100644 0 0 4734 12000772076 21375 0ustar 0 0 getModel(); $language = $model->getLanguage(); $lang = JFactory::getLanguage(); $section = JRequest::getWord('section'); $category = JRequest::getWord('category'); $article = JRequest::getWord('article'); $component = JComponentHelper::getComponent('com_jce'); require_once(WF_ADMINISTRATOR .DS. 'classes' .DS. 'parameter.php'); $params = new WFParameter($component->params); $url = $params->get('preferences.help.url', 'http://www.joomlacontenteditor.net'); $method = $params->get('preferences.help.method', 'reference'); $pattern = $params->get('preferences.help.pattern', ''); switch ($method) { default: case 'reference': $url .= '/index.php?option=com_content&view=article&tmpl=component&print=1&mode=inline&task=findkey&lang='.$language.'&keyref='; break; case 'xml': break; case 'sef': break; } $this->assignRef('model', $model); $this->assign('orientation', $lang->isRTL() ? 'east' : 'west'); $key = array(); if ($section) { $key[] = $section; if ($category) { $key[] = $category; if ($article) { $key[] = $article; } } } $options = array( 'url' => $url, 'key' => $key, 'pattern' => $pattern ); $this->document->addStyleSheet(JURI::root(true) . '/components/com_jce/editor/libraries/css/help.css'); $this->document->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/js/jquery/jquery-ui-layout.js?version=' . $model->getVersion()); $this->document->addScriptDeclaration('jQuery(document).ready(function($){$.jce.Help.init('.json_encode($options).');});'); parent::display($tpl); } } administrator/components/com_jce/views/installer/tmpl/install.php100644 0 0 2640 12000772076 23141 0ustar 0 0
      showMessage) : echo $this->loadTemplate('message'); endif; ?>
      ftp) : echo $this->loadTemplate('ftp'); endif; echo $this->loadTemplate('install'); ?>
      loadTemplate('uninstall');?>
      administrator/components/com_jce/views/installer/tmpl/install_extensions.php100644 0 0 3745 12000772076 25427 0ustar 0 0 extensions as $extension) : $disabled = $extension->core ? ' disabled="disabled"' : ''; ?>
       
      /> title); ?> type) . '_TITLE'); ?> version != '' ? $extension->version : ' '; ?> creationdate != '' ? $extension->creationdate : ' '; ?> author != '' ? $extension->author : ' '; ?>
      administrator/components/com_jce/views/installer/tmpl/install_ftp.php100644 0 0 2641 12000772076 24013 0ustar 0 0
      ftp)): ?>
      ftp->message); ?>
      administrator/components/com_jce/views/installer/tmpl/install_install.php100644 0 0 2057 12000772076 24671 0ustar 0 0
      administrator/components/com_jce/views/installer/tmpl/install_languages.php100644 0 0 3360 12000772076 25167 0ustar 0 0 languages as $language) : ?> style;?>>
       
      cbd;?>/> name; ?> version != '' ? $language->version : ' '; ?> creationdate != '' ? $language->creationdate : ' '; ?> author != '' ? $language->author : ' '; ?>
      administrator/components/com_jce/views/installer/tmpl/install_message.php100644 0 0 4346 12000772076 24652 0ustar 0 0
      state->get('action')));?> state->get('install.result') as $item) : $class = $item['result'] ? 'ok' : 'error'; $result = $item['result'] ? WFText::_('WF_INSTALLER_SUCCESS') : WFText::_('WF_INSTALLER_ERROR'); ?>
      administrator/components/com_jce/views/installer/tmpl/install_plugins.php100644 0 0 3251 12000772076 24701 0ustar 0 0 plugins as $plugin) : ?>
       
      title); ?> version != '' ? $plugin->version : ' '; ?> creationdate != '' ? $plugin->creationdate : ' '; ?> author != '' ? $plugin->author : ' '; ?>
      administrator/components/com_jce/views/installer/tmpl/install_related.php100644 0 0 3260 12000772076 24640 0ustar 0 0 related as $related) : ?>
       
      name); ?> version != '' ? $related->version : ' '; ?> creationdate != '' ? $related->creationdate : ' '; ?> author != '' ? $related->author : ' '; ?>
      administrator/components/com_jce/views/installer/tmpl/install_uninstall.php100644 0 0 5300 12000772076 25226 0ustar 0 0
      plugins)) : ?> loadTemplate('plugins');?>
      extensions)) : ?> loadTemplate('extensions');?>
      languages)) : ?> loadTemplate('languages');?>
      administrator/components/com_jce/views/installer/view.html.php100644 0 0 5600 12000772076 22433 0ustar 0 0 getModel(); $state = $model->getState(); $layout = JRequest::getWord('layout', 'install'); $plugins = ''; $extensions = ''; $languages = ''; WFToolbarHelper::updates(WFModelUpdates::canUpdate()); WFToolbarHelper::help( 'installer.about' ); $options = array( 'extensions' => array('zip','tar','gz','gzip','tgz','tbz2','bz2','bzip2'), 'width' => 300, 'button' => 'install_button', 'task' => 'install', 'iframe' => false, 'labels' => array( 'browse' => WFText::_('WF_LABEL_BROWSE'), 'alert' => WFText::_('WF_INSTALLER_FILETYPE_ERROR') ) ); $this->document->addScript('components/com_jce/media/js/installer.js?version=' . $model->getVersion()); $this->document->addScript('components/com_jce/media/js/uploads.js?version=' . $model->getVersion()); $this->document->addScriptDeclaration('jQuery(document).ready(function($){$.jce.Installer.init({});$(":file").upload('.json_encode($options).')});'); $state->set('install.directory', $app->getCfg('tmp_path')); $plugins = $model->getPlugins(); $extensions = $model->getExtensions(); $languages = $model->getLanguages(); $related = $model->getRelated(); //$discover = $model->findPlugins(); //$this->assignRef('discover', $discover); $this->assignRef('plugins', $plugins); $this->assignRef('extensions', $extensions); $this->assignRef('languages', $languages); $this->assignRef('related', $related); $result = $state->get('install.result'); $this->assign('showMessage', count($result)); $this->assignRef('model', $model); $this->assignRef('state', $state); $ftp = JClientHelper::setCredentialsFromRequest('ftp'); $this->assignRef('ftp', $ftp); $this->setLayout($layout); parent::display($tpl); } function loadItem($index=0) { $item = $this->items[$index]; $item->index = $index; $item->cbd = null; $item->style = null; $item->author_info = @$item->authorEmail .'
      '. @$item->authorUrl; $this->assignRef('item', $item); } }administrator/components/com_jce/views/legend/tmpl/default.php100644 0 0 3530 12000772076 22357 0ustar 0 0
      plugins as $plugin) : if ($plugin->icon) : $language = JFactory::getLanguage(); // load language if ($plugin->core == 0) { $language->load('com_jce_' . trim($plugin->name), JPATH_SITE); } $icon = $this->model->getIcon($plugin); ?>

      title);?>

      description, '');?>

      administrator/components/com_jce/views/legend/view.html.php100644 0 0 2662 12000772076 21701 0ustar 0 0 getPlugins(); $commands = $model->getCommands(); $plugins = array_merge($commands, $plugins); $language = JFactory::getLanguage(); $language->load('plg_editors_jce', JPATH_ADMINISTRATOR); $this->assignRef('plugins', $plugins); $this->assignRef('model', $model); $this->assignRef('language', $language); $this->document->addScript('components/com_jce/media/js/legend.js?version=' . $model->getVersion()); $this->document->addScriptDeclaration('jQuery(document).ready(function($){$.jce.Legend.init();});'); parent::display($tpl); } }administrator/components/com_jce/views/mediabox/tmpl/default.php100644 0 0 2266 12000772076 22716 0ustar 0 0
        params as $param) { echo '
      • ' . $param[0] . $param[1] . '
      • '; } ?>
      administrator/components/com_jce/views/mediabox/view.html.php100644 0 0 6306 12000772076 22232 0ustar 0 0 loadSetupFile($xml); return $params->getParams(); } else { $xml = JPATH_PLUGINS.DS.'system'.DS.'jcemediabox'.DS.'jcemediabox.xml'; $parser = JFactory::getXMLParser('Simple'); if ($parser->loadFile($xml)) { if ($fieldsets = $parser->document->getElementByPath('config')->getElementByPath('fields')->children()) { foreach ($fieldsets as $fieldset) { $params->setXML($fieldset); } } } $groups = array(); $array = array(); foreach ($params->getGroups() as $group => $num) { $groups[] = $params->getParams('params', $group); } foreach($groups as $group) { $array = array_merge($array, $group); } return $array; } } function display($tpl = null) { $db = JFactory::getDBO(); $lang = JFactory::getLanguage(); $lang->load('plg_system_jcemediabox'); $client = JRequest::getWord('client', 'site'); $model = $this->getModel(); $plugin = JPluginHelper::getPlugin('system', 'jcemediabox'); $params = $this->getParams($plugin->params); $this->assignRef('params', $params); $this->assignRef('client', $client); $this->document->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/js/colorpicker.js?version=' . $model->getVersion()); $this->document->addStyleSheet('components/com_jce/media/css/colorpicker.css?version=' . $model->getVersion()); $options = array( 'template_colors' => WFToolsHelper::getTemplateColors(), 'custom_colors' => '', 'labels' => array( 'picker' => WFText::_('WF_COLORPICKER_PICKER'), 'palette' => WFText::_('WF_COLORPICKER_PALETTE'), 'named' => WFText::_('WF_COLORPICKER_NAMED'), 'template' => WFText::_('WF_COLORPICKER_TEMPLATE'), 'custom' => WFText::_('WF_COLORPICKER_CUSTOM'), 'color' => WFText::_('WF_COLORPICKER_COLOR'), 'apply' => WFText::_('WF_COLORPICKER_APPLY'), 'name' => WFText::_('WF_COLORPICKER_NAME') ) ); $this->document->addScriptDeclaration('jQuery(document).ready(function($){$("input.color").colorpicker('.json_encode($options).');});'); WFToolbarHelper::save(); WFToolbarHelper::apply(); WFToolbarHelper::help('mediabox.config'); parent::display($tpl); } } administrator/components/com_jce/views/preferences/tmpl/default.php100644 0 0 3565 12000772076 23432 0ustar 0 0
        params->getGroups() as $group => $num) : ?>
      • permissons) : ?>
      params->getGroups() as $group => $num) : ?>
      params->render('params[preferences]', $group);?>
      permissons) : ?>
      '; endif; foreach ($this->permissons as $field): ?> input; ?> '; endif; ?>
      administrator/components/com_jce/views/preferences/view.html.php100644 0 0 3775 12000772076 22752 0ustar 0 0 getModel(); $this->document->setTitle(WFText::_('WF_PREFERENCES_TITLE')); $this->document->addStyleSheet('templates/system/css/system.css'); $component = WFExtensionHelper::getComponent(); $xml = JPATH_COMPONENT.DS.'models'.DS.'preferences.xml'; // get params definitions $params = new WFParameter($component->params, $xml, 'preferences'); $params->addElementPath(JPATH_COMPONENT.DS.'elements'); if ($model->authorize('admin')) { $form = $model->getForm('permissions'); } else { $form = null; } $this->assignRef('params', $params); $this->assignRef('permissons', $form); $this->document->addScript('components/com_jce/media/js/preferences.js?version=' . $model->getVersion()); if (JRequest::getInt('close') == 1) { $this->document->addScriptDeclaration('jQuery(document).ready(function($){$.jce.Preferences.close();});'); } else { $this->document->addScriptDeclaration('jQuery(document).ready(function($){$.jce.Preferences.init();});'); } parent::display($tpl); } }administrator/components/com_jce/views/profiles/tmpl/default.php100644 0 0 12001 12000772076 22755 0ustar 0 0

      rows; $k = 0; for ($i=0, $n=count( $rows ); $i < $n; $i++) { $row = $rows[$i]; $link = JRoute::_( 'index.php?option=com_jce&view=profiles&task=edit&cid[]='. $row->id ); // state $state = JHTML::_('grid.published', $row, $i ); // checked out $checked = JHTML::_('grid.checkedout', $row, $i ); ?>
      lists['order_Dir'], @$this->lists['order'] ); ?> lists['order_Dir'], @$this->lists['order'] ); ?> lists['order_Dir'], @$this->lists['order'] ); ?> lists['order_Dir'], @$this->lists['order'] ); ?> rows ) > 1 ){ echo JHTML::_('grid.order', $this->rows );}?> lists['order_Dir'], @$this->lists['order'] ); ?>
      pagination->getListFooter(); ?>
      user->get ('id'), $row->checked_out ) ) { echo $row->name; } else { ?> name; ?> description;?> pagination->orderUpIcon( $i, true, 'orderup', 'WF_PROFILES_ORDER_UP', $row->ordering ); ?> pagination->orderDownIcon( $i, $n, true, 'orderdown', 'WF_PROFILES_ORDER_DOWN', $row->ordering ); ?> 1 ? '' : 'disabled="disabled"'; ?> class="text_area" style="text-align: center" /> id;?>
      administrator/components/com_jce/views/profiles/tmpl/form.php100644 0 0 7551 12000772076 22272 0ustar 0 0
      loadTemplate('setup');?>
      loadTemplate('features');?>
      loadTemplate('editor');?>
        plugins as $plugin) : if ($plugin->editable && file_exists(WF_EDITOR_PLUGINS.DS.$plugin->name.DS.$plugin->name.'.xml')) : if ($plugin->core == 0) { // Load Language for plugin $language = JFactory::getLanguage(); $language->load('com_jce_' . $plugin->name, JPATH_SITE); } $icon = ''; $class = ''; if ($plugin->icon) : $icon = $this->model->getIcon($plugin); endif; $class = in_array($plugin->name, explode(',', $this->profile->plugins)) ? 'ui-state-default' : 'ui-state-disabled'; echo '
      • '. $icon .''. WFText::_($plugin->title). '
      • '; endif; endforeach;?>
      loadTemplate('plugin');?>
      administrator/components/com_jce/views/profiles/tmpl/form_editor.php100644 0 0 1512 12000772076 23627 0ustar 0 0
      profile->editor_groups as $group => $num) : ?>

      profile->editor_params->render('params[editor]', $group);?>
      administrator/components/com_jce/views/profiles/tmpl/form_features.php100644 0 0 23057 12000772076 24207 0ustar 0 0 profile->layout_params->get('toolbar_align', 'center')); // width and height $width = $this->profile->layout_params->get('editor_width', 600); $height = $this->profile->layout_params->get('editor_height', 'auto'); if (is_numeric($width) || strpos('%', $width) === false) { $width .= 'px'; } if (is_numeric($height) || strpos('%', $height) === false) { $height .= 'px'; } if (strpos('%', $width) !== false) { $height = '600px'; } if (strpos('%', $height) !== false) { $height = 'auto'; } $theme = $this->profile->layout_params->get('toolbar_theme', 'default'); if (strpos($theme, '.') === false) { $theme = $theme.'Skin'; } else { $theme = str_replace(array('o2k7.silver', 'o2k7.black'), array('o2k7.Silver', 'o2k7.Black'), $theme); $theme = preg_replace('#([\w]+)\.([\w]+)#', '$1Skin $1Skin$2', $theme); } ?>
      profile->layout_groups as $group => $num) : ?>

      profile->layout_params->render('params[editor]', $group); ?>
      • profile->layout_params->get('toggle_label', '[Toggle Editor]');?>
          rows); $i++) : ?>
        • rows); $x++) : ?> rows[$x]) as $icon) : ?> plugins as $plugin) : ?> icon && $plugin->name == $icon) : ?> model->getIcon($plugin); ?>

        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

        Path:
        • plugins as $plugin) : if (!in_array($plugin->name, explode(',', implode(',', $this->rows)))) : if ($plugin->icon && (int)$plugin->row == $i) : echo '' . $this->model->getIcon($plugin) . ''; endif; endif; endforeach; ?>
        plugins as $plugin) : if (!$plugin->icon) : if ($plugin->editable) : ?>
      • name, explode(',', $this->profile->plugins)) ? 'checked="checked"' : ''; ?>/> name) . '_DESC'); ?>
      • name, explode(',', $this->profile->plugins)) ? 'checked="checked"' : ''; ?>/> name) . '_DESC'); ?>
      administrator/components/com_jce/views/profiles/tmpl/form_plugin.php100644 0 0 7067 12000772076 23652 0ustar 0 0 plugins as $plugin) : $path = WF_EDITOR_PLUGINS . DS . $plugin->name; $manifest = $path . DS . $plugin->name . '.xml'; if ($plugin->type == 'plugin' && $plugin->editable && is_file($manifest)) : jimport('joomla.filesystem.folder'); jimport('joomla.filesystem.file'); $name = trim($plugin->name); $params = new WFParameter($this->profile->params, $manifest, $plugin->name); // set element paths $params->addElementPath(JPATH_COMPONENT . DS . 'elements'); $params->addElementPath(JPATH_COMPONENT_SITE . DS . 'elements'); $params->addElementPath(WF_EDITOR . DS . 'elements'); // set plugin specific elements if (JFolder::exists($path . DS . 'elements')) { $params->addElementPath($path . DS . 'elements'); } $class = in_array($plugin->name, explode(',', $this->profile->plugins)) ? '' : 'ui-tabs-hidden'; $groups = $params->getGroups(); if (count($groups)) : $count++; ?>

      title);?>

      $num) : echo '
      ' . WFText::_('WF_PROFILES_PLUGINS_' . strtoupper($group)) . ''; echo '

      ' . WFText::_('WF_PROFILES_PLUGINS_' . strtoupper($group) . '_DESC') . '

      '; //echo $params->render('params[' . $plugin->name . '][' . $group . ']', $group); echo $params->render('params[' . $plugin->name . ']', $group); echo '
      '; endforeach; // Get extensions supported by this plugin $extensions = $this->model->getExtensions($plugin->name); foreach ($extensions as $extension) : // get extension xml file $file = $extension->manifest; if ($extension->core == 0) { // Load extension language file $language = JFactory::getLanguage(); $language->load('com_jce_' . $extension->folder . '_' . trim($extension->extension), JPATH_SITE); } if (JFile::exists($file)) : // get params for plugin $key = $plugin->name . '.' . $extension->type . '.' . $extension->extension; $params = new WFParameter($this->profile->params, $file, $key); // add element paths $params->addElementPath(JPATH_COMPONENT . DS . 'elements'); $params->addElementPath(JPATH_COMPONENT_SITE . DS . 'elements'); $params->addElementPath(WF_EDITOR . DS . 'elements'); // render params if (!$params->hasParent()) : echo '
      ' . WFText::_($extension->name) . ''; echo '

      ' . WFText::_($extension->description) . '

      '; foreach ($params->getGroups() as $group => $num) : echo $params->render('params[' . $plugin->name . ']['. $extension->type .'][' . $group . ']', $group); endforeach; echo '
      '; endif; endif; endforeach; ?>
      administrator/components/com_jce/views/profiles/tmpl/form_setup.php100644 0 0 10422 12000772076 23521 0ustar 0 0
      • lists['published']; ?>
      • lists['ordering']; ?>
      • lists['area']; ?>
      • lists['components-select']; ?>
        lists['components']; ?>
      • lists['usergroups']; ?>
      • lists['users']; ?>
      administrator/components/com_jce/views/profiles/view.html.php100644 0 0 43210 12000772076 22300 0ustar 0 0 getModel(); switch ($task) { default: case 'publish': case 'unpublish': case 'remove': case 'save': case 'copy': $filter_order = $app->getUserStateFromRequest("$option.$view.filter_order", 'filter_order', 'p.ordering', 'cmd'); $filter_order_Dir = $app->getUserStateFromRequest("$option.$view.filter_order_Dir", 'filter_order_Dir', '', 'word'); $filter_state = $app->getUserStateFromRequest("$option.$view.filter_state", 'filter_state', '', 'word'); $search = $app->getUserStateFromRequest("$option.$view.search", 'search', '', 'cmd'); $search = JString::strtolower($search); $limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit'), 'int'); $limitstart = $app->getUserStateFromRequest("$option.$view.limitstart", 'limitstart', 0, 'int'); $where = array(); if ($search) { $where[] = 'LOWER( p.name ) LIKE ' . $db->Quote('%' . $db->getEscaped($search, true) . '%', false); } if ($filter_state) { if ($filter_state == 'P') { $where[] = 'p.published = 1'; } else if ($filter_state == 'U') { $where[] = 'p.published = 0'; } } $where = (count($where) ? ' WHERE ' . implode(' AND ', $where) : ''); $orderby = ' ORDER BY ' . $filter_order . ' ' . $filter_order_Dir; // get the total number of records $query = 'SELECT COUNT(p.id)' . ' FROM #__wf_profiles AS p' . $where; $db->setQuery($query); $total = $db->loadResult(); jimport('joomla.html.pagination'); $pagination = new JPagination($total, $limitstart, $limit); $query = 'SELECT p.*, u.name AS editor' . ' FROM #__wf_profiles AS p' . ' LEFT JOIN #__users AS u ON u.id = p.checked_out' . $where //. ' GROUP BY p.id' . $orderby; $db->setQuery($query, $pagination->limitstart, $pagination->limit); $rows = $db->loadObjectList(); if ($db->getErrorNum()) { echo $db->stderr(); return false; } // table ordering $lists['order_Dir'] = $filter_order_Dir; $lists['order'] = $filter_order; // search filter $lists['search'] = $search; $this->assignRef('user', $user); $this->assignRef('lists', $lists); $this->assignRef('rows', $rows); $this->assignRef('pagination', $pagination); //JToolBarHelper::title(WFText::_('WF_PROFILES_TITLE').' : '.WFText::_('WF_PROFILES_LIST'), 'profiles.png' ); WFToolbarHelper::editListX(); WFToolbarHelper::addNewX(); WFToolbarHelper::custom('copy', 'copy.png', 'copy_f2.png', WFText::_('WF_PROFILES_COPY'), true); WFToolbarHelper::export(); if (count($rows) > 1) { WFToolbarHelper::publishList(); WFToolbarHelper::unpublishList(); WFToolbarHelper::deleteList(); } WFToolbarHelper::help('profiles.about'); $options = array( 'button' => 'upload_button', 'task' => 'import', 'labels' => array( 'browse' => WFText::_('WF_LABEL_BROWSE'), 'alert' => WFText::_('WF_PROFILES_IMPORT_BROWSE_ERROR') ) ); $this->document->addScript(JURI::root(true) . '/administrator/components/com_jce/media/js/uploads.js?version=' . $model->getVersion()); $this->document->addScriptDeclaration('jQuery(document).ready(function($){$(":file").upload(' . json_encode($options) . ')});'); $this->setLayout('default'); break; case 'apply': case 'add': case 'edit': // Load media $scripts = array( 'profiles.js', 'extensions.js', 'checklist.js', 'parameter.js' ); // Load scripts foreach ($scripts as $script) { $this->document->addScript(JURI::root(true) . '/administrator/components/com_jce/media/js/' . $script . '?version=' . $model->getVersion()); } $this->document->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/js/colorpicker.js?version=' . $model->getVersion()); $this->document->addScript(JURI::root(true) . '/components/com_jce/editor/libraries/js/select.js?version=' . $model->getVersion()); $cid = JRequest::getVar('cid', array( 0 ), '', 'array'); JArrayHelper::toInteger($cid, array( 0 )); $lists = array(); $row = JTable::getInstance('profiles', 'WFTable'); // load the row from the db table $row->load($cid[0]); // fail if checked out not by 'me' if ($row->isCheckedOut($user->get('id'))) { $msg = JText::sprintf('WF_PROFILES_CHECKED_OUT', $row->name); $this->setRedirect('index.php?option=' . $option . '&view=profiles', $msg, 'error'); return false; } // Load editor params $component = JComponentHelper::getComponent('com_jce'); // Load Language $language = JFactory::getLanguage(); $language->load('com_jce', JPATH_SITE); $language->load('plg_editors_jce', JPATH_ADMINISTRATOR); $plugins = $model->getPlugins(); // load the row from the db table if ($cid[0]) { $row->checkout($user->get('id')); } else { $query = 'SELECT COUNT(id)' . ' FROM #__wf_profiles'; $db->setQuery($query); $total = $db->loadResult(); // get the defaults from xml $row = $model->getDefaultProfile(); if (!is_object($row)) { $row->name = ''; $row->description = ''; $row->types = ''; $row->components = ''; $row->area = 0; $row->types = ''; $row->rows = ''; $row->plugins = ''; $row->published = 1; $row->ordering = 0; $row->params = '{}'; } $row->params = json_decode($row->params . ',' . $component->params); } $row->area = (isset($row->area)) ? $row->area : 0; // build the html select list for ordering $query = 'SELECT ordering AS value, name AS text' . ' FROM #__wf_profiles' . ' WHERE published = 1' . ' AND ordering > -10000' . ' AND ordering < 10000' . ' ORDER BY ordering'; $order = JHTML::_('list.genericordering', $query); $lists['ordering'] = JHTML::_('select.genericlist', $order, 'ordering', 'class="inputbox" size="1"', 'value', 'text', intval($row->ordering)); $lists['published'] = JHTML::_('select.booleanlist', 'published', 'class="inputbox"', $row->published); $exclude = array( 'com_admin', 'com_cache', 'com_jce', 'com_wrapper', 'com_search', 'com_user' ); if (WF_JOOMLA15) { $query = "SELECT `option` AS value, name AS text" . " FROM #__components" . " WHERE parent = 0" . " AND enabled = 1" . " ORDER BY name"; } else { $query = "SELECT element AS value, name AS text" . " FROM #__extensions" . " WHERE type = " . $db->Quote('component') . " AND client_id = 1 AND enabled = 1" . " ORDER BY name"; } $db->setQuery($query); $components = $db->loadObjectList(); $options = array(); for ($i = 0; $i < count($components); $i++) { if (!in_array($components[$i]->value, $exclude)) { $options[] = $components[$i]; } } $disabled = (!$row->components) ? ' disabled="disabled"' : ''; //$lists['components'] = JHTML::_('select.genericlist', $options, 'components[]', 'class="inputbox levels" size="10" multiple="multiple"' . $disabled, 'value', 'text', explode(',', $row->components)); $lists['components'] = '
        '; foreach($options as $option) { $checked = in_array($option->value, explode(',', $row->components)) ? ' checked="checked"' : ''; $lists['components'] .= '
      • '; } $lists['components'] .= '
      '; $options = array(); $options[] = JHTML::_('select.option', 'all', WFText::_('WF_PROFILES_COMPONENTS_ALL')); $options[] = JHTML::_('select.option', 'select', WFText::_('WF_PROFILES_COMPONENTS_SELECT')); $lists['components-select'] = JHTML::_('select.radiolist', $options, 'components-select', 'class="inputbox"', 'value', 'text', $row->components ? 'select' : 'all', false); $options = array(); $options[] = JHTML::_('select.option', '', '-- ' . WFText::_('WF_PROFILES_AREA_SELECT') . ' --'); $options[] = JHTML::_('select.option', 0, WFText::_('WF_PROFILES_AREA_BOTH')); $options[] = JHTML::_('select.option', 1, WFText::_('WF_PROFILES_AREA_FRONTEND')); $options[] = JHTML::_('select.option', 2, WFText::_('WF_PROFILES_AREA_BACKEND')); $lists['area'] = JHTML::_('select.genericlist', $options, 'area', 'class="inputbox levels" size="1"', 'value', 'text', $row->area); $query = 'SELECT types' . ' FROM #__wf_profiles' // Exclude ROOT, USERS, Super Administrator, Public Frontend, Public Backend . ' WHERE id NOT IN (17,28,29,30)'; $db->setQuery($query); $types = $db->loadResultArray(); if (WF_JOOMLA15) { // get list of Groups for dropdown filter $query = 'SELECT id AS value, name AS text' . ' FROM #__core_acl_aro_groups' // Exclude ROOT, USERS, Super Administrator, Public Frontend, Public Backend . ' WHERE id NOT IN (17,28,29,30)'; $db->setQuery($query); $types = $db->loadObjectList(); $i = '-'; $options = array( JHTML::_('select.option', '0', WFText::_('Guest')) ); foreach ($types as $type) { $options[] = JHTML::_('select.option', $type->value, $i . WFText::_($type->text)); $i .= '|—'; } } else { $options = array(); $join = ' LEFT JOIN #__usergroups AS b ON a.lft > b.lft AND a.rgt < b.rgt'; $where = ''; $query = 'SELECT a.id AS value, a.title AS text, COUNT(DISTINCT b.id) AS level' . ' FROM #__usergroups AS a' . ' LEFT JOIN #__usergroups AS b ON a.lft > b.lft AND a.rgt < b.rgt' . ' GROUP BY a.id, a.title, a.lft, a.rgt' . ' ORDER BY a.lft ASC' ; // Prevent parenting to children of this item. /* if ($id = $this->form->getValue('id')) { $query->join('LEFT', '`#__usergroups` AS p ON p.id = '.(int) $id); $query->where('NOT(a.lft >= p.lft AND a.rgt <= p.rgt)'); } */ // Get the options. $db->setQuery($query); $options = $db->loadObjectList(); // Pad the option text with spaces using depth level as a multiplier. for ($i = 0, $n = count($options); $i < $n; $i++) { $options[$i]->text = str_repeat('|—', $options[$i]->level) . $options[$i]->text; } } $lists['usergroups'] = '
        '; foreach($options as $option) { $checked = in_array($option->value, explode(',', $row->types)) ? ' checked="checked"' : ''; $lists['usergroups'] .= '
      • '; } $lists['usergroups'] .= '
      '; $options = array(); if ($row->id && $row->users) { $query = 'SELECT id as value, username as text' . ' FROM #__users' . ' WHERE id IN (' . $row->users . ')'; $db->setQuery($query); $gusers = $db->loadObjectList(); if ($gusers) { foreach ($gusers as $guser) { $options[] = JHTML::_('select.option', $guser->value, $guser->text); } } } $lists['users'] = JHTML::_('select.genericlist', $options, 'users[]', 'class="inputbox users" size="10" multiple="multiple"', 'value', 'text', ''); $rows = $model->getRowArray($row->rows); $model->getEditorParams($row); $model->getLayoutParams($row); $params = new WFParameter($row->params, '', 'editor'); // load other theme css foreach ($model->getThemes() as $theme) { $files = JFolder::files($theme, 'ui([\w\.]*)\.css$'); foreach ($files as $file) { $this->document->addStyleSheet(JURI::root(true) . '/components/com_jce/editor/tiny_mce/themes/advanced/skins/' . basename($theme) . '/' . $file); } } $this->assignRef('lists', $lists); $this->assignRef('profile', $row); $this->assignRef('rows', $rows); $this->assignRef('params', $params); $this->assignRef('plugins', $plugins); $options = WFToolsHelper::getOptions($params); $this->document->addScriptDeclaration('jQuery(document).ready(function($){$.jce.Profiles.init(' . json_encode($options) . ')});'); if ($row->id) { JToolBarHelper::title(WFText::_('WF_ADMINISTRATION') . ' :: ' . WFText::_('WF_PROFILES_EDIT') . ' - [' . $row->name . ']', 'logo.png'); } else { JToolBarHelper::title(WFText::_('WF_ADMINISTRATION') . ' :: ' . WFText::_('WF_PROFILES_NEW'), 'logo.png'); } WFToolbarHelper::save(); WFToolbarHelper::apply(); WFToolbarHelper::cancel('cancelEdit', 'Close'); WFToolbarHelper::help('profiles.edit'); JRequest::setVar('hidemainmenu', 1); $this->setLayout('form'); break; } $this->assignRef('model', $model); parent::display($tpl); } }administrator/components/com_jce/views/updates/tmpl/default.php100644 0 0 3020 12000772076 22560 0ustar 0 0
      administrator/components/com_jce/views/updates/view.html.php100644 0 0 3315 12000772076 22104 0ustar 0 0 getModel(); $this->document->addScript('components/com_jce/media/js/update.js?version=' . $model->getVersion()); $options = array( 'language' => array( 'check' => WFText::_('WF_UPDATES_CHECK'), 'install' => WFText::_('WF_UPDATES_INSTALL'), 'installed' => WFText::_('WF_UPDATES_INSTALLED'), 'no_updates' => WFText::_('WF_UPDATES_NONE'), 'high' => WFText::_('WF_UPDATES_HIGH'), 'medium' => WFText::_('WF_UPDATES_MEDIUM'), 'low' => WFText::_('WF_UPDATES_LOW'), 'full' => WFText::_('WF_UPDATES_FULL'), 'patch' => WFText::_('WF_UPDATES_PATCH'), 'auth_failed' => WFText::_('WF_UPDATES_AUTH_FAIL'), 'update_info' => WFText::_('WF_UPDATES_INFO'), 'install_info' => WFText::_('WF_UPDATES_INSTALL_INFO'), 'check_updates' => WFText::_('WF_UPDATES_CHECKING') ) ); $options = json_encode($options); $this->document->addScriptDeclaration('jQuery(document).ready(function($){$.jce.Update.init('.$options.');});'); parent::display($tpl); } } ?> administrator/components/com_jce/views/users/tmpl/default.php100644 0 0 6322 12000772076 22264 0ustar 0 0
      lists['group'];?>

      items ); $i < $n; $i++) { $row = $this->items[$i]; ?>
      lists['order_Dir'], @$this->lists['order'] ); ?> lists['order_Dir'], @$this->lists['order'] ); ?> lists['order_Dir'], @$this->lists['order'] ); ?>
      pagination->getListFooter(); ?>
      id );?> name; ?> username; ?> groupname ); ?>
      administrator/components/com_jce/views/users/view.html.php100644 0 0 14167 12000772076 21627 0ustar 0 0 getModel(); $this->document->addScript('components/com_jce/media/js/users.js?version=' . $model->getVersion()); $filter_order = $app->getUserStateFromRequest("$option.$view.filter_order", 'filter_order', 'a.name', 'cmd' ); $filter_order_Dir = $app->getUserStateFromRequest("$option.$view.filter_order_Dir", 'filter_order_Dir', '', 'word' ); $filter_type = $app->getUserStateFromRequest("$option.$view.filter_type", 'filter_type', 0, 'word' ); $search = $app->getUserStateFromRequest("$option.$view.search", 'search', '', 'cmd' ); $search = JString::strtolower( $search ); $limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit'), 'int' ); $limitstart = $app->getUserStateFromRequest("$option.$view.limitstart", 'limitstart', 0, 'int' ); $where = array(); if (isset( $search ) && $search!= '') { $searchEscaped = $db->Quote( '%'.$db->getEscaped( $search, true ).'%', false ); $where[] = 'a.username LIKE '.$searchEscaped.' OR a.email LIKE '.$searchEscaped.' OR a.name LIKE '.$searchEscaped; } $join = ''; if (WF_JOOMLA15) { if ($filter_type) { $where[] = 'a.gid ='.(int)$filter_type; } // exclude any child group id's for this user $pgids = $acl->get_group_children( $currentUser->get('gid'), 'ARO', 'RECURSE' ); if (is_array( $pgids ) && count( $pgids ) > 0) { JArrayHelper::toInteger($pgids); $where[] = 'a.gid NOT IN (' . implode( ',', $pgids ) . ')'; } // Exclude ROOT, USERS, Super Administrator, Public Frontend, Public Backend $where[] = 'a.gid NOT IN (17,28,29,30)'; } else { if ($filter_type) { $where[] = 'map.group_id = LOWER('.$db->Quote($filter_type).') '; } } // Only unblocked users $where[] = 'a.block = 0'; $orderby = ' ORDER BY '. $filter_order .' '. $filter_order_Dir; $where = ( count( $where ) ? ' WHERE (' . implode( ') AND (', $where ) . ')' : '' ); jimport('joomla.html.pagination'); if (WF_JOOMLA15) { $query = 'SELECT COUNT(a.id)' . ' FROM #__users AS a' . $where ; $db->setQuery($query); $total = $db->loadResult(); $pagination = new JPagination($total, $limitstart, $limit); $query = 'SELECT a.id, a.name, a.username, g.name AS groupname' . ' FROM #__users AS a' . ' INNER JOIN #__core_acl_aro AS aro ON aro.value = a.id' . ' INNER JOIN #__core_acl_groups_aro_map AS gm ON gm.aro_id = aro.id' . ' INNER JOIN #__core_acl_aro_groups AS g ON g.id = gm.group_id' . $where . ' GROUP BY a.id, a.name, a.username, g.name' . $orderby ; } else { // Join over the group mapping table. $query = 'SELECT COUNT(a.id)' . ' FROM #__users AS a' . ' LEFT JOIN #__user_usergroup_map AS map ON map.user_id = a.id' . $where ; $db->setQuery($query); $total = $db->loadResult(); $pagination = new JPagination($total, $limitstart, $limit); $query = 'SELECT a.id, a.name, a.username, g.title AS groupname' . ' FROM #__users AS a' . ' LEFT JOIN #__user_usergroup_map AS map ON map.user_id = a.id' . ' LEFT JOIN #__usergroups AS g ON g.id = map.group_id' . $where . ' GROUP BY a.id, a.name, a.username, g.title' . $orderby ; } $db->setQuery($query, $pagination->limitstart, $pagination->limit); $rows = $db->loadObjectList(); $options = array( JHTML::_('select.option', '0', '- '. WFText::_('WF_USERS_GROUP_SELECT') .' -' ) ); if (WF_JOOMLA15) { // get list of Groups for dropdown filter $query = 'SELECT id AS value, name AS text' . ' FROM #__core_acl_aro_groups' // Exclude ROOT, USERS, Super Administrator, Public Frontend, Public Backend . ' WHERE id NOT IN (17,28,29,30)' ; $db->setQuery($query); $types = $db->loadObjectList(); $i = '-'; foreach( $types as $type ){ $options[] = JHTML::_('select.option', $type->value, $i . WFText::_( $type->text ) ); $i .= '-'; } } else { $join = ' LEFT JOIN #__usergroups AS b ON a.lft > b.lft AND a.rgt < b.rgt'; $where = ''; $query = 'SELECT a.id AS value, a.title AS text, COUNT(DISTINCT b.id) AS level' . ' FROM #__usergroups AS a' . ' LEFT JOIN #__usergroups AS b ON a.lft > b.lft AND a.rgt < b.rgt' . ' GROUP BY a.id, a.title, a.lft, a.rgt' . ' ORDER BY a.lft ASC' ; // Get the options. $db->setQuery($query); $items = $db->loadObjectList(); // Pad the option text with spaces using depth level as a multiplier. for ($i = 0, $n = count($items); $i < $n; $i++) { $options[] = JHTML::_('select.option', $items[$i]->value, str_repeat('- ',$items[$i]->level).$items[$i]->text); } } $lists['group'] = JHTML::_('select.genericlist', $options, 'filter_type', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', "$filter_type" ); // table ordering $lists['order_Dir'] = $filter_order_Dir; $lists['order'] = $filter_order; // search filter $lists['search']= $search; $this->assignRef('user', JFactory::getUser()); $this->assignRef('lists', $lists); $this->assignRef('items', $rows); $this->assignRef('pagination', $pagination); parent::display($tpl); } }administrator/language/en-GB/en-GB.com_jce.ini100644 0 0 311374 12000772100 16565 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 ERROR_403 ="ERROR 403:Access Forbidden" ;++ Added in 2.0.16 ++ JERROR_ALERTNOAUTHOR ="You are not authorised to view this resource" ;# Description WF_ADMIN_TITLE ="JCE Editor" WF_ADMIN_DESC ="

      JCE (Joomla! Content Editor) is a configuration and extension system for Moxiecode's TinyMCE editor, for the Joomla! CMS.

      Credits:

      JCE would not exist without these great libraries/scripts:

      JCE is dedicated to my father.

      Changelog - for a full changelog see http://www.joomlacontenteditor.net/support/releases/changelog/editor

      " WF_ADMIN_VERSION ="Version" WF_EDITOR_TITLE ="JCE Editor" PLG_QUICKICON_JCEFILEBROWSER_XML_DESCRIPTION ="Control Panel Quick Icon for the JCE File Browser" ;#################### Sub-menu & View names ############################## WF_ADMINISTRATION ="JCE Administration" WF_CPANEL ="Control Panel" WF_CONFIGURATION ="Editor Global Configuration" WF_CONFIG ="Editor Global Configuration" WF_PROFILES ="Editor Profiles" WF_EXTENSIONS ="Plugin Extensions" WF_PLUGINS ="Plugins" WF_INSTALL ="Install Add-ons" WF_INSTALLER ="Install Add-ons" WF_BACKUP ="Backup" WF_MEDIABOX ="JCE MediaBox Parameters" WF_HELP ="Help" ;#################### Tables Install / Restore Errors #################### WF_INSTALL_PROFILES_NOFILE_ERROR ="Profile XML file not found" WF_INSTALL_PROFILES_ERROR ="Profiles import failed" WF_INSTALL_PLUGINS_NOFILE_ERROR ="Plugins XML file not found" WF_INSTALL_PLUGINS_ERROR ="Plugins import failed" ;#################### CPanel ############################################# WF_CPANEL_TITLE ="Control Panel" WF_CPANEL_LICENCE ="Licence" WF_CPANEL_LICENCE_DESC ="The Licence JCE is released under" WF_CPANEL_VERSION ="Version" WF_CPANEL_VERSION_DESC ="The Editor version currently installed" WF_CPANEL_TABLES ="Tables" WF_CPANEL_TABLES_DESC ="State of the JCE Database Tables.
      Clicking [Remove / Repair] will remove the tables and should only be done when uninstalling JCE or attempting to repair the tables." WF_CPANEL_OK ="Ok" WF_CPANEL_REMOVE ="Remove / Repair" WF_CPANEL_UPDATE ="Updates" WF_CPANEL_UPDATE_CHECK ="Check for Updates" WF_CPANEL_REMOVE_WARNING ="This action will remove the JCE database tables and should only be done when
      1. uninstalling JCE completely
      2. when attempting to repair the JCE database tables

      Continue?" WF_CPANEL_FEED ="News Feed" WF_CPANEL_FEED_DESC ="Show JCE Latest News Feed" WF_CPANEL_FEED_NONE ="No News Feed Available" WF_CPANEL_FEED_LIMIT ="News Feed Limit" WF_CPANEL_FEED_LIMIT_DESC ="Number of News Feed items to show " WF_CPANEL_FEED_DISABLED ="News Feed Disabled" WF_CPANEL_FEED_ENABLE ="Enable News Feed" WF_CPANEL_FEED_LOAD ="Loading Feed..." WF_CPANEL_HELP ="JCE Control Panel Help" WF_CPANEL_HELP_ABOUT ="About the JCE Control Panel" WF_CPANEL_HELP_PREFERENCES ="Options" WF_CPANEL_HELP_UPDATES ="Updates" WF_CPANEL_BROWSER_DESC ="File Browser::Manage files and folders" ;++ Added in 2.0.16 ++ WF_CPANEL_SUPPORT ="Support" WF_CPANEL_SUPPORT_DESC ="Documentation, FAQ, Tutorials and Forum" ;++ Added in 2.1 ++ WF_QUICKICON_BROWSER ="JCE File Browser" ;#################### Updates ########################################### WF_UPDATES ="Updates" WF_UPDATES_UPDATE ="Update" WF_UPDATES_CHECK ="Check for Updates" WF_UPDATES_CHECKING ="Checking for Updates..." WF_UPDATES_DOWNLOAD ="Download Selected Updates" WF_UPDATES_INSTALL ="Install Selected Updates" WF_UPDATES_INSTALLED ="Installed" WF_UPDATES_NAME ="Name" WF_UPDATES_VERSION ="Version" WF_UPDATES_AVAILABLE ="Updates Available" WF_UPDATES_NONE ="No Updates Available" WF_UPDATES_TYPE ="Type" WF_UPDATES_FULL ="Full Install" WF_UPDATES_PATCH ="Patch Update" WF_UPDATES_PRIORITY ="Priority" WF_UPDATES_HIGH ="High" WF_UPDATES_MEDIUM ="Medium" WF_UPDATES_LOW ="Low" WF_UPDATES_AUTH_FAIL ="This add-on requires a valid subscription to update. Please renew or purchase a subscription. If you have a valid subscription enter the Transaction ID in the Update Options tab in the Options dialog. " WF_UPDATES_INSTALL_ERROR ="Unable to install update." WF_UPDATES_INFO ="Update Information" WF_UPDATES_INSTALL_INFO ="Install Information" WF_UPDATES_KEY ="Update Key" WF_UPDATES_KEY_DESC ="Subscription / Transaction ID required for subscription plugin updates. Available from your Subscription History page at http://www.joomlacontenteditor.net." WF_UPDATES_TYPES ="Update Types" WF_UPDATES_TYPES_DESC ="Update types to list" WF_UPDATES_OPTION_ALL ="Show All" WF_UPDATES_OPTION_FULL ="Full Version Updates Only" WF_UPDATES_OPTION_PATCHES ="Patch Updates Only" WF_UPDATES_DOWNLOAD_ERROR ="Update Error : Error downloading file" WF_UPDATES_DOWNLOAD_ERROR_DATA_TRANSFER ="Update Error : Data transfer failed" WF_UPDATES_DOWNLOAD_ERROR_MISSING_DATA ="Update Error : Missing data" WF_UPDATES_INSTALL_ERROR ="Update Error : Install failed" WF_UPDATES_DOWNLOAD_ERROR_NO_CONNECT ="Update Error : Connection to update server failed" WF_UPDATES_ERROR_FILE_VERIFICATION_FAIL ="Update Error : File failed verification" WF_UPDATES_ERROR_FILE_MISSING_OR_INVALID="Update Error : File missing or invalid" WF_UPDATES_ERROR_FILE_EXTRACT_FAIL ="Update Error : File extraction failed" WF_UPDATES_NOSUPPORT ="Updates Not Available" ;#################### Preferences ##################################### WF_PREFERENCES_UPDATES ="Update Options" WF_PREFERENCES_STANDARD ="General Options" WF_PREFERENCES_HELP ="Help Options" WF_PREFERENCES_SAVED ="Options Saved" WF_HELP_URL ="Help URL" WF_HELP_URL_DESC ="URL to Help site (no trailing slash)" WF_PREFERENCES ="Options" WF_PREFERENCES_TITLE ="Administration Options" WF_PREFERENCES_SAVED ="Options Saved" WF_ADMIN_THEME ="Theme" WF_ADMIN_THEME_DESC ="Theme for JCE Administration interface using JQuery UI. Additional themes are available from http://jqueryui.com/themeroller/" ;++ Added in 2.0.8++ WF_PREFERENCES_PERMISSIONS ="Permissions" ;#################### Global Configuration ############################ WF_CONFIG_TITLE ="JCE Editor Global Configuration" WF_CONFIG_DESC ="Edit the JCE Editor Global Configuration" WF_CONFIG_SETUP ="Setup" WF_CONFIG_CLEANUP ="Cleanup & Output" WF_CONFIG_FORMAT ="Formatting & Display" WF_CONFIG_ADVANCED ="Advanced" WF_CONFIG_OTHER ="Miscellaneous" WF_CONFIG_HELP ="JCE Global Configuration Help" WF_CONFIG_HELP_ABOUT ="JCE Global Configuration" WF_CONFIG_HELP_SETUP ="Setup" WF_CONFIG_HELP_CLEANUP ="Cleanup & Output" WF_CONFIG_HELP_FORMAT ="Formatting and Display" WF_CONFIG_HELP_ADVANCED ="Advanced Options" WF_CONFIG_HELP_COMPRESSION ="Compression Options" WF_CONFIG_COMPRESSION ="Compression Options" WF_CONFIG_SAVED ="Configuration Saved" ;#################### Profiles ####################################### WF_PROFILES_TITLE ="JCE Editor Profiles" WF_PROFILES_DESC ="Create / Edit profiles for the editor" WF_PROFILES_LIST ="List" WF_PROFILES_NAME ="Name" WF_PROFILES_NAME_DESC ="Name of the Profile" WF_PROFILES_STATE ="State" WF_PROFILES_DESCRIPTION ="Description" WF_PROFILES_DESCRIPTION_DESC ="Short description of the Profile" WF_PROFILES_ORDERING ="Ordering" WF_PROFILES_ORDERING_DESC ="Ordering of the Profile" WF_PROFILES_ORDER_UP ="Move Up" WF_PROFILES_ORDER_DOWN ="Move Down" WF_PROFILES_EDIT ="Edit Profile" WF_PROFILES_NEW ="New Profile" WF_PROFILES_SETUP ="Setup" WF_PROFILES_SETUP_DESC ="Set name, description, ordering and restriction settings for the profile" WF_PROFILES_FEATURES ="Features & Layout" WF_PROFILES_FEATURES_DESC ="Set available buttons and commands for the profile" WF_PROFILES_FEATURES_ADDITIONAL ="Additional Features" WF_PROFILES_FEATURES_LAYOUT ="Editor Layout" WF_PROFILES_ASSIGNMENT ="Assignment" WF_PROFILES_DETAILS ="Details" WF_PROFILES_ASSIGNMENT_DESC ="Assign the Profile to specific components and/or assign the profile to usertypes and/or users. At least one option (component, user or usertype) must assigned." WF_PROFILES_COMPONENTS ="Components" WF_PROFILES_COMPONENTS_DESC ="Assign the Profile to the selected components. This profile will only be available when using one of the selected components. Check 'All Components' for normal operation." WF_PROFILES_COMPONENTS_ALL ="All Components" WF_PROFILES_COMPONENTS_SELECT ="Select from list" WF_PROFILES_AREA ="Area" WF_PROFILES_AREA_SELECT ="Select Area" WF_PROFILES_AREA_BOTH ="Front-end & Back-end" WF_PROFILES_AREA_FRONTEND ="Front-end" WF_PROFILES_AREA_BACKEND ="Back-end" WF_PROFILES_AREA_DESC ="Assign the profile to this Joomla! Area" ;++ Added in 2.2.0 ++ WF_PROFILES_TOGGLE_ALL ="Toggle All" ;++ WF_PROFILES_REMOVE_USERS ="Remove Users" WF_PROFILES_EXPORT ="Export" WF_PROFILES_IMPORT ="Import Profile" WF_PROFILES_IMPORT_IMPORT ="Import" WF_PROFILES_IMPORT_BROWSE_ERROR ="Incorrect file type : File must be an XML file" WF_PROFILES_IMPORT_NOFILE ="Import failed : No file to import from" WF_PROFILES_SAVED_CHANGES ="Changes saved to profile '%s'" WF_PROFILES_SAVED ="Profile '%s' saved" WF_PROFILES_EXTRAS ="Extras" WF_PROFILES_OTHER_PLUGINS ="Additional Plugins" WF_PROFILES_OTHER_PLUGINS_DESC ="Plugins that do not appear in the editor layout and do not have an icon or dialog." WF_PROFILES_GROUPS ="User Group" WF_PROFILES_GROUPS_DESC ="Assign the Profile to the selected User Groups" WF_PROFILES_USERS ="Users" WF_PROFILES_USERS_DESC ="Assign the Profile to the selected Users" WF_PROFILES_USERS_ADD ="Add Users" WF_PROFILES_LAYOUT ="Layout / Buttons" WF_PROFILES_FEATURES_LAYOUT_AVAILABLE ="Available Buttons & Toolbars" WF_PROFILES_FEATURES_LAYOUT_AVAILABLE_DESC="
      Available buttons not yet assigned to the Editor Layout
      • These buttons will not appear in the editor layout when editing.
      • Buttons or rows can be dragged into the Current Editor Layout to make them available.
      " WF_PROFILES_FEATURES_LAYOUT_EDITOR ="Current Editor Layout" WF_PROFILES_FEATURES_LAYOUT_EDITOR_DESC ="
      Buttons assigned to the Editor Layout
      • Drag & Drop buttons or rows to re-order.
      • Buttons or rows can be removed from the layout by dragging them into the Available Buttons layout.
      " WF_PROFILES_LEGEND ="Button Legend" WF_PROFILES_EDITOR_SETUP ="Setup" WF_PROFILES_EDITOR_EDITOR ="Setup" WF_PROFILES_EDITOR_TABS ="Tabs" WF_PROFILES_EDITOR_OPTIONS ="Options" WF_PROFILES_EDITOR_FILESYSTEM ="Filesystem" WF_PROFILES_EDITOR_PLUGINS ="Plugin Options" WF_PROFILES_EDITOR_PARAMETERS ="Editor Parameters" WF_PROFILES_EDITOR_PARAMETERS_DESC ="Set editor parameters for the profile" WF_PROFILES_EDITOR_CODE ="Features" ;++ Added in 2.1.4 ++ WF_PROFILES_EDITOR_TYPOGRAPHY ="Typography" WF_PROFILES_PLUGIN_PARAMETERS ="Plugin Parameters" WF_PROFILES_EDITOR_ADVANCED ="Advanced" WF_PROFILES_PLUGIN_PARAMETERS_DESC ="Set available parameters for each plugin" WF_PROFILES_PLUGINS_STANDARD ="Standard Parameters" WF_PROFILES_PLUGINS_STANDARD_DESC ="Standard Parameters for the plugin" WF_PROFILES_PLUGINS_DEFAULTS ="Default Values" WF_PROFILES_PLUGINS_DEFAULTS_DESC ="Set default values for plugin options" WF_PROFILES_PLUGINS_ACCESS ="Permissions" WF_PROFILES_PLUGINS_ACCESS_DESC ="Enable or disable plugin features" WF_PROFILES_PLUGINS_ADVANCED ="Advanced Parameters" WF_PROFILES_PLUGINS_ADVANCED_DESC ="Set advanced plugin parameters" WF_PROFILES_NO_PLUGINS ="No Plugins in Editor Layout" WF_PROFILES_UPLOAD_FAILED ="Profile file upload failed" WF_PROFILES_UPLOAD_NOFILE ="Profile upload file not found" WF_PROFILES_SELECT_ERROR ="No Profile selected" WF_PROFILES_IMPORT_ERROR ="Profile import failed" WF_PROFILES_IMPORT_SUCCESS ="%s Profile(s) imported successfully" WF_PROFILES_DELETED ="%s Profile(s) deleted successfully" WF_PROFILES_COPIED ="%s Profile(s) copied successfully" WF_PROFILES_COPY_OF ="Copy of %s" WF_PROFILES_COPY ="Copy" WF_PROFILES_HELP ="JCE Profiles Help" WF_PROFILES_HELP_ABOUT ="About Profiles" WF_PROFILES_HELP_MANAGE ="Managing Profiles" WF_PROFILES_HELP_MANAGE_COPY ="Copying Profiles" WF_PROFILES_HELP_MANAGE_DELETE ="Deleting Profiles" WF_PROFILES_HELP_MANAGE_EXPORT ="Exporting Profiles" WF_PROFILES_HELP_MANAGE_IMPORT ="Importing Profiles" WF_PROFILES_HELP_MANAGE_ORDERING ="Ordering Profiles" WF_PROFILES_HELP_MANAGE_ENABLE ="Enable and Disable Profiles" WF_PROFILES_HELP_EDIT ="Creating and Editing Profiles" WF_PROFILES_HELP_EDIT_SETUP ="Setup" WF_PROFILES_HELP_EDIT_FEATURES ="Features & Layout" WF_PROFILES_HELP_EDIT_EDITOR ="Editor Parameters" WF_PROFILES_HELP_EDIT_PLUGINS ="Plugin Parameters" WF_PROFILES_HELP_EDIT_WIDGETS ="Parameter Widgets" WF_PROFILES_SAMPLE_DEFAULT ="Default Profile for all users with edit access" WF_PROFILES_SAMPLE_FRONT ="Sample Front-end Profile for Authors, Editors, Publishers" WF_PROFILES_CHECKED_OUT ="The Profile %s is being edited" WF_PROFILES_VIEW_SELECT ="Please select a %s to %s" WF_PROFILES_DEFAULT_DESC ="Default Profile for all users" WF_PROFILES_FRONTEND_DESC ="Sample Front-end Profile" ;++ Added in 2.2.4 ++ WF_PROFILES_ENABLED ="Enabled" WF_PROFILES_ENABLED_DESC ="Profile State" WF_PROFILES_EDITOR_LAYOUT ="Editor Layout" ;#################### Legend ###################### WF_LEGEND_TITLE ="Button Legend" WF_LEGEND_NAME ="Name" WF_LEGEND_BUTTON ="Icon" ;################### Users ######################## WF_USERS_NAME ="Name" WF_USERS_USERNAME ="Username" WF_USERS_GROUP ="Group" WF_USERS_GROUP_SELECT ="Select Group" ;#################### Plugins Import Errors ########################### WF_PLUGINS_IMPORT_ERROR ="Unable to import plugins data" WF_PLUGINS_IMPORT_SUCCESS ="Plugins table data imported successfully" ;#################### Installer ####################################### WF_INSTALLER_TITLE ="JCE Add-ons" WF_INSTALLER_DESC ="Install and Manage JCE Add-ons
      (plugins and languages)" WF_INSTALLER_INSTALL ="Install" WF_INSTALLER_UNINSTALL ="Uninstall" WF_INSTALLER_DISCOVER ="Search" WF_INSTALLER_MANAGE ="Install / Uninstall" WF_INSTALLER_PLUGINS ="Plugins" WF_INSTALLER_PLUGIN ="Plugin" WF_INSTALLER_SUMMARY_INSTALL ="Install Summary" WF_INSTALLER_SUMMARY_UNINSTALL ="Uninstall Summary" WF_INSTALLER_RESULT ="Result" WF_INSTALLER_ADDON ="Add-on" WF_INSTALLER_TYPE ="Type" WF_INSTALLER_VERSION ="Version" WF_INSTALLER_PLUGINS_INSTALLED ="All Plugins are correctly installed" WF_INSTALLER_PLUGIN_INSTALL ="Plugin Install" WF_INSTALLER_PLUGIN_UNINSTALL ="Plugin Uninstall" WF_INSTALLER_NO_PLUGINS ="No Non-core plugins installed" WF_INSTALLER_MKDIR_ERROR ="Failed to create directory" WF_INSTALLER_EXTENSIONS ="Extensions" WF_INSTALLER_EXTENSION ="Extension" WF_INSTALLER_EXTENSION_INSTALL ="Extension Install" WF_INSTALLER_EXTENSION_UNINSTALL ="Extension Uninstall" WF_INSTALLER_EXTENSION_FIELD_EMPTY ="Extension field empty, unable to remove files." WF_INSTALLER_EXTENSION_NO_PLUGIN ="Associated plugin not installed." WF_INSTALLER_EXTENSION_VERSION_ERROR ="Incompatible extension. A newer version of this extension is required." WF_INSTALLER_EXTENSION_PLUGIN_MANIFEST_ERROR="Unable to locate parent plugin manifest file" WF_INSTALLER_NO_PLUGIN_FILE ="No Plugin file specified" WF_INSTALLER_PHP_INSTALL_FILE_ERROR ="Unable to copy PHP install file" WF_INSTALLER_PHP_UNINSTALL_FILE_ERROR ="Unable to copy PHP uninstall file" WF_INSTALLER_EXISTS ="%s already installed" WF_INSTALLER_PLUGIN_EXTENSION_ERROR ="Unable to install extension %s" WF_INSTALLER_PLUGIN_PROFILE_ERROR ="Unable to add plugin to Default Group" WF_INSTALLER_SETUP_COPY_ERROR ="Unable to copy setup file" WF_INSTALLER_CUSTOM_INSTALL_ERROR ="Custom Install Routine failed" WF_INSTALLER_CUSTOM_UNINSTALL_ERROR ="Custom Uninstall Routine failed" WF_INSTALLER_EXTENSIONS_INSTALLED ="All Plugin Extensions are correctly installed" WF_INSTALLER_LANGUAGES ="Languages" WF_INSTALLER_PLUGIN_FIELD_EMPTY ="Plugin field empty, unable to remove files." WF_INSTALLER_MANIFEST_LOAD_ERROR ="Unable to load Manifest file" WF_INSTALLER_MANIFEST_INVALID ="Invalid Manifest file" WF_INSTALLER_REMOVE_EXTENSION_ERROR ="Unable to remove Extension" WF_INSTALLER_REMOVE_FROM_PROFILE_ERROR ="Unable to remove from Profile %s" WF_INSTALLER_MANIFEST_ERROR ="Manifest file invalid or not found. Extension entry removed from the database. Extension files may not have been successfully removed." WF_INSTALLER_LANGUAGE_INSTALL ="Language Install" WF_INSTALLER_LANGUAGE ="Language" WF_INSTALLER_LANGUAGE_UNINSTALL ="Language Uninstall" WF_INSTALLER_LANGUAGE_NO_TAG ="No language tag specified" WF_INSTALL_DELETE_FILES_ERROR ="Unable to delete files" WF_INSTALLER_LANGUAGE_PATH_EMPTY ="Language path empty, unable to remove files" WF_INSTALLER_BROWSE ="Browse" WF_INSTALLER_UPLOAD ="Install Package" WF_INSTALLER_FILETYPE_ERROR ="Incorrect file type. File type must be zip,tar,gz,gzip,tgz,tbz2,bz2 or bzip2 " WF_INSTALLER_RELATED ="Related Joomla! extensions" WF_INSTALLER_NO_RELATED ="No related Joomla! extensions found" WF_INSTALLER_LEGACY_ERROR ="Legacy Extension - Cannot install" WF_INSTALLER_NO_PACKAGE ="Install failed - Could not locate install package" WF_INSTALLER_INVALID_SRC ="Install failed - Invalid install directory" WF_INSTALLER_NO_FILE ="Install failed - No file specified" WF_INSTALLER_PACKAGE ="Package File or Folder" WF_INSTALLER_PACKAGE_DESC ="Select package file or specify a local path to package folder" WF_INSTALLER_INSTALL_DESC ="Select a package file or enter the full server path to a package file or folder" WF_INSTALLER_DISCOVER_DESC ="Search for and repair incomplete plugin installations" WF_INSTALLER_DISCOVER_DISCOVER ="Search for plugins" WF_INSTALLER_INSTALL_SELECTED ="Install Selected" WF_INSTALLER_UNINSTAL ="Remove Add-ons" WF_INSTALLER_UNINSTALL_DESC ="Select Add-ons to remove" WF_INSTALLER_UNINSTALL_SELECTED ="Remove Selected" WF_INSTALLER_PLUGINS_DESC ="List of installed JCE Plugins, eg: Captions, IFrames" WF_INSTALLER_EXTENSIONS_DESC ="List of installed JCE Extensions, eg: Filesystem, Links, MediaPlayer etc." WF_INSTALLER_LANGUAGES_DESC ="List of installed JCE Language Packs. The default English Language Pack cannot be removed." WF_INSTALLER_RELATED_DESC ="List of installed Joomla! Plugins that have an official relationship with JCE, eg: JCE MediaBox" WF_INSTALLER_HELP ="JCE Add-ons Installer Help" WF_INSTALLER_HELP_ABOUT ="About the JCE Add-ons Installer" WF_INSTALLER_HELP_REMOVE ="Removing Add-ons" WF_INSTALLER_HELP_REMOVE_PLUGINS ="Plugins" WF_INSTALLER_HELP_REMOVE_LANGUAGES ="Languages" WF_INSTALLER_HELP_REMOVE_RELATED ="Related Joomla! Extensions" WF_INSTALLER_HELP_INSTALL ="Installing Add-ons" WF_INSTALL_SUMMARY ="JCE Package Installation Summary" WF_INSTALLER_HELP_INSTALL_UPLOAD ="Install from a file or folder" WF_INSTALLER_HELP_INSTALL_SEARCH ="Search & Repair" WF_INSTALLER_INCORRECT_VERSION ="Incorrect Add-on version. This add-on may be for an earlier version of JCE. Please install an updated version of this add-on." WF_INSTALLER_WARNCOREPLUGIN ="%s is a core Plugin and cannot be removed." WF_INSTALLER_WARNCOREEXTENSION ="%s is a core Extension and cannot be removed." WF_INSTALLER_PLUGIN_FOLDER_ERROR ="Unable to remove Plugin folder. Please remove the folder manually" WF_INSTALLER_FTP ="FTP Login Details" WF_INSTALLER_FTP_DESC ="For installing or uninstalling Add-ons, JCE will most likely need your FTP account details. Please enter them in the form fields below." WF_INSTALLER_NO_LANGUAGES ="No Languages installed" ;#################### Component Install ############################## WF_COMPONENT_MANUAL_INSTALL_FAIL ="Manual Component Installation Failed!" WF_COMPONENT_MANUAL_INSTALL_SUCCESS="Manual Component Installation Successful!" ;#################### MediaBox ####################################### WF_MEDIABOX_TITLE ="JCE MediaBox" WF_MEDIABOX_CONFIGURATION ="JCE MediaBox Configuration" WF_MEDIABOX_DESC ="Edit JCE MediaBox parameters" WF_MEDIABOX_HELP ="JCE MediaBox Configuration Help" WF_MEDIABOX_HELP_CONFIG ="Configuration" WF_MEDIABOX_PARAMETERS ="MediaBox Parameters" WF_MEDIABOX_SAVED ="MediaBox Parameters Saved." ;#################### Database Delete / Restore ###################### WF_DB_CREATE_RESTORE ="[Create / Restore]" WF_DB_PROFILES_ERROR ="The Profiles database table does not exist or is empty" ;#################### Editor Install ################################ WF_EDITOR_FILES_ERROR ="Editor files missing. Please Install the Editor Plugin" WF_EDITOR_ENABLED_ERROR ="Editor is not enabled. Please enable the editor in the Joomla! Plugin Manager." WF_EDITOR_DEFAULT_NOTICE ="Editor is not set as the default WYSIWYG Editor in the Joomla! Configuration." WF_EDITOR_INSTALLED_ERROR ="Editor Plugin is not installed. Install Editor Plugin or follow manual installation instructions." WF_EDITOR_INSTALLED_MANUAL_ERROR ="Editor Plugin files exist but Editor Plugin is not installed" WF_EDITOR_ENABLED_ERROR ="Editor is set as disabled in the Joomla! Plugin Manager." WF_EDITOR_INSTALL ="[Install Editor Plugin]" WF_EDITOR_FILES_MISSING ="Editor Files missing." WF_EDITOR_INSTALL_SUCCESS ="Editor Plugin installed successfully." WF_EDITOR_NONE ="No Editor Installed" WF_EDITOR_EXTRACT_ERROR ="Error extracting editor package" WF_EDITOR_REMOVE_ERROR ="Error removing Editor Plugin" WF_EDITOR_REMOVE_SUCCESS ="Editor Plugin removed successfully" WF_EDITOR_REMOVE_NOT_FOUND ="Error removing Editor Plugin - Editor not found" ;#################### Tools / Elements ################################ WF_SERVER_UPLOAD_SIZE ="Your server's maximum upload size" WF_TOOLS_EDITABLESELECT_LABEL ="Edit value..." WF_COLORPICKER_PICKER ="Picker" WF_COLORPICKER_COLORPICKER ="Colour Picker" WF_COLORPICKER_TEMPLATE_DESC ="The following colours have been retrieved from your template stylesheets" WF_COLORPICKER_PALETTE ="Web" WF_COLORPICKER_NAMED ="Named" WF_COLORPICKER_TEMPLATE ="Template" WF_COLORPICKER_CUSTOM ="Custom" WF_COLORPICKER_COLOR ="Colour" WF_COLORPICKER_APPLY ="Apply" WF_COLORPICKER_NAME ="Name" WF_EXTENSION_MAPPER ="Extension Mapper" WF_EXTENSION_MAPPER_TYPE_NEW ="Add new type..." WF_EXTENSION_MAPPER_GROUP_NEW ="Add new group..." ;#################### Parameters ################################ NO_PARAMETERS ="There are no parameters for this item" ;#################### Parameters - Config Setup ################################ WF_PARAM_NONE ="There are no parameters for this item" WF_PARAM_EDITOR_WIDTH ="Editor Width" WF_PARAM_EDITOR_WIDTH_DESC ="Width of the Editor window in % or px. If %, add % symbol, eg: 80% Leave blank to use the original width of the textarea." WF_PARAM_EDITOR_HEIGHT ="Editor Height" WF_PARAM_EDITOR_HEIGHT_DESC ="Height of the Editor window in % or px. If %, add % symbol, eg: 80% Leave blank to use the original height of the textarea." WF_PARAM_EDITOR_STATE ="Editor State" WF_PARAM_EDITOR_STATE_DESC ="Default Editor State - On/Off" WF_PARAM_EDITOR_TOGGLE_LABEL ="Editor Toggle Label" WF_PARAM_EDITOR_TOGGLE_LABEL_DESC ="Text for the Editor Toggle link, eg: [Toggle Editor]" WF_PARAM_EDITOR_TOGGLE ="Editor Toggle" WF_PARAM_EDITOR_TOGGLE_DESC ="Allow Editor Toggling - switching the editor on and off" WF_PARAM_TABLE_INLINE ="Inline Table Editing" WF_PARAM_TABLE_INLINE_DESC ="Enable / Disable inline Table editing in Mozilla/Firefox. Useable but buggy." WF_PARAM_EDITOR_GLOBAL_CSS ="Editor Styles" WF_PARAM_EDITOR_PROFILE_CSS ="Editor Styles" WF_PARAM_EDITOR_GLOBAL_CSS_DESC ="CSS file to use for editor content styling and Styles list options
      • Template CSS file - Use the default css file (template.css or template_css.css) of your Joomla! template
      • Custom CSS File - Use a custom CSS file specified in the Custom CSS File field
      • Default - Use default JCE Editor styles
      " WF_PARAM_EDITOR_PROFILE_CSS_DESC ="CSS files to use for editor content styling and Styles list options
      • Add to list - Add the files specified in the Custom CSS Files field to those in the Global Configuration
      • Overwrite List - Use the custom CSS files specified in the Custom CSS File field instead of those in the Global Configuration
      • Inherit - Use Global Configuration Settings (Default)
      " WF_PARAM_CSS_TEMPLATE ="Template CSS File" WF_PARAM_CSS_CUSTOM ="Custom CSS Files" WF_PARAM_CSS_CUSTOM_DESC ="Use a custom CSS file for styling the editor content and as a source for classes in the Styles list if Editor Styles is set to Custom CSS Files
      Enter the relative url of the replacement css file.
      The $template variable will be replaced by your active template name.
      Separate multiple stylesheets with a comma, eg: templates/$template/css/sheet1.css,
      templates/$template/css/sheet2.css
      Clear your browser cache after changing the Editor Styles setting." WF_PARAM_CSS_NONE ="None" WF_PARAM_CSS_NONE_DESC ="Use default JCE editor styling" WF_PARAM_CSS_INHERIT ="Inherit" WF_PARAM_CSS_INHERIT_DESC ="Use Global Configuration settings" WF_PARAM_CSS_ADD ="Add to list" WF_PARAM_CSS_OVERWRITE ="Overwrite list" WF_PARAM_TOOLBAR_LOCATION ="Toolbar Position" WF_PARAM_TOOLBAR_LOCATION_DESC ="Position of the Editor toolbar" WF_PARAM_TOOLBAR_ALIGN ="Toolbar Alignment" WF_PARAM_TOOLBAR_ALIGN_DESC ="Alignment of the Editor toolbar" WF_PARAM_RELATIVE ="Relative URLs" WF_PARAM_RELATIVE_DESC ="Use relative URLS for all images, links etc. in content items. Recommended." WF_PARAM_ROOT_BLOCK ="Enter Key creates a..." WF_PARAM_ROOT_BLOCK_DESC ="Determine what happens when the ENTER key is pressed. When Paragraph or DIV is selected, SHIFT + ENTER will create a linebreak. When Linebreak is selected, SHIFT + ENTER will create a paragraph." ;++ Added in 2.2.1 ++ WF_PARAM_EDITOR_PROFILE_ROOT_BLOCK_DESC="Determine what happens when the ENTER key is pressed. When Paragraph or DIV is selected, SHIFT + ENTER will create a linebreak. When Linebreak is selected, SHIFT + ENTER will create a paragraph. If Inherit is selected the Global Configuration settings will be used." WF_PARAM_EDITOR_HIGH_CONTRAST_DESC ="Force editor content to display as black text on a white background. Select Yes if your template uses a dark background." WF_PARAM_EDITOR_TOOLBAR_THEME ="Toolbar Theme" WF_PARAM_EDITOR_TOOLBAR_THEME_DESC ="Theme for the editor toolbar" WF_PARAM_EDITOR_SKIN_CLASSIC ="Classic" WF_PARAM_EDITOR_SKIN_OFFICE_BLUE ="Office Blue" WF_PARAM_EDITOR_SKIN_OFFICE_SILVER ="Office Silver" WF_PARAM_EDITOR_SKIN_OFFICE_BLACK ="Office Black" WF_PARAM_EDITOR_DIALOG_THEME ="Dialog Theme" WF_PARAM_EDITOR_DIALOG_THEME_DESC ="Theme for popup dialogs" WF_PARAM_EDITOR_HIGH_CONTRAST ="Enable High Contrast" WF_PARAM_LAYOUT_ROWS ="Layout Rows" WF_PARAM_LAYOUT_ROWS_DESC ="Number of button rows in the editor layout" WF_PARAM_COMPRESS_JAVASCRIPT ="Compress Javascript" WF_PARAM_COMPRESS_JAVASCRIPT_DESC ="Combine and compress all editor javascript files to speed up loading." WF_PARAM_COMPRESS_CSS ="Compress CSS" WF_PARAM_COMPRESS_CSS_DESC ="Combine and compress editor css files to speed up loading." ; ++++ Added in 2.0.2 +++++ WF_PARAM_COMPRESS_GZIP ="Compress with Gzip" WF_PARAM_COMPRESS_GZIP_DESC ="Gzip compressed files to further reduce their size. Disabled by default as this may not work on all servers." WF_PARAM_NAMED ="Named" WF_PARAM_NUMERIC ="Numeric" WF_PARAM_PARAGRAPHS ="Paragraphs (p)" WF_PARAM_PARAGRAPH ="Paragraph" ; ++ Added in 2.1.4 ++ WF_PARAM_LINEBREAK ="Linebreak" WF_PARAM_DIV ="Div" WF_PARAM_CLASSIC ="Classic" WF_PARAM_USE_COOKIES ="Use Cookies" WF_PARAM_USE_COOKIES_DESC ="Allow cookies for storing function states eg: editor on / off and plugins current directory. Default is Yes." WF_PARAM_EDITOR_TOOLBAR_ALIGN ="Toolbar Alignment" WF_PARAM_EDITOR_TOOLBAR_ALIGN_DESC ="Alignment of the toolbar buttons" WF_PARAM_EDITOR_TOOLBAR_LOCATION ="Toolbar Location" WF_PARAM_EDITOR_TOOLBAR_LOCATION_DESC ="Location of the Editor Toolbar" WF_PARAM_EDITOR_STATUSBAR_LOCATION ="Statusbar Location" WF_PARAM_EDITOR_STATUSBAR_LOCATION_DESC ="Location of the Editor Statusbar" WF_PARAM_EDITOR_PATH ="Show Editor Path" WF_PARAM_EDITOR_PATH_DESC ="Show the Editor Element Path" WF_PARAM_EDITOR_RESIZING ="Allow Editor Resizing" WF_PARAM_EDITOR_RESIZING_DESC ="Allow the Editor to be resized by dragging the editor window" WF_PARAM_EDITOR_RESIZE_HORIZONTAL ="Allow Horizontal Editor Resizing" WF_PARAM_EDITOR_RESIZE_HORIZONTAL_DESC ="Allow the Editor to be resized horizontally by dragging the editor window" WF_PARAM_EDITOR_RESIZE_COOKIE ="Store Editor Size" WF_PARAM_EDITOR_RESIZE_COOKIE_DESC ="Store the resized Editor size using a cookie" ;++ Added in 2.0.21 ++ WF_PARAM_STYLES ="Styles List" WF_PARAM_STYLES_DESC ="A comma separated list of styles for the Styles List in the editor toolbar in the format Name=style where 'style' is the name of a css class, eg: Style1=style1,Style2=style2,Style3=style3
      If left blank the Styles list will be filled with classes from your template css file." ;#################### Parameters - Config Cleanup ################################ WF_PARAM_CLEANUP ="Validate HTML" WF_PARAM_CLEANUP_DESC ="Set to Yes (recommended) to format and cleanup content based on the Doctype selected below." ; ++ Added in 2.2.1 ++ WF_PARAM_EDITOR_PROFILE_CLEANUP_DESC="Set to Yes (recommended) to format and cleanup content based on the Doctype selected below. If Inherit is selected the Global Configuration settings for this parameter will be used." WF_PARAM_TABLE_FIX ="Fix Table Elements" WF_PARAM_TABLE_FIX_DESC ="Block elements will be split into two chunks when a table is found within it to produce an XHTML valid table. See - http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/fix_table_elements" WF_PARAM_LIST_FIX ="Fix List Elements" WF_PARAM_LIST_FIX_DESC ="List elements UL/OL converted to valid XHTML. See - http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/fix_list_elements" WF_PARAM_PLUGIN_MODE ="Plugin Mode" WF_PARAM_PLUGIN_MODE_DESC ="If true, & and ' are not encoded when content is saved to compensate for poorly designed 3rd party Joomla! plugins." WF_PARAM_JAVASCRIPT ="Allow Javascript" WF_PARAM_JAVASCRIPT_DESC ="Allow Javascript code insertion in HTML view" WF_PARAM_CSS ="Allow CSS" WF_PARAM_CSS_DESC ="Allow CSS code (style elements) in the HTML view" WF_PARAM_IFRAMES ="Allow IFrames" WF_PARAM_IFRAMES_DESC ="The iframe element is restricted by default. Set to Yes to allow the use of this element." WF_PARAM_ELEMENTS ="Extended Elements" WF_PARAM_ELEMENTS_DESC ="Extend functionality by adding in extra elements here. Elements added here will be removed from the Prohibited Elements list.
      Only applies if 'Cleanup HTML' is 'Yes'" WF_PARAM_NO_ELEMENTS ="Prohibited Elements" WF_PARAM_NO_ELEMENTS_DESC ="Comma separated list of prohibited elements. For security purposes the following elements will always be removed unless an appropriate plugin or configuration setting is installed or enabled - applet,iframe,object,embed,script,style,body,bgsound,base,
      basefont,frame,frameset,head,html,id,ilayer,layer,link,
      meta,name,title,xml
      Only applies if 'Cleanup HTML' is 'Yes'" ; ++ Added in 2.0.16 ++ WF_PARAM_INVALID_ATTRIBUTES ="Prohibited Attributes" WF_PARAM_INVALID_ATTRIBUTES_DESC ="Comma separated list of prohibited attributes, eg: dynsrc,lowsrc. Can accept regular expression values, eg: on([a-z]+) will remove all event attributes (onclick, onmouseover etc.)
      Only applies if 'Cleanup HTML' is 'Yes'" ; ++ Added in 2.0.21 ++ WF_PARAM_INVALID_ATTRIBUTE_VALUES ="Prohibited Attribute Values" WF_PARAM_INVALID_ATTRIBUTE_VALUES_DESC ="Comma separated list of prohibited attribute values in the CSS Attribute Selector format, eg: img[title='test'] will remove the title attribute value from all img tags with the value 'test'.
      Accepts the CSS 2.1 and CSS 3 Attribute Selectors -
      • Attribute starts with value : tag[name^='value']
        eg: img[src='data:image'] will remove all base64 encoded paths from img src attributes
      • Attribute equals value : tag[name='value']
      • Attribute is not equal to value : name!='value'
      • Attribute ends with value : tag[name$='value']
        eg: img[src$='.jpg'] will remove all img src values that contain paths with the .jpg extension

      Only applies if 'Cleanup HTML' is 'Yes'" WF_PARAM_PHP ="Allow PHP" WF_PARAM_PHP_DESC ="Allow PHP code insertion in HTML view. If Yes, full support may require an additional front-end content or system plugin to be installed." WF_PARAM_ENTITY_ENCODING ="Entity Encoding" WF_PARAM_ENTITY_ENCODING_DESC ="Entity encoding method to be used by the editor. " WF_PARAM_CDATA ="XHTML Inline Scripts" WF_PARAM_CDATA_DESC ="Inline javascript is wrapped in CDATA tags to aid XHTML validation" WF_PARAM_INLINE_STYLES ="XHTML Attributes" WF_PARAM_INLINE_STYLES_DESC ="Inline styles are used for deprecated attributes such as align, border, hspace and vspace." WF_PARAM_EDITOR_STYLE_RESET ="Reset Editor Styling" WF_PARAM_EDITOR_STYLE_RESET_DESC ="Reset the styling of the editor content. Forces left aligned, black text on a white background." ;#################### Parameters - Config General ################################ WF_PARAM_CUSTOM_COLORS ="Custom Colours" WF_PARAM_CUSTOM_COLORS_DESC ="A comma separated list of colours to be used by the ColourPicker, in Hex format, eg: #ff0000." WF_PARAM_CUSTOM_CONFIG ="Custom Configuration Variables" WF_PARAM_CUSTOM_CONFIG_DESC ="A list of custom TinyMCE configuration variables, separated by a ';' See - http://tinymce.moxiecode.com/wiki.php/Configuration" WF_PARAM_CALLBACK ="Custom Callback File" WF_PARAM_CALLBACK_DESC ="Relative url (to site root) of file containing callback functions for TinyMCE callback commands." WF_PARAM_FONT_ADD ="Additional Fonts" WF_PARAM_FONT_ADD_DESC ="A list of additional fonts by family, separated by a ; eg: Arial=arial,helvetica,sans-serif;Georgia=georgia,palatino. " WF_PARAM_FONT_REMOVE ="Remove Fonts" WF_PARAM_FONT_REMOVE_DESC ="A list of Font Families to remove, separated by a ; eg: Arial;Georgia;Courier New" WF_PARAM_FONT_CLASSES ="Font Classes" WF_PARAM_FONT_CLASSES_DESC ="Optional, comma separated list of font classes that correspond to styles css classes in your Template stylesheet." WF_PARAM_FONT_STYLES ="Font Styles" WF_PARAM_FONT_STYLES_DESC ="Comma separated list of font style values eg: 8pt,10pt,12pt,14pt,18pt,24pt,36pt" WF_PARAM_BLOCK_FORMAT ="Format Elements" WF_PARAM_BLOCK_FORMAT_DESC ="A comma separated list of block elements for the Format Select List" WF_PARAM_VISUALCHARS ="Show Visual Characters" WF_PARAM_VISUALCHARS_DESC ="Set the Show Visual Characters option on be default" ;++ Added in 2.1.4 ++ WF_PARAM_DOCTYPE ="Doctype" WF_PARAM_DOCTYPE_DESC ="Doctype to validate HTML with (if Cleanup HTML is set to Yes)
      • HTML4 (Default) : Validate using the HTML4 Transitional specification
      • HTML5 : Validate using the HTML5 specification
      " ; ++ Added in 2.2.1 ++ WF_PARAM_EDITOR_PROFILE_DOCTYPE_DESC="Doctype to validate HTML with (if Cleanup HTML is set to Yes)
      • HTML4 (Default) : Validate using the HTML4 Transitional specification
      • HTML5 : Validate using the HTML5 specification
      • Inherit : Use the Doctype set in the Global Configuration
      " ;++ Added in 2.2.2 ++ WF_PARAM_DRAPDROP_UPLOAD ="Drag & Drop Upload" WF_PARAM_DRAPDROP_UPLOAD_DESC="Allow Drag & Drop uploading for this plugin in the editor content area. Only available in Firefox 4+, Chrome 7+, Safari 5.1+ and IE10+" ;#################### Parameters - Config Tabs ################################ WF_PARAM_EDITOR_SOURCE_ADVCODE ="Advanced Source Editing" WF_PARAM_EDITOR_SOURCE_ADVCODE_DESC="Enable Syntax Highlighted Advanced Source Editing" WF_PARAM_EDITOR_SOURCE_HIGHLIGHT ="Source Code Syntax Highlighting" WF_PARAM_EDITOR_SOURCE_HIGHLIGHT_DESC="Set syntax highlighting (code colouring) on or off by default (only available if Advanced Source Editing is enabled)" WF_PARAM_EDITOR_SOURCE_NUMBERS ="Source Code Line Numbers" WF_PARAM_EDITOR_SOURCE_NUMBERS_DESC="Set line numbers on or off by default (only available if Advanced Source Editing is enabled)" WF_PARAM_EDITOR_SOURCE_WRAP ="Source Code Word Wrap" WF_PARAM_EDITOR_SOURCE_WRAP_DESC ="Set Word Wrapping of the source code on or off by default" ;#################### Parameters - Config Plugins ################################ WF_PARAM_FOLDER_TREE ="Folder Tree" WF_PARAM_FOLDER_TREE_DESC ="Use Folder Tree for directory navigation in 'Manager' plugins" WF_PARAM_UPLOAD_EXISTS ="Upload Conflict Action" WF_PARAM_UPLOAD_EXISTS_DESC ="Select the action for dealing with upload conflicts (where a file of the same name as the uploaded file already exists in the target folder)" WF_PARAM_UPLOAD_EXISTS_OVERWRITE ="Overwrite Existing File" WF_PARAM_UPLOAD_EXISTS_UNIQUE ="Create Unique File Name for uploaded file" WF_PARAM_UPLOAD_RUNTIME ="Uploader Engines" WF_PARAM_UPLOAD_RUNTIME_DESC ="Select and re-order the engines used by the uploader. The uploader will use the first supported engine in the list" WF_PARAM_UPLOAD_RUNTIME_GEARS ="Google Gears" WF_PARAM_UPLOAD_RUNTIME_FLASH ="Adobe® Flash®" WF_PARAM_UPLOAD_RUNTIME_SILVERLIGHT="Microsoft Silverlight®" WF_PARAM_UPLOAD_RUNTIME_BROWSERPLUS="Yahoo! BrowserPlus" WF_PARAM_UPLOAD_RUNTIME_HTML5 ="HTML 5" WF_PARAM_UPLOAD_RUNTIME_HTML4 ="HTML 4" ;++ Added in JCE 2.0.18 WF_PARAM_WEBSAFE_MODE ="Websafe File Names" WF_PARAM_WEBSAFE_MODE_DESC ="Format to use when creating websafe file and folder names. UTF-8 will allow full UTF-8 characters and A-Za-z0-9._-~ in the name, ASCII will convert some UTF-8 Latin characters into ASCII equivalents, eg: ë -> e, õ -> o etc. and will only allow A-Za-z0-9._-~ characters in the name." WF_PARAM_VALIDATE_MIMETYPE ="Validate Mimetype" WF_PARAM_VALIDATE_MIMETYPE_DESC ="For additional security when uploading, check the mimetype of the uploaded file against its extension. Disabled by default as this process requires PHP functions that may not be available on all servers. If enabled and the server does not support the PHP fileinfo or mime_content_type functions, the mimetype check will be skipped." WF_PARAM_BROWSER_POSITION ="File Browser Position" WF_PARAM_BROWSER_POSITION_DESC ="Position of the File Browser in the dialog. Default is Bottom" WF_PARAM_LIST_LIMIT ="File Browser List Size" WF_PARAM_LIST_LIMIT_DESC ="Number of files/folders to display in the File Browser file / folder list" WF_PARAM_EXTENSIONS ="Permitted File Extensions" WF_PARAM_EXTENSIONS_DESC ="List of permitted file extensions for uploading/display grouped by type. Click the pencil icon to edit. An extension can be moved from one group to another using drag & drop, deactivated by unchecking its checkbox and extensions created and removed using the + and - symbols." WF_PARAM_HELP_URL ="Help URL" WF_PARAM_HELP_URL_DESC ="Site/URL to JCE Plugin Help content" ;#################### Editor ################################ WF_COMPONENT_MISSING ="The JCE Administration Component is not installed! The Editor cannot function without it!" WF_COMPONENT_VERSION_ERROR ="Version %s of the WF_Administration Component is required. Please download and install this version. [Download]" WF_TABS_EDITOR ="Editor" WF_TABS_SOURCE ="Source" WF_TABS_PREVIEW ="Preview" ;#################### Plugin / Command Titles and Descriptions ################################ WF_CONTEXTMENU_TITLE ="Context Menu" WF_CONTEXTMENU_DESC ="Adds a Context Menu with editor commands and buttons when right-clicking in the editor." WF_BROWSER_TITLE ="File Browser" WF_BROWSER_DESC ="Adds a File Browser option to the Link plugin and for specific fields in the Tables, Image Manager and Styles plugins." WF_INLINEPOPUPS_TITLE ="Inline Popups" WF_INLINEPOPUPS_DESC ="Plugin Dialog windows are opened in an inline element rather than a new browser window which overcomes limits imposed by popup blockers." WF_PASTE_TITLE ="Paste" WF_PASTE_DESC ="Cut, Copy and Paste Tools. Includes cleanup of Microsoft Word® content plain text paste options." WF_SPELLCHECKER_TITLE ="Spellchecker" WF_SPELLCHECKER_DESC ="Spellchekcer using the Google Spell Checking service or as an interface for PSPell, Aspell or Enchant." WF_ATTRIBUTES_TITLE ="Attributes" WF_ATTRIBUTES_DESC ="Edit the Standard Attributes of an element (id, style, title etc.)" WF_SOURCE_TITLE ="Source Code Editor" WF_SOURCE_DESC ="Edit the HTML source code of an article" WF_ANCHOR_TITLE ="Anchor" WF_ANCHOR_DESC ="Create and edit anchors" WF_ARTICLE_TITLE ="Article Breaks" WF_ARTICLE_DESC ="Insert and edit Joomla!© Readmore and Pagebreak elements" WF_BACKCOLOR_TITLE ="Font Background Colour" WF_BACKCOLOR_DESC ="Apply and edit text background colour." WF_BOLD_TITLE ="Bold" WF_BOLD_DESC ="Apply or remove a bold effect on selected text." WF_BULLIST_TITLE ="Bullet List" WF_BULLIST_DESC ="Create a bullet (unordered) list" WF_JUSTIFYCENTER_TITLE ="Justify Centre" WF_JUSTIFYCENTER_DESC ="Centre align text or elements" WF_CHARMAP_TITLE ="Character Map" WF_CHARMAP_DESC ="Select a special character from a dialog to insert" WF_CLEANUP_TITLE ="Code Cleanup" WF_CLEANUP_DESC ="Cleanup HTML code" WF_DIRECTIONALITY_TITLE ="Directionality" WF_DIRECTIONALITY_DESC ="Set the directionality on an element (eg: left-to-right or right-to-left)" WF_FONTSELECT_TITLE ="Font Family Select" WF_FONTSELECT_DESC ="Set the font-family on selected text eg: Arial" WF_FONTSIZESELECT_TITLE ="Font Size Select" WF_FONTSIZESELECT_DESC ="Set the font-size on selected text eg: 10px" WF_FORECOLOR_TITLE ="Font Fore Colour" WF_FORECOLOR_DESC ="Change the colour of selected text" WF_FORMATSELECT_TITLE ="Format Select" WF_FORMATSELECT_DESC ="Apply a block format to the selected text or element, eg: Paragraph will wrap the selected text in a paragraph element" WF_JUSTIFYFULL_TITLE ="Justify Full" WF_JUSTIFYFULL_DESC ="Format selected text to full the width of the container element" WF_FULLSCREEN_TITLE ="Full Screen" WF_FULLSCREEN_DESC ="Expand the editor to full the screen." WF_HELP_TITLE ="Help" WF_HELP_DESC ="Open the Editor Help dialog" WF_HR_TITLE ="Horizontal Rule" WF_HR_DESC ="Insert a Horizontal Rule" WF_IMGMANAGER_TITLE ="Image Manager" WF_IMGMANAGER_DESC ="Upload, delete, rename and insert images" WF_INDENT_TITLE ="Indent" WF_INDENT_DESC ="Indent the selected text or element" WF_ITALIC_TITLE ="Italic" WF_ITALIC_DESC ="Apply or remove italics to the selected text" WF_LAYER_TITLE ="Layer" WF_LAYER_DESC ="Insert and edit floating DIV layer elements" WF_JUSTIFYLEFT_TITLE ="Justify Left" WF_JUSTIFYLEFT_DESC ="Align selected text or elements left" WF_LINK_TITLE ="Link" WF_LINK_DESC ="Insert and edit links to articles, web pages, files or e-mail addresses." WF_MEDIA_TITLE ="Media Support" WF_MEDIA_DESC ="Adds support for OBJECT, EMBED, AUDIO, VIDEO and IFRAME elements. Required by the Media Manager and when inserting Adobe® Flash®, Quicktime® and other media file types." WF_NEWDOCUMENT_TITLE ="New Document" WF_NEWDOCUMENT_DESC ="Clear the current document" WF_NONBREAKING_TITLE ="Non-Breaking Space" WF_NONBREAKING_DESC ="Insert a non-breaking space" WF_NUMLIST_TITLE ="Ordered List" WF_NUMLIST_DESC ="Create an ordered list" WF_OUTDENT_TITLE ="Outdent" WF_OUTDENT_DESC ="Remove the indentation on the selected element" WF_PREVIEW_TITLE ="Preview" WF_PREVIEW_DESC ="Preview the current article" WF_PRINT_TITLE ="Print" WF_PRINT_DESC ="Print the article contents" WF_REDO_TITLE ="Redo" WF_REDO_DESC ="Redo the last action" WF_REMOVEFORMAT_TITLE ="Remove Format" WF_REMOVEFORMAT_DESC ="Remove Formatting on the selected text or element" WF_JUSTIFYRIGHT_TITLE ="Justify Right" WF_JUSTIFYRIGHT_DESC ="Align selected text or elements right" WF_SEARCHREPLACE_TITLE ="Search & Replace" WF_SEARCHREPLACE_DESC ="Find and replace text in the article" WF_STRIKETHROUGH_TITLE ="Strike Through" WF_STRIKETHROUGH_DESC ="Apply or remove a strikethrough on the selected text" WF_STYLE_TITLE ="Styles" WF_STYLE_DESC ="Edit the CSS styles on an element" WF_STYLESELECT_TITLE ="Style Select" WF_STYLESELECT_DESC ="Select a CSS class to apply to the selected text or element. The Style List is populated with the classes form your template stylesheet based on Profile parameters" WF_SUB_TITLE ="Subscript" WF_SUB_DESC ="Apply or remove a subscript on the selected text. The text size will be reduced and the text set slightly below the normal line of type." WF_SUP_TITLE ="Superscript" WF_SUP_DESC ="Apply or remove a superscript on the selected text. The text size will be reduced and the text set slightly above the normal line of type." WF_TABLE_TITLE ="Tables" WF_TABLE_DESC ="Insert and Edit Tables. Includes tools for inserting, removing and merging cells and rows" WF_TEXTCASE_TITLE ="Text Case" WF_TEXTCASE_DESC ="Change the case of the selected text. Options include Sentence case, Camel Case, UPPERCASE and lowercase." WF_UNDERLINE_TITLE ="Underline" WF_UNDERLINE_DESC ="Apply or remove an underline on the selected text" WF_UNDO_TITLE ="Undo" WF_UNDO_DESC ="Undo the last action" WF_UNLINK_TITLE ="Unlink" WF_UNLINK_DESC ="Remove the link on the selected text or element" WF_VISUALAID_TITLE ="Visual Aid" WF_VISUALAID_DESC ="Toggle Visual Aids." WF_VISUALCHARS_TITLE ="Visual Characters" WF_VISUALCHARS_DESC ="Toggle Visual Characters. These include visual representations of non-breaking spaces" WF_XHTMLXTRAS_TITLE ="XHTML Extras" WF_XHTMLXTRAS_DESC ="Add additional properties on an element such as Insertion, Deletion, Acronym and Abbreviation." WF_BLOCKQUOTE_TITLE ="Blockquote" WF_BLOCKQUOTE_DESC ="Insert or remove a Blockquote" WF_AUTOSAVE_TITLE ="AutoBackup" WF_AUTOSAVE_DESC ="Automatically save drafts of the current article at regular intervals" WF_CITE_TITLE ="Citation" WF_CITE_DESC ="Apply or edit a Citation attribute on a selection" WF_ABBR_TITLE ="Abbreviation" WF_ABBR_DESC ="Apply or edit an Abbreviation attribute on a selection" WF_INS_TITLE ="Insertion" WF_INS_DESC ="Apply or edit an Insertion attribute on a selection" WF_ACRONYM_TITLE ="Acronym" WF_ACRONYM_DESC ="Apply or edit an Acronym attribute on a selection" WF_DEL_TITLE ="Deletion" WF_DEL_DESC ="Apply or edit an Deletion attribute on a selection" WF_COLORPICKER_TITLE ="Colour Picker" WF_COLORPICKER_DESC ="Colour Selection Dialog." ;++ Added in 2.2.0 ++ WF_VISUALBLOCKS_TITLE ="VisualBlocks" WF_VISUALBLOCKS_DESC ="Display a visual representation of block elements" WF_KITCHENSINK_TITLE ="Toggle Toolbars" WF_KITCHENSINK_DESC ="Show / Hide the toolbar rows below the row this button is in" ;#################### Article Breaks ################################ WF_ARTICLE_PARAM_HIDE_BUTTONS ="Hide Joomla! Readmore / PageBreak" WF_ARTICLE_PARAM_HIDE_BUTTONS_DESC ="Hide the Joomla! Readmore and Pagebreak buttons at the bottom of the editor as Article Breaks performs the same functions better." WF_ARTICLE_PARAM_SHOW_READMORE ="Show Readmore button" WF_ARTICLE_PARAM_SHOW_READMORE_DESC="Show the Readmore button in the Editor Toolbar." WF_ARTICLE_PARAM_SHOW_PAGEBREAK ="Show Pagebreak button" WF_ARTICLE_PARAM_SHOW_PAGEBREAK_DESC="Show the Pagebreak button in the Editor Toolbar." WF_TAB_PAGEBREAK ="Pagebreak" ;#################### Source Editor ################################ WF_SOURCE_HIGHLIGHT ="Syntax Highlighting" WF_SOURCE_HIGHLIGHT_DESC ="Set Syntax Highlighting (source code colouring) on by default" WF_SOURCE_NUMBERS ="Line Numbers" WF_SOURCE_WRAP ="Wrap Long Lines" WF_SOURCE_NUMBERS_DESC ="Show Line Numbers (only if Syntax Highlighting is on)" WF_SOURCE_WRAP_DESC ="Wrap lines that extend beyond the editor width" WF_SOURCE_UNDO ="Undo" WF_SOURCE_REDO ="Redo" WF_SOURCE_THEME ="Theme" WF_SOURCE_THEME_DESC ="Syntax Highlighter Theme" ; ++ Added in 2.2.0 ++ WF_SOURCE_FORMAT ="Format on load" WF_SOURCE_FORMAT_DESC ="Format and indent code when the Code Editor is initialised" ; ++ Added in 2.2.0 ++ WF_SOURCE_TAG_CLOSING ="Tag Closing" WF_SOURCE_TAG_CLOSING_DESC ="Enable automatic tag closing. When enabled creating a new tag will automatically create the corresponding closing tag (where applicable). eg:

      " ; ++ Added in 2.2.2 ++ WF_SOURCE_SELECTION_MATCH ="Selection Matching" WF_SOURCE_SELECTION_MATCH_DESC ="Enable Selection Matching. When enabled words in the source code that match the selected word will be highlighted." ;#################### File Browser ################################n WF_BROWSER_HELP_ABOUT ="About the File Browser" WF_BROWSER_HELP_INTERFACE ="The File Browser Interface" WF_BROWSER_HELP_INSERT ="Inserting a file" ;#################### Autosave ################################ WF_AUTOSAVE_ASK ="Ask before unload" WF_AUTOSAVE_ASK_DESC ="Ask before restoring content" WF_AUTOSAVE_INTERVAL ="Backup Interval (seconds)" WF_AUTOSAVE_INTERVAL_DESC ="Backup every X seconds" WF_AUTOSAVE_RETENTION ="Storage time (minutes)" WF_AUTOSAVE_RETENTION_DESC ="Store backup for X minutes" WF_AUTOSAVE_MINLENGTH ="Minimum Content Length" WF_AUTOSAVE_MINLENGTH_DESC ="An article must be at least this many characters long before a backup will occur" ;#################### Link ################################ WF_LINK_JOOMLALINKS_TITLE ="Joomla! Links" WF_LINK_JOOMLALINKS_DESC ="Link to Joomla! internal content for the Link Browser" WF_TAB_LINK ="Link" WF_LINK_PARAM_DEFAULT_TARGET ="Default Target" WF_LINK_PARAM_DEFAULT_TARGET_DESC ="Select Default Target" WF_LINK_PARAM_FILE_BROWSER ="Show File Browser Button" WF_LINK_PARAM_FILE_BROWSER_DESC ="This will show a file browser button next to the URL field which will open a File Browser dialog when clicked allowing the user to create links to files." WF_LINK_LINK ="Link" WF_LINK_LINK_TEXT ="Text" WF_LINK_LINK_TEXT_DESC ="Text::If no content selection is made or if the selection is plain text, enter new or edit the text for the link here" WF_LABEL_ANCHORS ="Article Anchors" WF_LABEL_ANCHORS_DESC ="Article Anchors::List of available anchors in the current article to link to." WF_LABEL_LINKBROWSER ="Link Browser" WF_LABEL_EMAIL ="E-Mail" WF_LABEL_HREFLANG ="Target Language Code" WF_LABEL_HREFLANG_DESC ="Target Language Code::Language code of the target url" WF_LABEL_MIME_TYPE ="Target MIME Type" WF_LABEL_MIME_TYPE_DESC ="Target Mimetype::MIME (Multipurpose Internet Mail Extensions) Type of the target url eg: text/html" WF_LABEL_CHARSET ="Target character encoding" WF_LABEL_CHARSET_DESC ="Target character encoding::Character encoding of the target url, eg: utf-8" WF_LABEL_REL ="Relationship page to target" WF_LABEL_REL_DESC ="Relationship page to target::Relationship between the current page and the target url" WF_LABEL_REV ="Relationship target to page" WF_LABEL_REV_DESC ="Relationship target to page::Relationship target url and the current page" WF_LINK_HELP_ABOUT ="What is Link?" WF_LINK_HELP_INTERFACE ="About the Interface" WF_LINK_HELP_LINKS ="The Link Browser" WF_LINK_HELP_INSERT ="Inserting/Updating a Link" WF_LINK_HELP_EVENTS ="The Events Tab" WF_LINK_HELP_ADVANCED ="The Advanced Tab" WF_LINK_HELP_EMAIL ="Creating an E-mail address" WF_LINK_HELP_POPUP ="Creating a Popup" WF_LINK_PARAM_TAB_ADVANCED ="Show Advanced Tab" WF_LINK_PARAM_TAB_ADVANCED_DESC ="Show the Advanced tab for setting additional, advanced link options" WF_LINK_SHOW_ANCHOR ="Show Anchor List" WF_LINK_SHOW_ANCHOR_DESC ="Show the Anchor List options in the Link dialog" WF_LINK_SHOW_TARGET ="Show Target List" WF_LINK_SHOW_TARGET_DESC ="Show the Target List options in the Link dialog" ;#################### Tables ################################ WF_TABLES_TABLE_TITLE ="Insert / Edit Table" WF_TABLES_ROW_TITLE ="Edit Row" WF_TABLES_CELL_TITLE ="Edit Cell" WF_TABLES_MERGE_TITLE ="Merge Cells" WF_TAB_MERGE ="Merge" ;#################### Help ################################ WF_EDITOR_HELP_ABOUT ="About the Editor" WF_EDITOR_HELP_TOOLBAR ="Editor Toolbar" WF_EDITOR_HELP_TABS ="Editor Tabs" WF_EDITOR_HELP_CONTENT ="Editor Content Area" WF_EDITOR_HELP_PATH ="Element Path" WF_EDITOR_HELP_BUTTONS ="Editor Buttons" WF_EDITOR_HELP_LICENCE ="Licence" WF_EDITOR_HELP_ACKNOWLEDGEMENTS ="Acknowledgements" WF_EDITOR_HELP_PLUGINS ="Plugins" WF_EDITOR_HELP_BASICS ="Editing Basics" WF_EDITOR_HELP_SELECTION ="Selecting text and elements" WF_EDITOR_HELP_FORMAT ="Formatting text and elements" WF_EDITOR_HELP_FORMAT_BOLD ="Bold, Italic, Underline and Strikethrough" WF_EDITOR_HELP_FORMAT_BLOCKS ="Headers, Block Elements and Blockquote" WF_EDITOR_HELP_FORMAT_SUB ="Superscript and Subscript" WF_EDITOR_HELP_FORMAT_FONT ="Font Styling" WF_EDITOR_HELP_FORMAT_ALIGN ="Alignment" WF_EDITOR_HELP_FORMAT_INDENT ="Indent and Outdent" WF_EDITOR_HELP_FORMAT_ATTRIBUTES ="Editing element attributes" WF_EDITOR_HELP_LISTS ="Creating Lists" WF_EDITOR_HELP_READMORE ="Readmore and Page Break" WF_EDITOR_HELP_LINKS ="Creating and Editing Links" WF_EDITOR_HELP_IMAGES ="Inserting images" WF_EDITOR_HELP_TABLES ="Inserting Tables" WF_EDITOR_HELP_PASTE ="Cut, Copy & Paste" WF_EDITOR_HELP_SPELLCHECKER ="Spellchecker" ;#################### Image Manager ################################ WF_IMGMANAGER_HIDE_BUTTONS ="Hide Joomla! Image Button" WF_IMGMANAGER_HIDE_BUTTONS_DESC ="Hide Joomla! Image Button" WF_IMGMANAGER_HELP ="Image Manager Help" WF_IMGMANAGER_HELP_ABOUT ="What is the Image Manager?" WF_IMGMANAGER_HELP_INTERFACE ="About the Interface" WF_IMGMANAGER_HELP_ROLLOVER ="Rollover Images" WF_IMGMANAGER_HELP_ADVANCED ="The Advanced Tab" WF_IMGMANAGER_HELP_INSERT ="Inserting/Updating" WF_LABEL_MOUSEOVER ="Mouseover" WF_LABEL_MOUSEOVER_DESC ="Mouseover::Image to be displayed when the mouse is over the element" WF_LABEL_MOUSEOUT ="Mouseout" WF_LABEL_MOUSEOUT_DESC ="Mouseout::Image to be displayed when the mouse is not over the element" WF_LABEL_ROLLOVER_ENABLE_DESC ="Enable Rollover::Click to enable image rollover." WF_LABEL_ROLLOVER_IMAGE ="Rollover Image" WF_LABEL_USEMAP ="Image Map" WF_LABEL_USEMAP_DESC ="Image Map::Id of associated image map, eg: #map" WF_TAB_IMAGE ="Image" WF_TAB_ROLLOVER ="Rollover" WF_IMGMANAGER_SHOW_DIMENSIONS ="Show Dimensions Options" WF_IMGMANAGER_SHOW_DIMENSIONS_DESC ="User can see and set the image dimensions (width and height)" WF_IMGMANAGER_SHOW_ALIGN ="Show Alignment Options" WF_IMGMANAGER_SHOW_ALIGN_DESC ="User can see and set the image alignment" WF_IMGMANAGER_SHOW_MARGIN ="Show Margin Options" WF_IMGMANAGER_SHOW_MARGIN_DESC ="User can see and set the margin values around the image" WF_IMGMANAGER_SHOW_BORDER ="Show Border Options" WF_IMGMANAGER_SHOW_BORDER_DESC ="User can see and set the image border options (width, style, colour)" WF_IMGMANAGER_PARAM_TAB_ROLLOVER ="Show Rollover Tab" WF_IMGMANAGER_PARAM_TAB_ROLLOVER_DESC ="Show the Rollover tab with additional options for creating image rollovers" WF_IMGMANAGER_PARAM_TAB_ADVANCED ="Show Advanced Tab" WF_IMGMANAGER_PARAM_TAB_ADVANCED_DESC ="Show the Advanced tab for setting additional, advanced image options" ;++ Added in 2.2.2 ++ WF_IMGMANAGER_PARAM_ALWAYS_INCLUDE_DIMENSIONS="Always Include Dimensions" WF_IMGMANAGER_PARAM_ALWAYS_INCLUDE_DIMENSIONS_DESC="Always Include Dimensions::If Yes, image dimensions will always be included when inserting images. If No, dimensions will only be included if they are different to the original image dimensions. Default is Yes." ;#################### Media Support ################################ WF_MEDIA_PARAM_STRICT ="Strict XHTML Flash" WF_MEDIA_PARAM_STRICT_DESC ="Embed Flash files using a single object (no embed element)" WF_MEDIA_PARAM_IFRAMES ="Allow IFrames" WF_MEDIA_PARAM_IFRAMES_DESC ="Allow IFrame elements to be included in content" WF_MEDIA_PARAM_VIDEO ="Allow HTML5 Video" WF_MEDIA_PARAM_VIDEO_DESC ="Allow HTML5 Video elements to be included in content" WF_MEDIA_PARAM_AUDIO ="Allow HTML5 Audio" WF_MEDIA_PARAM_AUDIO_DESC ="Allow HTML5 Audio elements to be included in content" WF_MEDIA_PARAM_OBJECT ="Allow OBJECT Elements" WF_MEDIA_PARAM_OBJECT_DESC ="Allow OBJECT elements to be included in content. This is required to embed Adobe Flash Player®, Quicktime® etc." WF_MEDIA_PARAM_EMBED ="Allow EMBED Elements" WF_MEDIA_PARAM_EMBED_DESC ="Allow EMBED elements to be included in content. This is required to embed Adobe Flash Player®, Quicktime® etc." ; +++++ Added in 2.0.1 ++++++ WF_MEDIA_VERSION_FLASH ="Adobe® Flash® Player Version" WF_MEDIA_VERSION_WINDOWSMEDIA ="Windows® Media Player Version" WF_MEDIA_VERSION_QUICKTIME ="Apple Quicktime® Player Version" WF_MEDIA_VERSION_SHOCKWAVE ="Adobe® Shockwave® Player Version" WF_MEDIA_VERSION_JAVA ="Java Version" ;#################### Paste ################################ WF_PASTE_PARAM_CLASSES ="Strip Class Attributes" WF_PASTE_PARAM_CLASSES_DESC ="This feature allows you to control whether or not class attributes are stripped when pasting from Word.
      • All - will strip all class attributes from the pasted content
      • None - will not strip any class attributes from the pasted content.
      " WF_PASTE_PARAM_ALL ="All" WF_PASTE_PARAM_NONE ="None" WF_PASTE_PARAM_MSO ="Word Specific" WF_PASTE_PARAM_LISTED ="As Listed" WF_PASTE_PARAM_SPANS ="Remove all SPANS" WF_PASTE_PARAM_SPANS_DESC ="Remove all spans from pasted content" WF_PASTE_PARAM_STYLES ="Remove all Styles" WF_PASTE_PARAM_STYLES_DESC ="Remove styles from pasted content" WF_PASTE_PARAM_RETAIN_STYLES ="Styles to keep" WF_PASTE_PARAM_RETAIN_STYLES_DESC="Comma separated list of style properties to retain when pasting if Remove Styles is No. By default all valid styles are retained.
      Example: font-size,font-family,color." WF_PASTE_PARAM_REMOVE_STYLES_WEBKIT="Remove Webkit Styles" WF_PASTE_PARAM_REMOVE_STYLES_WEBKIT_DESC="If Yes, removes all style information when pasting in WebKit since it has a serious paste bug. Default is No. " WF_PASTE_PARAM_WIDTH ="Dialog Width" WF_PASTE_PARAM_WIDTH_DESC ="Width of the Paste Dialog in pixels (px)" WF_PASTE_PARAM_HEIGHT ="Dialog Height" WF_PASTE_PARAM_HEIGHT_DESC ="Height of the Paste Dialog in pixels (px)" WF_PASTE_PARAM_REMOVE_PARAGRAPHS ="Remove empty paragraphs" WF_PASTE_PARAM_REMOVE_PARAGRAPHS_DESC="Empty paragraphs are removed from pasted content or converted into linebreaks if the Global Configuration 'Newlines' option is set to 'Linebreaks'." WF_PASTE_PARAM_PASTE_TEXT ="Allow Paste As Plain Text" WF_PASTE_PARAM_PASTE_TEXT_DESC ="Allow users to paste content as plain text (stripped of html)" WF_PASTE_PARAM_PASTE_HTML ="Allow Paste As HTML" WF_PASTE_PARAM_PASTE_HTML_DESC ="Allow users to paste content with html intact. Word specific and other html will automatically be cleaned based on the parameter settings." WF_PASTE_PARAM_DIALOG ="Use Paste dialog" WF_PASTE_PARAM_DIALOG_DESC ="Always use the Paste Dialog when pasting (except when using CTRL+V)" WF_PASTE_FORCE_CLEANUP ="Microsoft Word® cleanup" WF_PASTE_FORCE_CLEANUP_DESC ="Content from applications like Microsoft Word® and OpenOffice.org Writer often include code not suitable for HTML documents. The cleanup action will attempt to convert or remove this code." WF_PASTE_FORCE_CLEANUP_DETECT ="Only if detected" WF_PASTE_FORCE_CLEANUP_ALWAYS ="Always" WF_PASTE_HELP_ABOUT ="Using the Paste Buttons" ;++ Addedin 2.1 ++ WF_PASTE_PARAM_ATTRIBUTES ="Remove Attributes" WF_PASTE_PARAM_ATTRIBUTES_DESC ="A comma seperated list of attributes to remove, eg: lang,align" ;#################### Spellchecker ################################ WF_SPELLCHECKER_PARAM_ENGINE ="Engine" WF_SPELLCHECKER_PARAM_ENGINE_DESC ="Select a spellchecking engine." WF_SPELLCHECKER_PARAM_GOOGLE ="GoogleSpell" WF_SPELLCHECKER_PARAM_ENCHANT ="EnchantSpell" WF_SPELLCHECKER_PARAM_PSPELL_PHP ="Internal PHP PSpell" WF_SPELLCHECKER_PARAM_PSPELL_CLINE ="Commmand Line PSpell" WF_SPELLCHECKER_PARAM_LANGUAGES ="Languages" WF_SPELLCHECKER_PARAM_LANGUAGES_DESC ="List of languages. List the default language first, eg: English=en,Deutsch=de
      The GoogleSpell option only supports the following languages - Danish,Dutch,English,Finnish,French,German,Italian,Polish,
      Portuguese(BR),Russian,Spanish,Swedish" WF_SPELLCHECKER_PARAM_PSPELL_MODE ="PSPELL Mode" WF_SPELLCHECKER_PARAM_PSPELL_MODE_DESC ="PSpell specific option. PSpell has various modes that makes it more or less exact it has a impact on performance." WF_SPELLCHECKER_PARAM_PSPELL_SPELLING ="PSPELL Spelling Parameter" WF_SPELLCHECKER_PARAM_PSPELL_SPELLING_DESC ="PSpell specific setting. Enables you to control the spelling parameter of PSpell. (Advanced users only)." WF_SPELLCHECKER_PARAM_PSPELL_JARGON ="PSPELL Jargon" WF_SPELLCHECKER_PARAM_PSPELL_JARGON_DESC ="PSpell specific setting. Enables you to control the jargon parameter of PSpell. (Advanced users only)." WF_SPELLCHECKER_PARAM_PSPELL_ENCODING ="PSPELL Encoding" WF_SPELLCHECKER_PARAM_PSPELL_ENCODING_DESC ="PSpell specific setting. Enables you to control the encoding parameter of PSpell. (Advanced users only)." WF_SPELLCHECKER_PARAM_PSPELLSHELL ="PSpell location" WF_SPELLCHECKER_PARAM_PSPELLSHELL_DESC ="Location of PSpell executable file. This option is only used if the PspellShell engine is selected." WF_SPELLCHECKER_PARAM_PSPELLSHELL_TMP ="TMP Directory" WF_SPELLCHECKER_PARAM_PSPELLSHELL_TMP_DESC ="Location of a writable temp directory." WF_SPELLCHECKER_PARAM_PSPELL_DICTIONARY ="PSpell Dictionary" WF_SPELLCHECKER_PARAM_PSPELL_DICTIONARY_DESC="Relative Path to PSPell Dictionary" ;#################### Tables ############################################ WF_TABLES_TITLE ="Tables" WF_TABLES_HELP_EDIT ="Creating and Editing Tables" WF_TABLES_HELP_DELETE ="Deleting Tables" WF_TABLES_HELP_ROWS ="Creating and Editing Table Rows" WF_TABLES_HELP_CELLS ="Creating and Editing Table Cells" ;++ Added in 2.0.11 ++ WF_TABLES_PARAM_WIDTH ="Width" WF_TABLES_PARAM_WIDTH_DESC ="Default Table Width (pixels or percent, eg: 100% or 100px)" WF_TABLES_PARAM_HEIGHT ="Height" WF_TABLES_PARAM_HEIGHT_DESC ="Default Table Height (pixels or percent, eg: 100% or 100px)" WF_TABLES_PARAM_BORDER ="Border" WF_TABLES_PARAM_BORDER_DESC ="Default Border Width" WF_TABLES_PARAM_COLS ="Columns" WF_TABLES_PARAM_COLS_DESC ="Default Number of Columns" WF_TABLES_PARAM_ROWS ="Rows" WF_TABLES_PARAM_ROWS_DESC ="Default Number of Rows" WF_TABLES_PARAM_CELLPADDING ="Cell Padding" WF_TABLES_PARAM_CELLPADDING_DESC="Default Cell Padding" WF_TABLES_PARAM_CELLSPACING ="Cell Spacing" WF_TABLES_PARAM_CELLSPACING_DESC="Default Cell Spacing" ;#################### Style ############################################ WF_TAB_TEXT ="Text" WF_TAB_BACKGROUND ="Background" WF_TAB_BOX ="Box" WF_TAB_LIST ="List" WF_TAB_BLOCK ="Block" WF_TAB_BORDER ="Border" WF_TAB_POSITIONING ="Positioning" ;#################### Search Replace ############################################ WF_TAB_SEARCH ="Search" WF_TAB_FIND ="Search" WF_TAB_REPLACE ="Replace" ;#################### XHTMLXtras ##################################### WF_TAB_STANDARD ="Standard" WF_TAB_EVENTS ="Events" ;#################### Manager Parameters ################################ WF_PARAM_DIRECTORY ="File Directory Path" WF_PARAM_DIRECTORY_DESC ="Relative path to file directory. Defaults to images or the Editor Parameters File Directory Path value if left blank.
      This path can contain the variables :
      • $id - Will be replaced with the user ID
      • $username - Will be replaced with the user username
      • $usertype - Will be replaced with the user usertype eg: author
      • $profile - Will be replaced with the profile name
      • $group - Will be replaced with the profile name
      • $year - Will be replaced with current year, eg: 2010
      • $month - Will be replaced with current month number, eg: 06
      • $day - Will be replaced with the day number, eg: 10
      " WF_PARAM_ALLOW_ROOT ="Allow Root Access" WF_PARAM_ALLOW_ROOT_DESC ="Allow access to the Joomla! Root directory if the File Directory Path value is blank. This is not recommended for security reasons. If set to No and if the File Directory Path value is blank, the File Directory Path will default to images." WF_PARAM_DIRECTORY_RESTRICTED ="Restricted Directories" WF_PARAM_DIRECTORY_RESTRICTED_DESC ="List of directories that cannot be used as the root folder in the File Directory Path. Default is all Joomla! system folders. Not used if Allow Root Access is Yes" WF_PARAM_DIRECTORY_CREATE ="Create File Directory" WF_PARAM_DIRECTORY_CREATE_DESC ="Create above directory on first load if it does not exist." WF_PARAM_UPLOAD_SIZE ="Upload file size (KB)" WF_PARAM_UPLOAD_SIZE_DESC ="Maximum allowed size in kilobytes of uploaded files.
      Cannot be greater than the Server Upload Size.
      Default value is 1024 KB." WF_PARAM_VIEWABLE ="Viewable Files" WF_PARAM_VIEWABLE_DESC ="List of files that are able to be viewed in a popup window" WF_PARAM_UPLOAD ="Upload" WF_PARAM_UPLOAD_DESC ="User can upload files" WF_PARAM_FOLDER_CREATE ="Folder Create" WF_PARAM_FOLDER_CREATE_DESC ="User can create folders" WF_PARAM_FOLDER_DELETE ="Folder Delete" WF_PARAM_FOLDER_DELETE_DESC ="User can delete folders" WF_PARAM_FOLDER_RENAME ="Folder Rename" WF_PARAM_FOLDER_RENAME_DESC ="User can rename folders" WF_PARAM_FILE_DELETE ="File Delete" WF_PARAM_FILE_DELETE_DESC ="User can delete files" WF_PARAM_FILE_RENAME ="File Rename" WF_PARAM_FILE_RENAME_DESC ="User can rename files" WF_PARAM_FILE_PASTE ="File Cut/Copy/Paste" WF_PARAM_FILE_PASTE_DESC ="User can Cut/Copy/Paste files" WF_PARAM_FILESYSTEM ="Filesystem" WF_PARAM_FILESYSTEM_DESC ="Select the Filesystem to use for the File Browser" NOT_SET ="-- Not Set --" WF_PARAM_NOT_SET ="-- Not Set --" ; ++ Added in 2.0.9 ++ WF_PARAM_FOLDER_PASTE ="Folder Cut/Copy/Paste" WF_PARAM_FOLDER_PASTE_DESC ="User can Cut/Copy/Paste folders" ;#################### Margin ################################ WF_PARAM_MARGIN_TOP ="Margin Top" WF_PARAM_MARGIN_TOP_DESC ="Default Top Margin value in pixels (px)" WF_PARAM_MARGIN_BOTTOM ="Margin Bottom" WF_PARAM_MARGIN_BOTTOM_DESC ="Default Bottom Margin value in pixels (px)" WF_PARAM_MARGIN_LEFT ="Margin Left" WF_PARAM_MARGIN_LEFT_DESC ="Default Left Margin value in pixels (px)" WF_PARAM_MARGIN_RIGHT ="Margin Right" WF_PARAM_MARGIN_RIGHT_DESC ="Default Right Margin value in pixels (px)" WF_LABEL_MARGIN ="Margin" WF_LABEL_MARGIN_DESC ="Margin::Space between the element and adjacent elements or text." ;#################### Border ################################ WF_PARAM_BORDER_ENABLE ="Enable Border" WF_PARAM_BORDER_ENABLE_DESC ="Border option enabled by default" WF_PARAM_BORDER_WIDTH ="Border Width" WF_PARAM_BORDER_WIDTH_DESC ="Default Border width in pixels (px)" WF_PARAM_BORDER_STYLE ="Border Style" WF_PARAM_BORDER_STYLE_DESC ="Default Border Style" WF_PARAM_BORDER_COLOR ="Border Colour" WF_PARAM_BORDER_COLOR_DESC ="Default Border Colour" WF_PARAM_BORDER_THICK ="Thick" WF_PARAM_BORDER_THIN ="Thin" WF_PARAM_BORDER_MEDIUM ="Medium" WF_LABEL_BORDER ="Border" WF_LABEL_BORDER_DESC ="Border::Creates a border around an element with the selected parameters" WF_OPTION_BORDER_THIN ="thin" WF_OPTION_BORDER_THICK ="thick" WF_OPTION_BORDER_MEDIUM ="medium" WF_OPTION_BORDER_NONE ="none" WF_OPTION_BORDER_SOLID ="solid" WF_OPTION_BORDER_DASHED ="dashed" WF_OPTION_BORDER_DOTTED ="dotted" WF_OPTION_BORDER_DOUBLE ="double" WF_OPTION_BORDER_GROOVE ="groove" WF_OPTION_BORDER_INSET ="inset" WF_OPTION_BORDER_OUTSET ="outset" WF_OPTION_BORDER_RIDGE ="ridge" WF_LABEL_BORDER_ENABLE ="Enable Border" WF_LABEL_BORDER_ENABLE_DESC ="Enable Border by default" WF_LABEL_BORDER_WIDTH_DESC ="Width::Width of the border in pixels or named width" WF_LABEL_BORDER_STYLE_DESC ="Style::Style of the border" WF_LABEL_BORDER_COLOR_DESC ="Colour::Hex Colour of the border (eg: #000000)" ;#################### Align ################################ WF_PARAM_ALIGN_DEFAULT ="Alignment" WF_PARAM_ALIGN_DEFAULT_DESC ="Default Alignment" WF_LABEL_ALIGN ="Alignment" WF_OPTION_ALIGN_DEFAULT ="--Not Set--" WF_OPTION_ALIGN_BASELINE ="Baseline" WF_OPTION_ALIGN_TOP ="Top" WF_OPTION_ALIGN_MIDDLE ="Middle" WF_OPTION_ALIGN_BOTTOM ="Bottom" WF_OPTION_ALIGN_TEXTTOP ="TextTop" WF_OPTION_ALIGN_ABSMIDDLE ="Absolute Middle" WF_OPTION_ALIGN_ABSBOTTOM ="Absolute Bottom" WF_OPTION_ALIGN_LEFT ="Left" WF_OPTION_ALIGN_RIGHT ="Right" WF_OPTION_ALIGN_CENTER ="Centre" WF_OPTION_ALIGN_JUSTIFIED ="Justified" WF_LABEL_ALIGN_DESC ="Alignment::Position of the element on the page or in relation to other elements." ;#################### Admin Labels ################################ WF_LABEL_FILTER ="Filter" WF_LABEL_GO ="Go" WF_LABEL_SEARCH ="Search" WF_LABEL_RESET ="Reset" ;++ Added in 2.2.0 ++ WF_LABEL_SEARCH_OPTIONS ="Search Options" ;#################### Generic ################################ WF_LABEL_NAME ="Name" WF_LABEL_NAME_DESC ="Name::Defines a unique name for the element" WF_LABEL_VERSION ="Version" WF_LABEL_AUTHOR ="Author" WF_LABEL_LANGUAGE ="Language" WF_LABEL_DATE ="Date" WF_LABEL_SIZE ="Size" WF_LABEL_AUTHOR_INFO ="Author Information" WF_LABEL_TOP ="Top" WF_LABEL_BOTTOM ="Bottom" WF_LABEL_DEFAULT ="Default" WF_LABEL_SAVE ="Save" WF_LABEL_APPLY ="Apply" WF_LABEL_SAVECLOSE ="Save & Close" WF_LABEL_SELECT ="Select" WF_LABEL_OK ="Ok" WF_LABEL_CANCEL ="Cancel" WF_LABEL_REFRESH ="Refresh" WF_LABEL_HELP ="Help" WF_LABEL_INSERT ="Insert" WF_LABEL_PROPERTIES ="Properties" WF_LABEL_ATTRIBUTES ="Attributes" WF_LABEL_ADVANCED ="Advanced" WF_LABEL_PREVIEW ="Preview" WF_LABEL_BYTES ="Bytes" WF_LABEL_KB ="KB" WF_LABEL_MB ="MB" WF_LABEL_BROWSE ="Browse" WF_LABEL_BROWSER ="File Browser" WF_LABEL_SHOW ="Show" WF_LABEL_DETAILS ="Details" WF_LABEL_FOLDERS ="Folders" WF_LABEL_DIMENSIONS ="Dimensions" WF_LABEL_DIMENSIONS_DESC ="Dimensions::Width and Height of the element in pixels." WF_LABEL_PROPORTIONAL ="Proportional" WF_LABEL_URL ="URL" WF_LABEL_URL_DESC ="URL::Relative location of the image, file, article or document, eg: image.jpg (Required)" WF_LABEL_TITLE ="Title" WF_LABEL_TITLE_DESC ="Title::Text to display in a simple tooltip when the mouse is placed over the element." WF_LABEL_STYLE ="Style" WF_LABEL_STYLE_DESC ="Style::List of inline css properties to be applied to the element." WF_LABEL_COLOR ="Colour" WF_LABEL_CLASS_LIST ="Class List" WF_LABEL_CLASS_LIST_DESC ="Class List::List of available template css classes" WF_LABEL_CLASSES ="Classes" WF_LABEL_CLASSES_DESC ="Classes::List (separated by a space) of css classes to be applied to the element." WF_LABEL_ALT ="Alternate Text" WF_LABEL_ALT_DESC ="Alternate Text::A short description of the image (XHTML/WAI 508 Required)" WF_LABEL_EQUAL ="Equal Values" WF_OPTION_YES ="Yes" WF_OPTION_NO ="No" WF_OPTION_NOT_SET ="--Not Set--" WF_OPTION_NONE ="None" WF_OPTION_ALL ="All" WF_OPTION_CENTER ="Centre" WF_OPTION_TOP ="Top" WF_OPTION_BOTTOM ="Bottom" WF_OPTION_EXTERNAL ="External" WF_OPTION_AUTO ="Auto" WF_OPTION_ON ="On" WF_OPTION_OFF ="Off" WF_OPTION_BASIC ="Basic" WF_OPTION_ADVANCED ="Advanced" WF_LABEL_LANG ="Language Code" WF_LABEL_LANG_DESC ="Language Code::Language code of the element, eg: en-GB" WF_LABEL_ID ="Id" WF_LABEL_ID_DESC ="Id::Unique identifier that distinguishes the element from others in the document." WF_LABEL_ACCESSKEY ="Access Key" WF_LABEL_ACCESSKEY_DESC ="Access Key::Keyboard shortcut to access the element" WF_LABEL_TABINDEX ="Tab Index" WF_LABEL_TABINDEX_DESC ="Tab Index::Tab order of the element" WF_LABEL_WIDTH ="Width" WF_LABEL_HEIGHT ="Height" WF_LABEL_ADDRESS ="Address" WF_LABEL_LONGDESC ="Long Description" WF_LABEL_LONGDESC_DESC ="Long Description::Url to a document containing a detailed description of the image." WF_LABEL_ENABLE ="Enable" WF_LABEL_TEXT ="Text" WF_LABEL_OPTIONS ="Options" WF_LABEL_LINK ="Link" WF_LABEL_PLUGINS ="Plugins" WF_LABEL_PLUGIN ="Plugin" WF_LABEL_EXTENSIONS ="Extensions" WF_LABEL_EXTENSION ="Extension" WF_LABEL_TYPE ="Type" WF_LABEL_APPLY ="Apply" WF_LABEL_USERNAME ="Username" WF_LABEL_PASSWORD ="Password" WF_LABEL_ERROR ="Error" WF_LABEL_ROOT ="Root" WF_MESSAGE_TREE ="Building Tree List..." WF_MESSAGE_LOAD ="Loading..." WF_ALERT_DELETE ="Delete Selected Item(s)?" WF_ALERT_RENAME ="Renaming files/folders will break existing links. Continue?" WF_LABEL_ALL_FILES ="All Files" ; +++ Added in 2.0.6 +++ WF_LABEL_ALERT ="Alert" WF_MESSAGE_REQUIRED ="The following fields are required:" ; ++ Added in 2.2.0 ++ WF_LABEL_STATE ="State" WF_STATE_DESC ="Set plugin state" ;++ Added in 2.2.4 ++ WF_OPTION_DEFAULT ="Default" WF_OPTION_INHERIT ="Inherit" ;#################### Position (Border, Margin, Padding etc) ################################ WF_OPTION_LEFT ="Left" WF_OPTION_RIGHT ="Right" WF_OPTION_TOP ="Top" WF_OPTION_BOTTOM ="Bottom" WF_OPTION_TOP_LEFT ="Top Left" WF_OPTION_TOP_RIGHT ="Top Right" WF_OPTION_BOTTOM_LEFT ="Bottom Left" WF_OPTION_BOTTOM_RIGHT ="Bottom Right" ;#################### Target ################################ WF_LABEL_TARGET ="Target" WF_LABEL_TARGET_DESC ="Target::Specifies where the link destination document will be loaded." WF_OPTION_TARGET_SELF ="Open in current window / frame" WF_OPTION_TARGET_PARENT ="Open in parent window / frame" WF_OPTION_TARGET_TOP ="Open in top frame (replaces all frames)" WF_OPTION_TARGET_BLANK ="Open in new window" ;#################### Clear ################################ WF_LABEL_CLEAR ="Clear" WF_LABEL_CLEAR_DESC ="Clear::Sides of the element where other elements cannot be situated." WF_OPTION_CLEAR_LEFT ="Left" WF_OPTION_CLEAR_RIGHT ="Right" WF_OPTION_CLEAR_BOTH ="Both" WF_OPTION_CLEAR_NONE ="None" ;#################### Language Direction ################################ WF_LABEL_DIR ="Language Direction" WF_LABEL_DIR_DESC ="Language Direction::Text direction of the element" WF_OPTION_LTR ="Left to Right" WF_OPTION_RTL ="Right to Left" ;#################### Buttons ################################ WF_BUTTON_HELP ="Help" WF_BUTTON_INSERT ="Insert" WF_BUTTON_CANCEL ="Cancel" WF_BUTTON_REFRESH ="Refresh" WF_BUTTON_UPLOAD ="Upload" WF_BUTTON_FOLDER_NEW ="New Folder" WF_BUTTON_DELETE ="Delete" WF_BUTTON_RENAME ="Rename" WF_BUTTON_COPY ="Copy" WF_BUTTON_CUT ="Cut" WF_BUTTON_PASTE ="Paste" WF_BUTTON_VIEW ="View" WF_BUTTON_FILE_INSERT ="Insert" ;#################### Plugin Tabs ################################ WF_TAB_GENERAL ="General" WF_TAB_ADVANCED ="Advanced" WF_TAB_POPUP ="Popup" WF_TAB_POPUPS ="Popups" ;#################### Popups ################################ WF_POPUPS ="Popups" WF_POPUP_ENABLE ="Enable Popup" WF_POPUP_ENABLE_DESC ="Enable Popup::Click to enable popups. Additional 3rd party plugins may be required." WF_POPUP_TYPE_DESC ="Popup Type::Select Popup Type from available options" WF_POPUP_TYPE ="Popup Type" WF_POPUP_TYPE_SELECT ="Select Type" WF_POPUP_MEDIABOX ="Requires JCE MediaBox" WF_POPUP_TEXT_DESC ="Text::If no content selection is made or if the selection is plain text, enter new text or edit the text for the link here" WF_POPUP_TEXT ="Text" ;#################### Manager Help ################################ WF_MANAGER_HELP ="Manager Help" WF_MANAGER_HELP_UPLOAD ="Upload a file" WF_MANAGER_HELP_DELETE ="Delete a file / folder" WF_MANAGER_HELP_RENAME ="Rename a file / folder" WF_MANAGER_HELP_CREATE ="Create a folder" ;#################### Manager Errors ################################ WF_MANAGER_NEW_FOLDER_ERROR ="Unable to create folder - '%s'" WF_MANAGER_MOVE_FILES_ERROR ="Unable to move item - '%s'" WF_MANAGER_COPY_FILES_ERROR ="Unable to copy item - '%s'" WF_MANAGER_RENAME_FILES_ERROR ="Unable to rename file - '%s'" WF_MANAGER_RENAME_FOLDERS_ERROR ="Unable to rename folder - '%s'" WF_MANAGER_DELETE_FOLDERS_ERROR ="Unable to delete folder - '%s'" WF_MANAGER_DELETE_FILES_ERROR ="Unable to delete file - '%s'" WF_MANAGER_UPLOAD_ERROR ="Upload failed!" WF_MANAGER_UPLOAD_NOSUPPORT ="Upload method not supported" WF_MANAGER_FOLDER_NOT_EMPTY ="Unable to delete folder - '%s'. Folder not empty" WF_MANAGER_UPLOAD_INVALID_EXT_ERROR ="Upload failed : Invalid file type" WF_MANAGER_UPLOAD_INVALID_IMAGE_ERROR ="Upload failed : Not a valid image file." WF_MANAGER_UPLOAD_RESTRICTED_ERROR ="Upload failed : Restricted" ; ++ Added in 2.0.15 ++ WF_MANAGER_COPY_INTO_ERROR ="Unable to copy folder - Folders cannot be copied into themselves." ; ++ Added in 2.0.15 ++ WF_MANAGER_UPLOAD_SIZE_ERROR ="Upload failed : %s (%s) exceeds the maximum allowed size of %s" ;#################### Manager File suffix ################################ WF_MANAGER_FILE_SUFFIX ="_copy" ;#################### Extensions ################################ WF_LABEL_EXTENSION_ENABLE ="Enable" WF_LABEL_EXTENSION_ENABLE_DESC ="Enable this extension for the plugin" WF_EXTENSIONS_LINKS_TITLE ="Links" WF_EXTENSIONS_LINKS_DESC ="Link Extensions" WF_EXTENSIONS_POPUPS_TITLE ="Popups" WF_EXTENSIONS_POPUPS_DESC ="Popup Extensions" WF_EXTENSIONS_FILESYSTEM_TITLE ="Filesystem" WF_EXTENSIONS_FILESYSTEM_TITLE_DESC ="Filesystem used for File Browser" WF_EXTENSIONS_MEDIAPLAYERS_TITLE ="MediaPlayer" WF_EXTENSIONS_MEDIAPLAYERS_DESC ="MediaPlayer Extensions" WF_FILESYSTEM_PARAMETERS ="FileSystem Parameters" WF_FILESYSTEM_JOOMLA_TITLE ="Joomla! (Default)" WF_FILESYSTEM_JOOMLA_DESC ="Native Joomla! Filesystem functions" WF_EXTENSIONS_MEDIAPLAYER_TITLE ="MediaPlayer" WF_MEDIAPLAYER_OPTIONS ="MediaPlayer Options" WF_MEDIAPLAYER_EXTENSIONS ="Supported Extensions" WF_MEDIAPLAYER_EXTENSIONS_DESC ="Media types supported by this Media Player" WF_MEDIAPLAYER_PATH ="Path" WF_MEDIAPLAYER_PATH_DESC ="Relative path or Absolute URL to the Media Player file" WF_EXTENSIONS_AGGREGATOR_TITLE ="External Media Resource" ; ## JCE Media Player ## WF_MEDIAPLAYER_JCEPLAYER_TITLE ="JCE MediaPlayer" WF_MEDIAPLAYER_JCEPLAYER_DESC ="JCE MediaPlayer Extension" WF_MEDIAPLAYER_JCEPLAYER_AUTOPLAY ="Autoplay" WF_MEDIAPLAYER_JCEPLAYER_AUTOPLAY_DESC ="Autoplay::Starts playing the media automatically, without user input. The default behaviour for the player is to require the user to start playback." WF_MEDIAPLAYER_JCEPLAYER_LOOP ="Loop" WF_MEDIAPLAYER_JCEPLAYER_LOOP_DESC ="Loop::Restarts media playback when the end of the file is reached. The default behaviour for the player is not to loop." WF_MEDIAPLAYER_JCEPLAYER_AUDIOPAN ="Sound Balance" WF_MEDIAPLAYER_JCEPLAYER_AUDIOPAN_DESC ="Sound Balance::The left-right sound volume balance for the media. Allowable values range from -1 (full pan left) to 1 (full pan right). A value of 0 sets both sides to an equal volume." WF_MEDIAPLAYER_JCEPLAYER_VOLUME ="Volume" WF_MEDIAPLAYER_JCEPLAYER_VOLUME_DESC ="Volume::The initial volume of the media. Allowable values range from 0 (silent) to 1 (full volume)." WF_MEDIAPLAYER_JCEPLAYER_MUTED ="Muted" WF_MEDIAPLAYER_JCEPLAYER_MUTED_DESC ="Muted::Specifies whether the player initially loads content with its volume on or off." WF_MEDIAPLAYER_JCEPLAYER_CONTROLBAR_MODE ="Control bar position" WF_MEDIAPLAYER_JCEPLAYER_CONTROLBAR_MODE_DESC ="Control bar position::The location where the players controls are displayed. The default value sets the controls along the bottom of the player window. A value of floating displays the control bar hovering over the content, near the bottom of the window If a value of none is set, no control bar is displayed." WF_MEDIAPLAYER_JCEPLAYER_CONTROLBAR_DOCKED ="Docked" WF_MEDIAPLAYER_JCEPLAYER_CONTROLBAR_FLOATING ="Floating" WF_MEDIAPLAYER_JCEPLAYER_CONTROLBAR_NONE ="None" WF_MEDIAPLAYER_JCEPLAYER_CONTROLBAR_AUTOHIDE ="Control bar visible" WF_MEDIAPLAYER_JCEPLAYER_CONTROLBAR_AUTOHIDE_DESC ="Control bar visibility::Whether the players controls are visible at all times. With the default value (true), the controls are always displayed, otherwise they are not displayed unless the user is hovering the mouse over the player. When this occurs, the controls remain visible while the user interacts with the player and for an additional period of time equal to the controlBarAutoHideTimeout setting. With a value of false, the controls are continuously visible and may reduce the amount of the player window available to display content." WF_MEDIAPLAYER_JCEPLAYER_CONTROLBAR_TIMEOUT ="Control bar visibility duration" WF_MEDIAPLAYER_JCEPLAYER_CONTROLBAR_TIMEOUT_DESC ="Control bar visibility duration::A duration, in seconds, for the control bar to remain visible, after the user has stopped interacting with the player. Default is 3. This value is used when controlBarAutoHide is set to true." WF_MEDIAPLAYER_JCEPLAYER_POSTER ="Pre-play poster frame" WF_MEDIAPLAYER_JCEPLAYER_POSTER_DESC ="Pre-play poster frame::A URL specifying an image to display in the player window before playback begins. If no default poster image is provided, the player displays the current background colour. The image must be in a bitmap image format, such PNG, BMP, or JPG. Vector images, movies, or animations are not supported." WF_MEDIAPLAYER_JCEPLAYER_VIDEOOVERLAY ="Post-play poster frame" WF_MEDIAPLAYER_JCEPLAYER_VIDEOOVERLAY_DESC ="Post-play poster frame::A URL specifying an image to display in the player window after playback completes. This value is set to the value of the poster setting by default, so that the same poster image appears at the end as at the beginning of playback. The same file type restrictions as for poster apply." WF_MEDIAPLAYER_JCEPLAYER_PLAYBUTTONOVERLAY ="Play button overlay" WF_MEDIAPLAYER_JCEPLAYER_PLAYBUTTONOVERLAY_DESC ="Play button overlay::The default value displays a large Play button over the centre of the player window before playback begins." WF_MEDIAPLAYER_JCEPLAYER_BUFFERINGOVERLAY ="Buffering indicator" WF_MEDIAPLAYER_JCEPLAYER_BUFFERINGOVERLAY_DESC ="Buffering indicator::The default value displays a visual notification when playback is paused to refill the buffer." ; ++ Added in 2.0.7 ++ WF_MEDIAPLAYER_JCEPLAYER_BACKGROUNDCOLOR ="Background Colour" WF_MEDIAPLAYER_JCEPLAYER_BACKGROUNDCOLOR_DESC ="Background Colour::The colour for the background of the player in hex format, ie: #000000. The player background is visible when no content is being played. The default colour is black." ;## JCE JoomlaLinks ## WF_LINKS_JOOMLALINKS_TITLE ="Joomla! Links" WF_LINKS_JOOMLALINKS_DESC ="Joomla! Links::Adds Joomla! Content, Menu, WebLink and Contact links to the Link Browser." WF_LINKS_JOOMLALINKS_MENU ="Menu" WF_LINKS_JOOMLALINKS_CONTENT ="Content" WF_LINKS_JOOMLALINKS_UNCATEGORIZED ="Uncategorized" WF_LINKS_JOOMLALINKS_WEBLINKS ="Weblinks" WF_LINKS_JOOMLALINKS_CONTACTS ="Contacts" WF_LINKS_JOOMLALINKS_PARAM_CONTENT ="Content List" WF_LINKS_JOOMLALINKS_PARAM_CONTENT_DESC ="Show Content Links List" WF_LINKS_JOOMLALINKS_PARAM_UNCATEGORIZED ="Uncategorized List" WF_LINKS_JOOMLALINKS_PARAM_UNCATEGORIZED_DESC ="Show Uncategorized Links List" WF_LINKS_JOOMLALINKS_PARAM_MENU ="Menu List" WF_LINKS_JOOMLALINKS_PARAM_MENU_DESC ="Show Menu Links List" WF_LINKS_JOOMLALINKS_PARAM_CONTACT ="Contact List" WF_LINKS_JOOMLALINKS_PARAM_CONTACT_DESC ="Show Contacts Links List" WF_LINKS_JOOMLALINKS_PARAM_WEBLINKS ="Weblinks List" WF_LINKS_JOOMLALINKS_PARAM_WEBLINKS_DESC ="Show Weblinks Links List" WF_LINKS_JOOMLALINKS_PARAM_ARTICLE_ALIAS ="Add Article Alias" WF_LINKS_JOOMLALINKS_PARAM_ARTICLE_ALIAS_DESC ="Add alias to article links" WF_LINKS_JOOMLALINKS_PARAM_ARTICLE_MENU_LINK ="Resolve Menu Links" WF_LINKS_JOOMLALINKS_PARAM_ARTICLE_MENU_LINK_DESC="Resolve menu short links eg: index.php?Itemid=30 to the full menu link if available. No is recommended if SEF is activated." ; ++ Added in 2.0.21 ++ WF_LINKS_JOOMLALINKS_PARAM_WEBLINKS_ALIAS ="Add Weblinks Alias" WF_LINKS_JOOMLALINKS_PARAM_WEBLINKS_ALIAS_DESC ="Add alias to weblink links" ;## Window Popups ## WF_POPUPS_WINDOW_TITLE ="Window Popups" WF_POPUPS_WINDOW_DESC ="Create and editor browser window popups" WF_POPUPS_WINDOW_OPTION_TITLE ="Title" WF_POPUPS_WINDOW_OPTION_TITLE_DESC ="Title::Popup Window Title" WF_POPUPS_WINDOW_MODE ="Mode" WF_POPUPS_WINDOW_MODE_DESC ="Window Mode::Basic - Shows only the content. Advanced - Set various window options such as scrollbars, location bar etc. on or off." WF_POPUPS_WINDOW_OPTIONS ="Options" WF_POPUPS_WINDOW_SCROLLBARS ="Show Scrollbars" WF_POPUPS_WINDOW_SCROLLBARS_DESC ="Show Scollbars::Show scrollbars if window content dimensions exceed window dimensions" WF_POPUPS_WINDOW_RESIZABLE ="Resizable" WF_POPUPS_WINDOW_RESIZABLE_DESC ="Resizable::Window can be resized" WF_POPUPS_WINDOW_POSITION ="Position" WF_POPUPS_WINDOW_POSITION_DESC ="Position::Position of the window on the screen" WF_POPUPS_WINDOW_LOCATIONBAR ="Show Location Bar" WF_POPUPS_WINDOW_LOCATIONBAR_DESC ="Show Location Bar::Show Window Location Bar" WF_POPUPS_WINDOW_TOOLBAR ="Show Toolbar" WF_POPUPS_WINDOW_TOOLBAR_DESC ="Show Toolbar::Show Window Toolbar" WF_POPUPS_WINDOW_LOCATION ="Show Location Bar" WF_POPUPS_WINDOW_LOCATION_DESC ="Show Location Bar::Show Window Location Bar" WF_POPUPS_WINDOW_STATUS ="Show Status Bar" WF_POPUPS_WINDOW_STATUS_DESC ="Show Status Bar::Show Window Status Bar" WF_POPUPS_WINDOW_MENUBAR ="Show Menu Bar" WF_POPUPS_WINDOW_MENUBAR_DESC ="Show Menu Bar::Show Window Menu Bar" ; ## JCE MediaBox ## WF_POPUPS_JCEMEDIABOX_TITLE ="JCE MediaBox Popups" WF_POPUPS_JCEMEDIABOX_DESC ="Create and editor popup links for JCE MediaBox" WF_POPUPS_JCEMEDIABOX_OPTION_TITLE ="Title" WF_POPUPS_JCEMEDIABOX_OPTION_TITLE_DESC ="Title::Title for the popup" WF_POPUPS_JCEMEDIABOX_CAPTION ="Caption" WF_POPUPS_JCEMEDIABOX_CAPTION_DESC ="Caption::Caption for the popup." WF_POPUPS_JCEMEDIABOX_GROUP ="Group" WF_POPUPS_JCEMEDIABOX_GROUP_DESC ="Group::Group to associate this popup with. Popups in the same group will be shown as a gallery." WF_POPUPS_JCEMEDIABOX_PARAMS ="Parameters" ; ++ Changed in JCE 2.0.18 ++ WF_POPUPS_JCEMEDIABOX_PARAMS_DESC ="Parameters::Set additional parameters for the popup or popup content. A parameter name and value are required. Click the Add button to add parameters and the remove button to remove them." WF_POPUPS_JCEMEDIABOX_DIMENSIONS ="Dimensions" WF_POPUPS_JCEMEDIABOX_DIMENSIONS_DESC ="Dimensions::Width / Height of the popup window in pixels. Omit either or both values to use fullscreen dimensions." WF_POPUPS_JCEMEDIABOX_ICON ="Popup Icon" WF_POPUPS_JCEMEDIABOX_ICON_DESC ="Popup Icon::Enable / Disable display of popup icon on target item" WF_POPUPS_JCEMEDIABOX_ICON_POSITION ="Icon Position" WF_POPUPS_JCEMEDIABOX_ICON_POSITION_DESC ="Icon Position::Position of the popup icon on the target item. If target item is a text link, position is limited to left / right." WF_POPUPS_JCEMEDIABOX_ICON_TOP_LEFT ="Top Left" WF_POPUPS_JCEMEDIABOX_ICON_BOTTOM_LEFT ="Bottom Left" WF_POPUPS_JCEMEDIABOX_ICON_TOP_RIGHT ="Top Right" WF_POPUPS_JCEMEDIABOX_ICON_BOTTOM_RIGHT ="Bottom Right" WF_POPUPS_JCEMEDIABOX_UTILITIES_REQUIRED ="The JCE Utilities plugin must be installed and enabled to use the Popup feature." WF_POPUPS_JCEMEDIABOX_AUTO ="Auto Popup" WF_POPUPS_JCEMEDIABOX_AUTO_DESC ="Auto Popup::Popup will open automatically on page load based on the selected setting.
      Single - open once per browser session.
      Multiple - open on every page load." WF_POPUPS_JCEMEDIABOX_AUTO_SINGLE ="Single" WF_POPUPS_JCEMEDIABOX_AUTO_MULTIPLE ="Multiple" WF_POPUPS_JCEMEDIABOX_HIDE ="Hide Popup Link" WF_POPUPS_JCEMEDIABOX_HIDE_DESC ="Hide Popup Link::Hides the popup link and child elements. Useful when creating image galleries launched from a single link." WF_POPUPS_JCEMEDIABOX_MEDIATYPE ="Media Type" WF_POPUPS_JCEMEDIABOX_MEDIATYPE_DESC ="Media Type::Select Popup Media Type. This is crucial in determining how the popup will load. Some formats such as images and social media like Youtube and Vimeo etc. can be detected from the popup url by JCE MediaBox" WF_POPUPS_JCEMEDIABOX_IMAGE ="Image" WF_POPUPS_JCEMEDIABOX_INTERNAL ="Internal Links" WF_POPUPS_JCEMEDIABOX_EXTERNAL ="External Links / IFrame / Youtube / Vimeo" WF_POPUPS_JCEMEDIABOX_FLASH ="Adobe® Flash®" WF_POPUPS_JCEMEDIABOX_QUICKTIME ="Quicktime®" WF_POPUPS_JCEMEDIABOX_WINDOWSMEDIA ="Windows Media Player®" WF_POPUPS_JCEMEDIABOX_DIRECTOR ="Adobe® Shockwave®" WF_POPUPS_JCEMEDIABOX_REAL ="RealPlayer®" WF_POPUPS_JCEMEDIABOX_SILVERLIGHT ="Silverlight®" WF_POPUPS_JCEMEDIABOX_DIVX ="DivX®" ; ++ Added in 2.0.16 ++ WF_POPUPS_JCEMEDIABOX_VIDEO_MP4 ="MP4 Video" WF_POPUPS_JCEMEDIABOX_VIDEO_WEBM ="WebM Video" WF_POPUPS_JCEMEDIABOX_AUDIO_MP3 ="MP3 Audio" WF_POPUPS_JCEMEDIABOX_AUDIO_WEBM ="WebM Audio" WF_POPUPS_JCEMEDIABOX_VERSION_ERROR ="Version %s or later of the JCE MediaBox System Plugin is required" WF_AGGREGATOR_MORE_OPTIONS ="Additional Options" ; ## Youtube Aggregator ## WF_AGGREGATOR_YOUTUBE_TITLE ="Youtube" WF_AGGREGATOR_YOUTUBE_DESC ="Youtube - External Media Resource" WF_AGGREGATOR_YOUTUBE_EMBED ="Use Embed Method" WF_AGGREGATOR_YOUTUBE_EMBED_DESC ="Use Embed Method::Embed Youtube video using OBJECT and EMBED elements" WF_AGGREGATOR_YOUTUBE_RELATED ="Show Related" WF_AGGREGATOR_YOUTUBE_RELATED_DESC ="Show Related::Show Related Videos" WF_AGGREGATOR_YOUTUBE_HTTPS ="Use HTTPS" WF_AGGREGATOR_YOUTUBE_HTTPS_DESC ="Use HTTPS::Use secure url in Youtube link" WF_AGGREGATOR_YOUTUBE_PRIVACY ="Enable privacy-enhanced mode" WF_AGGREGATOR_YOUTUBE_PRIVACY_DESC ="Enable privacy-enhanced mode::Enable privacy-enhanced mode" WF_AGGREGATOR_YOUTUBE_AUTOPLAY ="Autoplay" WF_AGGREGATOR_YOUTUBE_AUTOPLAY_DESC ="Autoplay::Sets whether or not the initial video will autoplay when the player loads" WF_AGGREGATOR_YOUTUBE_AUTOHIDE ="Autohide" WF_AGGREGATOR_YOUTUBE_AUTOHIDE_DESC ="Autohide::This parameter indicates whether the video controls will automatically hide after a video begins playing. The default behaviour is for the video progress bar to fade out while the player controls (play button, volume control, etc.) remain visible.
      • If this parameter is set to 0, the video progress bar and the video player controls will be visible throughout the video.
      • If this parameter is set to 1, then the video progress bar and the player controls will slide out of view a couple of seconds after the video starts playing. They will only reappear if the user moves her mouse over the video player or presses a key on her keyboard.
      " WF_AGGREGATOR_YOUTUBE_CONTROLS ="Controls" WF_AGGREGATOR_YOUTUBE_CONTROLS_DESC ="Controls::This parameter indicates whether the video player controls will display. If this parameter is set to 0, then the player controls will not display, causing the player to look like the chromeless player." WF_AGGREGATOR_YOUTUBE_LOOP ="Loop" WF_AGGREGATOR_YOUTUBE_LOOP_DESC ="Loop::In the case of a single video player, checking this option will cause the player to play the initial video again and again. In the case of a playlist player (or custom player), the player will play the entire playlist and then start again at the first video." WF_AGGREGATOR_YOUTUBE_PLAYLIST ="Playlist" WF_AGGREGATOR_YOUTUBE_PLAYLIST_DESC ="Playlist::Value is a comma-separated list of video IDs to play. If you specify a value, the first video that plays will be the VIDEO_ID specified in the URL path, and the videos specified in the playlist parameter will play thereafter." WF_AGGREGATOR_YOUTUBE_START ="Start" WF_AGGREGATOR_YOUTUBE_START_DESC ="Start::This parameter causes the player to begin playing the video at the given number of seconds from the start of the video" WF_AGGREGATOR_YOUTUBE_WIDTH_DESC ="Default Width to use for the Video" WF_AGGREGATOR_YOUTUBE_HEIGHT_DESC ="Default Height to use for the Video" ; ## Vimeo Aggregator ## WF_AGGREGATOR_VIMEO_TITLE ="Vimeo" WF_AGGREGATOR_VIMEO_DESC ="Vimeo - External Media Resource" WF_AGGREGATOR_VIMEO_COLOR ="Colour" WF_AGGREGATOR_VIMEO_COLOR_DESC ="Colour::Player Colour" WF_AGGREGATOR_VIMEO_EMBED ="Use Old Embed Method" WF_AGGREGATOR_VIMEO_EMBED_DESC ="Use Old Embed Method::Embed Vimeo video using OBJECT and EMBED elements instead of IFrame" WF_AGGREGATOR_VIMEO_AUTOPLAY ="Autoplay" WF_AGGREGATOR_VIMEO_AUTOPLAY_DESC ="Autoplay::Sets whether or not the initial video will autoplay when the player loads" WF_AGGREGATOR_VIMEO_LOOP ="Loop" WF_AGGREGATOR_VIMEO_LOOP_DESC ="Loop::Checking this option will cause the player to play the video again and again." WF_AGGREGATOR_VIMEO_FULLSCREEN ="Fullscreen" WF_AGGREGATOR_VIMEO_FULLSCREEN_DESC ="Fullscreen::Allow Fullscreen option" WF_AGGREGATOR_VIMEO_BYLINE ="Byline" WF_AGGREGATOR_VIMEO_BYLINE_DESC ="Byline::Show Intro Byline" WF_AGGREGATOR_VIMEO_PORTRAIT ="Portrait" WF_AGGREGATOR_VIMEO_PORTRAIT_DESC ="Portrait::Show Intro Portrait" WF_AGGREGATOR_VIMEO_INTROTITLE ="Title" WF_AGGREGATOR_VIMEO_INTROTITLE_DESC ="Title::Show Intro Title" WF_AGGREGATOR_VIMEO_INTRO ="Intro Options" WF_AGGREGATOR_VIMEO_WIDTH_DESC ="Default Width to use for the Video" WF_AGGREGATOR_VIMEO_HEIGHT_DESC ="Default Height to use for the Video" ;++ Added in 2.0.16 ++ JACTION_ADMIN ="Configure Component" JACTION_ADMIN_COMPONENT_DESC ="Allow users in this group to edit the Permissions options for this extension" ; ++ Added in 2.0.8 ++ JACTION_MANAGE ="Access Component" JACTION_MANAGE_COMPONENT_DESC ="Allow users in this group to access this extension" WF_ACTION_CONFIG ="Editor Global Configuration" WF_ACTION_CONFIG_DESC ="Allow users in this group to access and edit the Editor Global Configuration" WF_ACTION_PROFILES ="Editor Profiles" WF_ACTION_PROFILES_DESC ="Allow users in this group to access and edit Editor Profiles" WF_ACTION_PREFERENCES ="Administration Options" WF_ACTION_PREFERENCES_DESC ="Allow users in this group to access and edit the Administration Options" WF_ACTION_INSTALLER ="Install Add-ons" WF_ACTION_INSTALLER_DESC ="Allow users in this group to Install Add-ons" WF_ACTION_BROWSER ="File Browser" WF_ACTION_BROWSER_DESC ="Allow users in this group to access the File Browser" WF_ACTION_MEDIABOX ="JCE MediaBox Parameters" WF_ACTION_MEDIABOX_DESC ="Allow users in this group to access the MediaBox Parameters" WF_RULES_ACTION="Action" WF_RULES_ALLOWED="Allowed" WF_RULES_DENIED="Denied" WF_RULES_GROUP="%s" WF_RULES_GROUPS="Groups" WF_RULES_NOT_SET="Not Set" WF_RULES_SELECT_ALLOW_DENY_GROUP="Allow or deny %s for users in the %s group" WF_RULES_SELECT_SETTING="Select New Setting" WF_RULES_SETTINGS_DESC="Manage the permission settings for the user groups below" ; ## Filegroups && Trademark Labels ## ; ++++ Added / Updated in 2.0.2 ++++ WF_FILEGROUP_ALL ="All Files" WF_FILEGROUP_IMAGE ="Images" WF_FILEGROUP_HTML ="HTML Files" WF_FILEGROUP_ARCHIVE ="Archive Files" WF_FILEGROUP_TEXT ="Text Files" WF_FILEGROUP_VIDEO ="Video" WF_FILEGROUP_AUDIO ="Audio" WF_FILEGROUP_ACROBAT ="Adobe® Acrobat®" WF_FILEGROUP_EXCEL ="Microsoft Excel®" WF_FILEGROUP_WORD ="Microsoft Word®" WF_FILEGROUP_POWERPOINT ="Microsoft Powerpoint®" WF_FILEGROUP_OFFICE ="Microsoft Office®" WF_FILEGROUP_FLASH ="Adobe® Flash®" WF_FILEGROUP_SHOCKWAVE ="Adobe® Shockwave®" WF_FILEGROUP_QUICKTIME ="Quicktime®" WF_FILEGROUP_WINDOWSMEDIA="Windows Media Player®" WF_FILEGROUP_SILVERLIGHT="Silverlight®" WF_FILEGROUP_DIVX ="DivX®" WF_FILEGROUP_OPENOFFICE ="OpenOffice.org" WF_FILEGROUP_REAL ="RealPlayer®" ; ## Link Search ## ;++ Added in 2.2.0 ++ WF_SEARCH_ALL_WORDS="All words" WF_SEARCH_ALPHABETICAL="Alphabetical" WF_SEARCH_ANY_WORDS="Any words" WF_SEARCH_ERROR_ENTERKEYWORD="Enter a search keyword" WF_SEARCH_ERROR_IGNOREKEYWORD="One or more common words were ignored in the search." WF_SEARCH_ERROR_SEARCH_MESSAGE="Search term must be a minimum of %1$s characters and a maximum of %2$s characters." WF_SEARCH_EXACT_PHRASE="Exact Phrase" WF_SEARCH_FIELD_SEARCH_AREAS_DESC="Show the search areas checkboxes" WF_SEARCH_FIELD_SEARCH_AREAS_LABEL="Use Search Areas" WF_SEARCH_FOR="Search for:" WF_SEARCH_MOST_POPULAR="Most Popular" WF_SEARCH_NEWEST_FIRST="Newest First" WF_SEARCH_OLDEST_FIRST="Oldest First" WF_SEARCH_ORDERING="Ordering:" WF_SEARCH_SEARCH="Search" WF_SEARCH_SEARCH_AGAIN="Search Again" WF_SEARCH_SEARCH_KEYWORD="Search Keyword:" WF_SEARCH_SEARCH_KEYWORD_N_RESULTS_1="Total: One result found." WF_SEARCH_SEARCH_KEYWORD_N_RESULTS="Total: %s results found." WF_SEARCH_SEARCH_ONLY="Search Only:" WF_SEARCH_SEARCH_RESULT="Search Result" WF_CATEGORY="Category" ; ++ Added in 2.2.1 ++ WF_LINK_SEARCH_TITLE="Link Search" WF_LINK_SEARCH_DESC="Search for links and anchors in Joomla! Extensions" WF_PARAM_LINK_SEARCH_PLUGINS="Link Search Plugins" WF_PARAM_LINK_SEARCH_PLUGINS_DESC="Joomla! Search Plugins available to Link Search"administrator/language/en-GB/en-GB.com_jce.menu.ini100644 0 0 1313 12000772076 17471 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2011 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 COM_JCE ="JCE Administration" COM_JCE.WF_MENU_INSTALL ="Install Add-ons" COM_JCE.WF_MENU_INSTALLER ="Install Add-ons" COM_JCE.WF_MENU_PROFILES ="Profiles" COM_JCE.WF_MENU_CONFIG ="Global Configuration" COM_JCE.WF_MENU_CPANEL ="Control Panel" ; ## Backwards Compatability ## COM_JCE.JCE_MENU_INSTALL ="Install Add-ons" COM_JCE.JCE_MENU_INSTALLER ="Install Add-ons" COM_JCE.JCE_MENU_PROFILES ="Profiles" COM_JCE.JCE_MENU_CONFIG ="Global Configuration" COM_JCE.JCE_MENU_CPANEL ="Control Panel"administrator/language/en-GB/en-GB.com_jce.sys.ini100644 0 0 3402 12000772100 17330 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 JCE ="JCE Editor" WF_ADMIN_TITLE ="JCE Editor" WF_ADMIN_DESC ="

      JCE (Joomla! Content Editor) is a configuration and extension system for Moxiecode's TinyMCE editor, for the Joomla! CMS.

      Credits:

      JCE would not exist without these great libraries/scripts:

      JCE is dedicated to my father.

      Changelog - for a full changelog see http://www.joomlacontenteditor.net/support/releases/changelog/editor

      " COM_JCE ="JCE Administration" WF_MENU_INSTALL ="Install Add-ons" WF_MENU_PROFILES ="Profiles" WF_MENU_CONFIG ="Global Configuration" WF_MENU_CPANEL ="Control Panel" ; ## Backwards Compatability ## JCE_MENU_INSTALL ="Install Add-ons" JCE_MENU_PROFILES ="Profiles" JCE_MENU_CONFIG ="Global Configuration" JCE_MENU_CPANEL ="Control Panel"administrator/language/en-GB/en-GB.plg_editors_jce.ini100644 0 0 1374 12000772100 20256 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 WF_EDITOR_PLUGIN_TITLE ="JCE Editor Plugin" WF_EDITOR_PLUGIN_DESC ="JCE Editor Plugin for the JCE Editor Extension" WF_EDITOR_PLUGIN_PARAMS_DESC ="All Editor Parameters are set in the JCE Configuration and JCE Editor Profiles" PLUGIN_REMOVED_LANG_FILE_MISSING ="Plugin disabled. Lanaguage file '%s' missing" COMPONENT_NOT_INSTALLED ="The JCE Administration Component is not installed! The Editor cannot function without it!"administrator/language/en-GB/en-GB.plg_editors_jce.sys.ini100644 0 0 503 12000772100 21044 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 WF_EDITOR_PLUGIN_TITLE ="Editor - JCE" WF_EDITOR_PLUGIN_DESC ="JCE Editor Plugin for the JCE Editor Extension"administrator/language/en-GB/en-GB.plg_quickicon_jcefilebrowser.ini100644 0 0 612 12000772100 23010 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 PLG_QUICKICON_JCEFILEBROWSER="Quick Icon - JCE File Browser" PLG_QUICKICON_JCEFILEBROWSER_XML_DESCRIPTION="Control Panel Quick Icon for the JCE File Browser" WF_QUICKICON_BROWSER="JCE File Browser"administrator/language/en-GB/en-GB.plg_quickicon_jcefilebrowser.sys.ini100644 0 0 542 12000772100 23627 0ustar 0 0 ; JCE Project ; Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved ; GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ; Note : All ini files need to be saved as UTF-8 PLG_QUICKICON_JCEFILEBROWSER="Quick Icon - JCE File Browser" PLG_QUICKICON_JCEFILEBROWSER_XML_DESCRIPTION="Control Panel Quick Icon for the JCE File Browser"components/com_jce/editor/elements/filesystem.php100644 0 0 4004 12000772077 17770 0ustar 0 0 attributes('parameters')) { $document = JFactory::getDocument(); $document->addScriptDeclaration('$jce.Parameter.add("#' . $id . '", "filesystem");'); } // path to directory $path = WF_EDITOR_EXTENSIONS.DS.'filesystem'; $filter = '\.xml$'; $files = JFolder::files($path, $filter, false, true); $options = array (); if (!$node->attributes('exclude_default')) { $options[] = JHTML::_('select.option', '', WFText::_('WF_OPTION_NOT_SET')); } if ( is_array($files) ) { foreach ($files as $file) { // load language file $language->load('com_jce_filesystem_' . basename($file, '.xml'), JPATH_SITE); $xml = JApplicationHelper::parseXMLInstallFile($file); $options[] = JHTML::_('select.option', basename($file, '.xml'), WFText::_($xml['name'])); } } return JHTML::_('select.genericlist', $options, ''.$control_name.'[filesystem][' . $name . ']', 'class="inputbox"', 'value', 'text', $value, $id); } } ?> components/com_jce/editor/elements/linksearch.php100644 0 0 4502 12000772077 17732 0ustar 0 0 '; $html = '
        '; foreach ($plugins as $item) { $plugin = WFExtensionHelper::getPlugin(null, $item->name, 'search'); $extension = 'plg_' . $plugin->folder . '_' . $plugin->element; $language->load($extension) || $language->load($extension, JPATH_ADMINISTRATOR); $language->load($extension . '.sys') || $language->load($extension . '.sys', JPATH_ADMINISTRATOR); $checked = (in_array($plugin->element, $value)) ? ' checked="checked"' : ''; $html .= '
      • '; } $html .= '
      '; return $html; } } ?> components/com_jce/editor/elements/mediaplayer.php100644 0 0 4035 12000772077 20104 0ustar 0 0 attributes('parameters')) { $document = JFactory::getDocument(); $document->addScriptDeclaration('$jce.Parameter.add("#' . $id . '", "mediaplayer");'); } $options = array(); $options[] = JHTML::_('select.option', 'none', WFText::_('WF_OPTION_NONE')); if ( is_array($files) ) { foreach ($files as $file) { // load language file $language->load('com_jce_'. $name . '_' . basename($file, '.xml'), JPATH_SITE); $xml = JApplicationHelper::parseXMLInstallFile($file); $options[] = JHTML::_('select.option', basename($file, '.xml'), WFText::_($xml['name'])); } } return JHTML::_('select.genericlist', $options, ''.$control_name.'[mediaplayer][' . $name . ']', 'class="inputbox"', 'value', 'text', $value, $id); } } ?>components/com_jce/editor/extensions/aggregator/vimeo.php100644 0 0 2344 12000772077 21435 0ustar 0 0 'video' )); } function display() { $document = WFDocument::getInstance(); $document->addScript('vimeo', 'extensions/aggregator/vimeo/js'); } function isEnabled() { $plugin = WFEditorPlugin::getInstance(); return $plugin->checkAccess('aggregator.vimeo.enable', 1); } function getParams() { $plugin = WFEditorPlugin::getInstance(); return array( 'width' => $plugin->getParam('aggregator.vimeo.width', 400), 'height' => $plugin->getParam('aggregator.vimeo.height', 225) ); } }components/com_jce/editor/extensions/aggregator/vimeo.xml100644 0 0 2352 12000772100 21430 0ustar 0 0 WF_AGGREGATOR_VIMEO_TITLE 2.2.4 16 July 2012 Ryan Demmer info@joomlacontenteditor.net http://www.joomlacontenteditor.net/ Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html WF_AGGREGATOR_VIMEO_DESC vimeo.php vimeo components/com_jce/editor/extensions/aggregator/vimeo/js/vimeo.js100644 0 0 7017 12000772103 23005 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ WFAggregator.add('vimeo',{params:{width:400,height:225},props:{color:'',autoplay:0,loop:0,portrait:1,title:1,byline:1,fullscreen:1},setup:function(){},getTitle:function(){return this.title||this.name;},getType:function(){return $('#vimeo_embed').is(':checked')?'flash':'iframe';},isSupported:function(v){if(typeof v=='object'){v=v.src||v.data||'';} if(/vimeo(.+)?\/(.+)/.test(v)){return'vimeo';} return false;},getValues:function(src){var self=this,data={},args={},type=this.getType(),id='';$.extend(args,$.String.query(src));$(':input','#vimeo_options').not('#vimeo_embed').each(function(){var k=$(this).attr('id'),v=$(this).val();k=k.substr(k.indexOf('_')+1);if($(this).is(':checkbox')){v=$(this).is(':checked')?1:0;} if(self.props[k]==v||v==''){return;} switch(k){case'color':if(v.charAt(0)=='#'){v=v.substr(1);} break;case'portrait':case'title':case'byline':if(type=='flash'){k='show_'+k;} break;} args[k]=v;});if(args.clip_id){id=args.clip_id;}else{var s=/vimeo.com(\/video)?\/([0-9]+)/.exec(src);if(s){id=s.length>1?s[2]:s[1];}} if(type=='flash'){src='http://vimeo.com/moogaloop.swf?clip_id='+id;}else{src='http://player.vimeo.com/video/'+id;} if(!/http(s)?:\/\//.test(src)){src='http://'+src;} var query=$.param(args);if(query){src=src+(/\?/.test(src)?'&':'?')+query;} data.src=src;if(type=='iframe'){$.extend(data,{frameborder:0});}else{$.extend(true,data,{param:{allowfullscreen:true,wmode:'opaque'}});} return data;},setValues:function(data){var self=this,src=data.src||data.data||'',id='';if(!src){return data;} var query=$.String.query(src);$.extend(data,query);src=src.replace(/&/g,'&');if(/moogaloop.swf/.test(src)){data['embed']=true;$.each(['portrait','title','byline'],function(i,s){var v=query['show_'+s];if(typeof v!='undefined'){data[s]=v;delete data['show_'+s];}});id=query['clip_id'];delete data['clip_id'];delete query['clip_id'];}else{var s=/vimeo\.com\/(video\/)?([0-9]+)/.exec(src);if(s&&s.length>2){id=s[2];}} $.each(query,function(k,v){if(typeof self.props[k]=='undefined'){$('#vimeo_options table').append('');}});src='http://vimeo.com/'+id;if(data['color']&&data['color'].charAt(0)!='#'){data['color']='#'+data['color'];} data.src=src;return data;},getAttributes:function(src){var args={},data=this.setValues({src:src})||{};$.each(data,function(k,v){if(k=='src'){return;} args['vimeo_'+k]=v;});$.extend(args,{'src':data.src||src,'width':this.params.width,'height':this.params.height});return args;},setAttributes:function(){},onSelectFile:function(){},onInsert:function(){}});components/com_jce/editor/extensions/aggregator/vimeo/tmpl/default.php100644 0 0 5217 12000772077 24037 0ustar 0 0
      components/com_jce/editor/extensions/aggregator/youtube.php100644 0 0 2363 12000772077 22013 0ustar 0 0 'video' )); } function display() { $document = WFDocument::getInstance(); $document->addScript('youtube', 'extensions/aggregator/youtube/js'); } function isEnabled() { $plugin = WFEditorPlugin::getInstance(); return $plugin->checkAccess('aggregator.youtube.enable', 1); } function getParams() { $plugin = WFEditorPlugin::getInstance(); return array( 'width' => $plugin->getParam('aggregator.youtube.width', 425), 'height' => $plugin->getParam('aggregator.youtube.height', 350) ); } }components/com_jce/editor/extensions/aggregator/youtube.xml100644 0 0 2372 12000772100 22007 0ustar 0 0 WF_AGGREGATOR_YOUTUBE_TITLE 2.2.4 16 July 2012 Ryan Demmer info@joomlacontenteditor.net http://www.joomlacontenteditor.net/ Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html WF_AGGREGATOR_YOUTUBE_DESC youtube.php youtube components/com_jce/editor/extensions/aggregator/youtube/js/youtube.js100644 0 0 10064 12000772103 23753 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ WFAggregator.add('youtube',{params:{width:425,height:350},props:{rel:1,autohide:2,autoplay:0,controls:1,enablejsapi:0,loop:0,playlist:'',start:'',privacy:0},setup:function(){$('#youtube_privacy').click(function(){if($(this).is(':checked')){$('#youtube_embed').attr('checked',true).attr('disabled',true);}else{$('#youtube_embed').attr('disabled',false);}});$('#youtube_embed').click(function(){if(!$(this).is(':checked')){$('#youtube_privacy').attr('checked',false);}});},getTitle:function(){return this.title||this.name;},getType:function(){return $('#youtube_embed').is(':checked')?'flash':'iframe';},isSupported:function(v){if(typeof v=='object'){v=v.src||v.data||'';} if(/youtu(\.)?be(.+)?\/(.+)/.test(v)){return'youtube';} return false;},getValues:function(src){var self=this,data={},args={},type=this.getType();$.extend(args,$.String.query(src));if($('#youtube_https').is(':checked')){src=src.replace(/^http:\/\//,'https://');}else{src=src.replace(/^https:\/\//,'http://');} $(':input','#youtube_options').not('#youtube_embed, #youtube_https').each(function(){var k=$(this).attr('id'),v=$(this).val();k=k.substr(k.indexOf('_')+1);if($(this).is(':checkbox')){v=$(this).is(':checked')?1:0;} if(k=='autohide'){v=parseInt(v);} if(self.props[k]===v||v===''){return;} args[k]=v;});src=src.replace(/youtu(\.)?be([^\/]+)?\/(.+)/,function(a,b,c,d){d=d.replace(/(watch\?v=|v\/|embed\/)/,'');if(b&&!c){c='.com';} return'youtube'+c+'/'+(type=='iframe'?'embed':'v')+'/'+d;});if($('#youtube_privacy').is(':checked')){src=src.replace('youtube','youtube-nocookie');}else{src=src.replace('youtube-nocookie','youtube');} var query=$.param(args);if(query){src=src+(/\?/.test(src)?'&':'?')+query;} data.src=src;if(type=='iframe'){$.extend(data,{allowfullscreen:true,frameborder:0});}else{$.extend(true,data,{param:{allowfullscreen:true,wmode:'opaque'}});} return data;},setValues:function(data){var self=this,id='',src=data.src||data.data||'';if(!src){return data;} var query=$.String.query(src);$.extend(data,query);if(/https:\/\//.test(src)){data['https']=true;} if(/youtube-nocookie/.test(src)){data['privacy']=true;} if(data.param){data['embed']=true;} if(query.v){id=query.v;delete query.v;}else{var s=/(\.be|\/(embed|v))\/([^\/\?&]+)/.exec(src);if(s.length>2){id=s[3];}} if(data.playlist){data.playlist=decodeURIComponent(data.playlist);} $.each(query,function(k,v){if(typeof self.props[k]=='undefined'){$('#youtube_options table').append('');}});src=src.replace(/youtu(\.)?be([^\/]+)?\/(.+)/,function(a,b,c,d){var args='youtube';if(b){args+='.com';} if(c){args+=c;} if($('#youtube_embed').is(':checked')){args+='/v';}else{args+='/embed';} args+='/'+id;return args;}).replace(/\/\/youtube/i,'//www.youtube');data.src=src;return data;},getAttributes:function(src){var args={},data=this.setValues({src:src})||{};$.each(data,function(k,v){if(k=='src'){return;} args['youtube_'+k]=v;});$.extend(args,{'src':data.src||src,'width':this.params.width,'height':this.params.height});return args;},setAttributes:function(){},onSelectFile:function(){},onInsert:function(){}});components/com_jce/editor/extensions/aggregator/youtube/tmpl/default.php100644 0 0 6006 12000772077 24411 0ustar 0 0
      components/com_jce/editor/extensions/browser/css/manager.css100644 0 0 44045 12000772077 22106 0ustar 0 0 /** * @package JCE * @copyright Copyright © 2009-2011 Ryan Demmer. All rights reserved. * @license GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * JCE is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ @import url("../../../libraries/css/files.css"); @import url("../../../libraries/css/tree.css"); @import url("../../../libraries/css/upload.css"); div#browser { margin: 5px 0 0; background-color: #FFF; width: 100%; position: relative; } #jce form:first-child div#browser { margin: 0 0 5px 0; } div.layout-top,div.layout-bottom { width: 100%; } div.layout-bottom { margin: 1px 0 0 0; } div.layout-left,div.layout-center,div.layout-right { float: left; position: relative; } div.layout-left { width: 30%; } div.layout-center { width: 40%; } div.layout-right { width: 30%; } div#browser.full-height { position: absolute; top: 0; left: 5px; z-index: 1; } #jce form:first-child div#browser.full-height { top: 5px; } div#browser span#layout-full-toggle { display: inline-block; vertical-align: middle; cursor: pointer; background: url('../../../libraries/img/icons.png') no-repeat 0 -1200px; width: 20px; height: 20px; margin: 0 5px 0 0; } div#browser.full-height span#layout-full-toggle { background-position: 0 -1220px; } div#browser.full-width div.layout-left { width: 0; display: none; } div#browser.full-width div.layout-center { width: 70%; } div#browser-tree { border: 1px solid #ccc; height: 260px; margin: 1px 1px 0 0; } div.layout-left div.header { margin: 0 1px 0 0; } div.layout-top div.layout-header { border: 1px solid #ccc; height: 30px; } div#browser-actions { float: left; margin: 0 0 -5px -5px; position: relative; text-align: right; width: 30%; } div#browser-actions span { border: 0 none; position: relative; } div#browser-list { margin: 1px 1px 1px 0; padding: 1px; clear: left; overflow: auto; height: 235px; position: relative; -webkit-user-select: none; -moz-user-select: none; user-select: none; } div#browser-list-limit { height: 20px; margin: 1px 1px 0 0; line-height: 16px; position: relative; } div#browser-list-limit select { height: 16px; vertical-align: middle; } div#browser-list-limit label { min-width: 30px; } #browser-list-limit div.limit-text { text-align: center; vertical-align: middle; height: 40px; } #browser-list-limit-select { margin: 0; padding: 0; } #browser-list-limit ul.limit-right,#browser-list-limit ul.limit-left { position: absolute; list-style: none; margin: 0; padding: 0; top: 0; width: 50px; height: 20px; } #browser-list-limit ul.limit-left { left: 0; } #browser-list-limit ul.limit-right { right: 0; } #browser-list-limit ul.limit-right li,#browser-list-limit ul.limit-left li { height: 20px; cursor: pointer; background: url('../../../libraries/img/icons.png') no-repeat; width: 20px; display: none; } #browser-list-limit ul.limit-left li.limit-left { background-position: 0 -360px; } #browser-list-limit ul.limit-right li.limit-right { background-position: 0 -380px; } #browser-list-limit ul.limit-left li.limit-left-end { background-position: 0 -720px; } #browser-list-limit ul.limit-right li.limit-right-end { background-position: 0 -700px; } div#browser-list-actions { height: 20px; margin: 0 1px 1px 0; line-height: 20px; border: 1px solid #ccc; } div#browser-list,div#browser-list-limit { border: 1px solid #ccc; } div#browser-list-actions>div { float: left; height: 20px; cursor: pointer; line-height: 20px; margin: 0 0 1px 1px; vertical-align: middle; } div#browser-list-actions div:first-child { margin: 0 0 1px 0; } /** Ugly hack **/ #jce.webkit div.layout-header,#jce.opera div.layout-header { margin: 0 1px 0 0; } #browser div.header { font-size: 1.1em; text-shadow: 0px 1px 1px rgba(255, 255, 255, 1); background-color: #F0F0F0; text-align: center; font-weight: bold; color: #4F4F4F; vertical-align: middle; height: 20px; border: 1px solid #ccc; line-height: 20px; } div#browser-buttons { position: absolute; right: 0; top: 22px; height: 220px; padding: 3px 2px 4px 2px; } div.layout-right div.spacer { width: 1px; height: 230px; padding: 3px 0 6px 0; border: 1px solid #ccc; border-top-width: 0; border-bottom-width: 0; position: absolute; right: 27px; top: 23px; background-color: #FFF; } div.layout-center div#browser-list-actions div.spacer { width: 1px; height: 22px; border: 1px solid #ccc; border-top-width: 0; border-bottom-width: 0; background-color: #FFF; float: left; margin-top: -1px; } div#browser-details { height: 230px; border: 1px solid #ccc; margin: 1px 0 1px 0; padding: 0 2px 7px; position: relative; } div#browser-details-nav { height: 20px; border: 1px solid #ccc; } #jce.ie7 { margin-top: -5px; } #jce.ie7 #browser-actions span.spacer { position: absolute; } img.icon { border: 0px; vertical-align: middle; } div.button,div#message-status,div#message-info { background-image: url('../../../libraries/img/icons.png'); background-repeat: no-repeat; } span.layout-icon { display: inline-block; width: 20px; height: 20px; } span#upload { background: url('../../../libraries/img/icons-24.png') no-repeat 0 -24px; } span#help { background: url('../../../libraries/img/icons-24.png') no-repeat 0 -48px; } span#folder_new { background: url('../../../libraries/img/icons-24.png') no-repeat 0 0; } /** * Status Bar */ div#browser-message { height: 20px; width: auto; } div#browser-message { background-position: 0 -320px; } div#browser-message.load { background: url('../../../libraries/img/load.gif') no-repeat left center; } div#browser-message ul.pathway { list-style : none; overflow: visible; white-space: nowrap; margin : 0 0 0 30px; padding : 0; } div#browser-message ul.pathway li { display : inline-block; /* IE7 inline-block hack */ *display: inline; *zoom: 1; margin : 0; padding: 0 2px; cursor: pointer; width: auto; } div#browser-message ul.pathway li.count { margin: 0 0 0 10px; cursor: default; } div#browser-message span { margin-left: 30px; line-height: 24px; font-size: 1.1em; display: inline-block; } div.empty { height: 20px; } /** * Searchbox */ div#browser-list-actions div#searchbox { float: none; position: absolute; right: 26px; top: 0px; width: 235px; } div#browser.full-width div#browser-list-actions div#searchbox { width: 250px; padding: 0 1px 0 0; } div#browser.full-width div#browser-list-actions div#searchbox input#search { padding: 0 1px 0 2px; } div#browser-list-actions div#searchbox input#search { height: 20px; line-height: 18px; margin: 0; padding: 0 2px; width: 100%; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; position: absolute; top: 0; right: 0; } div#browser-list-actions div#searchbox span.search-icon { position: absolute; background: url("../../../libraries/img/icons.png") no-repeat 0 -940px; right: 2px; top: 1px; width: 20px; height: 20px; } div#browser-list-actions div#searchbox span.search-icon.clear { background: url("../../../libraries/img/icons.png") no-repeat 0 -920px; cursor: pointer; } div#info-body,div#tree-body { background-color: #ffffff; vertical-align: middle; overflow: auto; } div#tree-body { height: 256px; margin: 2px; } div#info-body { height: 240px; position: relative; overflow: hidden; line-height: 14px; border: 1px solid #ccc; float: left; width: 180px; padding: 2px 1px 10px 2px; } div#info-text { width: 100%; padding: 2px; } div#info-text.loader { height: 50%; background-position: center; } div#info-comment { position: absolute; width: 100%; height: 60px; bottom: 0; padding: 2px; } /** * Checkboxes */ span.checkbox { background: url('../../../libraries/img/icons.png') no-repeat 0 -740px; display: inline-block; margin: 0 0 0 3px; width: 30px; cursor: pointer; } span.checkbox.checked { background: url('../../../libraries/img/icons.png') no-repeat 0 -760px; } span.checkbox.mixed { background: url('../../../libraries/img/icons.png') no-repeat 0 -780px; } span.checkbox.disabled { opacity : 0.5; filter: alpha(opacity=50); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; } div#block-sort-standard,div#block-sort-details,div#block-search-icon,div#block-details-icon { position: relative; float: left; } div#block-sort-standard { width: 50%; } div#block-sort-details { width: 155px; float: right; } div#block-search-icon,div#block-details-icon { width: 25px; float: right; } div#sort-name { min-width: 180px; max-width: 100%; padding: 0 1px 0 0; } div#check-all { width: 25px; float: left; } div#sort-ext { width: 25px; float: left; } div#sort-ext span span { visibility: hidden; } div#sort-date,div#sort-size,div#show-details,div#show-search { width: 25px; } div#sort-date,div#sort-size { display: none; } #browser.full-width div#sort-date,#browser.full-width div#sort-size { display: block; } div#sort-size { width: 72px; } div#sort-date { width: 145px; } div#browser-list-actions div#show-search,div#browser-list-actions div#show-details { float: right; } div#show-search.active { background-color: #FFF; border-top-color: #FFF; z-index: 10; position: relative; -moz-box-shadow: -1px 1px 1px #DDDDDD; -webkit-box-shadow: -1px 1px 1px #DDDDDD; } div#sort-name span span,div#sort-size span span,div#sort-date span span { margin: 0 0 0 25px; } div#sort-name span.layout-icon { width: auto; } span.layout-icon.sort { margin-left: 2px; } div.asc span.layout-icon.sort { background: url('../../../libraries/img/icons.png') no-repeat 0 -40px; } div.desc span.layout-icon.sort { background: url('../../../libraries/img/icons.png') no-repeat 0 -60px; } div#sort-date.asc span.layout-icon.sort { background: url('../../../libraries/img/icons.png') no-repeat 0 -800px; } div#sort-date.desc span.layout-icon.sort { background: url('../../../libraries/img/icons.png') no-repeat 0 -820px; } div#sort-size.asc span.layout-icon.sort { background: url('../../../libraries/img/icons.png') no-repeat 0 -840px; } div#sort-size.desc span.layout-icon.sort { background: url('../../../libraries/img/icons.png') no-repeat 0 -860px; } span.layout-icon.details { background: url('../../../libraries/img/icons.png') no-repeat 0 -880px; margin-left: 2px; } span.layout-icon.tree { background: url('../../../libraries/img/icons.png') no-repeat 0 -900px; margin-left: 2px; } span.layout-icon.search { background: url('../../../libraries/img/icons.png') no-repeat 0 -440px; margin-left: 2px; } div.layout-left-right div.spacer { height: 20px; right: 26px; padding: 2px 0 2px 1px; } /*Layout Right*/ #browser-details-text { margin : 0 30px 0 0; } #browser-details-text dl { margin: 0; padding: 0; } #browser-details-comment { bottom: 5px; position: absolute; } #browser-details-comment ul { list-style: none; margin: 0; } #browser-details-text>dl,#browser-details-comment>ul { padding: 2px 0 0 2px; } #browser-details-text dt { font-weight: bold; overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; white-space : nowrap; } #browser-details-text dd,#browser-details-comment li { margin: 0; vertical-align: middle; line-height: 14px; } #browser-details-comment li.comments { line-height: 20px; padding: 0px 0px 0px 22px; } #browser-details-text dd span { margin-left: 20px; } dd#info-preview { margin: 0; width: 100%; } dd#info-preview img { margin: 0; } dd#info-preview dl { margin: 0; } dd#info-preview dl dd { text-align: center; margin: 5px auto; background-image: none; background-repeat: no-repeat; background-position: center; width: 100px; height: 80px; } dd#info-preview dl dd.resize { -webkit-background-size: contain; -moz-background-size: contain; background-size: contain; } dd#info-preview dl dd.preview-error { background: url('../../../libraries/img/broken.png') no-repeat center; } dd#info-preview dl dd.loader { background: url('../../../libraries/img/load.gif') no-repeat center; } dd#info-properties dl dd.loader { width: 100%; height: 50px; margin-left: -18px; } #info-buttons { height: inherit; } #browser-details-nav { height: 20px; position: relative; } #browser-details-nav span { visibility: hidden; display: inline-block; vertical-align: middle; height: 20px; } #browser-details-nav span.visible { visibility: visible; } #browser-details-nav span.details-nav-text { text-align: center; line-height: 20px; font-weight: bold; overflow: hidden; width: 100%; } #browser-details-nav span.details-nav-left,#browser-details-nav span.details-nav-right { position: absolute; cursor: pointer; background: url('../../../libraries/img/icons.png') no-repeat; width: 20px; top: 0; } #browser-details-nav span.details-nav-left { background-position: 0 -360px; left: 0; } #browser-details-nav span.details-nav-right { background-position: 0 -380px; right: 0; } dd#loader { height: 100px; width: 100%; text-align: center; background: url('../../../libraries/img/load.gif') no-repeat center center; margin: 10px; } div#browser-message { background: url('../../../libraries/img/icons-24.png') no-repeat 0 -120px; display: block; float: left; height: 24px; line-height: 24px; margin: 3px 0 3px 5px; width: 70%; } span.message.info { background-position: 0 0px; } span.message.alert { background-position: 0 -20px; } span.message.error { background-position: 0 -340px; } div.button.rename { background-position: 50% -420px; } div.button.delete { background-position: 50% -180px; } div.button.cut { background-position: 50% -140px; } div.button.copy { background-position: 50% -120px; } div.button.paste { background-position: 50% -160px; } div.button.view { background-position: 50% -500px; } div.button.insert { background-position: 50% -480px; } .noedit { height: 20px; background: url('../../../libraries/img/icons.png') no-repeat 0 -680px; padding-left: 25px; vertical-align: middle; display: block; } /** * Item List */ ul.item-list { list-style: none; white-space: nowrap; margin: 0px; padding: 0px; vertical-align: middle; -webkit-user-select: none; -moz-user-select: none; user-select: none; white-space: nowrap; width: 100%; /* IE6 needs any width */ overflow: hidden; /* "overflow" value must be different from "visible" */ -o-text-overflow: ellipsis; /* Opera 9-10 */ text-overflow: ellipsis; /* IE, WebKit (Safari, Chrome), Firefox 7, Opera 11 */ } ul.item-list li { cursor: pointer; margin: 1px 2px 1px 30px; padding: 0px; line-height: 20px; position: relative; height: 20px; } ul.item-list li span.checkbox { height: 20px; left: -30px; top: 0; position: absolute; width: 30px; } ul.item-list li.file.hover,ul.item-list li.file:hover,ul.item-list li.folder.hover,ul.item-list li.folder:hover { background-color: #ddd; color: black; } ul.item-list li a { margin-left: 30px; text-decoration: none; line-height: 20px; text-overflow: ellipsis; -o-text-overflow: ellipsis; -moz-text-overflow: ellipsis; width: 200px; overflow: hidden; display : inline-block; } div#browser.full-width ul.item-list li a { width: 170px; } ul.item-list li a:visited,ul.item-list li a:active,ul.item-list li a:link { text-decoration: none; color: black; } ul.item-list li.loading { background: url('../../../libraries/img/load.gif') no-repeat left center; } ul.item-list li.selected { background-color: #eee; color: black; font-weight: bold; } ul.item-list li.nofile { font-size: 1.3em; font-weight: bold; text-align: center; color: #ddd; cursor: default; margin: 1px 2px; } ul.item-list li span.size,ul.item-list li span.date { position: absolute; height: 20px; text-align: center; display: none; } #browser.full-width ul.item-list li span.size,#browser.full-width ul.item-list li span.date { display: inline; } ul.item-list li span.size { left: 360px; } ul.item-list li span.date { left: 220px; } /** * Extension Icons */ ul.item-list li.folder.notwritable,dd.folder.notwritable { background: url('../../../libraries/img/icons.png') no-repeat 0 -580px; } ul.item-list li.folder.notsafe,dd.folder.notsafe { background: url('../../../libraries/img/icons.png') no-repeat 0 -600px; } ul.item-list li.folder { background: url('../../../libraries/img/icons.png') no-repeat 0 -220px; } ul.item-list li.folder-up { background: url('../../../libraries/img/icons.png') no-repeat 0 -200px; } /** * Buttons and Actions */ div#browser-buttons { } div#browser-actions span.spacer { width: 1px; height: 32px; margin: -1px 0px 2px; border: 1px solid #ccc; border-top-width: 0; border-bottom-width: 0; background-color: #FFF; display: inline-block; } div.button { color: #919B9C; border: 1px solid #ccc; width: 20px; height: 20px; padding: 1px; -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; cursor: pointer; } span.action { display: inline-block; height: 24px; width: 24px; cursor: pointer; border: 1px solid #ccc; margin: 3px 3px 6px; } span.action span { display: none; } span.button:hover { border: 1px solid #aaa; } div.button { margin: 2px 0; } div.button span { display: none; } /* Display */ .ui-dialog div.image-preview,.ui-dialog div.media-preview { width: 100%; text-align: center; cursor: pointer; position: relative; } .ui-dialog div.image-preview.background { height: 100%; background-repeat: no-repeat; background-position: center; } .ui-dialog div.media-preview audio,.ui-dialog div.media-preview object.audio { left: 25%; position: absolute; top: 50%; } .ui-dialog div.media-preview object { width: 100%; height: 100%; } .ui-dialog div.media-preview object.audio { width: 300px; height: 35px; } .ui-dialog div.media-preview object { background-color: #FFFFFF; } .ui-dialog div.iframe-preview { text-align: center; height: 95%; } /* Loader */ .ui-dialog div.big-loader { background: url('../../../tiny_mce/themes/advanced/skins/default/img/progress.gif') center 50% no-repeat; margin-top: -33px !important; width: 100%; height: 100%; } div.actionPanel div { float: right; }components/com_jce/editor/extensions/browser/file.php100644 0 0 125340 12000772077 20640 0ustar 0 0 array(), 'files' => array(), 'folders' => array()); /** * @access protected */ public function __construct($config = array()) { $default = array( 'dir' => '', 'filesystem' => 'joomla', 'filetypes' => 'images=jpg,jpeg,png,gif', 'upload' => array( 'runtimes' => 'html5,flash,silverlight', 'chunk_size' => null, 'max_size' => 1024, 'validate_mimetype' => 0 ), 'folder_tree' => 1, 'list_limit' => 'all', 'features' => array( 'upload' => 1, 'folder' => array( 'create' => 1, 'delete' => 1, 'rename' => 1, 'move' => 1 ), 'file' => array( 'rename' => 1, 'delete' => 1, 'move' => 1 ) ), 'websafe_mode' => 'utf-8' ); $config = array_merge($default, $config); // Call parent parent::__construct($config); // Setup XHR callback funtions $this->setRequest(array($this, 'getItems')); $this->setRequest(array($this, 'getFileDetails')); $this->setRequest(array($this, 'getFolderDetails')); $this->setRequest(array($this, 'getTree')); $this->setRequest(array($this, 'getTreeItem')); // Get actions $this->getStdActions(); // Get buttons $this->getStdButtons(); } /** * Display the browser * @access public */ public function display() { parent::display(); // Get the Document instance $document = WFDocument::getInstance(); $document->addScript(array( 'tree', 'upload' ), 'libraries'); $document->addScript(array( 'plupload.full', ), 'jce.libraries.plupload'); $document->addScript(array( 'file', 'sort', 'filter', 'manager' ), 'extensions.browser.js'); //$document->addStyleSheet(array('files', 'tree', 'upload'), 'libraries'); $document->addStyleSheet(array('manager'), 'extensions.browser.css'); // custom stylesheet //$document->addStyleSheet(array('custom'), 'libraries.css'); // file browser options $document->addScriptDeclaration('WFFileBrowser.settings=' . json_encode($this->getSettings()) . ';'); } /** * Render the browser view * @access public */ public function render() { $session = JFactory::getSession(); // create file view $view = $this->getView('file'); // assign session data $view->assignRef('session', $session); // assign form action $view->assign('action', $this->getFormAction()); // return view output $view->display(); } /** * Set a WFRequest item * @access public * @param array $request */ public function setRequest($request) { $xhr = WFRequest::getInstance(); $xhr->setRequest($request); } /** * Upload form action url * * @access public * @param string The target action file eg: upload.php * @return Joomla! component url * @since 1.5 */ protected function getFormAction() { $wf = WFEditorPlugin::getInstance(); $component_id = JRequest::getInt('component_id'); $query = ''; $args = array( 'plugin' => $wf->getName() ); if ($component_id) { $args['component_id'] = $component_id; } foreach ($args as $k => $v) { $query .= '&' . $k . '=' . $v; } return JURI::base(true) . '/index.php?option=com_jce&view=editor&layout=plugin' . $query; } public function getFileSystem() { static $filesystem; if (!is_object($filesystem)) { $wf = WFEditorPlugin::getInstance(); $config = array( 'dir' => $this->get('dir'), 'upload_conflict' => $wf->getParam('editor.upload_conflict', 'overwrite') ); $filesystem = WFFileSystem::getInstance($this->get('filesystem'), $config); } return $filesystem; } private function getViewable() { return 'jpeg,jpg,gif,png,avi,wmv,wm,asf,asx,wmx,wvx,mov,qt,mpg,mp3,mp4,m4v,mpeg,ogg,ogv,webm,swf,flv,f4v,xml,dcr,rm,ra,ram,divx,html,htm,txt,rtf,pdf,doc,docx,xls,xlsx,ppt,pptx'; } /** * Return a list of allowed file extensions in selected format * * @access public * @return extension list */ private function getFileTypes($format = 'map') { $list = $this->get('filetypes'); // Remove excluded file types (those that have a - prefix character) from the list $data = array(); foreach (explode(';', $list) as $group) { if (substr(trim($group), 0, 1) === '-') { continue; } // remove excluded file types (those that have a - prefix character) from the list $data[] = preg_replace('#(,)?-([\w]+)#', '', $group); } $list = implode(';', $data); switch ($format) { case 'list': return $this->listFileTypes($list); break; case 'array': return explode(',', $this->listFileTypes($list)); break; default: case 'map': return $list; break; } } public function setFileTypes($list = 'images=jpg,jpeg,png,gif') { $this->set('filetypes', $list); } /** * Converts the extensions map to a list * @param string $map The extensions map eg: images=jpg,jpeg,gif,png * @return string jpg,jpeg,gif,png */ private function listFileTypes($map) { return preg_replace(array('/([\w]+)=([\w]+)/', '/;/'), array('$2', ','), $map); } public function addFileTypes($types) { $list = explode(';', $this->get('filetypes')); foreach ($types as $group => $extensions) { $list[] = $group . '=' . $extensions; } $this->set('filetypes', implode(';', $list)); } /** * Maps upload file types to an upload dialog list, eg: 'images', 'jpeg,jpg,gif,png' * @return json encoded list */ private function mapUploadFileTypes() { $map = array(); // Get the filetype map $list = $this->getFileTypes(); if ($list) { $items = explode(';', $list); $all = array(); // [images=jpeg,jpg,gif,png] foreach ($items as $item) { // ['images', 'jpeg,jpg,gif,png'] $kv = explode('=', $item); $extensions = implode(';', preg_replace('/(\w+)/i', '*.$1', explode(',', $kv[1]))); $map[WFText::_('WF_FILEGROUP_' . $kv[0], WFText::_($kv[0])) . ' (' . $extensions . ')'] = $kv[1]; $all[] = $kv[1]; } if (count($items) > 1) { // All file types $map[WFText::_('WF_FILEGROUP_ALL') . ' (*.*)'] = implode(',', $all); } } return $map; } /** * Returns the result variable * @return var $_result */ public function getResult() { return $this->_result; } public function setResult($value, $key = null) { if ($key) { if (is_array($this->_result[$key])) { $this->_result[$key][] = $value; } else { $this->_result[$key] = $value; } } else { $this->_result = $value; } } function checkFeature($action, $type = null) { $features = $this->get('features'); if ($type) { if (isset($features[$type])) { $type = $features[$type]; if (isset($type[$action])) { return (bool) $type[$action]; } } } else { if (isset($features[$action])) { return (bool) $features[$action]; } } return false; } public function getBaseDir() { $filesystem = $this->getFileSystem(); return $filesystem->getBaseDir(); } /** * Get the list of files in a given folder * @param string $relative The relative path of the folder * @param string $filter A regex filter option * @return File list array */ private function getFiles($relative, $filter = '.') { $filesystem = $this->getFileSystem(); $list = $filesystem->getFiles($relative, $filter); return $list; } /** * Get the list of folder in a given folder * @param string $relative The relative path of the folder * @return Folder list array */ private function getFolders($relative) { $filesystem = $this->getFileSystem(); $list = $filesystem->getFolders($relative); return $list; } /** * Get file and folder lists * @return array Array of file and folder list objects * @param string $relative Relative or absolute path based either on source url or current directory * @param int $limit List limit * @param int $start list start point */ public function getItems($path, $limit = 25, $start = 0) { $filesystem = $this->getFileSystem(); clearstatcache(); // decode path $path = rawurldecode($path); WFUtility::checkPath($path); // get source dir from path eg: images/stories/fruit.jpg = images/stories $dir = $filesystem->getSourceDir($path); // get file list by filter $files = self::getFiles($dir, '\.(?i)(' . str_replace(',', '|', $this->getFileTypes('list')) . ')$'); // get folder list $folders = self::getFolders($dir); $folderArray = array(); $fileArray = array(); $items = array_merge($folders, $files); if ($items) { if (is_numeric($limit)) { $items = array_slice($items, $start, $limit); } foreach ($items as $item) { $item['classes'] = ''; if ($item['type'] == 'folders') { $folderArray[] = $item; } else { // check for selected item $item['selected'] = $filesystem->isMatch($item['url'], $path); $fileArray[] = $item; } } } $result = array( 'folders' => $folderArray, 'files' => $fileArray, 'total' => array( 'folders' => count($folders), 'files' => count($files) ) ); // Fire Event passing result as reference $this->fireEvent('onGetItems', array(&$result)); return $result; } /** * Get a tree node * @param string $dir The relative path of the folder to search * @return Tree node array */ public function getTreeItem($path) { $filesystem = $this->getFileSystem(); $path = rawurldecode($path); WFUtility::checkPath($path); // get source dir from path eg: images/stories/fruit.jpg = images/stories $dir = $filesystem->getSourceDir($path); $folders = $this->getFolders($dir); $array = array(); if (!empty($folders)) { foreach ($folders as $folder) { $array[] = array( 'id' => $folder['id'], 'name' => $folder['name'], 'class' => 'folder' ); } } $result = array( 'folders' => $array ); return $result; } /** * Escape a string * * @return string Escaped string * @param string $string */ private function escape($string) { return preg_replace(array( '/%2F/', '/%3F/', '/%40/', '/%2A/', '/%2B/' ), array( '/', '?', '@', '*', '+' ), rawurlencode($string)); } /** * Build a tree list * @param string $dir The relative path of the folder to search * @return Tree html string */ public function getTree($path) { $filesystem = $this->getFileSystem(); // decode path $path = rawurldecode($path); WFUtility::checkPath($path); // get source dir from path eg: images/stories/fruit.jpg = images/stories $dir = $filesystem->getSourceDir($path); $result = $this->getTreeItems($dir); return $result; } /** * Get Tree list items as html list * * @return Tree list html string * @param string $dir Current directory * @param boolean $root[optional] Is root directory * @param boolean $init[optional] Is tree initialisation */ public function getTreeItems($dir, $root = true, $init = true) { $result = ''; static $treedir = null; if ($init) { $treedir = $dir; if ($root) { $result = '
      • '; $dir = '/'; } } $folders = $this->getFolders($dir); if ($folders) { $result .= '
          '; foreach ($folders as $folder) { $open = strpos($treedir, ltrim($folder['id'], '/')) === 0 ? ' open' : ''; $result .= '
        • '; if ($open) { if ($h = $this->getTreeItems($folder['id'], false, false)) { $result .= $h; } } $result .= '
        • '; } $result .= '
        '; } if ($init && $root) { $result .= '
      '; } $init = false; return $result; } /** * Get a folders properties * * @return array Array of properties * @param string $dir Folder relative path */ public function getFolderDetails($dir) { WFUtility::checkPath($dir); $filesystem = $this->getFileSystem(); // get array with folder date and content count eg: array('date'=>'00-00-000', 'folders'=>1, 'files'=>2); return $filesystem->getFolderDetails($dir); } /** * Get a files properties * * @return array Array of properties * @param string $file File relative path */ function getFileDetails($file) { WFUtility::checkPath($file); $filesystem = $this->getFileSystem(); // get array with folder date and content count eg: array('date'=>'00-00-000', 'folders'=>1, 'files'=>2); return $filesystem->getFileDetails($file); } /** * Create standard actions based on access */ private function getStdActions() { $this->addAction('help', '', '', WFText::_('WF_BUTTON_HELP')); if ($this->checkFeature('upload')) { $this->addAction('upload'); $this->setRequest(array($this, 'upload')); } if ($this->checkFeature('create', 'folder')) { $this->addAction('folder_new'); $this->setRequest(array($this, 'folderNew')); } } /** * Add an action to the list * * @param string $name Action name * @param array $options Array of options */ public function addAction($name, $options = array()) { /* TODO */ // backwards compatability (remove in stable) $args = func_get_args(); if (count($args) == 4) { $options['icon'] = $args[1]; $options['action'] = $args[2]; $options['title'] = $args[3]; } $options = array_merge(array('name' => $name), $options); // set some defaults if (!array_key_exists('icon', $options)) { $options['icon'] = ''; } if (!array_key_exists('action', $options)) { $options['action'] = ''; } if (!array_key_exists('title', $options)) { $options['title'] = WFText::_('WF_BUTTON_' . strtoupper($name)); } $this->_actions[$name] = $options; } /** * Get all actions * @return object */ private function getActions() { return array_reverse($this->_actions); } /** * Remove an action from the list by name * @param string $name Action name to remove */ public function removeAction($name) { if (array_key_exists($this->_actions[$name])) { unset($this->_actions[$name]); } } /** * Create all standard buttons based on access */ private function getStdButtons() { if ($this->checkFeature('delete', 'folder')) { $this->addButton('folder', 'delete', array('multiple' => true)); $this->setRequest(array($this, 'deleteItem')); } if ($this->checkFeature('rename', 'folder')) { $this->addButton('folder', 'rename'); $this->setRequest(array($this, 'renameItem')); } if ($this->checkFeature('move', 'folder')) { $this->addButton('folder', 'copy', array('multiple' => true)); $this->addButton('folder', 'cut', array('multiple' => true)); $this->addButton('folder', 'paste', array('multiple' => true, 'trigger' => true)); $this->setRequest(array($this, 'copyItem')); $this->setRequest(array($this, 'moveItem')); } if ($this->checkFeature('rename', 'file')) { $this->addButton('file', 'rename'); $this->setRequest(array($this, 'renameItem')); } if ($this->checkFeature('delete', 'file')) { $this->addButton('file', 'delete', array('multiple' => true)); $this->setRequest(array($this, 'deleteItem')); } if ($this->checkFeature('move', 'file')) { $this->addButton('file', 'copy', array('multiple' => true)); $this->addButton('file', 'cut', array('multiple' => true)); $this->addButton('file', 'paste', array('multiple' => true, 'trigger' => true)); $this->setRequest(array($this, 'copyItem')); $this->setRequest(array($this, 'moveItem')); } $this->addButton('file', 'view', array('restrict' => $this->getViewable())); $this->addButton('file', 'insert'); } /** * Add a button * * @param string $type[optional] Button type (file or folder) * @param string $name Button name * @param string $icon[optional] Button icon * @param string $action[optional] Button action / function * @param string $title Button title * @param boolean $multiple[optional] Supports multiple file selection * @param boolean $trigger[optional] */ public function addButton($type = 'file', $name, $options = array()) { $options = array_merge(array('name' => $name), $options); // set some defaults if (!array_key_exists('icon', $options)) { $options['icon'] = ''; } if (!array_key_exists('action', $options)) { $options['action'] = ''; } if (!array_key_exists('title', $options)) { $options['title'] = WFText::_('WF_BUTTON_' . strtoupper($name)); } if (!array_key_exists('multiple', $options)) { $options['multiple'] = false; } if (!array_key_exists('trigger', $options)) { $options['trigger'] = false; } if (!array_key_exists('restrict', $options)) { $options['restrict'] = ''; } $this->_buttons[$type][$name] = $options; } /** * Return an object list of all buttons * @return object */ private function getButtons() { return $this->_buttons; } /** * Remove a button * @param string $type Button type * @param string $name Button name */ public function removeButton($type, $name) { if (array_key_exists($name, $this->_buttons[$type])) { unset($this->_buttons[$type][$name]); } } /** * Change a buttons properties * @param string $type Button type * @param string $name Button name * @param string $keys Button keys */ public function changeButton($type, $name, $keys) { foreach ($keys as $key => $value) { if (isset($this->_buttons[$type][$name][$key])) { $this->_buttons[$type][$name][$key] = $value; } } } /** * Add an event * @param string $name Event name * @param string $function Event function name */ public function addEvent($name, $function) { $this->_events[$name] = $function; } /** * Execute an event * @return Evenet result * @param object $name Event name * @param array $args[optional] Optional arguments */ protected function fireEvent($name, $args = null) { if (array_key_exists($name, $this->_events)) { $event = $this->_events[$name]; if (is_array($event)) { return call_user_func_array($event, $args); } else { return call_user_func($event, $args); } } return $this->_result; } /** * Get a file icon based on extension * @return string Path to file icon * @param string $ext File extension */ public function getFileIcon($ext) { if (JFile::exists(WF_EDITOR_LIBRARIES . '/img/icons/' . $ext . '.gif')) { return $this->image('libraries.icons/' . $ext . '.gif'); } elseif (JFile::exists($this->getPluginPath() . '/img/icons/' . $ext . '.gif')) { return $this->image('plugins.icons/' . $ext . '.gif'); } else { return $this->image('libraries.icons/def.gif'); } } public function getFileSuffix() { $suffix = WFText::_('WF_MANAGER_FILE_SUFFIX'); return str_replace('WF_MANAGER_FILE_SUFFIX', '_copy', $suffix); } private function validateUploadedFile($file, &$result) { // validate image if (preg_match('#\.(jpeg|jpg|jpe|png|gif|wbmp|bmp|tiff|tif)$#i', $file['name'])) { if (@getimagesize($file['tmp_name']) === false) { $result->state = false; $result->message = WFText::_('WF_MANAGER_UPLOAD_INVALID_IMAGE_ERROR'); return false; } } $upload = $this->get('upload'); // validate mimetype if ($upload['validate_mimetype']) { wfimport('editor.libraries.classes.mime'); if (!WFMimeType::check($file['name'], $file['tmp_name'], $file['type'])) { $result->state = false; $result->message = WFText::_('WF_MANAGER_UPLOAD_INVALID_EXT_ERROR'); return false; } } // skip html and text files if (preg_match('#\.(html|htm|txt|xml|kml)$#i', $file['name'])) { return true; } /** check for XSS * From MediaHelper::canUpload * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. * */ $xss_check = JFile::read($file['tmp_name'], false, 256); // check for hidden php tags if (stristr($xss_check, 'state = false; $result->message = WFText::_('WF_MANAGER_UPLOAD_RESTRICTED_ERROR'); return false; } $html_tags = array( 'abbr', 'acronym', 'address', 'applet', 'area', 'audioscope', 'base', 'basefont', 'bdo', 'bgsound', 'big', 'blackface', 'blink', 'blockquote', 'body', 'bq', 'br', 'button', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'comment', 'custom', 'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'fn', 'font', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html', 'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'keygen', 'kbd', 'label', 'layer', 'legend', 'li', 'limittext', 'link', 'listing', 'map', 'marquee', 'menu', 'meta', 'multicol', 'nobr', 'noembed', 'noframes', 'noscript', 'nosmartquotes', 'object', 'ol', 'optgroup', 'option', 'param', 'plaintext', 'pre', 'rt', 'ruby', 's', 'samp', 'script', 'select', 'server', 'shadow', 'sidebar', 'small', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'tt', 'ul', 'var', 'wbr', 'xml', 'xmp', '!DOCTYPE', '!--' ); foreach ($html_tags as $tag) { // A tag is '' if (stristr($xss_check, '<' . $tag . ' ') || stristr($xss_check, '<' . $tag . '>')) { $result->state = false; $result->message = WFText::_('WF_MANAGER_UPLOAD_RESTRICTED_ERROR'); return false; } } return true; } /** * Upload a file. * @return array $error on failure or uploaded file name on success */ public function upload() { // Check for request forgeries WFToken::checkToken() or die(); //JError::setErrorHandling(E_ALL, 'callback', array('WFError', 'raiseError')); // check for feature access if (!$this->checkFeature('upload')) { JError::raiseError(403, 'RESTRICTED ACCESS'); } $wf = WFEditor::getInstance(); jimport('joomla.filesystem.file'); // HTTP headers for no cache etc //header('Content-type: text/plain; charset=UTF-8'); header("Expires: Wed, 4 Apr 1984 13:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M_Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // get uploaded file $file = JRequest::getVar('file', '', 'files', 'array'); // get file name $name = JRequest::getVar('name', $file['name']); // target directory $dir = JRequest::getVar('upload-dir'); // deocode directory $dir = rawurldecode($dir); // check destination path WFUtility::checkPath($dir); // decode name $name = rawurldecode($name); // get extension $ext = WFUtility::getExtension($name); // strip extension $name = WFUtility::stripExtension($name); // make file name 'web safe' $name = WFUtility::makeSafe($name, $this->get('websafe_mode', 'utf-8')); // empty name if ($name == '') { JError::raiseError(403, 'INVALID FILE NAME'); } // check for extension in file name or blank file name if (preg_match('#\.(php|php(3|4|5)|phtml|pl|py|jsp|asp|htm|shtml|sh|cgi)#i', $name)) { JError::raiseError(403, 'INVALID FILE NAME'); } // create a filesystem result object $result = new WFFileSystemResult(); $filesystem = $this->getFileSystem(); $complete = false; $contentType = JRequest::getVar('CONTENT_TYPE', '', 'SERVER'); // rebuild file name - name + extension $name = $name . '.' . $ext; // Only multipart uploading is supported for now if ($contentType && strpos($contentType, "multipart") !== false) { if (isset($file['tmp_name']) && is_uploaded_file($file['tmp_name'])) { // check for valid extension if (in_array(strtolower($ext), $this->getFileTypes('array')) === false) { $result->state = false; $result->message = WFText::_('WF_MANAGER_UPLOAD_INVALID_EXT_ERROR'); $complete = true; @unlink($file['tmp_name']); } else if ($this->validateUploadedFile($file, $result) === false) { $complete = true; @unlink($file['tmp_name']); } else { $result = $filesystem->upload('multipart', trim($file['tmp_name']), $dir, $name); if (!$result->state) { $result->message = WFText::_('WF_MANAGER_UPLOAD_ERROR'); $result->code = 103; } @unlink($file['tmp_name']); $complete = true; } } } else { $result->state = false; $result->code = 103; $result->message = WFText::_('WF_MANAGER_UPLOAD_ERROR'); $complete = true; } // upload finished if ($complete) { if ($result instanceof WFFileSystemResult) { if ($result->state === true) { $path = $result->path; $this->setResult($this->fireEvent('onUpload', array($result->path))); $this->setResult(basename($result->path), 'files'); } else { $this->setResult($result->message, 'error'); } } die(json_encode($this->getResult())); } } /** * Delete the relative file(s). * @param $files the relative path to the file name or comma seperated list of multiple paths. * @return string $error on failure. */ public function deleteItem($items) { // check for feature access if (!$this->checkFeature('delete', 'folder') && !$this->checkFeature('delete', 'file')) { JError::raiseError(403, 'RESTRICTED ACCESS'); } $filesystem = $this->getFileSystem(); $items = explode(",", rawurldecode($items)); foreach ($items as $item) { // decode $item = rawurldecode($item); // check path WFUtility::checkPath($item); $result = $filesystem->delete($item); if ($result instanceof WFFileSystemResult) { if (!$result->state) { if ($result->message) { $this->setResult($result->message, 'error'); } else { $this->setResult(JText::sprintf('WF_MANAGER_DELETE_' . strtoupper($result->type) . '_ERROR', basename($item)), 'error'); } } else { $this->setResult($this->fireEvent('on' . ucfirst($result->type) . 'Delete', array($item))); $this->setResult($item, $result->type); } } } return $this->getResult(); } /** * Rename a file. * @param string $src The relative path of the source file * @param string $dest The name of the new file * @return string $error */ public function renameItem() { // check for feature access if (!$this->checkFeature('rename', 'folder') && !$this->checkFeature('rename', 'file')) { JError::raiseError(403, 'RESTRICTED ACCESS'); } $args = func_get_args(); $source = array_shift($args); $destination = array_shift($args); $source = rawurldecode($source); $destination = rawurldecode($destination); WFUtility::checkPath($source); WFUtility::checkPath($destination); // check for extension in destination name if (preg_match('#\.(php|php(3|4|5)|phtml|pl|py|jsp|asp|htm|html|shtml|sh|cgi)\b#i', $destination)) { JError::raiseError(403, 'INVALID FILE NAME'); } $filesystem = $this->getFileSystem(); $result = $filesystem->rename($source, WFUtility::makeSafe($destination, $this->get('websafe_mode')), $args); if ($result instanceof WFFileSystemResult) { if (!$result->state) { $this->setResult(WFText::sprintf('WF_MANAGER_RENAME_' . strtoupper($result->type) . '_ERROR', basename($source)), 'error'); if ($result->message) { $this->setResult($result->message, 'error'); } } else { $this->setResult($this->fireEvent('on' . ucfirst($result->type) . 'Rename', array($destination))); $this->setResult($destination, $result->type); } } return $this->getResult(); } /** * Copy a file. * @param string $files The relative file or comma seperated list of files * @param string $dest The relative path of the destination dir * @return string $error on failure */ public function copyItem($items, $destination) { // check for feature access if (!$this->checkFeature('move', 'folder') && !$this->checkFeature('move', 'file')) { JError::raiseError(403, 'RESTRICTED ACCESS'); } $filesystem = $this->getFileSystem(); $items = explode(",", rawurldecode($items)); // decode $destination = rawurldecode($destination); // check destination path WFUtility::checkPath($destination); foreach ($items as $item) { // decode $item = rawurldecode($item); // check source path WFUtility::checkPath($item); $result = $filesystem->copy($item, $destination); if ($result instanceof WFFileSystemResult) { if (!$result->state) { if ($result->message) { $this->setResult($result->message, 'error'); } else { $this->setResult(JText::sprintf('WF_MANAGER_COPY_' . strtoupper($result->type) . '_ERROR', basename($item)), 'error'); } } else { $this->setResult($this->fireEvent('on' . ucfirst($result->type) . 'Copy', array($item))); $this->setResult($destination, $result->type); } } } return $this->getResult(); } /** * Copy a file. * @param string $files The relative file or comma seperated list of files * @param string $dest The relative path of the destination dir * @return string $error on failure */ public function moveItem($items, $destination) { // check for feature access if (!$this->checkFeature('move', 'folder') && !$this->checkFeature('move', 'file')) { JError::raiseError(403, 'RESTRICTED ACCESS'); } $filesystem = $this->getFileSystem(); $items = explode(",", rawurldecode($items)); // decode $destination = rawurldecode($destination); // check destination path WFUtility::checkPath($destination); foreach ($items as $item) { // decode $item = rawurldecode($item); // check source path WFUtility::checkPath($item); $result = $filesystem->move($item, $destination); if ($result instanceof WFFileSystemResult) { if (!$result->state) { if ($result->message) { $this->setResult($result->message, 'error'); } else { $this->setResult(JText::sprintf('WF_MANAGER_MOVE_' . strtoupper($result->type) . '_ERROR', basename($item)), 'error'); } } else { $this->setResult($this->fireEvent('on' . ucfirst($result->type) . 'Move', array($item))); $this->setResult($destination, $result->type); } } } return $this->getResult(); } /** * New folder * @param string $dir The base dir * @param string $new_dir The folder to be created * @return string $error on failure */ public function folderNew() { if (!$this->checkFeature('create', 'folder')) { JError::raiseError(403, 'RESTRICTED ACCESS'); } $args = func_get_args(); $dir = array_shift($args); $new = array_shift($args); // decode $dir = rawurldecode($dir); $new = rawurldecode($new); $filesystem = $this->getFileSystem(); $result = $filesystem->createFolder($dir, WFUtility::makeSafe($new, $this->get('websafe_mode')), $args); if ($result instanceof WFFileSystemResult) { if (!$result->state) { if ($result->message) { $this->setResult($result->message, 'error'); } else { $this->setResult(JText::sprintf('WF_MANAGER_NEW_FOLDER_ERROR', basename($new)), 'error'); } } else { $this->setResult($this->fireEvent('onFolderNew', array($new))); } } return $this->getResult(); } private function getUploadValue() { $upload = trim(ini_get('upload_max_filesize')); $post = trim(ini_get('post_max_size')); $upload = WFUtility::convertSize($upload); $post = WFUtility::convertSize($post); if (intval($upload) <= intval($post)) { return $upload; } return $post; } private function getUploadDefaults() { $filesystem = $this->getFileSystem(); $features = $filesystem->get('upload'); $elements = isset($features['elements']) ? $features['elements'] : array(); $upload_max = $this->getUploadValue(); $upload = $this->get('upload'); /* $chunk_size = '512KB'; //$upload_max ? $upload_max / 1024 . 'KB' : '1MB'; $chunk_size = isset($upload['chunk_size']) ? $upload['chunk_size'] : $chunk_size; // chunking not yet supported in safe_mode, check base directory is writable and chunking supported by filesystem if (!$features['chunking']) { $chunk_size = 0; } */ // get upload size $size = intval(preg_replace('/[^0-9]/', '', $upload['max_size'])) . 'kb'; // must not exceed server maximum if ((int) $size * 1024 > (int) $upload_max) { $size = $upload_max / 1024 . 'kb'; } $runtimes = array(); if (is_string($upload['runtimes'])) { $runtimes = explode(',', $upload['runtimes']); } else { foreach ($upload['runtimes'] as $k => $v) { $runtimes[] = $v; } } // add html4 $runtimes[] = 'html4'; // remove flash runtime if $chunk_size is 0 (no chunking) /* if (!$chunk_size) { unset($runtimes[array_search('flash', $runtimes)]); } */ $defaults = array( 'runtimes' => implode(',', $runtimes), 'size' => $size, 'filter' => $this->mapUploadFileTypes(true), 'elements' => $elements ); // only add chunk size if it has a value /* if ($chunk_size) { $defaults['chunk_size'] = $chunk_size; } */ if (isset($features['dialog'])) { $defaults['dialog'] = $features['dialog']; } return $defaults; } public function getDimensions($file) { $filesystem = $this->getFileSystem(); return $filesystem->getDimensions($file); } protected function getSettings($settings = array()) { $filesystem = $this->getFileSystem(); $default = array( 'dir' => $filesystem->getRootDir(), 'actions' => $this->getActions(), 'buttons' => $this->getButtons(), 'upload' => $this->getUploadDefaults(), 'tree' => $this->get('folder_tree'), 'listlimit' => $this->get('list_limit'), 'websafe_mode' => $this->get('websafe_mode') ); $properties = array('base', 'delete', 'rename', 'folder_new', 'copy', 'move'); foreach ($properties as $property) { if ($filesystem->get($property)) { $default[$property] = $filesystem->get($property); } } $settings = array_merge_recursive($default, $settings); return $settings; } } ?>components/com_jce/editor/extensions/browser/js/file.js100644 0 0 4057 12000772103 21030 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ var WFFileBrowser=WFExtensions.add('FileBrowser',{settings:{},element:'',init:function(element,options){$.extend(true,this.settings,options);this.element=element;this._createBrowser();},_createBrowser:function(){$(this.element).MediaManager(this.settings);},getBaseDir:function(){return this._call('getBaseDir');},getCurrentDir:function(){return this._call('getCurrentDir');},getSelectedItems:function(key){return this._call('getSelectedItems',key);},refresh:function(){return this._call('refresh');},error:function(error){return this._call('error',error);},status:function(message,state){return this._call('setStatus',{message:message,state:state});},load:function(items){return this._call('load',items);},resize:function(fh){return this._call('resize',[null,fh]);},startUpload:function(){return this._call('startUpload');},stopUpload:function(){return this._call('stopUpload');},setUploadStatus:function(message,state){return this._call('setUploadStatus',{message:message,state:state});},get:function(fn,args){return this._call(fn,args);},_call:function(fn,args){return $(this.element).MediaManager(fn,args);}});components/com_jce/editor/extensions/browser/js/filter.js100644 0 0 5205 12000772103 21372 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.widget("ui.listFilter",{options:{list:null,items:null,clear:null,sort:null,hide:false,filter:null},_init:function(){var self=this,el=this.element,busy;var clear=this.options.clear;if(clear){$(clear).click(function(e){if($(clear).hasClass('clear')){$(clear).removeClass('clear');if($(el).val()){self._reset();$(el).val('');self._trigger('onFind',e,[]);}}});} $(el).keyup(function(e){if(!busy){busy=true;window.setTimeout(function(){self._find($(el).val(),e);busy=false;},500);}});},_find:function(s,e){var self=this,x=[],f,v,filter;$(this.options.clear).toggleClass('clear',!!s);if(/[a-z0-9_\.-]/i.test(s)){$(this.options.items).each(function(){var n=$.String.basename($(this).attr('title'));if(s.charAt(0)=='.'){v=s.substr(1);f=n.substr(n.lastIndexOf('.')+1);filter=true;}else{f=n.substring(0,s.length);v=s;} if(f.toLowerCase()==v.toLowerCase()){if($.inArray(this,x)==-1){x.push(this);}}else{var i=$.inArray(this,x);if(i!=-1){x.splice(i,1);}}});}else{x=[];} if(x.length){x=self._sort(x);self._scroll(x[0]);if(this.options.filter&&filter){$(this.options.filter).not(x).hide();}}else{self._reset();} self._trigger('onFind',e,x);},_scroll:function(el){var self=this,$list=$(this.options.list);var pos=$(el).position();var top=$list.scrollTop();$list.css('overflow','hidden').animate({scrollTop:pos.top+top},1000,function(){$list.css('overflow','auto');});},_sort:function(x){var a=[];$(this.options.items).each(function(){if($.inArray(this,x)!=-1){a.push(this);}});return a;},_reset:function(){$(this.options.filter).show();this._scroll($('li:first',this.options.list));},destroy:function(){$.Widget.prototype.destroy.apply(this,arguments);}});$.extend($.ui.searchables,{version:"2.2.4"});})(jQuery);components/com_jce/editor/extensions/browser/js/link.js100644 0 0 4040 12000772103 21036 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ var WFLinkBrowser=WFExtensions.add('LinkBrowser',{options:{element:'#link-browser',onClick:$.noop},init:function(options){$.extend(this.options,options);this._createTree();},_createTree:function(){var self=this;$(this.options.element).tree({collapseTree:true,charLength:50,onInit:function(e,callback){if($.isFunction(callback)){callback.apply();}},onNodeClick:function(e,node){var v;if(!$('span.nolink',node).length){v=$('a',node).attr('href');if(v=='javascript:;') v=$(node).attr('id');if($.isFunction(self.options.onClick)){self.options.onClick.call(this,$.String.decode(v));}} if($('span',node).is('.folder')){$(this).tree('toggleNode',e,node);} e.preventDefault();},onNodeLoad:function(e,node){var self=this;$(this).tree('toggleLoader',node);var query=$.String.query($.String.unescape($(node).attr('id')));$.JSON.request('getLinks',{'json':query},function(o){if(o){if(!o.error){var ul=$('ul:first',node);if(ul){$(ul).remove();} $(self).tree('createNode',o.folders,node);$(self).tree('toggleNodeState',node,true);}else{$.Dialog.alert(o.error);}} $(self).tree('toggleLoader',node);},self);}});}});components/com_jce/editor/extensions/browser/js/manager.js100644 0 0 111100 12000772104 21550 0ustar 0 0 /* * JCE Editor 2.2.4 * @package JCE * @url http://www.joomlacontenteditor.net * @copyright Copyright (C) 2006 - 2012 Ryan Demmer. All rights reserved * @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html * @date 16 July 2012 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * NOTE : Javascript files have been compressed for speed and can be uncompressed using http://jsbeautifier.org/ */ (function($){$.widget("ui.MediaManager",{_actions:[],_buttons:{'folder':{},'file':{}},_dialog:[],_returnedItems:[],_pasteitems:'',_pasteaction:'',_limitcount:0,_limitend:0,options:{base:'',dir:'images',dialog:{list:'#browser-list',tree:'#tree-body',info:'#browser-details-text',limit:'#browser-list-limit',comments:'#browser-details-comment',nav:'#browser-details-nav',status:'#browser-message',message:'#message-info',buttons:'#browser-buttons',actions:'#browser-actions',refresh:'#refresh',search:'#search'},actions:null,buttons:null,tree:true,details:true,search:true,upload:{size:'1024kb',types:{},overwrite:true,limit:false,runtimes:'html5,flash,html4',chunk_size:'1mb',insert:true,dialog:{},elements:null,buttons:{}},folder_new:{dialog:null},rename:{dialog:null},viewable:'jpeg,jpg,gif,png,avi,wmv,wm,asf,asx,wmx,wvx,mov,qt,mpg,mp3,mp4,m4v,mpeg,ogg,ogv,webm,swf,flv,f4v,xml,dcr,rm,ra,ram,divx,html,htm,txt,rtf,pdf,doc,docx,xls,xlsx,ppt,pptx',use_cookies:true,listlimit:'all',expandable:true,websafe_mode:'utf-8'},_init:function(){var self=this;this._addActions(this.options.actions);this._addButtons(this.options.buttons);var dialog=this.options.dialog;var list=document.createElement('ul');$(list).addClass('item-list').attr({'id':'item-list','role':'listbox'}).bind('click.item-list',function(e){var n=e.target,p=n.parentNode;switch(n.nodeName){case'A':if($(p).hasClass('folder')){var u=$(p).data('url')||self._getPreviousDir();return self._changeDir(u);}else{self._setSelectedItems(e,true);self._trigger('onFileClick',e,p);} break;case'LI':if($(n).hasClass('folder-up')){var u=$(p).data('url')||self._getPreviousDir();return self._changeDir(u);} if($(n).hasClass('folder')){if(e.pageX<$('a',p).offset().left){var u=$(p).data('url')||self._getPreviousDir();return self._changeDir(u);}} self._setSelectedItems(e,true);break;case'SPAN':if($(n).hasClass('checked')){$(n).removeClass('checked').attr('aria-checked',false);self._removeSelectedItems([p],true);}else{self._setSelectedItems(e,true);$(n).attr('aria-checked',true);} break;} e.preventDefault();}).bind('dblclick.item-list',function(e){e.preventDefault();return false;}).bind('keydown.item-list',function(e){switch(e.which){case 13:n=$('li.selected:last','#item-list').get(0);if(!n) return;if($(n).hasClass('folder')){var u=$(p).data('url')||self._getPreviousDir();return self._changeDir(u);}else{self._setSelectedItems(e,true);self._trigger('onFileClick',e,n);} break;case 38:case 40:self._setSelectedItems(e);break;} e.preventDefault();});$('#browser-list').append(list).bind('scroll.browser-list',function(e){self._updateList();});$('span.details-nav-left, span.details-nav-right','#browser-details-nav').click(function(){var $item=$('li.selected.active','#item-list').removeClass('active');if($(this).hasClass('details-nav-left')){$item.prevAll('li.selected:first').addClass('active');} if($(this).hasClass('details-nav-right')){$item.nextAll('li.selected:first').addClass('active');} self._showItemDetails();});$(dialog.limit+'-select').val($.Cookie.get('jce_'+$.Plugin.getName()+'_limit')||this.options.listlimit);$(dialog.limit+'-select').change(function(){self._limitcount=0;if(self.options.use_cookies){$.Cookie.set('wf_'+$.Plugin.getName()+'_limit',$(this).val());} self.refresh();});$('ul li',dialog.limit).click(function(){var x=0,count=self._limitcount,limit=parseInt(self._limit);if($(this).hasClass('limit-left')){x=count-limit;} if($(this).hasClass('limit-right')){x=count+limit;} if($(this).hasClass('limit-left-end')){x=count=self._limitend;} self._limitcount=x;self.refresh();});$('span.checkbox','#check-all').click(function(e){var el=e.target;if($(el).hasClass('checked')){$(el).removeClass('checked').attr('aria-checked',false);$('span.checkbox',$(dialog.list)).removeClass('checked').attr('aria-checked',false);self._deselectItems();}else{$(el).addClass('checked').attr('aria-checked',true);self._selectItems($('li.folder, li.file',$(dialog.list)).not('li.folder-up'),true);}});this._setupSortables();if(!this.options.search){$('#block-search-icon').addClass('hide');} if(!this.options.details||!this._treeLoaded()){$('#block-details-icon').addClass('hide');$('#show-details span').addClass('disabled');} this._toggleTree(this._treeLoaded());$('#show-search').click(function(){$('#searchbox').toggleClass('hide').attr('aria-hidden',function(){return $(this).hasClass('hide');});$(this).toggleClass('active');if($(this).hasClass('active')){var end=$(this).prevAll(':visible').get(1);var width=$(end).parent().width()-$(end).position().left-parseInt($('#searchbox').css('right'));var spacers=$(end).nextAll(':visible').not(this).children('div.spacer');$('#searchbox').width(width-(spacers.length*$(spacers).outerWidth(true)));$('#search').focus();}});$('body').click(function(e){if($(e.target).is('#show-search, span.layout-icon.search')||$(e.target).parents('#searchbox').length){return;} $('#searchbox').addClass('hide').attr('aria-hidden',true);$('#show-search').removeClass('active');});$(dialog.search).listFilter({list:dialog.list,items:'#item-list li.file',clear:$('span.search-icon','#searchbox'),filter:'#item-list li',onFind:function(e,items,filter){if(items.length){self._deselectItems();self._selectItems(items,true);}else{self._deselectItems();}}});$(dialog.refresh).click(function(){self.refresh();});$('#show-details').click(function(e){var span=e.target;$(span).toggleClass('tree');self._showListDetails();});var ih=this._getInterfaceHeight();$(window).bind('resize',function(){self.resize(ih);});$('#layout-full-toggle').toggle(this.options.expandable).click(function(){$('#browser').toggleClass('full-height');self.resize(ih);self._trigger($('#browser').hasClass('full-height')?'onMaximise':'onMinimise');});this._setupDir();if($.browser.webkit&&/Safari/i.test(navigator.userAgent)){$(window).load(function(){self.resize(ih);});}else{self.resize(ih);} this._trigger('onInit');},_updateList:function(){var self=this;var area=$('#browser-list').height()+$('#browser-list').scrollTop();$('li.file.jpg, li.file.jpeg, li.file.png, li.file.gif, li.file.bmp','#item-list').not('[data-width]').each(function(){var pos=$(this).position();if(pos.top...';} if(o.folders.length){$.each(o.folders,function(i,e){var data=[],classes=[];$.each(e.properties,function(k,v){if(v!==''){data.push('data-'+k+'="'+v+'"');}});data.push('data-url="'+(e.url||e.id)+'"');classes.push(self._isWebSafe(e.name)?'safe':'notsafe');classes.push(e.writable?'writable':'notwritable');if(e.classes){classes.push(e.classes);} h+='
    • '+e.name+'
    • ';});} if(o.total.files){$.each(o.files,function(i,e){var data=[],classes=[];$.each(e.properties,function(k,v){if(v!==''){data.push('data-'+k+'="'+v+'"');}});data.push('data-url="'+(e.url||e.id)+'"');data.push('id="'+e.id+'"');classes.push(self._isWebSafe(e.name)?'safe':'notsafe');classes.push(e.writable?'writable':'notwritable');if(e.selected){self._addReturnedItem({'name':e.id});} if(e.classes){classes.push(e.classes);} h+='
    • '+e.name+'
    • ';});}else{h+='
    • '+self._translate('no_files','No files')+'
    • ';} $('#item-list').html(h);this._showListDetails();},_showListDetails:function(){var s=!$('span.layout-icon','#show-details').hasClass('tree')&&this._treeLoaded();this._toggleTree(s);},_treeLoaded:function(){return this.options.tree&&typeof $.ui.tree!='undefined';},_createTree:function(src){var self=this,dialog=this.options.dialog;var path=src||this._dir;path=this._cleanPath(path);this.setStatus({message:self._translate('message_tree','Building tree list...'),state:'load'});$(dialog.tree).tree({onInit:function(e,callback){$.JSON.request('getTree',path,function(o){$(dialog.tree).html(o);if($.isFunction(callback)){callback.apply();} self._getList(src);});},onNodeClick:function(e,node){self._changeDir($(node).attr('id'));$(dialog.tree).tree('toggleNode',e,node);},onNodeLoad:function(e,node){$(dialog.tree).tree('toggleLoader',node);$.JSON.request('getTreeItem',$(node).attr('id'),function(o){if(o){if(!o.error){$('ul:first',node).remove();$(dialog.tree).tree('createNode',o.folders,node);$(dialog.tree).tree('toggleNodeState',node,true);}else{alert(o.error);}} $(dialog.tree).tree('toggleLoader',node);},this);}});},_reset:function(){this._deselectItems();this._returnedItems=[];$.each(this._dialog,function(i,n){$(n).dialog('close');});$('span.checkbox',$('#check-all')).removeClass('checked');$('span','#browser-details-nav').removeClass('visible').attr('aria-hidden',true).filter('span.details-nav-text').empty();},_clearPaste:function(){this._pasteaction='';this._pasteitems='';this._hideButtons($('div.paste','#buttons'));},setStatus:function(o){$(this.options.dialog.status).attr('class',o.state||'');$(this.options.dialog.status).html(''+o.message||''+'');},_setMessage:function(message,classname){return true;},_setLoader:function(){this.setStatus({message:this._translate('message_load','Loading...'),state:'load'});},_resetMessage:function(){return true;},_resetStatus:function(){var self=this,dir=decodeURIComponent(this._dir),$status=$(this.options.dialog.status);this.setStatus({message:'',state:''});$status.empty();var $pathway=$('