From 65518cce6b37730fa4178ec1ab59f76dff3083bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=81Z=C3=81R=20Imre=20AI=20Agent?= Date: Thu, 16 Jul 2026 11:34:29 +0200 Subject: [PATCH] feat(cadline): add Cadline-own components MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 9 Cadline-only components (no public upstream): showroom, albanner, alworkshops, followedlinks, nonprofit, presentation, project, tcexam, versions. Vetted live files. Signed-off-by: LÁZÁR Imre Assisted-by: claude-code@claude-opus-4-8 --- .../components/com_albanner/access.xml | 13 + .../components/com_albanner/albanner.php | 27 + .../components/com_albanner/albanner.xml | 55 + .../ajax/AjaxBannerController.class.php | 131 + .../assets/ajax/BaseController.class.php | 22 + .../com_albanner/assets/css/index.html | 1 + .../com_albanner/assets/css/style.css | 84 + .../assets/images/iconset/accept.png | Bin 0 -> 642 bytes .../assets/images/iconset/add.png | Bin 0 -> 330 bytes .../assets/images/iconset/arrow_undo.png | Bin 0 -> 730 bytes .../assets/images/iconset/cross.png | Bin 0 -> 763 bytes .../assets/images/iconset/delete.png | Bin 0 -> 956 bytes .../assets/images/iconset/email.png | Bin 0 -> 511 bytes .../assets/images/iconset/layout_join.png | Bin 0 -> 283 bytes .../assets/images/iconset/layout_split.png | Bin 0 -> 269 bytes .../assets/images/iconset/link_break.png | Bin 0 -> 508 bytes .../assets/images/iconset/pencil.png | Bin 0 -> 631 bytes .../assets/images/iconset/photo.png | Bin 0 -> 576 bytes .../com_albanner/assets/images/index.html | 1 + .../assets/images/tableshort-down.jpg | Bin 0 -> 453 bytes .../assets/images/tableshort-up.jpg | Bin 0 -> 473 bytes .../components/com_albanner/assets/index.html | 1 + .../components/com_albanner/assets/js/ajax.js | 16 + .../components/com_albanner/assets/js/main.js | 106 + .../components/com_albanner/controller.php | 55 + .../com_albanner/controllers/index.html | 1 + .../com_albanner/helpers/IconHelper.class.php | 67 + .../helpers/MySqlHelper.class.php | 212 + .../helpers/TableHelper.class.php | 719 + .../com_albanner/helpers/albanner.php | 24 + .../com_albanner/helpers/index.html | 1 + .../components/com_albanner/index.html | 1 + .../com_albanner/models/banners.php | 28 + .../components/com_albanner/models/edit.php | 99 + .../components/com_albanner/models/index.html | 1 + .../components/com_albanner/models/list.php | 28 + .../components/com_albanner/models/test.php | 43 + .../components/com_albanner/sql/index.html | 1 + .../com_albanner/sql/install.mysql.utf8.sql | 0 .../com_albanner/sql/uninstall.mysql.utf8.sql | 0 .../com_albanner/sql/update.mysql.utf8.sql | 0 .../com_albanner/views/banners/index.html | 1 + .../views/banners/tmpl/default.php | 9 + .../views/banners/tmpl/default.xml | 8 + .../views/banners/tmpl/index.html | 1 + .../com_albanner/views/banners/view.html.php | 28 + .../com_albanner/views/edit/index.html | 1 + .../com_albanner/views/edit/tmpl/default.php | 158 + .../com_albanner/views/edit/tmpl/index.html | 1 + .../com_albanner/views/edit/view.html.php | 62 + .../components/com_albanner/views/index.html | 1 + .../com_albanner/views/list/index.html | 1 + .../com_albanner/views/list/tmpl/default.php | 110 + .../com_albanner/views/list/tmpl/index.html | 1 + .../com_albanner/views/list/view.html.php | 28 + .../com_albanner/views/test/index.html | 1 + .../com_albanner/views/test/tmpl/default.php | 99 + .../com_albanner/views/test/tmpl/index.html | 1 + .../com_albanner/views/test/view.html.php | 31 + .../components/com_alworkshops/access.xml | 13 + .../com_alworkshops/alworkshops.php | 28 + .../com_alworkshops/alworkshops.xml | 49 + .../ajax/AjaxApplicationController.class.php | 157 + .../ajax/AjaxCourseController.class.php | 107 + .../ajax/AjaxEducationController.class.php | 95 + .../AjaxOnlineSessionController.class.php | 130 + .../ajax/AjaxSessionController.class.php | 130 + .../ajax/AjaxSwitchController.class.php | 95 + .../assets/ajax/BaseController.class.php | 28 + .../com_alworkshops/assets/css/index.html | 1 + .../com_alworkshops/assets/css/jquery-ui.css | 1311 ++ .../com_alworkshops/assets/css/style.css | 86 + .../assets/images/environment.png | Bin 0 -> 2298 bytes .../assets/images/iconset/accept.png | Bin 0 -> 643 bytes .../assets/images/iconset/add.png | Bin 0 -> 331 bytes .../assets/images/iconset/arrow_undo.png | Bin 0 -> 731 bytes .../assets/images/iconset/cross.png | Bin 0 -> 764 bytes .../assets/images/iconset/delete.png | Bin 0 -> 957 bytes .../assets/images/iconset/email.png | Bin 0 -> 512 bytes .../assets/images/iconset/layout_join.png | Bin 0 -> 284 bytes .../assets/images/iconset/layout_split.png | Bin 0 -> 270 bytes .../assets/images/iconset/link_break.png | Bin 0 -> 509 bytes .../assets/images/iconset/pencil.png | Bin 0 -> 632 bytes .../assets/images/iconset/photo.png | Bin 0 -> 578 bytes .../com_alworkshops/assets/images/ifc.png | Bin 0 -> 2117 bytes .../com_alworkshops/assets/images/index.html | 1 + .../assets/images/l_com_alworkshops.png | Bin 0 -> 3280 bytes .../com_alworkshops/assets/images/matdata.png | Bin 0 -> 1942 bytes .../com_alworkshops/assets/images/oli.png | Bin 0 -> 1357 bytes .../com_alworkshops/assets/images/pdf.png | Bin 0 -> 1766 bytes .../assets/images/s_com_alworkshops.png | Bin 0 -> 826 bytes .../assets/images/tableshort-down.jpg | Bin 0 -> 453 bytes .../assets/images/tableshort-up.jpg | Bin 0 -> 473 bytes .../com_alworkshops/assets/images/unknown.png | Bin 0 -> 1401 bytes .../com_alworkshops/assets/index.html | 1 + .../com_alworkshops/assets/js/ajax.js | 16 + .../com_alworkshops/assets/js/jquery-ui.js | 18706 ++++++++++++++++ .../com_alworkshops/assets/js/main.js | 106 + .../components/com_alworkshops/config.xml | 93 + .../components/com_alworkshops/controller.php | 59 + .../helpers/IconHelper.class.php | 70 + .../helpers/MySqlHelper.class.php | 212 + .../helpers/TableHelper.class.php | 777 + .../com_alworkshops/helpers/alworkshops.php | 89 + .../com_alworkshops/helpers/index.html | 1 + .../components/com_alworkshops/index.html | 1 + .../com_alworkshops/models/application.php | 16 + .../models/applicationedit.php | 71 + .../com_alworkshops/models/course.php | 16 + .../com_alworkshops/models/courseedit.php | 104 + .../com_alworkshops/models/educationedit.php | 99 + .../com_alworkshops/models/index.html | 1 + .../models/onlinesessionedit.php | 118 + .../com_alworkshops/models/session.php | 16 + .../com_alworkshops/models/sessionedit.php | 112 + .../com_alworkshops/models/switch.php | 16 + .../com_alworkshops/models/switchedit.php | 66 + .../views/alworkshops/index.html | 1 + .../views/alworkshops/tmpl/default.php | 24 + .../views/alworkshops/tmpl/index.html | 1 + .../views/alworkshops/view.html.php | 26 + .../views/application/index.html | 1 + .../views/application/tmpl/default.php | 100 + .../views/application/tmpl/index.html | 1 + .../views/application/view.html.php | 31 + .../views/applicationedit/index.html | 1 + .../views/applicationedit/tmpl/default.php | 96 + .../views/applicationedit/tmpl/index.html | 1 + .../views/applicationedit/view.html.php | 62 + .../com_alworkshops/views/course/index.html | 1 + .../views/course/tmpl/default.php | 87 + .../views/course/tmpl/index.html | 1 + .../views/course/view.html.php | 29 + .../views/courseedit/index.html | 1 + .../views/courseedit/tmpl/default.php | 221 + .../views/courseedit/tmpl/index.html | 1 + .../views/courseedit/view.html.php | 90 + .../views/education/index.html | 1 + .../views/education/tmpl/default.php | 91 + .../views/education/tmpl/index.html | 1 + .../views/education/view.html.php | 28 + .../views/educationedit/index.html | 1 + .../views/educationedit/tmpl/default.php | 286 + .../views/educationedit/tmpl/index.html | 1 + .../views/educationedit/view.html.php | 80 + .../com_alworkshops/views/index.html | 1 + .../views/onlinesession/index.html | 1 + .../views/onlinesession/tmpl/default.php | 83 + .../views/onlinesession/tmpl/index.html | 1 + .../views/onlinesession/view.html.php | 29 + .../views/onlinesessionedit/index.html | 1 + .../views/onlinesessionedit/tmpl/default.php | 77 + .../views/onlinesessionedit/tmpl/index.html | 1 + .../views/onlinesessionedit/view.html.php | 63 + .../com_alworkshops/views/session/index.html | 1 + .../views/session/tmpl/default.php | 83 + .../views/session/tmpl/index.html | 1 + .../views/session/view.html.php | 29 + .../views/sessionedit/index.html | 1 + .../views/sessionedit/tmpl/default.php | 89 + .../views/sessionedit/tmpl/index.html | 1 + .../views/sessionedit/view.html.php | 63 + .../com_alworkshops/views/switch/index.html | 1 + .../views/switch/tmpl/default.php | 59 + .../views/switch/tmpl/index.html | 1 + .../views/switch/view.html.php | 27 + .../views/switchedit/index.html | 1 + .../views/switchedit/tmpl/default.php | 200 + .../views/switchedit/tmpl/index.html | 1 + .../views/switchedit/view.html.php | 74 + .../AjaxFollowedlinksController.class.php | 85 + .../assets/ajax/BaseController.class.php | 28 + .../com_followedlinks/assets/css/style.css | 84 + .../assets/images/iconset/accept.png | Bin 0 -> 642 bytes .../assets/images/iconset/add.png | Bin 0 -> 330 bytes .../assets/images/iconset/arrow_undo.png | Bin 0 -> 730 bytes .../assets/images/iconset/cross.png | Bin 0 -> 763 bytes .../assets/images/iconset/delete.png | Bin 0 -> 956 bytes .../assets/images/iconset/email.png | Bin 0 -> 511 bytes .../assets/images/iconset/layout_join.png | Bin 0 -> 283 bytes .../assets/images/iconset/layout_split.png | Bin 0 -> 269 bytes .../assets/images/iconset/link_break.png | Bin 0 -> 508 bytes .../assets/images/iconset/pencil.png | Bin 0 -> 631 bytes .../assets/images/iconset/photo.png | Bin 0 -> 576 bytes .../assets/images/tableshort-down.jpg | Bin 0 -> 453 bytes .../assets/images/tableshort-up.jpg | Bin 0 -> 473 bytes .../com_followedlinks/assets/js/ajax.js | 16 + .../com_followedlinks/assets/js/main.js | 106 + .../com_followedlinks/controller.php | 24 + .../com_followedlinks/followedlinks.php | 8 + .../com_followedlinks/followedlinks.xml | 44 + .../helpers/IconHelper.class.php | 67 + .../helpers/MySqlHelper.class.php | 212 + .../helpers/TableHelper.class.php | 720 + .../components/com_followedlinks/index.html | 1 + .../models/followedlinks.php | 28 + .../com_followedlinks/models/linkedit.php | 94 + .../com_followedlinks/models/links.php | 7 + .../views/followedlinks/index.html | 1 + .../views/followedlinks/tmpl/default.php | 9 + .../views/followedlinks/tmpl/default.xml | 8 + .../views/followedlinks/tmpl/index.html | 1 + .../views/followedlinks/view.html.php | 29 + .../views/linkedit/index.html | 1 + .../views/linkedit/tmpl/default.php | 57 + .../views/linkedit/tmpl/index.html | 1 + .../views/linkedit/view.html.php | 60 + .../com_followedlinks/views/links/index.html | 1 + .../views/links/tmpl/default.php | 43 + .../views/links/tmpl/index.html | 1 + .../views/links/view.html.php | 29 + .../components/com_nonprofit/nonprofit.xml | 35 + .../com_presentation/presentation.xml | 37 + .../ajax/AjaxProjectsController.class.php | 128 + .../assets/ajax/AjaxTypesController.class.php | 99 + .../assets/ajax/BaseController.class.php | 28 + .../css/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 211 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 207 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 334 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 206 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 261 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 261 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 331 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 279 bytes .../css/images/ui-icons_222222_256x240.png | Bin 0 -> 6921 bytes .../css/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4547 bytes .../css/images/ui-icons_454545_256x240.png | Bin 0 -> 6991 bytes .../css/images/ui-icons_888888_256x240.png | Bin 0 -> 6998 bytes .../css/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4547 bytes .../com_project/assets/css/jquery-ui.css | 526 + .../com_project/assets/css/style.css | 85 + .../assets/images/iconset/accept.png | Bin 0 -> 642 bytes .../com_project/assets/images/iconset/add.png | Bin 0 -> 330 bytes .../assets/images/iconset/arrow_undo.png | Bin 0 -> 730 bytes .../assets/images/iconset/cross.png | Bin 0 -> 763 bytes .../assets/images/iconset/delete.png | Bin 0 -> 956 bytes .../assets/images/iconset/email.png | Bin 0 -> 511 bytes .../assets/images/iconset/layout_join.png | Bin 0 -> 283 bytes .../assets/images/iconset/layout_split.png | Bin 0 -> 269 bytes .../assets/images/iconset/link_break.png | Bin 0 -> 508 bytes .../assets/images/iconset/pencil.png | Bin 0 -> 631 bytes .../assets/images/iconset/photo.png | Bin 0 -> 576 bytes .../assets/images/iconset/star.png | Bin 0 -> 677 bytes .../assets/images/iconset/star_ia.png | Bin 0 -> 619 bytes .../assets/images/tableshort-down.jpg | Bin 0 -> 453 bytes .../assets/images/tableshort-up.jpg | Bin 0 -> 473 bytes .../components/com_project/assets/js/ajax.js | 16 + .../com_project/assets/js/jquery-ui.js | 3716 +++ .../com_project/assets/js/jquery.js | 9789 ++++++++ .../components/com_project/assets/js/main.js | 106 + .../components/com_project/controller.php | 18 + .../com_project/helpers/IconHelper.class.php | 73 + .../com_project/helpers/MySqlHelper.class.php | 212 + .../com_project/helpers/TableHelper.class.php | 713 + .../components/com_project/index.html | 1 + .../components/com_project/models/edit.php | 335 + .../components/com_project/models/project.php | 29 + .../com_project/models/projects.php | 7 + .../com_project/models/typeedit.php | 69 + .../components/com_project/project.php | 7 + .../components/com_project/project.xml | 62 + .../com_project/views/edit/index.html | 1 + .../com_project/views/edit/tmpl/default.php | 224 + .../com_project/views/edit/tmpl/index.html | 1 + .../com_project/views/edit/view.html.php | 73 + .../com_project/views/project/index.html | 1 + .../views/project/tmpl/default.php | 9 + .../views/project/tmpl/default.xml | 8 + .../com_project/views/project/tmpl/index.html | 1 + .../com_project/views/project/view.html.php | 29 + .../com_project/views/projects/index.html | 1 + .../views/projects/tmpl/default.php | 43 + .../views/projects/tmpl/index.html | 1 + .../com_project/views/projects/view.html.php | 27 + .../com_project/views/typeedit/index.html | 1 + .../views/typeedit/tmpl/default.php | 38 + .../views/typeedit/tmpl/index.html | 1 + .../com_project/views/typeedit/view.html.php | 49 + .../com_project/views/types/index.html | 1 + .../com_project/views/types/tmpl/default.php | 43 + .../com_project/views/types/tmpl/index.html | 1 + .../com_project/views/types/view.html.php | 28 + .../ajax/AjaxCategoriesController.class.php | 105 + .../ajax/AjaxCheckboxController.class.php | 107 + .../ajax/AjaxFamiliesController.class.php | 131 + .../ajax/AjaxGroupsController.class.php | 61 + .../ajax/AjaxManufacturesController.class.php | 129 + .../ajax/AjaxProductsController.class.php | 226 + .../ajax/AjaxSelectController.class.php | 82 + .../ajax/AjaxShowroomController.class.php | 48 + .../assets/ajax/AjaxTypesController.class.php | 97 + .../ajax/AjaxVersionsController.class.php | 43 + .../assets/ajax/BaseController.class.php | 28 + .../com_showroom/assets/ajax/download.php | 13 + .../com_showroom/assets/css/style.css | 83 + .../com_showroom/assets/css/style2.css | 92 + .../assets/images/environment.png | Bin 0 -> 2298 bytes .../assets/images/iconset/accept.png | Bin 0 -> 643 bytes .../assets/images/iconset/add.png | Bin 0 -> 331 bytes .../assets/images/iconset/arrow_undo.png | Bin 0 -> 731 bytes .../assets/images/iconset/cross.png | Bin 0 -> 764 bytes .../assets/images/iconset/delete.png | Bin 0 -> 957 bytes .../assets/images/iconset/email.png | Bin 0 -> 512 bytes .../assets/images/iconset/layout_join.png | Bin 0 -> 284 bytes .../assets/images/iconset/layout_split.png | Bin 0 -> 270 bytes .../assets/images/iconset/link_break.png | Bin 0 -> 509 bytes .../assets/images/iconset/pencil.png | Bin 0 -> 632 bytes .../assets/images/iconset/photo.png | Bin 0 -> 578 bytes .../com_showroom/assets/images/ifc.png | Bin 0 -> 2117 bytes .../com_showroom/assets/images/matdata.png | Bin 0 -> 1942 bytes .../com_showroom/assets/images/oli.png | Bin 0 -> 1357 bytes .../com_showroom/assets/images/pdf.png | Bin 0 -> 1766 bytes .../assets/images/tableshort-down.jpg | Bin 0 -> 453 bytes .../assets/images/tableshort-up.jpg | Bin 0 -> 473 bytes .../com_showroom/assets/images/unknown.png | Bin 0 -> 1401 bytes .../components/com_showroom/assets/js/ajax.js | 16 + .../components/com_showroom/assets/js/main.js | 106 + .../components/com_showroom/controller.php | 31 + .../com_showroom/helpers/IconHelper.class.php | 70 + .../helpers/MySqlHelper.class.php | 212 + .../helpers/TableHelper.class.php | 773 + .../components/com_showroom/index.html | 1 + .../language/en-GB.com_showroom.ini | 66 + .../language/hu-HU.com_showroom.ini | 66 + .../com_showroom/models/categories.php | 42 + .../com_showroom/models/categoryedit.php | 109 + .../com_showroom/models/families.php | 32 + .../com_showroom/models/familyedit.php | 70 + .../com_showroom/models/groupedit.php | 59 + .../components/com_showroom/models/groups.php | 7 + .../com_showroom/models/manufactureedit.php | 70 + .../com_showroom/models/manufactures.php | 19 + .../com_showroom/models/productedit.php | 229 + .../com_showroom/models/products.php | 88 + .../com_showroom/models/showroom.php | 9 + .../com_showroom/models/typeedit.php | 59 + .../components/com_showroom/models/types.php | 7 + .../com_showroom/models/versionedit.php | 59 + .../com_showroom/models/versions.php | 7 + .../components/com_showroom/showroom.php | 9 + .../components/com_showroom/showroom.xml | 49 + .../com_showroom/views/categories/index.html | 1 + .../views/categories/tmpl/default.php | 88 + .../views/categories/tmpl/index.html | 1 + .../views/categories/view.html.php | 31 + .../views/categoryedit/index.html | 1 + .../views/categoryedit/tmpl/default.php | 67 + .../views/categoryedit/tmpl/index.html | 1 + .../views/categoryedit/view.html.php | 63 + .../com_showroom/views/families/index.html | 1 + .../views/families/tmpl/default.php | 89 + .../views/families/tmpl/index.html | 1 + .../com_showroom/views/families/view.html.php | 29 + .../com_showroom/views/familyedit/index.html | 1 + .../views/familyedit/tmpl/default.php | 76 + .../views/familyedit/tmpl/index.html | 1 + .../views/familyedit/view.html.php | 78 + .../com_showroom/views/groupedit/index.html | 1 + .../views/groupedit/tmpl/default.php | 55 + .../views/groupedit/tmpl/index.html | 1 + .../views/groupedit/view.html.php | 51 + .../com_showroom/views/groups/index.html | 1 + .../views/groups/tmpl/default.php | 15 + .../com_showroom/views/groups/tmpl/index.html | 1 + .../com_showroom/views/groups/view.html.php | 27 + .../components/com_showroom/views/index.html | 1 + .../views/manufactureedit/index.html | 1 + .../views/manufactureedit/tmpl/default.php | 88 + .../views/manufactureedit/tmpl/index.html | 1 + .../views/manufactureedit/view.html.php | 69 + .../views/manufactures/index.html | 1 + .../views/manufactures/tmpl/default.php | 71 + .../views/manufactures/tmpl/index.html | 1 + .../views/manufactures/view.html.php | 28 + .../com_showroom/views/productedit/index.html | 1 + .../views/productedit/tmpl/default.php | 198 + .../views/productedit/tmpl/index.html | 1 + .../views/productedit/view.html.php | 110 + .../com_showroom/views/products/index.html | 1 + .../views/products/tmpl/default.php | 239 + .../views/products/tmpl/index.html | 1 + .../com_showroom/views/products/view.html.php | 31 + .../com_showroom/views/showroom/index.html | 1 + .../views/showroom/tmpl/default.php | 31 + .../views/showroom/tmpl/default.xml | 8 + .../views/showroom/tmpl/index.html | 1 + .../com_showroom/views/showroom/view.html.php | 26 + .../com_showroom/views/typeedit/index.html | 1 + .../views/typeedit/tmpl/default.php | 74 + .../views/typeedit/tmpl/index.html | 1 + .../com_showroom/views/typeedit/view.html.php | 63 + .../com_showroom/views/types/index.html | 1 + .../com_showroom/views/types/tmpl/default.php | 15 + .../com_showroom/views/types/tmpl/index.html | 1 + .../com_showroom/views/types/view.html.php | 27 + .../com_showroom/views/versionedit/index.html | 1 + .../views/versionedit/tmpl/default.php | 37 + .../views/versionedit/tmpl/index.html | 1 + .../views/versionedit/view.html.php | 48 + .../com_showroom/views/versions/index.html | 1 + .../views/versions/tmpl/default.php | 15 + .../views/versions/tmpl/index.html | 1 + .../com_showroom/views/versions/view.html.php | 27 + .../components/com_tcexam/tcexam.xml | 28 + .../ajax/AjaxVersionsController.class.php | 100 + .../assets/ajax/BaseController.class.php | 22 + .../com_versions/assets/css/style.css | 84 + .../assets/images/iconset/accept.png | Bin 0 -> 642 bytes .../assets/images/iconset/add.png | Bin 0 -> 330 bytes .../assets/images/iconset/arrow_undo.png | Bin 0 -> 730 bytes .../assets/images/iconset/cross.png | Bin 0 -> 763 bytes .../assets/images/iconset/delete.png | Bin 0 -> 956 bytes .../assets/images/iconset/email.png | Bin 0 -> 511 bytes .../assets/images/iconset/layout_join.png | Bin 0 -> 283 bytes .../assets/images/iconset/layout_split.png | Bin 0 -> 269 bytes .../assets/images/iconset/link_break.png | Bin 0 -> 508 bytes .../assets/images/iconset/pencil.png | Bin 0 -> 631 bytes .../assets/images/iconset/photo.png | Bin 0 -> 576 bytes .../assets/images/tableshort-down.jpg | Bin 0 -> 453 bytes .../assets/images/tableshort-up.jpg | Bin 0 -> 473 bytes .../components/com_versions/assets/js/ajax.js | 16 + .../components/com_versions/assets/js/main.js | 106 + .../components/com_versions/controller.php | 14 + .../com_versions/helpers/IconHelper.class.php | 67 + .../helpers/MySqlHelper.class.php | 212 + .../helpers/TableHelper.class.php | 719 + .../components/com_versions/index.html | 1 + .../components/com_versions/models/edit.php | 74 + .../components/com_versions/models/list.php | 16 + .../com_versions/models/versions.php | 29 + .../components/com_versions/versions.php | 7 + .../components/com_versions/versions.xml | 44 + .../com_versions/views/edit/index.html | 1 + .../com_versions/views/edit/tmpl/default.php | 194 + .../com_versions/views/edit/tmpl/index.html | 1 + .../com_versions/views/edit/view.html.php | 68 + .../com_versions/views/list/index.html | 1 + .../com_versions/views/list/tmpl/default.php | 58 + .../com_versions/views/list/tmpl/index.html | 1 + .../com_versions/views/list/view.html.php | 28 + .../com_versions/views/versions/index.html | 1 + .../views/versions/tmpl/default.php | 9 + .../views/versions/tmpl/default.xml | 8 + .../views/versions/tmpl/index.html | 1 + .../com_versions/views/versions/view.html.php | 28 + .../com_nonprofit/assets/js/clipboard.min.js | 7 + .../components/com_nonprofit/controller.php | 8 + .../components/com_nonprofit/index.html | 1 + .../com_nonprofit/models/nonprofit.php | 413 + .../components/com_nonprofit/nonprofit.php | 11 + .../components/com_nonprofit/router.php | 37 + .../components/com_nonprofit/views/index.html | 1 + .../com_nonprofit/views/nonprofit/index.html | 1 + .../views/nonprofit/tmpl/default.php | 167 + .../views/nonprofit/tmpl/default.xml | 8 + .../views/nonprofit/tmpl/index.html | 1 + .../views/nonprofit/view.html.php | 148 + .../com_presentation/assets/css/style.css | 25 + .../assets/js/additional-methods.js | 998 + .../assets/js/additional-methods.min.js | 4 + .../assets/js/jquery.validate.js | 1398 ++ .../assets/js/jquery.validate.min.js | 4 + .../assets/js/localization/messages_en.js | 32 + .../assets/js/localization/messages_hu.js | 32 + .../com_presentation/controller.php | 10 + .../components/com_presentation/index.html | 1 + .../com_presentation/models/presentation.php | 173 + .../com_presentation/presentation.php | 9 + .../com_presentation/views/index.html | 1 + .../views/presentation/index.html | 1 + .../views/presentation/tmpl/default.php | 212 + .../views/presentation/tmpl/index.html | 1 + .../views/presentation/view.html.php | 73 + .../ajax/AjaxDownloadController.class.php | 32 + .../assets/ajax/BaseController.class.php | 26 + .../com_project/assets/css/img/b16.png | Bin 0 -> 1887 bytes .../com_project/assets/css/jssor.css | 24 + .../com_project/assets/css/style.css | 246 + .../com_project/assets/images/noimage.png | Bin 0 -> 30081 bytes .../com_project/assets/js/jquery-ui.min.js | 13 + .../com_project/assets/js/jquery.js | 9789 ++++++++ .../assets/js/jssor.slider.mini.js | 2 + .../components/com_project/controller.php | 9 + .../components/com_project/index.html | 1 + .../com_project/models/category.php | 195 + .../components/com_project/models/detail.php | 139 + .../components/com_project/models/project.php | 158 + .../components/com_project/project.php | 10 + .../com_project/views/category/index.html | 1 + .../views/category/tmpl/default.php | 89 + .../views/category/tmpl/index.html | 1 + .../com_project/views/category/view.html.php | 70 + .../com_project/views/detail/index.html | 1 + .../com_project/views/detail/tmpl/default.php | 232 + .../com_project/views/detail/tmpl/index.html | 1 + .../com_project/views/detail/view.html.php | 42 + .../com_project/views/project/index.html | 1 + .../views/project/tmpl/default.php | 86 + .../com_project/views/project/tmpl/index.html | 1 + .../com_project/views/project/view.html.php | 48 + .../ajax/AjaxDownloadController.class.php | 31 + .../assets/ajax/BaseController.class.php | 26 + .../com_showroom/assets/css/kalypto.css | 25 + .../com_showroom/assets/css/showroom.css | 756 + .../assets/css/smoothTouchScroll.css | 117 + .../com_showroom/assets/images/arrow_left.gif | Bin 0 -> 1420 bytes .../assets/images/arrow_left_1.png | Bin 0 -> 234 bytes .../assets/images/arrow_left_2.png | Bin 0 -> 265 bytes .../assets/images/arrow_right.gif | Bin 0 -> 1428 bytes .../assets/images/arrow_right_1.png | Bin 0 -> 241 bytes .../assets/images/arrow_right_2.png | Bin 0 -> 255 bytes .../com_showroom/assets/images/back.png | Bin 0 -> 499 bytes .../com_showroom/assets/images/back_1.png | Bin 0 -> 436 bytes .../com_showroom/assets/images/back_2.png | Bin 0 -> 530 bytes .../assets/images/big_transparent.gif | Bin 0 -> 1661 bytes .../com_showroom/assets/images/checkbox.png | Bin 0 -> 1124 bytes .../images/cursors/cursor_arrow_left.cur | Bin 0 -> 4286 bytes .../images/cursors/cursor_arrow_left.png | Bin 0 -> 215 bytes .../images/cursors/cursor_arrow_right.cur | Bin 0 -> 4286 bytes .../images/cursors/cursor_arrow_right.png | Bin 0 -> 194 bytes .../com_showroom/assets/images/diver_03.png | Bin 0 -> 2321 bytes .../assets/images/environment.png | Bin 0 -> 2299 bytes .../assets/images/icon-download-16.png | Bin 0 -> 558 bytes .../assets/images/icon-download-32.png | Bin 0 -> 1110 bytes .../assets/images/icon-download-48.png | Bin 0 -> 1531 bytes .../assets/images/icon-download-64.png | Bin 0 -> 2241 bytes .../assets/images/icon-download.png | Bin 0 -> 1048 bytes .../com_showroom/assets/images/ifc.png | Bin 0 -> 2118 bytes .../com_showroom/assets/images/matdata.png | Bin 0 -> 1943 bytes .../com_showroom/assets/images/oli.png | Bin 0 -> 1358 bytes .../com_showroom/assets/images/pdf.png | Bin 0 -> 1768 bytes .../com_showroom/assets/images/radio.png | Bin 0 -> 1130 bytes .../com_showroom/assets/images/refresh.png | Bin 0 -> 503 bytes .../assets/images/searchbutton.png | Bin 0 -> 927 bytes .../assets/images/sticker_down.png | Bin 0 -> 235 bytes .../assets/images/sticker_down_active.png | Bin 0 -> 216 bytes .../com_showroom/assets/images/sticker_up.png | Bin 0 -> 626 bytes .../assets/images/sticker_up_1.png | Bin 0 -> 626 bytes .../assets/images/sticker_up_2.png | Bin 0 -> 625 bytes .../assets/images/sticker_up_3.png | Bin 0 -> 637 bytes .../assets/images/triangle-down.png | Bin 0 -> 341 bytes .../assets/images/triangle-right.png | Bin 0 -> 326 bytes .../com_showroom/assets/images/unknown.png | Bin 0 -> 1402 bytes .../assets/js/jquery-1.10.2.min.js | 6 + .../assets/js/jquery-1.11.1.min.js | 4 + .../assets/js/jquery-ui-1.10.3.custom.min.js | 6 + .../assets/js/jquery-ui-1.11.2.custom.min.js | 6 + .../assets/js/jquery.kinetic-1.8.2.min.js | 3 + .../assets/js/jquery.kinetic-2.0.4.min.js | 3 + .../assets/js/jquery.mousewheel-3.1.12.min.js | 8 + .../assets/js/jquery.mousewheel-3.1.4.min.js | 8 + .../js/jquery.smoothDivScroll-1.3.min.js | 10 + .../com_showroom/assets/js/kalypto.js | 114 + .../com_showroom/assets/js/kalypto.min.js | 2 + .../js/source/jquery-ui-1.10.3.custom.js | 516 + .../assets/js/source/jquery.kinetic.js | 420 + .../js/source/jquery.smoothDivScroll-1.3.js | 1366 ++ .../components/com_showroom/controller.php | 13 + .../components/com_showroom/index.html | 1 + .../language/en-GB.com_showroom.ini | 56 + .../language/hu-HU.com_showroom.ini | 56 + .../com_showroom/models/controller.php | 17 + .../components/com_showroom/models/family.php | 386 + .../com_showroom/models/product.php | 374 + .../components/com_showroom/models/search.php | 395 + .../com_showroom/models/search2.php | 267 + .../com_showroom/models/showroom.php | 200 + .../com_showroom/models/showroom2.php | 196 + .../components/com_showroom/models/upload.php | 229 + .../com_showroom/models/uploadgroup.php | 304 + .../com_showroom/models/uploadgroup.php.old | 252 + .../components/com_showroom/router.php | 40 + .../components/com_showroom/showroom.php | 15 + .../com_showroom/views/family/index.html | 1 + .../views/family/tmpl/default.php | 131 + .../views/family/tmpl/default.xml | 16 + .../com_showroom/views/family/tmpl/index.html | 1 + .../com_showroom/views/family/view.html.php | 114 + .../components/com_showroom/views/index.html | 1 + .../com_showroom/views/product/index.html | 1 + .../views/product/tmpl/default.php | 228 + .../views/product/tmpl/default.xml | 16 + .../views/product/tmpl/index.html | 1 + .../com_showroom/views/product/view.html.php | 147 + .../com_showroom/views/search/index.html | 1 + .../views/search/tmpl/default.php | 336 + .../views/search/tmpl/default.xml | 16 + .../com_showroom/views/search/tmpl/index.html | 1 + .../com_showroom/views/search/view.html.php | 124 + .../com_showroom/views/search2/index.html | 1 + .../views/search2/tmpl/default.php | 308 + .../views/search2/tmpl/default.xml | 16 + .../views/search2/tmpl/index.html | 1 + .../com_showroom/views/search2/view.html.php | 106 + .../com_showroom/views/showroom/index.html | 1 + .../views/showroom/tmpl/default.php | 230 + .../views/showroom/tmpl/default.xml | 16 + .../views/showroom/tmpl/index.html | 1 + .../com_showroom/views/showroom/view.html.php | 89 + .../com_showroom/views/showroom2/index.html | 1 + .../views/showroom2/tmpl/default.php | 211 + .../views/showroom2/tmpl/default.xml | 16 + .../views/showroom2/tmpl/index.html | 1 + .../views/showroom2/view.html.php | 70 + .../com_showroom/views/upload/index.html | 1 + .../views/upload/tmpl/default.php | 233 + .../views/upload/tmpl/default.xml | 16 + .../com_showroom/views/upload/tmpl/index.html | 1 + .../com_showroom/views/upload/view.html.php | 255 + .../com_showroom/views/uploadgroup/index.html | 1 + .../views/uploadgroup/tmpl/default.php | 34 + .../views/uploadgroup/tmpl/default.php.old | 154 + .../views/uploadgroup/tmpl/default.xml | 16 + .../views/uploadgroup/tmpl/index.html | 1 + .../views/uploadgroup/view.html.php | 272 + .../views/uploadgroup/view.html.php.old | 243 + .../components/com_tcexam/controller.php | 9 + .../components/com_tcexam/default.php | 1108 + .../components/com_tcexam/index.html | 1 + .../components/com_tcexam/models/tcexam.php | 301 + .../components/com_tcexam/tcexam.php | 10 + .../components/com_tcexam/views/index.html | 1 + .../com_tcexam/views/tcexam/index.html | 1 + .../com_tcexam/views/tcexam/tmpl/default.php | 76 + .../com_tcexam/views/tcexam/tmpl/default.xml | 8 + .../com_tcexam/views/tcexam/tmpl/index.html | 1 + .../com_tcexam/views/tcexam/view.html.php | 31 + 627 files changed, 79419 insertions(+) create mode 100644 cadline/components/administrator/components/com_albanner/access.xml create mode 100644 cadline/components/administrator/components/com_albanner/albanner.php create mode 100644 cadline/components/administrator/components/com_albanner/albanner.xml create mode 100644 cadline/components/administrator/components/com_albanner/assets/ajax/AjaxBannerController.class.php create mode 100644 cadline/components/administrator/components/com_albanner/assets/ajax/BaseController.class.php create mode 100644 cadline/components/administrator/components/com_albanner/assets/css/index.html create mode 100644 cadline/components/administrator/components/com_albanner/assets/css/style.css create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/accept.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/add.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/arrow_undo.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/cross.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/delete.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/email.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/layout_join.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/layout_split.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/link_break.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/pencil.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/iconset/photo.png create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/index.html create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/tableshort-down.jpg create mode 100644 cadline/components/administrator/components/com_albanner/assets/images/tableshort-up.jpg create mode 100644 cadline/components/administrator/components/com_albanner/assets/index.html create mode 100644 cadline/components/administrator/components/com_albanner/assets/js/ajax.js create mode 100644 cadline/components/administrator/components/com_albanner/assets/js/main.js create mode 100644 cadline/components/administrator/components/com_albanner/controller.php create mode 100644 cadline/components/administrator/components/com_albanner/controllers/index.html create mode 100644 cadline/components/administrator/components/com_albanner/helpers/IconHelper.class.php create mode 100644 cadline/components/administrator/components/com_albanner/helpers/MySqlHelper.class.php create mode 100644 cadline/components/administrator/components/com_albanner/helpers/TableHelper.class.php create mode 100644 cadline/components/administrator/components/com_albanner/helpers/albanner.php create mode 100644 cadline/components/administrator/components/com_albanner/helpers/index.html create mode 100644 cadline/components/administrator/components/com_albanner/index.html create mode 100644 cadline/components/administrator/components/com_albanner/models/banners.php create mode 100644 cadline/components/administrator/components/com_albanner/models/edit.php create mode 100644 cadline/components/administrator/components/com_albanner/models/index.html create mode 100644 cadline/components/administrator/components/com_albanner/models/list.php create mode 100644 cadline/components/administrator/components/com_albanner/models/test.php create mode 100644 cadline/components/administrator/components/com_albanner/sql/index.html create mode 100644 cadline/components/administrator/components/com_albanner/sql/install.mysql.utf8.sql create mode 100644 cadline/components/administrator/components/com_albanner/sql/uninstall.mysql.utf8.sql create mode 100644 cadline/components/administrator/components/com_albanner/sql/update.mysql.utf8.sql create mode 100644 cadline/components/administrator/components/com_albanner/views/banners/index.html create mode 100644 cadline/components/administrator/components/com_albanner/views/banners/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_albanner/views/banners/tmpl/default.xml create mode 100644 cadline/components/administrator/components/com_albanner/views/banners/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_albanner/views/banners/view.html.php create mode 100644 cadline/components/administrator/components/com_albanner/views/edit/index.html create mode 100644 cadline/components/administrator/components/com_albanner/views/edit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_albanner/views/edit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_albanner/views/edit/view.html.php create mode 100644 cadline/components/administrator/components/com_albanner/views/index.html create mode 100644 cadline/components/administrator/components/com_albanner/views/list/index.html create mode 100644 cadline/components/administrator/components/com_albanner/views/list/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_albanner/views/list/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_albanner/views/list/view.html.php create mode 100644 cadline/components/administrator/components/com_albanner/views/test/index.html create mode 100644 cadline/components/administrator/components/com_albanner/views/test/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_albanner/views/test/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_albanner/views/test/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/access.xml create mode 100644 cadline/components/administrator/components/com_alworkshops/alworkshops.php create mode 100644 cadline/components/administrator/components/com_alworkshops/alworkshops.xml create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxApplicationController.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxCourseController.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxEducationController.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxOnlineSessionController.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxSessionController.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxSwitchController.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/ajax/BaseController.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/css/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/css/jquery-ui.css create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/css/style.css create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/environment.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/accept.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/add.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/arrow_undo.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/cross.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/delete.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/email.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/layout_join.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/layout_split.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/link_break.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/pencil.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/iconset/photo.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/ifc.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/l_com_alworkshops.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/matdata.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/oli.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/pdf.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/s_com_alworkshops.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/tableshort-down.jpg create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/tableshort-up.jpg create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/images/unknown.png create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/js/ajax.js create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/js/jquery-ui.js create mode 100644 cadline/components/administrator/components/com_alworkshops/assets/js/main.js create mode 100644 cadline/components/administrator/components/com_alworkshops/config.xml create mode 100644 cadline/components/administrator/components/com_alworkshops/controller.php create mode 100644 cadline/components/administrator/components/com_alworkshops/helpers/IconHelper.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/helpers/MySqlHelper.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/helpers/TableHelper.class.php create mode 100644 cadline/components/administrator/components/com_alworkshops/helpers/alworkshops.php create mode 100644 cadline/components/administrator/components/com_alworkshops/helpers/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/models/application.php create mode 100644 cadline/components/administrator/components/com_alworkshops/models/applicationedit.php create mode 100644 cadline/components/administrator/components/com_alworkshops/models/course.php create mode 100644 cadline/components/administrator/components/com_alworkshops/models/courseedit.php create mode 100644 cadline/components/administrator/components/com_alworkshops/models/educationedit.php create mode 100644 cadline/components/administrator/components/com_alworkshops/models/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/models/onlinesessionedit.php create mode 100644 cadline/components/administrator/components/com_alworkshops/models/session.php create mode 100644 cadline/components/administrator/components/com_alworkshops/models/sessionedit.php create mode 100644 cadline/components/administrator/components/com_alworkshops/models/switch.php create mode 100644 cadline/components/administrator/components/com_alworkshops/models/switchedit.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/alworkshops/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/alworkshops/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/alworkshops/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/alworkshops/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/application/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/application/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/application/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/application/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/applicationedit/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/applicationedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/applicationedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/applicationedit/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/course/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/course/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/course/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/course/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/courseedit/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/courseedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/courseedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/courseedit/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/education/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/education/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/education/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/education/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/educationedit/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/educationedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/educationedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/educationedit/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/onlinesession/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/onlinesession/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/onlinesession/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/onlinesession/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/onlinesessionedit/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/onlinesessionedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/onlinesessionedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/onlinesessionedit/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/session/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/session/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/session/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/session/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/sessionedit/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/sessionedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/sessionedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/sessionedit/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/switch/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/switch/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/switch/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/switch/view.html.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/switchedit/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/switchedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_alworkshops/views/switchedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_alworkshops/views/switchedit/view.html.php create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/ajax/AjaxFollowedlinksController.class.php create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/ajax/BaseController.class.php create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/css/style.css create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/accept.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/add.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/arrow_undo.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/cross.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/delete.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/email.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/layout_join.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/layout_split.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/link_break.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/pencil.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/iconset/photo.png create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/tableshort-down.jpg create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/images/tableshort-up.jpg create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/js/ajax.js create mode 100644 cadline/components/administrator/components/com_followedlinks/assets/js/main.js create mode 100644 cadline/components/administrator/components/com_followedlinks/controller.php create mode 100644 cadline/components/administrator/components/com_followedlinks/followedlinks.php create mode 100644 cadline/components/administrator/components/com_followedlinks/followedlinks.xml create mode 100644 cadline/components/administrator/components/com_followedlinks/helpers/IconHelper.class.php create mode 100644 cadline/components/administrator/components/com_followedlinks/helpers/MySqlHelper.class.php create mode 100644 cadline/components/administrator/components/com_followedlinks/helpers/TableHelper.class.php create mode 100644 cadline/components/administrator/components/com_followedlinks/index.html create mode 100644 cadline/components/administrator/components/com_followedlinks/models/followedlinks.php create mode 100644 cadline/components/administrator/components/com_followedlinks/models/linkedit.php create mode 100644 cadline/components/administrator/components/com_followedlinks/models/links.php create mode 100644 cadline/components/administrator/components/com_followedlinks/views/followedlinks/index.html create mode 100644 cadline/components/administrator/components/com_followedlinks/views/followedlinks/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_followedlinks/views/followedlinks/tmpl/default.xml create mode 100644 cadline/components/administrator/components/com_followedlinks/views/followedlinks/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_followedlinks/views/followedlinks/view.html.php create mode 100644 cadline/components/administrator/components/com_followedlinks/views/linkedit/index.html create mode 100644 cadline/components/administrator/components/com_followedlinks/views/linkedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_followedlinks/views/linkedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_followedlinks/views/linkedit/view.html.php create mode 100644 cadline/components/administrator/components/com_followedlinks/views/links/index.html create mode 100644 cadline/components/administrator/components/com_followedlinks/views/links/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_followedlinks/views/links/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_followedlinks/views/links/view.html.php create mode 100644 cadline/components/administrator/components/com_nonprofit/nonprofit.xml create mode 100644 cadline/components/administrator/components/com_presentation/presentation.xml create mode 100644 cadline/components/administrator/components/com_project/assets/ajax/AjaxProjectsController.class.php create mode 100644 cadline/components/administrator/components/com_project/assets/ajax/AjaxTypesController.class.php create mode 100644 cadline/components/administrator/components/com_project/assets/ajax/BaseController.class.php create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-icons_222222_256x240.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-icons_2e83ff_256x240.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-icons_454545_256x240.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-icons_888888_256x240.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/images/ui-icons_cd0a0a_256x240.png create mode 100644 cadline/components/administrator/components/com_project/assets/css/jquery-ui.css create mode 100644 cadline/components/administrator/components/com_project/assets/css/style.css create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/accept.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/add.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/arrow_undo.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/cross.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/delete.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/email.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/layout_join.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/layout_split.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/link_break.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/pencil.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/photo.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/star.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/iconset/star_ia.png create mode 100644 cadline/components/administrator/components/com_project/assets/images/tableshort-down.jpg create mode 100644 cadline/components/administrator/components/com_project/assets/images/tableshort-up.jpg create mode 100644 cadline/components/administrator/components/com_project/assets/js/ajax.js create mode 100644 cadline/components/administrator/components/com_project/assets/js/jquery-ui.js create mode 100644 cadline/components/administrator/components/com_project/assets/js/jquery.js create mode 100644 cadline/components/administrator/components/com_project/assets/js/main.js create mode 100644 cadline/components/administrator/components/com_project/controller.php create mode 100644 cadline/components/administrator/components/com_project/helpers/IconHelper.class.php create mode 100644 cadline/components/administrator/components/com_project/helpers/MySqlHelper.class.php create mode 100644 cadline/components/administrator/components/com_project/helpers/TableHelper.class.php create mode 100644 cadline/components/administrator/components/com_project/index.html create mode 100644 cadline/components/administrator/components/com_project/models/edit.php create mode 100644 cadline/components/administrator/components/com_project/models/project.php create mode 100644 cadline/components/administrator/components/com_project/models/projects.php create mode 100644 cadline/components/administrator/components/com_project/models/typeedit.php create mode 100644 cadline/components/administrator/components/com_project/project.php create mode 100644 cadline/components/administrator/components/com_project/project.xml create mode 100644 cadline/components/administrator/components/com_project/views/edit/index.html create mode 100644 cadline/components/administrator/components/com_project/views/edit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_project/views/edit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_project/views/edit/view.html.php create mode 100644 cadline/components/administrator/components/com_project/views/project/index.html create mode 100644 cadline/components/administrator/components/com_project/views/project/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_project/views/project/tmpl/default.xml create mode 100644 cadline/components/administrator/components/com_project/views/project/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_project/views/project/view.html.php create mode 100644 cadline/components/administrator/components/com_project/views/projects/index.html create mode 100644 cadline/components/administrator/components/com_project/views/projects/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_project/views/projects/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_project/views/projects/view.html.php create mode 100644 cadline/components/administrator/components/com_project/views/typeedit/index.html create mode 100644 cadline/components/administrator/components/com_project/views/typeedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_project/views/typeedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_project/views/typeedit/view.html.php create mode 100644 cadline/components/administrator/components/com_project/views/types/index.html create mode 100644 cadline/components/administrator/components/com_project/views/types/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_project/views/types/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_project/views/types/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxCategoriesController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxCheckboxController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxFamiliesController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxGroupsController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxManufacturesController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxProductsController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxSelectController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxShowroomController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxTypesController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/AjaxVersionsController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/BaseController.class.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/ajax/download.php create mode 100644 cadline/components/administrator/components/com_showroom/assets/css/style.css create mode 100644 cadline/components/administrator/components/com_showroom/assets/css/style2.css create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/environment.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/accept.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/add.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/arrow_undo.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/cross.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/delete.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/email.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/layout_join.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/layout_split.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/link_break.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/pencil.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/iconset/photo.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/ifc.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/matdata.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/oli.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/pdf.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/tableshort-down.jpg create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/tableshort-up.jpg create mode 100644 cadline/components/administrator/components/com_showroom/assets/images/unknown.png create mode 100644 cadline/components/administrator/components/com_showroom/assets/js/ajax.js create mode 100644 cadline/components/administrator/components/com_showroom/assets/js/main.js create mode 100644 cadline/components/administrator/components/com_showroom/controller.php create mode 100644 cadline/components/administrator/components/com_showroom/helpers/IconHelper.class.php create mode 100644 cadline/components/administrator/components/com_showroom/helpers/MySqlHelper.class.php create mode 100644 cadline/components/administrator/components/com_showroom/helpers/TableHelper.class.php create mode 100644 cadline/components/administrator/components/com_showroom/index.html create mode 100644 cadline/components/administrator/components/com_showroom/language/en-GB.com_showroom.ini create mode 100644 cadline/components/administrator/components/com_showroom/language/hu-HU.com_showroom.ini create mode 100644 cadline/components/administrator/components/com_showroom/models/categories.php create mode 100644 cadline/components/administrator/components/com_showroom/models/categoryedit.php create mode 100644 cadline/components/administrator/components/com_showroom/models/families.php create mode 100644 cadline/components/administrator/components/com_showroom/models/familyedit.php create mode 100644 cadline/components/administrator/components/com_showroom/models/groupedit.php create mode 100644 cadline/components/administrator/components/com_showroom/models/groups.php create mode 100644 cadline/components/administrator/components/com_showroom/models/manufactureedit.php create mode 100644 cadline/components/administrator/components/com_showroom/models/manufactures.php create mode 100644 cadline/components/administrator/components/com_showroom/models/productedit.php create mode 100644 cadline/components/administrator/components/com_showroom/models/products.php create mode 100644 cadline/components/administrator/components/com_showroom/models/showroom.php create mode 100644 cadline/components/administrator/components/com_showroom/models/typeedit.php create mode 100644 cadline/components/administrator/components/com_showroom/models/types.php create mode 100644 cadline/components/administrator/components/com_showroom/models/versionedit.php create mode 100644 cadline/components/administrator/components/com_showroom/models/versions.php create mode 100644 cadline/components/administrator/components/com_showroom/showroom.php create mode 100644 cadline/components/administrator/components/com_showroom/showroom.xml create mode 100644 cadline/components/administrator/components/com_showroom/views/categories/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/categories/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/categories/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/categories/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/categoryedit/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/categoryedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/categoryedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/categoryedit/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/families/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/families/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/families/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/families/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/familyedit/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/familyedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/familyedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/familyedit/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/groupedit/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/groupedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/groupedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/groupedit/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/groups/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/groups/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/groups/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/groups/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/manufactureedit/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/manufactureedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/manufactureedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/manufactureedit/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/manufactures/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/manufactures/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/manufactures/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/manufactures/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/productedit/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/productedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/productedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/productedit/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/products/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/products/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/products/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/products/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/showroom/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/showroom/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/showroom/tmpl/default.xml create mode 100644 cadline/components/administrator/components/com_showroom/views/showroom/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/showroom/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/typeedit/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/typeedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/typeedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/typeedit/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/types/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/types/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/types/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/types/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/versionedit/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/versionedit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/versionedit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/versionedit/view.html.php create mode 100644 cadline/components/administrator/components/com_showroom/views/versions/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/versions/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_showroom/views/versions/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_showroom/views/versions/view.html.php create mode 100644 cadline/components/administrator/components/com_tcexam/tcexam.xml create mode 100644 cadline/components/administrator/components/com_versions/assets/ajax/AjaxVersionsController.class.php create mode 100644 cadline/components/administrator/components/com_versions/assets/ajax/BaseController.class.php create mode 100644 cadline/components/administrator/components/com_versions/assets/css/style.css create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/accept.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/add.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/arrow_undo.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/cross.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/delete.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/email.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/layout_join.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/layout_split.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/link_break.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/pencil.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/iconset/photo.png create mode 100644 cadline/components/administrator/components/com_versions/assets/images/tableshort-down.jpg create mode 100644 cadline/components/administrator/components/com_versions/assets/images/tableshort-up.jpg create mode 100644 cadline/components/administrator/components/com_versions/assets/js/ajax.js create mode 100644 cadline/components/administrator/components/com_versions/assets/js/main.js create mode 100644 cadline/components/administrator/components/com_versions/controller.php create mode 100644 cadline/components/administrator/components/com_versions/helpers/IconHelper.class.php create mode 100644 cadline/components/administrator/components/com_versions/helpers/MySqlHelper.class.php create mode 100644 cadline/components/administrator/components/com_versions/helpers/TableHelper.class.php create mode 100644 cadline/components/administrator/components/com_versions/index.html create mode 100644 cadline/components/administrator/components/com_versions/models/edit.php create mode 100644 cadline/components/administrator/components/com_versions/models/list.php create mode 100644 cadline/components/administrator/components/com_versions/models/versions.php create mode 100644 cadline/components/administrator/components/com_versions/versions.php create mode 100644 cadline/components/administrator/components/com_versions/versions.xml create mode 100644 cadline/components/administrator/components/com_versions/views/edit/index.html create mode 100644 cadline/components/administrator/components/com_versions/views/edit/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_versions/views/edit/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_versions/views/edit/view.html.php create mode 100644 cadline/components/administrator/components/com_versions/views/list/index.html create mode 100644 cadline/components/administrator/components/com_versions/views/list/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_versions/views/list/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_versions/views/list/view.html.php create mode 100644 cadline/components/administrator/components/com_versions/views/versions/index.html create mode 100644 cadline/components/administrator/components/com_versions/views/versions/tmpl/default.php create mode 100644 cadline/components/administrator/components/com_versions/views/versions/tmpl/default.xml create mode 100644 cadline/components/administrator/components/com_versions/views/versions/tmpl/index.html create mode 100644 cadline/components/administrator/components/com_versions/views/versions/view.html.php create mode 100644 cadline/components/components/com_nonprofit/assets/js/clipboard.min.js create mode 100644 cadline/components/components/com_nonprofit/controller.php create mode 100644 cadline/components/components/com_nonprofit/index.html create mode 100644 cadline/components/components/com_nonprofit/models/nonprofit.php create mode 100644 cadline/components/components/com_nonprofit/nonprofit.php create mode 100644 cadline/components/components/com_nonprofit/router.php create mode 100644 cadline/components/components/com_nonprofit/views/index.html create mode 100644 cadline/components/components/com_nonprofit/views/nonprofit/index.html create mode 100644 cadline/components/components/com_nonprofit/views/nonprofit/tmpl/default.php create mode 100644 cadline/components/components/com_nonprofit/views/nonprofit/tmpl/default.xml create mode 100644 cadline/components/components/com_nonprofit/views/nonprofit/tmpl/index.html create mode 100644 cadline/components/components/com_nonprofit/views/nonprofit/view.html.php create mode 100644 cadline/components/components/com_presentation/assets/css/style.css create mode 100644 cadline/components/components/com_presentation/assets/js/additional-methods.js create mode 100644 cadline/components/components/com_presentation/assets/js/additional-methods.min.js create mode 100644 cadline/components/components/com_presentation/assets/js/jquery.validate.js create mode 100644 cadline/components/components/com_presentation/assets/js/jquery.validate.min.js create mode 100644 cadline/components/components/com_presentation/assets/js/localization/messages_en.js create mode 100644 cadline/components/components/com_presentation/assets/js/localization/messages_hu.js create mode 100644 cadline/components/components/com_presentation/controller.php create mode 100644 cadline/components/components/com_presentation/index.html create mode 100644 cadline/components/components/com_presentation/models/presentation.php create mode 100644 cadline/components/components/com_presentation/presentation.php create mode 100644 cadline/components/components/com_presentation/views/index.html create mode 100644 cadline/components/components/com_presentation/views/presentation/index.html create mode 100644 cadline/components/components/com_presentation/views/presentation/tmpl/default.php create mode 100644 cadline/components/components/com_presentation/views/presentation/tmpl/index.html create mode 100644 cadline/components/components/com_presentation/views/presentation/view.html.php create mode 100644 cadline/components/components/com_project/assets/ajax/AjaxDownloadController.class.php create mode 100644 cadline/components/components/com_project/assets/ajax/BaseController.class.php create mode 100644 cadline/components/components/com_project/assets/css/img/b16.png create mode 100644 cadline/components/components/com_project/assets/css/jssor.css create mode 100644 cadline/components/components/com_project/assets/css/style.css create mode 100644 cadline/components/components/com_project/assets/images/noimage.png create mode 100644 cadline/components/components/com_project/assets/js/jquery-ui.min.js create mode 100644 cadline/components/components/com_project/assets/js/jquery.js create mode 100644 cadline/components/components/com_project/assets/js/jssor.slider.mini.js create mode 100644 cadline/components/components/com_project/controller.php create mode 100644 cadline/components/components/com_project/index.html create mode 100644 cadline/components/components/com_project/models/category.php create mode 100644 cadline/components/components/com_project/models/detail.php create mode 100644 cadline/components/components/com_project/models/project.php create mode 100644 cadline/components/components/com_project/project.php create mode 100644 cadline/components/components/com_project/views/category/index.html create mode 100644 cadline/components/components/com_project/views/category/tmpl/default.php create mode 100644 cadline/components/components/com_project/views/category/tmpl/index.html create mode 100644 cadline/components/components/com_project/views/category/view.html.php create mode 100644 cadline/components/components/com_project/views/detail/index.html create mode 100644 cadline/components/components/com_project/views/detail/tmpl/default.php create mode 100644 cadline/components/components/com_project/views/detail/tmpl/index.html create mode 100644 cadline/components/components/com_project/views/detail/view.html.php create mode 100644 cadline/components/components/com_project/views/project/index.html create mode 100644 cadline/components/components/com_project/views/project/tmpl/default.php create mode 100644 cadline/components/components/com_project/views/project/tmpl/index.html create mode 100644 cadline/components/components/com_project/views/project/view.html.php create mode 100644 cadline/components/components/com_showroom/assets/ajax/AjaxDownloadController.class.php create mode 100644 cadline/components/components/com_showroom/assets/ajax/BaseController.class.php create mode 100644 cadline/components/components/com_showroom/assets/css/kalypto.css create mode 100644 cadline/components/components/com_showroom/assets/css/showroom.css create mode 100644 cadline/components/components/com_showroom/assets/css/smoothTouchScroll.css create mode 100644 cadline/components/components/com_showroom/assets/images/arrow_left.gif create mode 100644 cadline/components/components/com_showroom/assets/images/arrow_left_1.png create mode 100644 cadline/components/components/com_showroom/assets/images/arrow_left_2.png create mode 100644 cadline/components/components/com_showroom/assets/images/arrow_right.gif create mode 100644 cadline/components/components/com_showroom/assets/images/arrow_right_1.png create mode 100644 cadline/components/components/com_showroom/assets/images/arrow_right_2.png create mode 100644 cadline/components/components/com_showroom/assets/images/back.png create mode 100644 cadline/components/components/com_showroom/assets/images/back_1.png create mode 100644 cadline/components/components/com_showroom/assets/images/back_2.png create mode 100644 cadline/components/components/com_showroom/assets/images/big_transparent.gif create mode 100644 cadline/components/components/com_showroom/assets/images/checkbox.png create mode 100644 cadline/components/components/com_showroom/assets/images/cursors/cursor_arrow_left.cur create mode 100644 cadline/components/components/com_showroom/assets/images/cursors/cursor_arrow_left.png create mode 100644 cadline/components/components/com_showroom/assets/images/cursors/cursor_arrow_right.cur create mode 100644 cadline/components/components/com_showroom/assets/images/cursors/cursor_arrow_right.png create mode 100644 cadline/components/components/com_showroom/assets/images/diver_03.png create mode 100644 cadline/components/components/com_showroom/assets/images/environment.png create mode 100644 cadline/components/components/com_showroom/assets/images/icon-download-16.png create mode 100644 cadline/components/components/com_showroom/assets/images/icon-download-32.png create mode 100644 cadline/components/components/com_showroom/assets/images/icon-download-48.png create mode 100644 cadline/components/components/com_showroom/assets/images/icon-download-64.png create mode 100644 cadline/components/components/com_showroom/assets/images/icon-download.png create mode 100644 cadline/components/components/com_showroom/assets/images/ifc.png create mode 100644 cadline/components/components/com_showroom/assets/images/matdata.png create mode 100644 cadline/components/components/com_showroom/assets/images/oli.png create mode 100644 cadline/components/components/com_showroom/assets/images/pdf.png create mode 100644 cadline/components/components/com_showroom/assets/images/radio.png create mode 100644 cadline/components/components/com_showroom/assets/images/refresh.png create mode 100644 cadline/components/components/com_showroom/assets/images/searchbutton.png create mode 100644 cadline/components/components/com_showroom/assets/images/sticker_down.png create mode 100644 cadline/components/components/com_showroom/assets/images/sticker_down_active.png create mode 100644 cadline/components/components/com_showroom/assets/images/sticker_up.png create mode 100644 cadline/components/components/com_showroom/assets/images/sticker_up_1.png create mode 100644 cadline/components/components/com_showroom/assets/images/sticker_up_2.png create mode 100644 cadline/components/components/com_showroom/assets/images/sticker_up_3.png create mode 100644 cadline/components/components/com_showroom/assets/images/triangle-down.png create mode 100644 cadline/components/components/com_showroom/assets/images/triangle-right.png create mode 100644 cadline/components/components/com_showroom/assets/images/unknown.png create mode 100644 cadline/components/components/com_showroom/assets/js/jquery-1.10.2.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/jquery-1.11.1.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/jquery-ui-1.10.3.custom.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/jquery-ui-1.11.2.custom.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/jquery.kinetic-1.8.2.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/jquery.kinetic-2.0.4.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/jquery.mousewheel-3.1.12.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/jquery.mousewheel-3.1.4.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/jquery.smoothDivScroll-1.3.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/kalypto.js create mode 100644 cadline/components/components/com_showroom/assets/js/kalypto.min.js create mode 100644 cadline/components/components/com_showroom/assets/js/source/jquery-ui-1.10.3.custom.js create mode 100644 cadline/components/components/com_showroom/assets/js/source/jquery.kinetic.js create mode 100644 cadline/components/components/com_showroom/assets/js/source/jquery.smoothDivScroll-1.3.js create mode 100644 cadline/components/components/com_showroom/controller.php create mode 100644 cadline/components/components/com_showroom/index.html create mode 100644 cadline/components/components/com_showroom/language/en-GB.com_showroom.ini create mode 100644 cadline/components/components/com_showroom/language/hu-HU.com_showroom.ini create mode 100644 cadline/components/components/com_showroom/models/controller.php create mode 100644 cadline/components/components/com_showroom/models/family.php create mode 100644 cadline/components/components/com_showroom/models/product.php create mode 100644 cadline/components/components/com_showroom/models/search.php create mode 100644 cadline/components/components/com_showroom/models/search2.php create mode 100644 cadline/components/components/com_showroom/models/showroom.php create mode 100644 cadline/components/components/com_showroom/models/showroom2.php create mode 100644 cadline/components/components/com_showroom/models/upload.php create mode 100644 cadline/components/components/com_showroom/models/uploadgroup.php create mode 100644 cadline/components/components/com_showroom/models/uploadgroup.php.old create mode 100644 cadline/components/components/com_showroom/router.php create mode 100644 cadline/components/components/com_showroom/showroom.php create mode 100644 cadline/components/components/com_showroom/views/family/index.html create mode 100644 cadline/components/components/com_showroom/views/family/tmpl/default.php create mode 100644 cadline/components/components/com_showroom/views/family/tmpl/default.xml create mode 100644 cadline/components/components/com_showroom/views/family/tmpl/index.html create mode 100644 cadline/components/components/com_showroom/views/family/view.html.php create mode 100644 cadline/components/components/com_showroom/views/index.html create mode 100644 cadline/components/components/com_showroom/views/product/index.html create mode 100644 cadline/components/components/com_showroom/views/product/tmpl/default.php create mode 100644 cadline/components/components/com_showroom/views/product/tmpl/default.xml create mode 100644 cadline/components/components/com_showroom/views/product/tmpl/index.html create mode 100644 cadline/components/components/com_showroom/views/product/view.html.php create mode 100644 cadline/components/components/com_showroom/views/search/index.html create mode 100644 cadline/components/components/com_showroom/views/search/tmpl/default.php create mode 100644 cadline/components/components/com_showroom/views/search/tmpl/default.xml create mode 100644 cadline/components/components/com_showroom/views/search/tmpl/index.html create mode 100644 cadline/components/components/com_showroom/views/search/view.html.php create mode 100644 cadline/components/components/com_showroom/views/search2/index.html create mode 100644 cadline/components/components/com_showroom/views/search2/tmpl/default.php create mode 100644 cadline/components/components/com_showroom/views/search2/tmpl/default.xml create mode 100644 cadline/components/components/com_showroom/views/search2/tmpl/index.html create mode 100644 cadline/components/components/com_showroom/views/search2/view.html.php create mode 100644 cadline/components/components/com_showroom/views/showroom/index.html create mode 100644 cadline/components/components/com_showroom/views/showroom/tmpl/default.php create mode 100644 cadline/components/components/com_showroom/views/showroom/tmpl/default.xml create mode 100644 cadline/components/components/com_showroom/views/showroom/tmpl/index.html create mode 100644 cadline/components/components/com_showroom/views/showroom/view.html.php create mode 100644 cadline/components/components/com_showroom/views/showroom2/index.html create mode 100644 cadline/components/components/com_showroom/views/showroom2/tmpl/default.php create mode 100644 cadline/components/components/com_showroom/views/showroom2/tmpl/default.xml create mode 100644 cadline/components/components/com_showroom/views/showroom2/tmpl/index.html create mode 100644 cadline/components/components/com_showroom/views/showroom2/view.html.php create mode 100644 cadline/components/components/com_showroom/views/upload/index.html create mode 100644 cadline/components/components/com_showroom/views/upload/tmpl/default.php create mode 100644 cadline/components/components/com_showroom/views/upload/tmpl/default.xml create mode 100644 cadline/components/components/com_showroom/views/upload/tmpl/index.html create mode 100644 cadline/components/components/com_showroom/views/upload/view.html.php create mode 100644 cadline/components/components/com_showroom/views/uploadgroup/index.html create mode 100644 cadline/components/components/com_showroom/views/uploadgroup/tmpl/default.php create mode 100644 cadline/components/components/com_showroom/views/uploadgroup/tmpl/default.php.old create mode 100644 cadline/components/components/com_showroom/views/uploadgroup/tmpl/default.xml create mode 100644 cadline/components/components/com_showroom/views/uploadgroup/tmpl/index.html create mode 100644 cadline/components/components/com_showroom/views/uploadgroup/view.html.php create mode 100644 cadline/components/components/com_showroom/views/uploadgroup/view.html.php.old create mode 100644 cadline/components/components/com_tcexam/controller.php create mode 100644 cadline/components/components/com_tcexam/default.php create mode 100644 cadline/components/components/com_tcexam/index.html create mode 100644 cadline/components/components/com_tcexam/models/tcexam.php create mode 100644 cadline/components/components/com_tcexam/tcexam.php create mode 100644 cadline/components/components/com_tcexam/views/index.html create mode 100644 cadline/components/components/com_tcexam/views/tcexam/index.html create mode 100644 cadline/components/components/com_tcexam/views/tcexam/tmpl/default.php create mode 100644 cadline/components/components/com_tcexam/views/tcexam/tmpl/default.xml create mode 100644 cadline/components/components/com_tcexam/views/tcexam/tmpl/index.html create mode 100644 cadline/components/components/com_tcexam/views/tcexam/view.html.php diff --git a/cadline/components/administrator/components/com_albanner/access.xml b/cadline/components/administrator/components/com_albanner/access.xml new file mode 100644 index 00000000..5fe77fec --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/access.xml @@ -0,0 +1,13 @@ + + +
+ + + + + + + +
+ +
\ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/albanner.php b/cadline/components/administrator/components/com_albanner/albanner.php new file mode 100644 index 00000000..8e378197 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/albanner.php @@ -0,0 +1,27 @@ + + * @copyright 2017 Zsolt Fekete + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +// No direct access +defined('_JEXEC') or die; + +// Access check. +if (!JFactory::getUser()->authorise('core.manage', 'com_albanner')) +{ + throw new Exception(JText::_('JERROR_ALERTNOAUTHOR')); +} + +// Include dependancies +jimport('joomla.application.component.controller'); + +JLoader::registerPrefix('Albanner', JPATH_COMPONENT_ADMINISTRATOR); +JLoader::register('AlbannerHelper', JPATH_COMPONENT_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'helpers' . DIRECTORY_SEPARATOR . 'albanner.php'); + +$controller = JControllerLegacy::getInstance('Albanner'); +$controller->execute(JFactory::getApplication()->input->get('task')); +$controller->redirect(); diff --git a/cadline/components/administrator/components/com_albanner/albanner.xml b/cadline/components/administrator/components/com_albanner/albanner.xml new file mode 100644 index 00000000..23665a12 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/albanner.xml @@ -0,0 +1,55 @@ + + + com_albanner + 2017-09-20 + 2017 Zsolt Fekete + GNU General Public License version 2 or later; see LICENSE.txt + Zsolt Fekete + mcleod78@gmail.com + https://www.facebook.com/mcleod78 + CVS: 1.0.0 + ARCHLine splashscreen banner content editor + + + + sql/install.mysql.utf8.sql + + + + + sql/update.mysql.utf8.sql + + + + + sql/uninstall.mysql.utf8.sql + + + + + COM_ALBANNER + + COM_ALBANNER_CONTROL_PANEL + COM_ALBANNER + COM_ALBANNER_TEST + + + access.xml + controller.php + index.html + albanner.php + assets + controllers + helpers + models + sql + views + + + en-GB/en-GB.com_albanner.ini + en-GB/en-GB.com_albanner.sys.ini + hu-HU/hu-HU.com_albanner.ini + hu-HU/hu-HU.com_albanner.sys.ini + + + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/assets/ajax/AjaxBannerController.class.php b/cadline/components/administrator/components/com_albanner/assets/ajax/AjaxBannerController.class.php new file mode 100644 index 00000000..3ab28924 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/assets/ajax/AjaxBannerController.class.php @@ -0,0 +1,131 @@ +pf]["_POST"]) || trim($_POST['refresh'])=='' ) $_SESSION[$this->pf]["_POST"]=$_POST; + $se=&$_SESSION[$this->pf]['_POST']; + $felt=""; + $arrIcons=array( + 'smallEdit'=>array("href"=>"index.php?option=com_albanner&view=edit&id=REPLACE", "img"=>IconHelper::getIcon("smallEdit"), "linkjoin"=>"ban_id","alttext"=>"Edit" ), + 'smallEnable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','disable','tablediv');setField('".$this->pf."','".$this->pf."_value','REPLACE','tablediv');}","img"=>IconHelper::getIcon("smallEnable") ), + 'smallDisable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','enable','tablediv');setField('".$this->pf."','".$this->pf."_value','REPLACE','tablediv');}",'img'=>IconHelper::getIcon("smallDisable") ), + 'smallDel'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','delete','tablediv');setField('".$this->pf."','".$this->pf."_value','REPLACE','tablediv');}",'img'=>IconHelper::getIcon("smallDel") ), + ); + + if ($this->auth()==FALSE) die(); + + if (isset($_POST[$this->pf.'_event']) and trim($_POST[$this->pf.'_event'])>'') + { + $event=trim(strtolower(addslashes((string)$_POST[$this->pf.'_event']))); + $value=trim(strtolower(addslashes((string)$_POST[$this->pf.'_value']))); + if ((int)$value>0) + { + switch ($event) + { + case 'enable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='Y' WHERE id=".$value." LIMIT 1;");break; } + case 'disable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='N' WHERE id=".$value." LIMIT 1;");break; } + case 'delete' : { MySqlHelper::getInstance()->query("DELETE FROM ".TABLE." WHERE id=".$value." LIMIT 1;");break; } + } + } + } + + if (!isset($_SESSION[$this->pf]['tableorder'])) $_SESSION[$this->pf]['tableorder']='ban_id DESC'; + + if (isset($se['ban_id']) && $se['ban_id']>"") + { + if (strpos($se['ban_id'], "-")) + { + $reszek=explode("-", $se['ban_id']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND id>=".(int)$reszek[0]." AND id<=".(int)$reszek[1] : " AND id>=".(int)$reszek[1]." AND id<=".(int)$reszek[0]); + } + else + { + $felt.=" AND id=".(int)$se['ban_id']; + } + } + if (isset($se['pattern']) && trim($se['pattern'])>"") $felt.=" AND `pattern` LIKE '%".trim($se['pattern'])."%'"; + if (isset($se['build']) && (int)$se['build']>0) $felt.=" AND `build`=".(int)$se['build']; + if (isset($se['message']) && trim($se['message'])>"") $felt.=" AND `message` LIKE '%".trim($se['message'])."%'"; + if (isset($se['lang']) && trim($se['lang'])>"") $felt.=" AND `lang`='".trim($se['lang'])."'"; + if (isset($se['published']) && $se['published']!='A') $felt.=" AND published='".$se['published']."'"; + if (isset($se['from_date']) && $se['from_date']>"") $felt.=" AND from_date>='".trim($se['from_date'])."'"; + if (isset($se['end_date']) && $se['end_date']>"") $felt.=" AND end_date<='".trim($se['end_date'])."'"; + if (isset($se['priority']) && (int)$se['priority']>0) $felt.=" AND `priority`=".(int)$se['priority']; + + $cl=($this->getLang()=='hun' ? 'hu-HU' : 'en-GB'); + $LANG=parse_ini_file($_SERVER['DOCUMENT_ROOT']."/administrator/language/".$cl."/".$cl.".com_albanner.ini"); + + $objTabla=New TableHelper(); + $objTabla->setParams(array('prefix'=>$this->pf,'tablewidth'=>'100%','tablediv'=>'tablediv')); + $v=$objTabla->setSession(); + $objTabla->setColumn('ban_id',array('header'=>'ID','width'=>'40px','link'=>'index.php?option=com_albanner&view=edit&id=REPLACE')); + $objTabla->setColumn('pattern',array('header'=>$LANG['COM_ALBANNER_PATTERN'],'format'=>'text','align'=>'left','width'=>'100px')); + $objTabla->setColumn('build',array('header'=>$LANG['COM_ALBANNER_BUILD'],'format'=>'text','align'=>'left','width'=>'50px')); + $objTabla->setColumn('message',array('header'=>$LANG['COM_ALBANNER_MESSAGE'],'format'=>'text','align'=>'left')); + $objTabla->setColumn('from_date',array('header'=>str_replace(" ", "
", $LANG['COM_ALBANNER_FROM']),'format'=>'text','align'=>'left','width'=>'100px')); + $objTabla->setColumn('end_date',array('header'=>str_replace(" ", "
", $LANG['COM_ALBANNER_TO']),'format'=>'text','align'=>'left','width'=>'100px')); + $objTabla->setColumn('lang',array('header'=>$LANG['COM_ALBANNER_LANG'],'format'=>'text','align'=>'center','width'=>'70px','replacevalues'=>array('hun'=>$LANG['COM_ALBANNER_HUN'],'eng'=>$LANG['COM_ALBANNER_ENG']))); + $objTabla->setColumn('priority',array('header'=>$LANG['COM_ALBANNER_PRIORITY'],'format'=>'text','align'=>'center','width'=>'70px','replacevalues'=>array('1'=>'1-'.$LANG['COM_ALBANNER_LOW'],'2'=>'2-'.$LANG['COM_ALBANNER_MED'],'3'=>'3-'.$LANG['COM_ALBANNER_HIG']))); + $objTabla->setColumn('published',array('header'=>$LANG['COM_ALBANNER_PUBLISHED'],'format'=>'text','align'=>'center','width'=>'70px','replacevalues'=>array('Y'=>$LANG['COM_ALBANNER_YES'],'N'=>$LANG['COM_ALBANNER_NO']))); + $objTabla->setColumn('options',array('header'=>$LANG['COM_ALBANNER_OPTIONS'],'align'=>'right','width'=>'90px','order'=>false,'addicons'=>$arrIcons,'linkjoin'=>'ban_id')); + $objTabla->setQuery(array(" + SELECT id AS ban_id,pattern,build,message,DATE(from_datetime) AS from_date,DATE(end_datetime) AS end_date,lang,priority,published,CONCAT('smallDel','|',IF(published='N','smallDisable','smallEnable'),'|','smallEdit') AS options + FROM albanner + WHERE 1 ".$felt + .((isset($v['tableorder']) and $v['tableorder']>'') ? ' ORDER BY '.$v['tableorder'] : '') + .((isset($v['tableipp'])) ? ' LIMIT '.($v['tableipp']>0 ? ($v['tablepage']-1)*$v['tableipp'] : 0) .','.$v['tableipp'] : '')," + SELECT COUNT(*) AS recordCount + FROM ( + SELECT id AS ban_id,pattern,build,message,DATE(from_datetime) AS from_date,DATE(end_datetime) AS end_date,lang,priority,published,CONCAT('smallDel','|',IF(published='N','smallDisable','smallEnable'),'|','smallEdit') AS options + FROM albanner + WHERE 1 ".$felt." + ) x" + )); +// $this->printSession($this->pf); +// print "
".print_r($_SESSION,true)."
"; + $objTabla->drawTable(TRUE); + } + + public function auth() + { + MySqlHelper::getInstance()->query(" + SELECT * FROM jml_session where session_id='".trim(addslashes($_POST['sess']))."' LIMIT 1 + UNION + SELECT * FROM eng_session where session_id='".trim(addslashes($_POST['sess']))."' LIMIT 1;"); + $sess=MySqlHelper::getInstance()->fetchAssoc(); + if (count($sess)) + { + MySqlHelper::getInstance()->query("SELECT * FROM jml_user_usergroup_map where group_id IN (7,8) AND user_id=".$sess[0]['userid'].";"); + $admin=MySqlHelper::getInstance()->fetchAssoc(); + return (count($admin) ? TRUE : FALSE); + } + else + { + return(FALSE); + } + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos( $_SERVER['HTTP_HOST'], ".com") ? "eng" : "hun"); } + return $this->lang; + } +} // end of class + +$controller=new Controller(); +$controller->run(); +?> + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/assets/ajax/BaseController.class.php b/cadline/components/administrator/components/com_albanner/assets/ajax/BaseController.class.php new file mode 100644 index 00000000..7904fc1c --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/assets/ajax/BaseController.class.php @@ -0,0 +1,22 @@ +procEvent(); } + + public function printSession($key="") { print "
".print_r(($key=="" ? $_SESSION : $_SESSION[$key]),true)."
"; } +} +?> \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/assets/css/index.html b/cadline/components/administrator/components/com_albanner/assets/css/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/assets/css/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/assets/css/style.css b/cadline/components/administrator/components/com_albanner/assets/css/style.css new file mode 100644 index 00000000..2c598a5b --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/assets/css/style.css @@ -0,0 +1,84 @@ +#j-sidebar-container {display:inline-block;vertical-align:top;width:14.5%;height:300px;border:0px solid #000000;} +#j-main-container {display:inline-block;vertical-align:top;width:85%;border:0px solid #000000;} + +#j-main-container .pagination {margin:0px;padding:0px;display:inline;} +#j-main-container table.adminlist {width:100%;border-spacing:1px;background-color:#e7e7e7;color:#666;} +#j-main-container table.adminlist td, +#j-main-container table.adminlist th {padding:4px;} +#j-main-container table.adminlist thead th {text-align:center;background:#f0f0f0;color:#666;border-bottom:1px solid #999;border-left:1px solid #fff;} +#j-main-container table.adminlist thead a:hover { text-decoration: none; } +#j-main-container table.adminlist thead th img { vertical-align: middle; } +#j-main-container table.adminlist tbody th { font-weight: bold; } +#j-main-container table.adminlist tbody tr { background-color: #fff; text-align: left; } +#j-main-container table.adminlist tbody tr.row1 { background: #f9f9f9; border-top: 1px solid #fff; } +#j-main-container table.adminlist tbody tr.row0:hover td, +#j-main-container table.adminlist tbody tr.row1:hover td { background-color: #ffd ; } +#j-main-container table.adminlist tbody tr td { height: 25px; background: #fff; border: 1px solid #fff; } +#j-main-container table.adminlist tbody tr.row1 td { background: #f9f9f9; border-top: 1px solid #FFF; } +#j-main-container table.adminlist tfoot tr { text-align: center; color: #333; } +#j-main-container table.adminlist tfoot td, +#j-main-container table.adminlist tfoot th { background-color: #f3f3f3; border-top: 1px solid #999; text-align: center; } +#j-main-container table.adminlist td.order { text-align: center; white-space: nowrap; } +#j-main-container table.adminlist td.order span { float: left; display: block; width: 20px; text-align: center; } + + +#j-main-container .clear {clear:both;margin:0px;padding:0px;height:0px;width:0px;} +#j-main-container div.hasab {display:inline-block;width:340px;vertical-align:top;border:0px solid #000;} +#j-main-container div.hasab div.inputholder {display:block;height:38px;border:0px solid #ff0000;} +#j-main-container div.inputholder label, +#j-main-container div.hasab div.inputholder label {display:inline-block;width:120px;font-weight:bold;border:0px solid #00ff00;} +#j-main-container div.hasab div.inputholder input[type="text"], +#j-main-container div.hasab div.inputholder select {display:inline;margin:0px;width:190px;} +#j-main-container div.hasab div.inputholder textarea {width:320px;height:260px;} +#j-main-container div.hasab div.inputholder input[type="file"] {width:190px;} +#j-main-container div.hasab div.inputholder fieldset {display:inline;width:190px;white-space:nowrap;border:0px solid #ff00ff;} +#j-main-container div.hasab div.inputholder fieldset label {width:50px;font-weight:normal;} + + + +/* TableHelper */ +div.tableholder table { border: 1px solid #dddddd; font-size: 11px; } +div.tableholder table thead, div.tableholder table tfoot { background-color: #ddd; } +div.tableholder table thead tr td { padding-left: 3px; border-bottom: 1px solid #dddddd; white-space:nowrap; vertical-align:middle; } +div.tableholder table tfoot tr td { padding-left: 3px; border-top: 1px solid #dddddd; white-space:nowrap; vertical-align:middle; } +div.tableholder table thead tr th, +div.tableholder table tfoot tr th { white-space:nowrap; vertical-align:middle; } +div.tableholder table thead tr th span { display: block; float: left; text-align: center; margin-left:3px; float: left; height: 30px; line-height: 14px; font-weight: bold; } +div.tableholder table thead tr th div.shortlinks { display: inline-block; margin: 1px; width: 9px; height: 24px; float: right; } +div.tableholder table thead tr th div.shortlinks a.tableshort-up { display: block; text-decoration: none; width: 9px; height: 11px; background: #ececec url(/administrator/components/com_showroom/assets/images/tableshort-up.jpg) no-repeat left top; } +div.tableholder table thead tr th div.shortlinks a.tableshort-up:hover { background: #ececec url(/administrator/components/com_showroom/assets/images/tableshort-up.jpg) no-repeat left -11px; } +div.tableholder table thead tr th div.shortlinks a.tableshort-down { margin-top:2px;display: block; text-decoration: none; width: 9px; height: 11px; background: #ececec url(/administrator/components/com_showroom/assets/images/tableshort-down.jpg) no-repeat left top; } +div.tableholder table thead tr th div.shortlinks a.tableshort-down:hover { margin-top:2px;background: #ececec url(/administrator/components/com_showroom/assets/images/tableshort-down.jpg) no-repeat left -11px; } + +div.tableholder table tbody tr.even { background-color: #ebebeb; } +div.tableholder table tbody tr.odd { background-color: #ffffff; } +div.tableholder table tbody tr.selected { background-color: #f5c0b8;color:#000000; } +div.tableholder table tbody tr.selected a { color: #000000;} +div.tableholder table tbody tr td { padding: 3px; text-align: left; border-top: 0px solid #afc4d2; border-right: 1px solid #e0eef7; } +div.tableholder table tbody tr td img { padding: 0px; margin:0px; border:0px;vertical-align: middle; } +div.tableholder table tbody tr.even:hover, +div.tableholder table tbody tr.odd:hover, +div.tableholder table tbody tr.selected:hover { cursor: pointer; background-color: #c5e6a1; color: #000000; } +div.tableholder table tbody tr td input { padding: 0px; margin:0; vertical-align:middle; } +div.tableholder table tbody tr td img { margin: 0px 2px; } +div.tableholder table tfoot { height: 30px; font-size: 11px; font-weight: bold; } +div.tableholder table a {text-decoration:none;cursor:pointer;} +div.tableholder table a:hover {text-decoration:none;cursor:pointer;} +div.tablenav select { margin: 0px; float: left; width: auto; padding: 2px 2px 3px 2px;border: 1px solid #afc4d2;font-size: 11px;font-family: Tahoma;font-weight: normal;text-align: left;color: #484947;cursor: pointer;} +div.tablenav {margin: 10px 0px 10px 0px;height: 32px;overflow: hidden;} +div.tablenav p {margin: 0px 0px 0px 3px;float: left;line-height: 32px; float:left;} +div.tablenav ul.pager {margin: 0px 0px 0px 20px;float: right;height: 22px;} +div.tablenav ul.pager li {display: inline;} +div.tablenav ul.pager li a, +div.tablenav ul.pager li a.inactive, +div.tablenav ul.pager li a.inactive:hover { background: none; display: inline-block; float: left; margin: 0px 0px 0px 3px; width: 20px; height: 20px; line-height: 20px; font-size: 10px; font-weight: normal; text-align: center; vertical-align: middle; border: 1px solid #e7efdb; color: #009cff; cursor:pointer;} +div.tablenav ul.pager li a.nextfive { border: none; line-height: 22px; cursor:pointer; } +div.tablenav ul.pager li a.inactive, +div.tablenav ul.pager li a.inactive:hover { color: #c3c4c1; cursor:pointer;} +div.tablenav ul.pager li a.activepage, +div.tablenav ul.pager li a.activepage:hover { background-color: #b4c799; color: #ffffff; border-color: #577046; font-weight: bold; cursor:pointer;} +div.tablenav ul.pager li a:hover {background-color: #009cff;color: #ffffff;border-color: #2d4e63; cursor:pointer; } + + +#preview {position:absolute; border:1px solid #ccc;display:none;color:#fff;background:#fff;padding:5px;white-space:normal; } +#tooltip {position:absolute; border:1px solid #333;display:none;color:#333;background:#f7f5d1;padding:2px 5px; } \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/assets/images/iconset/accept.png b/cadline/components/administrator/components/com_albanner/assets/images/iconset/accept.png new file mode 100644 index 0000000000000000000000000000000000000000..439bbb5f8a115986610f1999bf57e637da83236f GIT binary patch literal 642 zcmV-|0)737P)OE*-haN$z{>QC!AUoO;qULi+rb7DOmVFPa(;qnAVx6=$j@hC zWSih&8qV>&G7vFWri=`-!uIF^NZp6>*oxYZ(Rne|82{d+G_DX%srLi z@tX?_(jr<6-@pH1*mZ0T!;fFzDtWm0+Wj5l7@oYj$ngEwXRwRjzJJef@8Kf`VA$Et ztvPjsS;JEB=e?&_UD&yp8D4*U#J~iMAafmehEHEUy4ag|G2DG|5*TQ27=8h5e)0M> z!=1Yi7=8n7Uf6K%2s{=-O4Pe}c(_Uxl%*J$n3xzi*mxM!Wy~4wJUhei^~XoB%^%)> zW_bMY1=!{_JvWcQ!U!IXemU}8+&rA6vdZFMLy*D8_g@&EJ$wz;ylKkABgk?n>A)jZ zvWttCvs7A1gn^NX5iIuk{a1z;58r_`@0k7k2znG_BqXOe;a)CYjv^^#A%-s>e=xj! z@E)vr-=eoiu%!{KDbY5Pua}*Rt?1YH-yqEnhnIgkh%HKm3^P)i codE(207gD71U9b3U;qFB07*qoM6N<$f}yiE0{{R3 literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_albanner/assets/images/iconset/add.png b/cadline/components/administrator/components/com_albanner/assets/images/iconset/add.png new file mode 100644 index 0000000000000000000000000000000000000000..e5bc7283a4bb71e6692a70519009162dbdad247b GIT binary patch literal 330 zcmV-Q0k!^#P)sb`Z^bbA%&iS5{LFxQ z3^fy1R%fz+Og?;N83Q4JO$|sd$OR1Fe|~2m2Y~cK4fsaB0YGO=KXvi~Mj+}Ms-f^N zpTC98jOmQnlCocp!hdZeWfZZi=k79Wn(}~=xO4yv9Bk1@n}kG@qzueB({G%7fRUZC csRaly0ECi{{IK>1y#N3J07*qoM6N<$f}mN6egFUf literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_albanner/assets/images/iconset/arrow_undo.png b/cadline/components/administrator/components/com_albanner/assets/images/iconset/arrow_undo.png new file mode 100644 index 0000000000000000000000000000000000000000..47dc22e48bdb352f924583c46a69926b5f0eed84 GIT binary patch literal 730 zcmV<00ww*4P) zfn!ahCX196U95GZ(3f7pA8c5}S&A}9hcMgtcZcrgr%6jNI` z9dldz@HpqxeVntop7(VdbBB1FUavQ(K|Y@^!yvDaX`89P-FV6jP=qwjw-9!8qTf(!AR;Y1 zWp5JQfqd%HUpDm^t-z&xAZ=^{wL%BHkOOaU0X)lY9&;YO9{TJ!V({3}D@HwO(pzpD zv<67-hoEr4SDqpfGoVyxff1`0zZe|47XnThSeC^x% z5X&YPV=>Ml1Ci)vM58`zt3k9)YC8UBKt=|!m$bN1BE>c`bixZfsS#Hh2muUdY7C~T zP9fWQ!3=33L?^i{ZFQyEzw~QfY0rw5jiA-X{~)$^Qfx024Dzj$=NZH2?qr M07*qoM6N<$f*Ghv1ONa4 literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_albanner/assets/images/iconset/cross.png b/cadline/components/administrator/components/com_albanner/assets/images/iconset/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..6d84ab58d73c195df7e1bcf59cea3385ad5eea59 GIT binary patch literal 763 zcmVNklAP5@y0+qT|0pc0SD|>98;c)bfNZJLsV)y*U%7+$Y`B1#@4tpehfnafybSO9 z3I`Yl$tG*cYXMb3{QYoJtZBfvH@^{@S`c<#zsND6zHXfuJkrM7a?`zqE}N+dG?>L7 zf(TDXh5FtLoL-{JDk$o%c5pLO5n=qDh(t_=94GiAL5@kfPjg@1iU|IS3bfYHrO=nL zWH4ZDxkyM+;;E)%)JTT0+98VpWx0k`NI-FqYv&ymWnO1(CFDi2W84fyQc+UB1vzCK ze5BTI=vb8;<3P(9zrDicEvhO-==lTk$&#sw?#C7petI9po6AU(jXt8`sg~)nW)`Md zGrwedp%$hK}`CS)NDh>U*nh`K2y3GMbgS>Q`f;g~&m`F7Hzz4!hAWB3; zswNH$1iN-!M&?Gh+1;+)z3pv#UwW_4y-XNS^2^D2?s@*_InOj|b*p8s zotSqBjf52h1L3bZeCzuA7|dJLe1V%SdynQ>OdmO$n_ykK7?ve&P&9?)=tHCk6W9Ha zxK!^8{e2xz31oiy7QeK<*Joc|yT|kH4p8wiC@ceoi|Ijhkpr}~6ewGQp|j_~4BYdr z|Ng7pj|HwQv>qybzJ9-F$0msPZ-SjnU}}&7AJ0PjZnhUv(RjZe9gHTP%@Gsj?4_k?>-zcwcEpDGU z2O+^$(m54v6&so$4E_OTEP?UC*k!V}ZT&Z&pCh(fp=f{2&evgI=7PXWV52;;fBz0= z(@JP(jX6*+SuB7Q=P@~&2Jw9x&vY}_cD1jeXoJ80t=C||3{t~k4BwfC3JRW8MiiA9 zwb(7RtinU3V~|A|vrG!azwyJ{oojL=bL|`3V9HG+IXsBqKoqm_jF+3uK*~x0JEg@| z(L_beOf!%KSyR+#R7hq|>sAzs|AHF|B6N2K?5yD3c=B+UtU#2=$!t8X#}fgJ@SFgd zsG40)C^YS_YuSRr^aQwI07HQUSXS_E`to4c)jbEAP0oc26p}2%3Pb?oS_xMZN$4dw zpQ}dQ_RT0rM!<#w2#1qkInn##7oT=1IYqm2n|pNwDM3IYscQa@)M-aaMSfv^q{eN4 zxvED0O{tL(9z-PYyzC|JCv$E6rn|9WSEWNmdUP1UF&Sb;tkWCG=dktItj6}mAY0SW&#JY;g1VdWDqckh2+7Z^X?i_80td~GvRZ7zoa zrb;)8SFFZ@GAHR{8shX6_;3JR=sqUm3T9G@@0BC_p0x6quUpT2=|Fc+o`GsFHLEBt z0P>BG21X>W#b$t5nt~{+$6h_u`N31e^v@~pyI`;l4R2<;s;jHtX!rXa?}Wme zp|{)Z#^G=<91h3dLAs9JZU>vq*3|d=y^+aeP$(2&x7%^M-F}v=6wc=}rqd}VlZm0| zK{lI3zuyPX*XtFh)9GdM+vRe>U@!oivY9#_kFZ*;D3wZRwOX)PEYg7zpOXZdrlH&I zqFgS^nOJ4cFRWg#7x8!;rYCT@Ttc$hY$OSGI-LT}=kwB#7-E&_ffQ`FTloEcM59r3 zIvoUqL6Jz=fj~e;OsCW06Kjbf_DcaDD63d3iWj|J53yKGayT4QMILL!lX&*zhU6PU~8WadZk9ZBZ%xr|DzPASXfQl!zu=XiBH zAH=KG>T|WVTCHJ@VElFizX#1U$7pK*{x^OIFaQW*1d0xy1c002ovPDHLkV1n8n B<^=!% literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_albanner/assets/images/iconset/layout_join.png b/cadline/components/administrator/components/com_albanner/assets/images/iconset/layout_join.png new file mode 100644 index 0000000000000000000000000000000000000000..30964727501556b18706d78559789d7739f85dac GIT binary patch literal 283 zcmeAS@N?&q;$mQ6;Pv!y2?EjrAk4uAB;`NrRf%s%qMJ&imKW&$Plam)^W$|o60 zcw1r^g80oJoS$!R;oIK$)byJ~R>H3hQVu>62fl15tv3l=Dduy$)7=`?0|ap$F~s%lDV ex&Wg<0z>_`8~TaIrL}=RVeoYIb6Mw<&;$U|1#4UY literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_albanner/assets/images/iconset/layout_split.png b/cadline/components/administrator/components/com_albanner/assets/images/iconset/layout_split.png new file mode 100644 index 0000000000000000000000000000000000000000..512ccc2f0eadd615e218c67d9011548f3b33ebb0 GIT binary patch literal 269 zcmeAS@N?&q;$mQ6;Pv!y2?EjrAk4uAB;`NrRf%s%qMJ&imKW&$Plam)^W$|o60 zcw1r^g80oJoS$!R;d`7t;nxN!2Oo(8Up6*K?AWtm&oMdY&Q@3wAOrnW3XU zL5A(g5vHq56FViIKl1kYutz{dq-9Y;VXH+U8^c`dy-Sv~ta-zu#K6SE@b2z~vmaG| RhXdWt;OXk;vd$@?2>>WaXmJ1l literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_albanner/assets/images/iconset/link_break.png b/cadline/components/administrator/components/com_albanner/assets/images/iconset/link_break.png new file mode 100644 index 0000000000000000000000000000000000000000..eb63161ce4508de6a9faee90f83ba174d290f0f2 GIT binary patch literal 508 zcmVNklY5Z!!Ws?!)u{)CNH zet=-5SVXu=uZaqGC+beSs+1e$ac20xC!R~%TsRyFTn2J`^OzqZPva{bJ?7dFGQVz z=%CZ-G@)fG+OA<3RvagyR;$$ncn}19Fc=6>Olu?_#nE@fr?Fs`%VjE5cjwX%co*EC z4yfMqJX*8TzVEYszt70m>-B`HV%s*gYK3{NR^wqkSsHE8zcBKZN=3dB*Kr&RYyZw5 ztQP`MqC&G;tujs1#9}6sVaP>`;LS#(!N%jU;D*B?qdeTAxCLF;XP$Jo+qL4j$T`3p zm{an6>>S93Szm=apHAWqa0xsEhZy4<^^lWtf|*~#yk7wZibwEm_yE2{G5GaJ0lb0K yh$oJK()QcuSTc*0R{kJM}4a{(vvIz0000r6gGyG>{Qf2w~_YY3Z<~bX{^x-*G|9`M3G6)L` zGswxwF`Q*6X1Mg5mqGU3g|AHiaToy8d}?;Vf3pBj24|He495;{Wq9=H5d%9rJHrzp zLk89E%i=&6{Kl#IvAzaOMA2r}JZuoVBtaO40R0~^CHhPaGkMvxkoe}8^s z)qH$v=6|EGD2Cq;(-{8$xWVw{t182{m!b@+|1L1tXU%1Vsb@lV0ZjAJDXBosktmv< zJYj1gX#AhhHvklF}#0rhvCNl zZ44eA#~IP17N-I4fBe$j){=P{$i4%_TY-4TuP0|1HaEp#)et=E8VVmEzyP$B6N1WA RYAFB!002ovPDHLkV1m=+C^Y~8 literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_albanner/assets/images/iconset/photo.png b/cadline/components/administrator/components/com_albanner/assets/images/iconset/photo.png new file mode 100644 index 0000000000000000000000000000000000000000..116e316433d8d917b3737d73cc743cab4449e9a5 GIT binary patch literal 576 zcmV-G0>Ax}YqsGymm`>i7Gb0J^x?*h;J{d^ssq= z(H_2*Zvnxt3S57(6Az67T5H_wJV&;12WI*aKi@n;{&fgf2MP#G+ABbv&`L!{*hD6# z5n&nG)!Vps|0$G2lMv?7A#lxUktNr{ECl4|@>tur1?wGL!^g*mi4RW8ovmM5O=15Re<=wS5h5EQu|W94g^E59W+jDbHSf0yZr \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/assets/images/tableshort-down.jpg b/cadline/components/administrator/components/com_albanner/assets/images/tableshort-down.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38689ce29226c4385bc832a7fe885cc362255353 GIT binary patch literal 453 zcmex=T;Nd3XdtKm-mL zSy)*)*g5#QxcEi*`1s)BL^J*$U=ZYB5M$tEW)x@ci+Wc+`GA&-H9i5cifB*4nd z#=*$I%*co&#=yYL!pbJVz{Cjj1S?#Ekx5Wdh?zl{MVVF1G0{kbO^^YofE8IMqac$I zvv6SI!i%Ct|8FtyFf#%zXBK3zXSg_Hchu9jGpm>1d$cGqvG>Qho9xPkOBS_oq&?td zkytoMH{)vLmYF>!+di(m5W9?9dEaIxSH`c+>*BBOUQ+pHu@u|GZx>(Py=3!E;zI2a w`?Vj}d3|Kdm(#b5sA=l5@VdXn^Hr4Y!WFN40#ElwKUt}@JZb+*R{8%o0pZT;Nd3XdtKm-mL zSy)*)*g5#QxcEi*`1s)BL^J*$U=ZYB5M$tEW)x@ci+Wc+`Gp@e~fnGxtn1Yl-i zZ*fU(rjehg$c5La}BinbgGM!!Ke9F;b&Y?LR znq1+>=d{Pvt_=&?IjhN}C%1g19S4t=&igr=$_t&jLc6uS^Y$?=)Q)4Ar)qe|-DKYR zx$~~%ThA)Ecyu%WlHgaLzVz*$*vmfaFJH&YKhwLG2A{f`sqsAK<*%2=*3CF4uI8Qb QcHu(3ydysto&Vni04n!tm;e9( literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_albanner/assets/index.html b/cadline/components/administrator/components/com_albanner/assets/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/assets/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/assets/js/ajax.js b/cadline/components/administrator/components/com_albanner/assets/js/ajax.js new file mode 100644 index 00000000..9a9b4809 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/assets/js/ajax.js @@ -0,0 +1,16 @@ +function submitForm(formid,targetdiv) +{ + jQuery.ajax({ + type: "POST", + url: jQuery('#'+formid).attr('action'), + data: jQuery('#'+formid).serialize(), + success: function(html) {jQuery('#'+targetdiv).html(html);} + }); + return false; +} + +function setField(formid,elementid,value,targetdiv) +{ + jQuery('#'+elementid).val(value); + if (formid>'') submitForm(formid,targetdiv); +} \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/assets/js/main.js b/cadline/components/administrator/components/com_albanner/assets/js/main.js new file mode 100644 index 00000000..260a1a8b --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/assets/js/main.js @@ -0,0 +1,106 @@ +/* + * Image preview script + * powered by jQuery (http://www.jquery.com) + * + * written by Alen Grakalic (http://cssglobe.com) + * + * for more info visit http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery + * + */ + +this.imagePreview = function(){ + /* CONFIG */ + + xOffset = -35; + yOffset = 20; + + imgHeight=0; + imgWidth=0; + + + // these 2 variable determine popup's distance from the cursor + // you might want to adjust to get the right result + + /* END CONFIG */ + jQuery("a.preview").hover(function(e){ + + var newImg = new Image(); + newImg.src = this.href; + imgHeight = newImg.height; + imgWidth = newImg.width; + + this.t = this.title; + this.title = ""; + var c = (this.t != "") ? "
" + this.t : ""; + if (imgWidth) { + jQuery("body").append("

Image preview"+ c +"

"); + jQuery("#preview") + .css("top",(e.pageY + yOffset) + "px") + .css("left",(e.pageX + xOffset - imgWidth) + "px") + .fadeIn("fast"); + } + }, + function(){ + this.title = this.t; + jQuery("#preview").remove(); + }); + jQuery("a.preview").mousemove(function(e){ + if (imgWidth==0) { + var newImg = new Image(); + newImg.src = this.href; + imgHeight = newImg.height; + imgWidth = newImg.width; + } + jQuery("#preview") + .css("top",(e.pageY + yOffset) + "px") + .css("left",(e.pageX + xOffset - imgWidth) + "px"); + }); +}; + +/* + * Tooltip script + * powered by jQuery (http://www.jquery.com) + * written by Alen Grakalic (http://cssglobe.com) + * for more info visit http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery + */ +this.tooltip = function(){ + /* CONFIG */ + xOffset = -20; + yOffset = 10; + width = 200; + // these 2 variable determine popup's distance from the cursor + // you might want to adjust to get the right result + /* END CONFIG */ + jQuery("a.tooltip").hover(function(e){ + this.t = this.title; + this.title = ""; + jQuery("body").append("

"+ this.t +"

"); + jQuery("#tooltip") + .css("top",(e.pageY + yOffset) + "px") + .css("left",(e.pageX + xOffset - width) + "px") + .fadeIn("fast"); + }, + function(){ + this.title = this.t; + jQuery("#tooltip").remove(); + }); + jQuery("a.tooltip").mousemove(function(e){ + jQuery("#tooltip") + .css("top",(e.pageY + yOffset) + "px") + .css("left",(e.pageX + xOffset - width) + "px"); + }); +}; + +function checkAll() +{ + jQuery("input:checkbox").each(function() { + jQuery(this).attr('checked','checked'); + }); +} + +function unCheckAll() +{ + jQuery("input:checkbox").each(function() { + jQuery(this).removeAttr('checked'); + }); +} \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/controller.php b/cadline/components/administrator/components/com_albanner/controller.php new file mode 100644 index 00000000..8fd32b2a --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/controller.php @@ -0,0 +1,55 @@ + + * @copyright 2017 Zsolt Fekete + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ +// No direct access +defined('_JEXEC') or die; + +jimport('joomla.application.component.controller'); // import Joomla controller library + +$view=JFactory::getApplication()->input->get('view'); +$option=JFactory::getApplication()->input->get('option'); + +$l=array( + array('COM_ALBANNER_CONTROL_PANER', 'banners'), + array('COM_ALBANNER_LIST', 'list'), + array('COM_ALBANNER_TEST', 'test'), +); + +foreach ($l as $v) +{ + JHtmlSidebar::addEntry(JText::_($v[0]),'index.php?option='.$option.($v[1]==''?'':'&view=').$v[1],($view==$v[1] || $view==$v[1]."edit" ? true : false)); +} + +/** + * Class AlbannerController + * + * @since 1.6 + */ +class AlbannerController extends JControllerLegacy +{ + /** + * Method to display a view. + * + * @param boolean $cachable If true, the view output will be cached + * @param mixed $urlparams An array of safe url parameters and their variable types, for valid values see {@link JFilterInput::clean()}. + * + * @return JController This object to support chaining. + * + * @since 1.5 + */ + public function display($cachable = false, $urlparams = false) + { + $view = JFactory::getApplication()->input->getCmd('view', 'XXX_DEFAULT_VIEW_XXX'); + JFactory::getApplication()->input->set('view', $view); + + parent::display($cachable, $urlparams); + + return $this; + } +} diff --git a/cadline/components/administrator/components/com_albanner/controllers/index.html b/cadline/components/administrator/components/com_albanner/controllers/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/controllers/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/helpers/IconHelper.class.php b/cadline/components/administrator/components/com_albanner/helpers/IconHelper.class.php new file mode 100644 index 00000000..6e0f18ad --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/helpers/IconHelper.class.php @@ -0,0 +1,67 @@ +'/administrator/components/com_showroom/assets/images/iconset/add.png', + 'mediumAdd'=>'', + 'largeAdd'=>'', + 'smallEdit'=>'/administrator/components/com_showroom/assets/images/iconset/pencil.png', + 'mediumEdit'=>'', + 'largeEdit'=>'', + 'smallDel'=>'/administrator/components/com_showroom/assets/images/iconset/cross.png', + 'mediumDel'=>'', + 'largeDel'=>'', + 'smallEnable'=>'/administrator/components/com_showroom/assets/images/iconset/accept.png', + 'mediumEnable'=>'', + 'largeEnable'=>'', + 'smallDisable'=>'/administrator/components/com_showroom/assets/images/iconset/delete.png', + 'mediumDisable'=>'', + 'largeDisable'=>'', + 'smallView'=>'/administrator/components/com_showroom/assets/images/iconset/photo.png', + 'mediumView'=>'', + 'largeView'=>'', + 'smallMissingView'=>'/administrator/components/com_showroom/assets/images/iconset/link_break.png', + 'mediumMissingView'=>'', + 'largeMissingView'=>'', + 'smallRightOn'=>'/administrator/components/com_showroom/assets/images/iconset/layout_join.png', + 'mediumRightOn'=>'', + 'largeRightOn'=>'', + 'smallRightOff'=>'/administrator/components/com_showroom/assets/images/iconset/layout_split.png', + 'mediumRightOff'=>'', + 'largeRightOff'=>'', + 'smallBack'=>'/administrator/components/com_showroom/assets/images/iconset/arrow_undo.png', + 'mediumBack'=>'', + 'largeBack'=>'', + 'smallEmail'=>'/administrator/components/com_showroom/assets/images/iconset/email.png', + 'mediumEmail'=>'', + 'largeEmail'=>'', + ); + + public function __construct() {} + + /** + * Return the instance + * + * @return IconHelper + */ + public static function getInstance() { + if(!empty(self::$ico)) return self::$ico; + self::$ico=new IconHelper(); + self::$ico->init(); + return self::$ico; + } + + public static function init() { } + + public static function getIcon($i='') { + $str=''; + if ($i>'') $str=self::$icons[$i]; + return $str; + } + + public static function getAllIcon() { + return self::$icons; + } +} +?> \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/helpers/MySqlHelper.class.php b/cadline/components/administrator/components/com_albanner/helpers/MySqlHelper.class.php new file mode 100644 index 00000000..88783da1 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/helpers/MySqlHelper.class.php @@ -0,0 +1,212 @@ +config=New JConfig(); + $this->connection=false; + $this->host=''; + $this->user=''; + $this->pass=''; + $this->name=''; + } + + public static function getInstance() + { + if(!empty(self::$msh)) return self::$msh; + self::$msh=new MySqlHelper(); + self::$msh->init(); + return self::$msh; + } + + public function init($host="", $name="", $user="", $pass="") + { + $this->host=($host>"" ? $host : $this->config->host); + $this->name=($name>"" ? $name : $this->config->db); + $this->user=($user>"" ? $user : $this->config->user); + $this->pass=($pass>"" ? $pass : $this->config->password); + } + + private function connect() + { + if($this->connection) return; + + $this->connection=mysql_connect($this->host, $this->user, $this->pass); + + if(false===$this->connection) throw new Exception('Can\'t connect to db'); + + mysql_select_db($this->name, $this->connection); + mysql_query('SET CHARACTER SET UTF8', $this->connection); + mysql_query('SET NAMES \'UTF8\' ', $this->connection); + mysql_set_charset('utf8', $this->connection); + + if(mysql_error($this->connection)) throw new Exception(mysql_error($this->connection)); + } + + public function query($query) { + $this->connect(); + $this->queryString=$query; + $this->queryResult=mysql_query($query, $this->connection); + if(mysql_error($this->connection)) throw new Exception(mysql_error($this->connection).' Query: '.$this->queryString); + } + + public function fetchNext() { + $back=array(); + if($row=mysql_fetch_assoc($this->queryResult)) { + foreach($row as $key => $value) { + $row[$key]=stripslashes($value); + } + $back=$row; + return $back; + } + + return false; + } + + public function fetchAssoc() { + $back=array(); + while($row=mysql_fetch_assoc($this->queryResult)) { + foreach($row as $key => $value) { + $row[$key]=stripslashes($value); + } + $back[]=$row; + } + + return $back; + } + + public function getInsertedId() { + return mysql_insert_id($this->connection); + } + + public function select($table, $where=false, $offset=false, $limit=false, $order=false) { + $whereStr=''; + $limitStr=''; + $orderStr=''; + + if(is_array($where)) $whereStr='WHERE '.$this->whereMakerPriv($where); + elseif($where) $whereStr='WHERE '.$where; + + if(($offset!==false and $offset!==null)&&($limit!==false and $limit!==null)) { + $limitStr='LIMIT '.$offset.', '.$limit; + } + + if(is_array($order)) { + $orderStr='ORDER BY '; + foreach($order as $key => $value) { + $orderStr.=$key.' '.$value.' '; + } + } + elseif($order) $orderStr='ORDER BY '.$order; + + return $this->query('SELECT * FROM '.$table.' '.$whereStr.' '.$orderStr.' '.$limitStr); + } + + public function getProp($table, $func, $field, $where=false) { + $whereStr=''; + if(is_array($where)) $whereStr='WHERE '.$this->whereMakerPriv($where); + elseif($where) $whereStr='WHERE '.$where; + + $this->query('SELECT '.$func.'('.$field.') as p FROM '.$table.' '.$whereStr); + + $arr=$this->fetchAssoc(); + + return $arr[0]['p']; + } + + public function getCount($table, $field='id', $where=false) { + return $this->getProp($table, 'COUNT', $field, $where); + } + + public function getSum($table, $field='id', $where=false) { + return $this->getProp($table, 'SUM', $field, $where); + } + + public function getAvg($table, $field='id', $where=false) { + return $this->getProp($table, 'AVG', $field, $where); + } + + public function delete($table, $where=false) { + $whereStr=''; + if(is_array($where)) $whereStr='WHERE '.$this->whereMakerPriv($where); + elseif($where) $whereStr='WHERE '.$where; + + return $this->query('DELETE FROM '.$table.' '.$whereStr); + } + + public function update($table, $infoArr, $where=false) { + if(!is_array($infoArr)) { + return false; + } + + $whereStr=''; + $dataArr=array(); + $data=''; + if(is_array($where)) $whereStr='WHERE '.$this->whereMakerPriv($where); + elseif($where) $whereStr='WHERE '.$where; + + foreach($infoArr as $key => $value) { + $dataArr[]='`'.$key.'`="'.mysql_real_escape_string($value, $this->connection).'" '; + } + $data=implode(',',$dataArr); + + return $this->query('UPDATE '.$table.' SET '.$data.' '.$whereStr); + } + + public function insert($table, $infoArr) { + $this->connect(); + + $columArr=array(); + $valueArr=array(); + $colums=''; + $values=''; + + foreach($infoArr as $key => $value) { + $columArr[]='`'.$key.'`'; + $valueArr[]='"'.mysql_real_escape_string($value, $this->connection).'"'; + } + + $colums=implode(',',$columArr); + $values=implode(',', $valueArr); + + return $this->query('INSERT INTO '.$table.' ('.$colums.') VALUES ('.$values.')'); + } + + public function affectedRows() { + return mysql_affected_rows($this->connection); + } + + public function whereMakerPriv($where) { + if(!is_array($where)) return 1; + $this->connect(); + $back='1 '; + foreach($where as $key=>$value) { + if(is_array($value)) $back.='AND `'.$key.'`'.$value[0].'"'.$value[1].'" '; + else $back.='AND `'.$key.'`="'.mysql_real_escape_string($value, $this->connection).'" '; + } + return $back; + } + + public static function whereMaker($where) { + if(!is_array($where)) return 1; + $back='1 '; + foreach($where as $key=>$value) { + if(is_array($value)) $back.='AND `'.$key.'`'.$value[0].'"'.$value[1].'" '; + else $back.='AND `'.$key.'`="'.$value.'" '; + } + return $back; + } +} + +?> \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/helpers/TableHelper.class.php b/cadline/components/administrator/components/com_albanner/helpers/TableHelper.class.php new file mode 100644 index 00000000..0ef603b1 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/helpers/TableHelper.class.php @@ -0,0 +1,719 @@ +0,"FieldCount"=>0,"FieldName"=>array()); + public $ajax=false; + public $params=array( + "prefix"=>"ctb_", + "cbprefix"=>"cb", + "tablediv"=>"tablediv", + "ippvals"=>array("0"=>"none","1"=>"1","2"=>"2","3"=>"3","5"=>"5","10"=>"10","20"=>"20","50"=>"50","100"=>"100","200"=>"200","500"=>"500"), + "rowEffect"=>true, + "sort"=>false, + "border"=>"0", + "cellspacing"=>"0", + "cellpadding"=>"0", + "tablewidth"=>"100%", + "thheight"=>"30px", + "tdheight"=>"20px", + "pagerwidth"=>"380px", + "valign"=>"middle", + "linktarget"=>"_top", + "draganddrop"=>false, + "simple"=>false, + "footer"=>true, + "rowcounter"=>false, + "pageJump"=>true, + "downloadLink"=>false, + "csvExport"=>false, + "forceDownload"=>false, + "imagePreview"=>false, + "imagePreviewClass"=>'preview', + "toolTip"=>false, + "toolTipClass"=>'tooltip', + "ipp"=>"20", + "page"=>"1", + "order"=>"", + "vege"=>1, + "kezdet"=>1, + "lapozomax"=>5, + "decimal"=>2, + "event"=>'', + "value"=>'', + "tableclass"=>"", + "row0"=>"tds", // onmouseover sorszin + "row1"=>"even", // onmouseout sorszin1 + "row2"=>"odd", // onmouseout sorszin2 + "row_selected"=>"selected", // klikkel�ssel kijel�lt sor css oszt�lya + ); + + public $arrLang=array('ipp'=>'elem/lap','result'=>'Találat','results'=>'Találatok','pages'=>'Lapok','page'=>'Lap','record_result'=>'sor találat'); + + public $arrDownload=array('tbl'=>true,'separator'=>';','newline'=>"\r\n"); + + public function __construct() {} + + public function __destruct() {} + + function parseTable() { + $this->arrDownload['tbl']=( ($this->params['downloadLink'] and trim($_POST[$this->params["prefix"]."_download"])>'') ? false : true); + + if ($this->params['forceDownload']==true) $this->arrDownload['tbl']=false; // overwrite when forced download + + $tbl=&$this->arrDownload['tbl']; + if (!$tbl) { + $separator=&$this->arrDownload['separator']; + $newline=&$this->arrDownload['newline']; + } + + $eredm = $this->arrResult[0]; + if (isset($this->arrResult[1][0])) { + $sumrow=$this->arrResult[1][0]; + $sm=$sumrow; + if (isset($sm['recordCount'])) unset ($sm['recordCount']); + } + else { + $sumrow=$sm=array(); + } + + $this->dataset["FieldCount"]=((isset($eredm[0]) and count(array_keys($eredm[0]))) ? count(array_keys($eredm[0])) : 0 ) ; + $this->dataset["FieldName"]=((isset($eredm[0]) and is_array($eredm[0]) and count($eredm[0])) ? array_keys($eredm[0]) : array()); + $this->dataset["RecordCount"]=(isset($sumrow["recordCount"]) ? $sumrow["recordCount"] : 0); + + $mezok=(count($this->dataset["FieldName"]) ? $this->dataset["FieldName"] : array_keys($sm) ); + +// starting the table html string + $_str=''; + if ($tbl) { + $_str.='
params["tablewidth"]>'' ? ' style="width:'.$this->params["tablewidth"].';"' : '' ).'>' + .($this->params['simple'] ? '' : $this->addControllers()) + .''; + +// header row, row nb + $_str.=$this->addRow(array('valign'=>'middle')); + } + +// sor szamlalo + if ($this->params["rowcounter"]) { + $_str.=($tbl ? $this->addCell('th',array('width'=>'30px','height'=>$this->params['thheight'])).'Nb.' : '"Nb"'.$separator); + } + +// header th fields and order arrows + links + foreach ($mezok as $key=>$val) { + $field_name=(isset($this->column[$key]) ? $key : $val); + + if (!isset($this->column[$field_name]["visible"]) or $this->column[$field_name]["visible"]!==false) { + $thWidth=(isset($this->column[$field_name]["width"]) ? $this->column[$field_name]["width"] : ""); + $thHeight=(isset($this->column[$field_name]["height"]) ? $this->column[$field_name]["height"] : $this->params["thheight"]); + $fejlec=(isset($this->column[$field_name]["header"]) ? $this->column[$field_name]["header"] : $val); + + if ($tbl) { + $_str.=$this->addCell('th',array('width'=>$thWidth,'height'=>$thHeight,'valign'=>'middle')).''.$fejlec.''; + +// order arrows - default: visible + if (!isset($this->column[$field_name]["order"]) or (isset($this->column[$field_name]["order"]) and $this->column[$field_name]["order"])) { + $_str.=''; + } + $_str.=''; + } + else { + $_str.=($field_name!=='options' ? '"'.$fejlec.'"'.$separator : ''); + } + } + } + + if ($tbl) $_str.=''; + +// add part + $this->html_table=$_str.$newline; + +// row of the table + if (empty($eredm)) { + if ($tbl) $this->html_table.='' + .$this->addRow(array('class'=>$this->params["row1"],'row'=>1,'effect'=>$this->params['rowEffect'])) + .$this->addCell('td',array('align'=>'center','height'=>$this->params['tdheight'],'colspan'=>($this->params["rowcounter"] ? 1 : 0)+count($mezok) )) + .$this->dataset['RecordCount'].' '.$this->arrLang['record_result'].''; + } + else { + $_str=($tbl ? "" : ''); + + foreach ($eredm as $sorszam=>$sor) { + $cnt=0; + $nr=($this->params["ipp"]*($this->params["page"]-1)); + +// line begin + if ($tbl) $_str.=$this->addRow(array( + 'class'=>($sorszam%2 ? $this->params["row1"] : $this->params["row2"]), + 'row'=>($sor['id']), + 'effect'=>$this->params['rowEffect'], + ) ); + +// rowcounter + if ($this->params["rowcounter"]) { + $_str.=($tbl ? $this->addCell('td',array('align'=>'right','height'=>$this->params['tdheight'])).($nr+$sorszam+1)."" : '"'.($nr+$sorszam+1).'"'.$separator); + } + +// tovabbi oszlopok + foreach ($sor as $key=>$val) { + $field_name=(isset($this->column[$cnt]) ? $cnt : $key); + + if ($field_name=="sort" and $this->params["sort"] and $tbl) { +// sort nyilak + $ljid=(isset($this->column[$field_name]["linkjoin"]) ? $sor[$this->column[$field_name]["linkjoin"]] : (trim($val)>"" ? $val : "") ); + $_str.=$this->addCell('td',array('align'=>'center')) + .''.$val.''; + } + else { + if (!isset($this->column[$field_name]["visible"]) or $this->column[$field_name]["visible"]!==false) { + + if ($tbl) { + // cell begin + $_str.=$this->addCell('td', array( + 'align'=>(isset($this->column[$field_name]['align']) ? $this->column[$field_name]['align'] : (is_numeric($val) ? 'right' : 'left') ), + 'height'=>$this->params['tdheight'] + ) ); + + // link in cell + if (isset($this->column[$field_name]["link"])) { + $replace=(isset($this->column[$field_name]["linkjoin"]) ? $sor[$this->column[$field_name]["linkjoin"]] : (trim($val)>"" ? $val : "") ); + $title=(isset($this->column[$field_name]["linktitle"]) ? $sor[$this->column[$field_name]["linktitle"]] : (trim($val)>"" ? $val : "") ); + $_str.='column[$field_name]["link"]).'"' + .' target="'.(isset($this->column[$field_name]["target"]) ? $this->column[$field_name]["target"] : $this->params["linktarget"] ).'"' + .' title="'.strip_tags($title) + .'">'; + } + } + else { + $_str.=($field_name!=='options' ? '"': ''); + } + + // writing cell content in the given format + if (trim($val)>"") { + if ( $tbl and isset ($this->column[$field_name]["addicons"]) and is_array($this->column[$field_name]["addicons"]) ) { + $reszek=explode("|",$val); + foreach ($reszek as $resz) { + if (trim($resz)>'') { + if (isset($this->column[$field_name]["addicons"][$resz]["linkjoin"])) { + $replace=$sor[$this->column[$field_name]["addicons"][$resz]["linkjoin"]]; + } + else { + $replace=(isset($this->column[$field_name]["linkjoin"]) ? $sor[$this->column[$field_name]["linkjoin"]] : $val); + } + + $str='column[$field_name]['linkjoin']) and isset($this->column[$field_name]["addicons"][$resz]['href'])) ? ' href="'.str_replace('REPLACE',$replace,$this->column[$field_name]["addicons"][$resz]['href']).'"' : '' ) + .((isset($this->column[$field_name]['linkjoin']) and isset($this->column[$field_name]["addicons"][$resz]['onclick'])) ? ' onclick="'.str_replace('REPLACE',$replace,$this->column[$field_name]["addicons"][$resz]['onclick']) : '').'" title="' + .str_replace("\"", " ", ($resz=="smallView") ? (isset($this->column[$field_name]["addicons"][$resz]['alttext']) ? $sor[$this->column[$field_name]["addicons"][$resz]['alttext']] : "") : str_replace(array('small','medium','large'),'',$resz)).'"' + .(($resz=="smallView" and $this->params['imagePreview']) ? ' class="'.$this->params['imagePreviewClass'].'" ' : '') + .(($resz=="smallView" and $this->params['toolTip']) ? ' class="'.$this->params['toolTipClass'].'" ' : '') + .'>column[$field_name]["addicons"][$resz]['href'])) ? $this->column[$field_name]["addicons"]['smallMissingView']['img'] : $this->column[$field_name]["addicons"][$resz]['img'] ) .'" alt="' + .str_replace("\"", " ", ($resz=="smallView") ? (isset($this->column[$field_name]["addicons"][$resz]['alttext']) ? $sor[$this->column[$field_name]["addicons"][$resz]['alttext']] : "") : str_replace(array('small','medium','large'),'',$resz)).'" />'; + $val=str_replace($resz,$str,$val); + } + } + $_str.=str_replace('|',' ',$val); + } + elseif ( isset ($this->column[$field_name]["replacevalues"]) and is_array($this->column[$field_name]["replacevalues"]) ) { + $_str.=str_replace(array_keys($this->column[$field_name]["replacevalues"]),array_values($this->column[$field_name]["replacevalues"]),$val); + } + else { + if (isset($this->column[$field_name]["format"])) { + switch ($this->column[$field_name]["format"]) { + case "text" : { + $_str.=( (isset($this->column[$field_name]["strlen"]) and strlen($val)>$this->column[$field_name]["strlen"]) ? trim(mb_substr($val,0,$this->column[$field_name]["strlen"])).($tbl ? '…' : '...') : $val) ; + break; + } + case "time" : { + $_str.=DateTimeStatic::changeSecToTime($val); + break; + } + case "ratio" : { + $c1=$this->column[$field_name]['ratio'][0]; + $c2=$this->column[$field_name]['ratio'][1]; + $_str.=($sor[$c1]>0 ? '1' : '0').':'.($sor[$c1]>0 ? number_format($sor[$c2]/$sor[$c1], ($sor[$c2]<$sor[$c1] ? 2 : 0),'.',($tbl ? ',':' ') ) : $sor[$c2]); + break; + } + case "percent": { + $_str.=(!isset($this->column[$field_name]["decimal"]) ? number_format($val,$this->params["decimal"],'.',($tbl ? ',':' ')).'%' : number_format($val,$this->column[$field_name]["decimal"],'.',($tbl ? ',':' ')).'%' ); + break; + } + case "number" : { + $_str.=number_format($val,(isset($this->column[$field_name]["decimal"]) ? $this->column[$field_name]["decimal"] : $this->params["decimal"]),'.',($tbl ? ',':'')); + break; + } + case "link" : { + $_x='column[$field_name]["target"] : $this->params['linktarget']).'"' + .' title="'.(isset($this->column[$field_name]["linkjoin"]) ? $sor[$this->column[$field_name]["linkjoin"]] : $val).'">' + .((isset($this->column[$field_name]['strlen']) and strlen($val)>$this->column[$field_name]['strlen']) ? trim(mb_substr($val,0,$this->column[$field_name]['strlen'])).'…' : $val) + .''; + $_str.=($tbl ? $_x : strip_tags( str_replace('…','...',$_x) )); + break; + } + case "mailto" : { + $_x='' + .((isset($this->column[$field_name]['strlen']) and strlen($val)>$this->column[$field_name]['strlen']) ? trim(mb_substr($val,0,$this->column[$field_name]['strlen'])).'…' : $val) + .''; + $_str.=($tbl ? $_x : strip_tags( str_replace('…','...',$_x) )); + break; + } + case "openlink" : { + $_x='column[$field_name]["target"] : $this->params['linktarget']).'"' + .' title="'.$val.'">open' + .''; + $_str.=($tbl ? $_x : strip_tags( str_replace('open',$val,$_x) ) ); + break; + } + case "checkbox" : { + if ($tbl) { + $_str.=''; + } + else { + $_str.='x'; + } + break; + } + default : { + if (isset($this->column[$field_name]["strlen"]) and strlen($val)>$this->column[$field_name]["strlen"]) { + $_str.=trim(mb_substr($val, 0, $this->column[$field_name]["strlen"])).($tbl ? '…' : '...'); + } + elseif (is_numeric($val)) { + $_str.=(isset($this->column[$field_name]["decimal"]) ? number_format($val,$this->column[$field_name]["decimal"],($tbl ? ',':' ')) : number_format($val,$this->params["decimal"],($tbl ? ',':' '))); + } + else { + $_str.=$val; + } + break; + } + } + } + else { + if ($tbl or (!$tbl and $field_name!=='options')) { + $_str.=((isset($this->column[$field_name]['strlen']) and strlen($val)>$this->column[$field_name]['strlen']) ? trim(mb_substr($val,0,$this->column[$field_name]['strlen'])).($tbl ? '…' : '...') : $val); + } + } + } + } + else { + $_str.=($this->column[$field_name]["format"]=='number' ? 0 : " ") ; + } + + if ($tbl) { + if (isset($this->column[$field_name]["link"])) $_str.=""; + $_str.=""; + } + else { + $_str.=($field_name!=='options' ? '"'.$separator : ''); + } + $cnt++; + } + } + } + +// add part when a row is ready + $this->html_table.=($tbl ? $_str."" : $_str.$newline); + $_str=""; + } + if ($tbl) $this->html_table.=""; + } + +// tabla lablec + if ($this->params["footer"]) { + if ($tbl) $_strFooter="".$this->addRow(array('valign'=>'middle') ); + +// rowcounter (recordok szamat irja bele + if ($this->params["rowcounter"]) { + $_strFooter.=($tbl ? $this->addCell('th',array('height'=>$this->params['thheight'],'align'=>'right')).''.number_format($this->dataset["RecordCount"],0).'' : number_format($this->dataset["RecordCount"],0,'.',' ').$separator); + } + + foreach ($mezok as $key=>$val) { + $field_name=(isset($this->column[$key]) ? $key : $val); + + if (!isset($this->column[$field_name]["visible"]) or $this->column[$field_name]["visible"]!==false) { + if (isset($sumrow[$field_name])) { + if ($tbl) { + $_strFooter.=$this->addCell('th',array( + 'align'=>(isset($this->column[$field_name]["align"]) ? $this->column[$field_name]["align"] : (is_numeric($sumrow[$field_name]) ? 'right' : 'left') ), + 'height'=>$this->params['thheight'], + ) ).' '; + } + if (isset($this->column[$field_name]["format"])) { + switch ($this->column[$field_name]["format"]) { + case "time" : { + $_strFooter.=DateTimeStatic::changeSecToTime($sumrow[$field_name]); + break; + } + case "percent": { + $_strFooter.=number_format((double)$sumrow[$field_name],(!isset($this->column[$field_name]["decimal"]) ? $this->params["decimal"] : $this->column[$field_name]["decimal"]),'.',' ')."%"; + break; + } + case "number" : { + $_strFooter.=number_format((double)$sumrow[$field_name],(isset($this->column[$field_name]["decimal"]) ? $this->column[$field_name]["decimal"] : $this->params["decimal"]),'.',' '); + break; + } + default : { + $_strFooter.=$sumrow[$field_name]; + break; + } + } + } + else { + $_strFooter.=$sumrow[$field_name]; + } + $_strFooter.=($tbl ? "" : $separator); + } + else { + $_strFooter.=($tbl ? $this->addCell('th',array('height'=>$this->params['thheight']))." " : $separator); + } + } + } + $_strFooter.=($tbl ? "" : $newline); + } + +// Table end + $this->html_table.=((isset($_strFooter) and trim($_strFooter)>'') ? $_strFooter : ''); + if ($tbl) $this->html_table.="
"; + if ($tbl and $this->params["draganddrop"]) $this->html_table.=""; + if ($tbl and $this->params["imagePreview"]) $this->html_table.=""; + if ($tbl and $this->params["toolTip"]) $this->html_table.=""; + } + + + function addControllers() { + $str='' + .'' + .'' + .'' + .'' +// .($this->params["draganddrop"] ? '' : '') + .($this->params["downloadLink"] ? '' : '') + .'
params['tablewidth']>'' ? ' style="width:'.$this->params["tablewidth"].';" ' : '' ).'>' + .$this->addSelectFields($this->params["ipp"], '', $this->params["ippvals"], true, ' onchange="javascript:setField(\''.$this->params['prefix'].'\',\''.$this->params['prefix'].'_tableipp\',this.value,\''.$this->params['tablediv'].'\');" ') + .'

'.$this->arrLang['ipp'].'

' + .'

'.(($this->dataset["RecordCount"]==1)? $this->arrLang['result'] : $this->arrLang['results']).': '.number_format($this->dataset["RecordCount"],0).'

' + .(($this->params["downloadLink"] && $this->params["csvExport"]==false) ? "

Export: params['prefix']."','".$this->params['prefix']."_download',',','".$this->params['tablediv']."');\">CSV

" : "") + .(($this->params["downloadLink"] && $this->params["csvExport"]==true) ? "

Export: params['prefix'])."/csv\" target=\"_blank\">CSV | params['prefix'])."/xlsx\" target=\"_blank\">EXCEL

" : "") + .'

'.($this->params["ipp"]>0 ? $this->AddPager() :'').'

' + .'
'; + return $str; + } + + /** + * Adds a 'tr' tag to the table + * + * @param array $params['valign'] + * @param array $params['class'] + * @param array $params['row'] + * @param array $params['effect'] - optional, default: true - selects the clicked row + */ + function addRow($params=array()) { + if (!isset($params['effect'])) $params['effect']=true; + $str=''') ? ' valign="'.$params['valign'].'"' : ' valign="middle"') + .(isset($params['row']) ? ' id="'.(int)$params['row'].'"' : '') + .((isset($params['class']) and $params['class']) ? ' class="'.$params['class'].'"' : '') + .((isset($params['effect']) and $params['effect'] and isset($params['row']) and !$this->params['draganddrop']) ? '' : '') + .($this->params['draganddrop'] ? 'style="cursor: move;"' : "") + .'>'; + return $str; + } + + + /** + * + * @param string $type ('td','th') + * @param array $params['align'] + * @param array $params['width'] + * @param array $params['height'] + * @param array $params['class'] + */ + function addCell($type='td',$params=array()) { + $str='<'.$type + .(isset($params["valign"]) ? ' valign="'.$params["valign"].'"' : '' ) + .(isset($params["colspan"]) ? ' colspan="'.$params["colspan"].'"' : '' ) + .(isset($params["rowspan"]) ? ' rowspan="'.$params["rowspan"].'"' : '' ) + .' style="' + .((isset($params["align"]) and $params["align"])>'' ? ' text-align:'.$params["align"].';' : '') + .((isset($params['width']) and $params['width'])>'' ? ' width:'.$params['width'].';' : '') + .((isset($params['height']) and $params["height"])>'' ? ' height:'.$params["height"].';' : '').'"' + .((isset($params['class']) and $params['class'])>'' ? ' class="'.$params["class"].'"' : '') + .'>'; + return $str; + } + + + function addPager() { + $lapok=(($this->params["ipp"]=="-1" or $this->params["ipp"]=="0") ? 1 : ceil($this->dataset["RecordCount"]/$this->params["ipp"])); + $_lap=&$this->params["page"]; + $vege=&$this->params["vege"]; + $kezdet=&$this->params["kezdet"]; + $lapozomax=&$this->params["lapozomax"]; + $lapozoszel=round(($this->params["lapozomax"]-1)/2); + + if ($_lap==1) { // ha az elso lapon vagyunk + $kezdet = 1; + ($lapok>=$lapozomax) ? $vege=$lapozomax: $vege=$lapok; + } + elseif ($_lap>1 and $_lap<$lapok) { // koztes lapon vagyunk + if ($lapok>=$lapozomax) { // csonkolni kell + if ($_lap-$lapozoszel<=1) { // minuszba log + $kezdet = 1; + $vege=$lapozomax; + } + elseif ($_lap-$lapozoszel>1 and $_lap+$lapozoszel<=$lapok) { // kozepen van + $kezdet=$_lap-$lapozoszel; + $vege=$_lap+$lapozoszel; + } + elseif ($_lap+$lapozoszel>$lapok) { // pluszba log + $vege=$lapok; + ($lapok-$lapozomax) ? $kezdet=$lapok-$lapozomax+1 : $kezdet=1; + } + } + else { // nem kell csonkolni, mert belefer a $lapok szama a $lapozomax-ba + $kezdet=1; + $vege=$lapok; + } + } + elseif ($_lap==$lapok) { // ha az utolso lapon vagyunk + $vege=$lapok; + ($lapok-$lapozomax>0) ? $kezdet=$lapok-$lapozomax+1 : $kezdet=1; + } + + ($_lap-1>0) ? $prev=$_lap-1 : $prev=1; + ($_lap+1>$lapok) ? $next=$_lap : $next=$_lap+1; + + + $lapozo ='
    ' + .'
  • '.$this->arrLang['pages'].' '.$this->params["page"].' / '.$lapok.'

  • ' + .$this->addPagerLink(1,"«", false) + .$this->addPagerLink($prev,"‹", false) + .( ($this->params["lapozomax"]<$lapok and $this->params['pageJump'])? $this->addPagerLink( ($this->params["page"]-$this->params["lapozomax"]<0 ? 1 : $this->params["page"]-$this->params["lapozomax"]), '…', false) : ''); + for ($i=$kezdet; $i<=$vege; $i++) $lapozo.=$this->addPagerLink($i,$i); + $lapozo.=(($this->params["lapozomax"]<$lapok and $this->params['pageJump']) ? $this->addPagerLink( ($this->params["page"]+$this->params["lapozomax"]>$lapok ? $lapok : $this->params["page"]+$this->params["lapozomax"]), "…", false) : '') + .$this->addPagerLink($next,"›", false) + .$this->addPagerLink($lapok,"»", false) + .'
'; + return $lapozo; + } + + + /** + * + * @param int $page - azt jelenti, hogy hanyadik oldalra ugorjon + * @param string $felirat - dobozban levo felirat (szamok, nyilak) + * @param boolean $effect - legyen-e rajta effect vagy ne + */ + function addPagerLink($page=0, $felirat="", $effect=true) { + $js="javascript:setField('".$this->params['prefix']."','".$this->params['prefix']."_tablepage','".$page."','".$this->params['tablediv']."');"; + $str='
  • params["page"]==$page and $effect) ? ' class="activepage" ' : '').'>'.$felirat.'
  • '; + return $str; + } + + + /** + * Makes a selectfield + * + * @param string $selected - selected value + * @param string $selectname - id of the DOM element + * @param array $selectarray - option values + * @param boolean $assoc - marks that the array is an associative or not + * @param string $style - style string + */ + function addSelectFields($selected="", $selectname="", $selectarray=array(), $assoc=true, $style="") { + $str =''; + return $str; + } + + + /** + * Sets the Queries and runs them + * The results will be in the $this->arrResult array + * + * @param array $new + */ + function setQuery($new=array()) { + if (!empty($new) and is_array($new)) { + $this->arrQuery=$new; + foreach ($this->arrQuery as $k=>$v) { + $this->arrResult[$k]=$this->runQuery($v); + if(empty($this->arrResult[$k])) { + if(preg_match("/LIMIT [0-9]+/", $v)) { + $v=preg_replace("/LIMIT [0-9]+/", 'LIMIT 0', $v); + $this->arrQuery[$k]=$v; + $this->arrResult[$k]=$this->runQuery($v); + } + } + } + } + } + + function setOrderNull($tomb=array(), $strOrder="") { + $setOrderNull=true; + foreach ($tomb as $key=>$val) + { + if ( strpos($strOrder, $val)!==false ) { $setOrderNull=false; break; } + } + return ($setOrderNull); + } + + + /** + * Sets the Sessions from the _POST-ed values + * tableipp, tablepage, tableorder + */ + function setSession() { + if (isset($_POST[$this->params["prefix"]."_tableipp"])) { + if ($_POST[$this->params["prefix"]."_tableipp"]=='-1') $_SESSION[$this->params["prefix"]]["tableipp"] = -1; + elseif ($_POST[$this->params["prefix"]."_tableipp"]=='none') $_SESSION[$this->params["prefix"]]["tableipp"] = 0; + else $_SESSION[$this->params["prefix"]]["tableipp"] = (int)$_POST[$this->params["prefix"]."_tableipp"]; + $this->setParams(array("ipp"=>$_SESSION[$this->params["prefix"]]["tableipp"])); + } + else { + if (!isset($_SESSION[$this->params["prefix"]]["tableipp"])) { + $_SESSION[$this->params["prefix"]]["tableipp"]=$this->params["ipp"]; + } + } + if (isset($_POST[$this->params["prefix"]."_tablepage"])) { + $_SESSION[$this->params["prefix"]]["tablepage"] = (int)$_POST[$this->params["prefix"]."_tablepage"]; + $this->setParams(array("page"=>$_SESSION[$this->params["prefix"]]["tablepage"])); + } + else { + if (!isset($_SESSION[$this->params["prefix"]]["tablepage"])) { + $_SESSION[$this->params["prefix"]]["tablepage"]=$this->params["page"]; + } + } + if (isset($_POST[$this->params["prefix"]."_tableorder"])) { + $_SESSION[$this->params["prefix"]]["tableorder"] = trim(addslashes((string)$_POST[$this->params["prefix"]."_tableorder"])); + $this->setParams(array("order"=>$_SESSION[$this->params["prefix"]]["tableorder"])); + } + + if (!isset($_POST[$this->params["prefix"]."_tableipp"]) and !isset($_POST[$this->params["prefix"]."_tablepage"]) and !isset($_POST[$this->params["prefix"]."_tableorder"]) and + isset($_SESSION[$this->params["prefix"]]["tableipp"]) and isset($_SESSION[$this->params["prefix"]]["tablepage"]) and isset($_SESSION[$this->params["prefix"]]["tableorder"]) ) { + $this->setParams(array( + "ipp"=>$_SESSION[$this->params["prefix"]]["tableipp"], + "page"=>$_SESSION[$this->params["prefix"]]["tablepage"], + "order"=>$_SESSION[$this->params["prefix"]]["tableorder"], + )); + } + return $_SESSION[$this->params['prefix']]; + } + + + /** + * Sets the parameters of the column + * + * @param string $oszlopszam + * @param array $tomb + */ + function setColumn($oszlopnev=null, $tomb=array()) { + if ($oszlopnev!==null and !empty($tomb)) { + $this->column[$oszlopnev]=$tomb; + } + } + + + /** + * Sets the params array with the given values + * + * @param array $tomb + */ + function setParams($tomb=array()) { + if (!empty($tomb)) { + foreach ($tomb as $k=>$v) { + if (isset($this->params[$k])) { + $this->params[$k]=$v; + } + } + } + } + + + /** + * Sets all inner values to the default + */ + function setDefault() { + $this->html_table=""; + $this->arrQuery=array(); + $this->arrResult=array(); + $this->column=array(); + $this->dataset=array("RecordCount"=>0,"FieldCount"=>0,"FieldName"=>array()); + } + + + /** + * Runs the Query string, and returns the result + * + * @param string $strQuery + * @return result $res + */ + function runQuery($strQuery='') { + $res=false; + if ($strQuery>'') + { + MySqlHelper::getInstance()->query($strQuery); + $res=MySqlHelper::getInstance()->fetchAssoc(); +/* + $msh=New MySqlHelper(); + $msh->init('localhost','dev_cadline_hu','mycadline','Shea6hoo'); + $msh->query($strQuery); + $res=$msh->fetchAssoc(); +*/ + } + return $res; + } + + + /** + * Draws the table + * param=true => echo content + * param=false => return content + * + * @param boolean $print + */ + function drawTable($print=true){ + $this->parseTable(); + + if ($print) + { + echo $this->html_table; + } + else + { + return $this->html_table; + } + } +} +?> \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/helpers/albanner.php b/cadline/components/administrator/components/com_albanner/helpers/albanner.php new file mode 100644 index 00000000..d313f556 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/helpers/albanner.php @@ -0,0 +1,24 @@ + + * @copyright 2017 Zsolt Fekete + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ +// No direct access +defined('_JEXEC') or die; + +/** + * Albanner helper. + * + * @since 1.6 + */ +class AlbannerHelper +{ + public static function addSubmenu($vName = '') + { + + } +} \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/helpers/index.html b/cadline/components/administrator/components/com_albanner/helpers/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/helpers/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/index.html b/cadline/components/administrator/components/com_albanner/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/models/banners.php b/cadline/components/administrator/components/com_albanner/models/banners.php new file mode 100644 index 00000000..77de60dd --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/models/banners.php @@ -0,0 +1,28 @@ +count) ) + { + $db=JFactory::getDBO(); + $db->setQuery("SELECT COUNT(*) AS darab FROM ".$this->tabla." v;"); + $tmp=$db->loadObjectList(); + $this->count=$tmp[0]->darab; + } + return $this->count; + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos( $_SERVER['HTTP_HOST'], ".com") ? "eng" : "hun"); } + return $this->lang; + } +} \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/models/edit.php b/cadline/components/administrator/components/com_albanner/models/edit.php new file mode 100644 index 00000000..91adab81 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/models/edit.php @@ -0,0 +1,99 @@ +dbCRM)) + { + require($_SERVER['DOCUMENT_ROOT'].'/maintenance/config.crm.php'); + $this->dbCRM=$dbCRM; + } + return($this->dbCRM); + } + + public function getCRMctrCode() + { + $crm=JDatabaseDriver::getInstance($this->getCRMConfig()); + $crm->setQuery("SELECT DISTINCT(LEFT(prPass,2)) AS ctrCode FROM `h_programs` WHERE LEFT(prPass,2) IS NOT NULL ORDER BY LEFT(prPass,2);"); + $tmp=$crm->loadObjectList(); + return (empty($tmp) ? NULL : $tmp); + } + + public function getCRMprgVersion() + { + $crm=JDatabaseDriver::getInstance($this->getCRMConfig()); + $crm->setQuery("SELECT DISTINCT(verPassword8and9) AS verCode,verName FROM `p_versions` WHERE verPassword8and9>33;"); + $tmp=$crm->loadObjectList(); + return (empty($tmp) ? NULL : $tmp); + } + + public function getItem($id=0) + { + if ((int)$id>0) + { + $db=JFactory::getDBO(); + $db->setQuery("SELECT * FROM ".$this->tabla." WHERE id=".(int)$id." LIMIT 1;"); + $tmp=$db->loadObjectList(); + $this->item=$tmp[0]; + } + return $this->item; + } + + + + public function saveItem($item=NULL,$id=NULL) + { + $values=array(); + + if (is_array($item)) + { + $db=JFactory::getDbo(); + $user=JFactory::getUser(); + $query=$db->getQuery(true); + + if ($id) + { + $item['mod_datetime']=date('Y-m-d H:i:s'); + $item['mod_user']=$user->id; + $item['mod_ip']=$_SERVER['REMOTE_ADDR']; + + foreach ($item as $k=>$v) $values[]=$db->quoteName($k)."=".$db->quote($v); + + $query->update($db->quoteName($this->tabla))->set($values)->where(array('`id`='.(int)$id)); + $db->setQuery($query); + $result=$db->execute(); + } + else + { + $item['add_datetime']=date('Y-m-d H:i:s'); + $item['add_user']=$user->id; + $item['add_ip']=$_SERVER['REMOTE_ADDR']; + $item['mod_datetime']=date('Y-m-d H:i:s'); + $item['mod_user']=$user->id; + $item['mod_ip']=$_SERVER['REMOTE_ADDR']; + + foreach ($item as $v) $values[]=$db->quote($v); + + $query->insert($db->quoteName($this->tabla))->columns($db->quoteName(array_keys($item)))->values(implode(',', $values)); + $db->setQuery($query); + $db->execute(); + $result=$db->insertid(); + } + return ($result); + } + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos( $_SERVER['HTTP_HOST'], ".com") ? "eng" : "hun"); } + return $this->lang; + } +} \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/models/index.html b/cadline/components/administrator/components/com_albanner/models/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/models/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/models/list.php b/cadline/components/administrator/components/com_albanner/models/list.php new file mode 100644 index 00000000..413aff7b --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/models/list.php @@ -0,0 +1,28 @@ +count) ) + { + $db=JFactory::getDBO(); + $db->setQuery("SELECT COUNT(*) AS darab FROM ".$this->tabla." v;"); + $tmp=$db->loadObjectList(); + $this->count=$tmp[0]->darab; + } + return $this->count; + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos( $_SERVER['HTTP_HOST'], ".com") ? "eng" : "hun"); } + return $this->lang; + } +} \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/models/test.php b/cadline/components/administrator/components/com_albanner/models/test.php new file mode 100644 index 00000000..29ed2ad8 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/models/test.php @@ -0,0 +1,43 @@ +dbCRM)) + { + require($_SERVER['DOCUMENT_ROOT'].'/maintenance/config.crm.php'); + $this->dbCRM=$dbCRM; + } + return($this->dbCRM); + } + + public function getCRMctrCode() + { + $crm=JDatabaseDriver::getInstance($this->getCRMConfig()); + $crm->setQuery("SELECT DISTINCT(LEFT(prPass,2)) AS ctrCode FROM `h_programs` WHERE LEFT(prPass,2) IS NOT NULL ORDER BY LEFT(prPass,2);"); + $tmp=$crm->loadObjectList(); + return (empty($tmp) ? NULL : $tmp); + } + + public function getCRMprgVersion() + { + $crm=JDatabaseDriver::getInstance($this->getCRMConfig()); + $crm->setQuery("SELECT DISTINCT(verPassword8and9) AS verCode,verName FROM `p_versions` WHERE verPassword8and9>33;"); + $tmp=$crm->loadObjectList(); + return (empty($tmp) ? NULL : $tmp); + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos( $_SERVER['HTTP_HOST'], ".com") ? "eng" : "hun"); } + return $this->lang; + } +} \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/sql/index.html b/cadline/components/administrator/components/com_albanner/sql/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/sql/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/sql/install.mysql.utf8.sql b/cadline/components/administrator/components/com_albanner/sql/install.mysql.utf8.sql new file mode 100644 index 00000000..e69de29b diff --git a/cadline/components/administrator/components/com_albanner/sql/uninstall.mysql.utf8.sql b/cadline/components/administrator/components/com_albanner/sql/uninstall.mysql.utf8.sql new file mode 100644 index 00000000..e69de29b diff --git a/cadline/components/administrator/components/com_albanner/sql/update.mysql.utf8.sql b/cadline/components/administrator/components/com_albanner/sql/update.mysql.utf8.sql new file mode 100644 index 00000000..e69de29b diff --git a/cadline/components/administrator/components/com_albanner/views/banners/index.html b/cadline/components/administrator/components/com_albanner/views/banners/index.html new file mode 100644 index 00000000..fa6d84e8 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/banners/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/banners/tmpl/default.php b/cadline/components/administrator/components/com_albanner/views/banners/tmpl/default.php new file mode 100644 index 00000000..3016b113 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/banners/tmpl/default.php @@ -0,0 +1,9 @@ + +
    + +
    +: count?> +
    \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/banners/tmpl/default.xml b/cadline/components/administrator/components/com_albanner/views/banners/tmpl/default.xml new file mode 100644 index 00000000..e5185a58 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/banners/tmpl/default.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/banners/tmpl/index.html b/cadline/components/administrator/components/com_albanner/views/banners/tmpl/index.html new file mode 100644 index 00000000..fa6d84e8 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/banners/tmpl/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/banners/view.html.php b/cadline/components/administrator/components/com_albanner/views/banners/view.html.php new file mode 100644 index 00000000..e8aec571 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/banners/view.html.php @@ -0,0 +1,28 @@ +addStyleSheet('/administrator/components/'.JFactory::getApplication()->input->get('option').'/assets/css/style.css'); + + $model=$this->getModel(); + + $this->count=$model->getCount(); + + $this->addToolBar(); + + parent::display($tpl); + } + + protected function addToolBar() + { + JToolBarHelper::title(JText::_('COM_ALBANNER').' - '.JText::_('COM_ALBANNER_CONTROL_PANER')); + } +} +?> \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/edit/index.html b/cadline/components/administrator/components/com_albanner/views/edit/index.html new file mode 100644 index 00000000..fa6d84e8 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/edit/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/edit/tmpl/default.php b/cadline/components/administrator/components/com_albanner/views/edit/tmpl/default.php new file mode 100644 index 00000000..bc31f8dc --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/edit/tmpl/default.php @@ -0,0 +1,158 @@ + +
    + +
    +
    +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    + +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    + +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    + +
    + + + editor->display('message',$this->item->message,'100%','150','50','15',false)?>
    + +
    + +
    + + + + + +
    +
    + + item->id>0) :?> + + + + +
    + + + + + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/edit/tmpl/index.html b/cadline/components/administrator/components/com_albanner/views/edit/tmpl/index.html new file mode 100644 index 00000000..fa6d84e8 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/edit/tmpl/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/edit/view.html.php b/cadline/components/administrator/components/com_albanner/views/edit/view.html.php new file mode 100644 index 00000000..66a104b5 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/edit/view.html.php @@ -0,0 +1,62 @@ +addStyleSheet('/administrator/components/'.JFactory::getApplication()->input->get('option').'/assets/css/style.css'); + $model=$this->getModel(); + + $this->id=(int)$_GET['id']; + + if (isset($_POST['save']) || isset($_POST['saveexit']) || isset($_POST['savenew'])) + { + $tomb=array( + "pattern"=>(isset($_POST["pattern"]) && $_POST["pattern"]>"" ? trim($_POST["pattern"]) : ""), + "message"=>(isset($_POST["message"]) && $_POST["message"]>"" ? trim($_POST["message"]) : ""), + "link"=>(isset($_POST["link"]) && $_POST["link"]>"" ? trim($_POST["link"]) : ""), + "lang"=>(isset($_POST["lang"]) && $_POST["lang"]>"" ? trim(strtolower($_POST["lang"])) : "eng"), + "priority"=>(int)$_POST["priority"], + "from_datetime"=>(isset($_POST["from_datetime"]) && $_POST["from_datetime"]>"" ? trim($_POST["from_datetime"]) : date('Y-m-d',time())).' 00:00:00', + "end_datetime"=>(isset($_POST["end_datetime"]) && $_POST["end_datetime"]>"" ? trim($_POST["end_datetime"]) : date('Y-m-d',time())).' 23:59:59', + "published"=>(isset($_POST["published"]) && $_POST["published"]>"" ? trim($_POST["published"]) : 'N'), + ); + + if ($this->id) + { + $model->saveItem($tomb,$this->id); + } + else + { + $newID=$model->saveItem($tomb,NULL); + } + + if (isset($_POST['save']) && !$this->id) { JFactory::getApplication()->redirect('index.php?option='.JFactory::getApplication()->input->get('option').'&view=edit&id='.$newID); } + if (isset($_POST['savenew'])) { JFactory::getApplication()->redirect('index.php?option='.JFactory::getApplication()->input->get('option').'&view=edit&id=0'); } + if (isset($_POST['saveexit'])){ JFactory::getApplication()->redirect('index.php?option='.JFactory::getApplication()->input->get('option').'&view=list'); } + } + + $this->item=$model->getItem($this->id); + $this->ctrCode=$model->getCRMctrCode(); + $this->prgCode=$model->getCRMprgVersion(); + $this->ctrCodeSel=substr($this->item->pattern, 0, 2); + $this->prgTypeSel=substr($this->item->pattern, 6, 1); + $this->prgCodeSel=substr($this->item->pattern, 7, 2); + $this->editor=&JFactory::getEditor(); + $this->addToolBar(); + + parent::display($tpl); + } + + protected function addToolBar() + { + JToolBarHelper::title(JText::_('COM_ALBANNER').' - '.($this->id=="0" ? jText::_('COM_ALBANNER_NEW') : jText::_('COM_ALBANNER_EDIT').": ".$this->id )); + } +} +?> \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/index.html b/cadline/components/administrator/components/com_albanner/views/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/list/index.html b/cadline/components/administrator/components/com_albanner/views/list/index.html new file mode 100644 index 00000000..fa6d84e8 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/list/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/list/tmpl/default.php b/cadline/components/administrator/components/com_albanner/views/list/tmpl/default.php new file mode 100644 index 00000000..9aeaec79 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/list/tmpl/default.php @@ -0,0 +1,110 @@ + + + +
    + +
    +
    +
    +
    + + +
    + +
    + + +
    + +
    + + +
    +
    + +
    +
    + + +
    + +
    + + +
    + +
    + +
    + + + +
    +
    +
    + +
    +
    + + +
    + +
    + + +
    + +
    + + +
    +
    + + +
    + +
    +
    + + + + +
    +
    + +
    + +
    +
    +
    + + + + + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/list/tmpl/index.html b/cadline/components/administrator/components/com_albanner/views/list/tmpl/index.html new file mode 100644 index 00000000..fa6d84e8 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/list/tmpl/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/list/view.html.php b/cadline/components/administrator/components/com_albanner/views/list/view.html.php new file mode 100644 index 00000000..04acf379 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/list/view.html.php @@ -0,0 +1,28 @@ +addStyleSheet('/administrator/components/'.JFactory::getApplication()->input->get('option').'/assets/css/style.css'); + JFactory::getDocument()->addScript('/administrator/components/'.JFactory::getApplication()->input->get('option').'/assets/js/ajax.js'); + JFactory::getDocument()->addScript('/administrator/components/'.JFactory::getApplication()->input->get('option').'/assets/js/main.js'); + + $model=$this->getModel(); + $this->addToolBar(); + + parent::display($tpl); + } + + protected function addToolBar() + { + JToolBarHelper::title(JText::_('COM_ALBANNER').' - '.JText::_('COM_ALBANNER_LIST')); + JToolBarHelper::back(JText::_('COM_ALBANNER_NEW'), 'index.php?option='.JFactory::getApplication()->input->get('option').'&view=edit&id=0'); + } +} +?> \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/test/index.html b/cadline/components/administrator/components/com_albanner/views/test/index.html new file mode 100644 index 00000000..fa6d84e8 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/test/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/test/tmpl/default.php b/cadline/components/administrator/components/com_albanner/views/test/tmpl/default.php new file mode 100644 index 00000000..1065622c --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/test/tmpl/default.php @@ -0,0 +1,99 @@ + +
    + +
    +
    +
    +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + + +
    + +
    +
    + + +
    + +
    + + +
    +
    + +
    + +
    +
    + + +
    +
    +
    + + + URL?>

    +
    + + +
    + + diff --git a/cadline/components/administrator/components/com_albanner/views/test/tmpl/index.html b/cadline/components/administrator/components/com_albanner/views/test/tmpl/index.html new file mode 100644 index 00000000..fa6d84e8 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/test/tmpl/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_albanner/views/test/view.html.php b/cadline/components/administrator/components/com_albanner/views/test/view.html.php new file mode 100644 index 00000000..e420a079 --- /dev/null +++ b/cadline/components/administrator/components/com_albanner/views/test/view.html.php @@ -0,0 +1,31 @@ +addStyleSheet('/administrator/components/'.JFactory::getApplication()->input->get('option').'/assets/css/style.css'); + JFactory::getDocument()->addScript('/administrator/components/'.JFactory::getApplication()->input->get('option').'/assets/js/ajax.js'); + JFactory::getDocument()->addScript('/administrator/components/'.JFactory::getApplication()->input->get('option').'/assets/js/main.js'); + + $model=$this->getModel(); + $this->ctrCode=$model->getCRMctrCode(); + $this->prgCode=$model->getCRMprgVersion(); + $this->ctrCodeSel=substr($_POST['pattern'], 0, 2); + $this->prgTypeSel=substr($_POST['pattern'], 6, 1); + $this->prgCodeSel=substr($_POST['pattern'], 7, 2); + $this->URL="https://www.archlinexp.com/maintenance/banner.php?serial=".base64_encode($_POST['pattern'])."&build=".base64_encode($_POST['build'])."&lang=".$_POST['lang']; + $this->addToolBar(); + + parent::display($tpl); + } + + protected function addToolBar() + { + JToolBarHelper::title(JText::_('COM_ALBANNER').' - '.JText::_('COM_ALBANNER_TEST')); + } +} +?> \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/access.xml b/cadline/components/administrator/components/com_alworkshops/access.xml new file mode 100644 index 00000000..00c7f139 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/access.xml @@ -0,0 +1,13 @@ + + +
    + + + + + + + +
    + +
    \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/alworkshops.php b/cadline/components/administrator/components/com_alworkshops/alworkshops.php new file mode 100644 index 00000000..e90a925e --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/alworkshops.php @@ -0,0 +1,28 @@ + + * @copyright 2017 Zsolt Fekete + * @license GNU General Public License version 2 or later; see LICENSE.txt + */ + +error_reporting(E_ERROR | E_PARSE); + +// No direct access +defined('_JEXEC') or die; + +// Access check. +if (!JFactory::getUser()->authorise('core.manage', 'com_alworkshops')) +{ + throw new Exception(JText::_('JERROR_ALERTNOAUTHOR')); +} + +// Include dependancies +jimport('joomla.application.component.controller'); + +JLoader::registerPrefix('Alworkshops', JPATH_COMPONENT_ADMINISTRATOR); + +$controller = JControllerLegacy::getInstance('Alworkshops'); +$controller->execute(JFactory::getApplication()->input->get('task')); +$controller->redirect(); diff --git a/cadline/components/administrator/components/com_alworkshops/alworkshops.xml b/cadline/components/administrator/components/com_alworkshops/alworkshops.xml new file mode 100644 index 00000000..67681758 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/alworkshops.xml @@ -0,0 +1,49 @@ + + + com_alworkshops + 2017-04-14 + 2017 Zsolt Fekete + GNU General Public License version 2 or later; see LICENSE.txt + Zsolt Fekete + mcleod78@gmail.com + https://www.facebook.com/mcleod78 + CVS: 1.0.0 + Manage workshops + + + COM_ALWORKSHOPS + + COM_ALWORKSHOPS_CONTROL_PANEL_HELP + COM_ALWORKSHOPS_APPLICATIONS + COM_ALWORKSHOPS_COURSES + COM_ALWORKSHOPS_SESSIONS + COM_ALWORKSHOPS_SWITCH + COM_ALWORKSHOPS_ONLINE_SESSIONS + + + + access.xml + config.xml + controller.php + index.html + alworkshops.php + assets + helpers + models + views + + + en-GB/en-GB.com_alworkshops.ini + en-GB/en-GB.com_alworkshops.sys.ini + hu-HU/hu-HU.com_alworkshops.ini + hu-HU/hu-HU.com_alworkshops.sys.ini + + + + +
    + +
    +
    +
    +
    diff --git a/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxApplicationController.class.php b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxApplicationController.class.php new file mode 100644 index 00000000..d8170436 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxApplicationController.class.php @@ -0,0 +1,157 @@ +pf]["_POST"]=$_POST; + if (isset($_POST['targetdiv'])) $this->targetdiv=$_POST['targetdiv']; + if (!isset($_SESSION[$this->pf]['tableorder']) || trim($_SESSION[$this->pf]['tableorder'])=='' ) $_SESSION[$this->pf]['tableorder']='a.id DESC'; + + $se=&$_SESSION[$this->pf]['_POST']; + $felt=" AND s.`lang`='".($this->getLang()=='hu-HU' ? 'hun' : 'eng')."' "; + $arrIcons=array( + 'smallDel'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','delete','".$this->targetdiv."');setField('".$this->pf."','".$this->pf."_value','REPLACE','".$this->targetdiv."');}",'img'=>IconHelper::getIcon("smallDel") ), + 'smallEnable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','disable','".$this->targetdiv."');setField('".$this->pf."','".$this->pf."_value','REPLACE','".$this->targetdiv."');}","img"=>IconHelper::getIcon("smallEnable") ), + 'smallDisable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','enable','".$this->targetdiv."');setField('".$this->pf."','".$this->pf."_value','REPLACE','".$this->targetdiv."');}",'img'=>IconHelper::getIcon("smallDisable") ), + 'smallEdit'=>array("href"=>"index.php?option=com_alworkshops&view=applicationedit&id=REPLACE", "img"=>IconHelper::getIcon("smallEdit"), "linkjoin"=>"id","alttext"=>"Edit" ), + ); + $_LANG=parse_ini_file($_SERVER['DOCUMENT_ROOT']."/administrator/language/".$this->getLang()."/".$this->getLang().".com_alworkshops.ini"); + + if (isset($_POST[$this->pf.'_event']) and trim($_POST[$this->pf.'_event'])>'') + { + $event=trim(strtolower(addslashes((string)$_POST[$this->pf.'_event']))); + $value=trim(strtolower(addslashes((string)$_POST[$this->pf.'_value']))); + if ((int)$value>0) + { + switch ($event) + { + case 'enable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='Y' WHERE id=".$value);break; } + case 'disable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='N' WHERE id=".$value);break; } + case 'delete' : { MySqlHelper::getInstance()->query("DELETE FROM ".TABLE." WHERE id=".$value." LIMIT 1;");break; } + } + } + } + + if (isset($se['aid']) && $se['aid']>"") + { + if (strpos($se['aid'], "-")) + { + $reszek=explode("-", $se['aid']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND a.id>=".(int)$reszek[0]." AND a.id<=".(int)$reszek[1] : " AND a.id>=".(int)$reszek[1]." AND a.id<=".(int)$reszek[0]); + } + else + { + $felt.=" AND a.id=".(int)$se['aid']; + } + } + if (isset($se['wid']) && $se['wid']>"") + { + if (strpos($se['wid'], "-")) + { + $reszek=explode("-", $se['wid']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND c.id>=".(int)$reszek[0]." AND c.id<=".(int)$reszek[1] : " AND c.id>=".(int)$reszek[1]." AND c.id<=".(int)$reszek[0]); + } + else + { + $felt.=" AND c.id=".(int)$se['wid']; + } + } + if (isset($se['uid']) && $se['uid']>"") + { + if (strpos($se['uid'], "-")) + { + $reszek=explode("-", $se['uid']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND a.user_id>=".(int)$reszek[0]." AND a.user_id<=".(int)$reszek[1] : " AND a.user_id>=".(int)$reszek[1]." AND a.user_id<=".(int)$reszek[0]); + } + else + { + $felt.=" AND a.user_id=".(int)$se['uid']; + } + } + if (isset($se['title']) && $se['title']>"") $felt.=" AND c.title LIKE '%".trim($se['title'])."%' "; + if (isset($se['name']) && $se['name']>"") $felt.=" AND u.name LIKE '%".trim($se['name'])."%' "; + if (isset($se['email']) && $se['email']>"") $felt.=" AND u.email LIKE '%".trim($se['email'])."%' "; + if (isset($se['start_date']) && $se['start_date']>"") $felt.=" AND c.start_date>='".trim($se['start_date'])."'"; + if (isset($se['finish_date']) && $se['finish_date']>"") $felt.=" AND c.finish_date<='".trim($se['finish_date'])."'"; + if (isset($se['published']) && $se['published']!='A') $felt.=" AND a.published='".$se['published']."'"; + if (isset($se['onlypay']) && $se['onlypay']!='A') $felt.=" AND ".($se['onlypay']=='Y' ? " a.price_total>0 " : " (a.price_total=0 OR a.price_total IS NULL) "); + + $objTabla=New TableHelper(); + $objTabla->setParams(array('prefix'=>$this->pf,'tablewidth'=>'100%','tablediv'=>$this->targetdiv)); + $v=$objTabla->setSession(); + $objTabla->setColumn('id',array('header'=>'AID','width'=>'40px','format'=>'text','link'=>'index.php?option=com_alworkshops&view=applicationedit&id=REPLACE')); + $objTabla->setColumn('cid',array('visible'=>FALSE/*'header'=>'CID','width'=>'60px','format'=>'number','decimal'=>0*/)); + $objTabla->setColumn('title',array('header'=>$_LANG['COM_ALWORKSHOPS_TITLE'],'width'=>'200px','linkjoin'=>'cid','link'=>'index.php?option=com_alworkshops&view=courseedit&id=REPLACE')); + $objTabla->setColumn('uid',array('visible'=>FALSE)); + $objTabla->setColumn('name',array('header'=>$_LANG['COM_ALWORKSHOPS_NAME'],'width'=>'100px','strlen'=>20,'linkjoin'=>'nUserID','link'=>'http://crm.cadline.hu/hu/users/show/REPLACE','target'=>'_blank')); + $objTabla->setColumn('email',array('header'=>$_LANG['COM_ALWORKSHOPS_EMAIL'],'strlen'=>20,'width'=>'100px','format'=>'mailto')); + $objTabla->setColumn('nUserID',array('visible'=>FALSE)); + $objTabla->setColumn('attendees',array('header'=>$_LANG['COM_ALWORKSHOPS_ATTEND'],'width'=>'50px','align'=>'center')); + $objTabla->setColumn('price_per_attendee',array('visible'=>FALSE)); + $objTabla->setColumn('price_total',array('header'=>$_LANG['COM_ALWORKSHOPS_PRICE'],'width'=>'50px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('vat',array('header'=>$_LANG['COM_ALWORKSHOPS_VAT'],'width'=>'50px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('fullprice',array('header'=>str_replace(" ","
    ",$_LANG['COM_ALWORKSHOPS_FULLPRICE']),'width'=>'60px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('gepet_kerek',array('header'=>$_LANG['COM_ALWORKSHOPS_COMP'],'width'=>'50px','align'=>'center','replacevalues'=>array('Y'=>'Yes','N'=>'No'))); + $objTabla->setColumn('berletem_van',array('header'=>$_LANG['COM_ALWORKSHOPS_LEASE'],'width'=>'50px','align'=>'center','replacevalues'=>array('Y'=>'Yes','N'=>'No'))); + $objTabla->setColumn('start_date',array('header'=>$_LANG['COM_ALWORKSHOPS_START_DATE'],'align'=>'center','width'=>'110px')); + $objTabla->setColumn('start_time',array('header'=>$_LANG['COM_ALWORKSHOPS_START_TIME'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('finish_date',array('header'=>$_LANG['COM_ALWORKSHOPS_FINISH_DATE'],'align'=>'center','width'=>'110px')); + $objTabla->setColumn('finish_time',array('header'=>$_LANG['COM_ALWORKSHOPS_FINISH_TIME'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('published',array('visible'=>FALSE)); + $objTabla->setColumn('options',array('header'=>$_LANG['COM_ALWORKSHOPS_OPTIONS'],'align'=>'right','width'=>'90px','order'=>false,'addicons'=>$arrIcons,'linkjoin'=>'id')); + $objTabla->setQuery(array(" + SELECT DISTINCT a.id AS id,c.id AS cid,CONCAT(c.title,IF(s.kurzus='Y',' *','')) AS title,a.user_id AS uid,IF(a.`user_id`=0,a.`name`,u.`name`) AS `name`,IF(a.`user_id`=0,a.`email`,u.`email`) AS `email`,u.nUserID,CONCAT(c.start_date,' ',SUBSTRING(c.start_time,1,5)) AS start_date,CONCAT(c.finish_date,' ',SUBSTRING(c.finish_time,1,5)) AS finish_date,a.attendees,a.price_per_attendee,price_total,price_vat AS vat,price_total*(1+(price_vat/100)) AS fullprice,a.gepet_kerek,a.berletem_van,a.published,CONCAT('smallDel','|',IF(a.published='N','smallDisable','smallEnable'),'|','smallEdit') AS options + FROM alworkshops_application a + LEFT OUTER JOIN alworkshops_courses c ON a.course_id=c.id + LEFT OUTER JOIN alworkshops_switch s ON c.alias=s.alias + LEFT OUTER JOIN jml_users u ON a.user_id=u.id + WHERE 1 ".$felt + .((isset($v['tableorder']) and $v['tableorder']>'') ? ' ORDER BY '.$v['tableorder'] : '') + .((isset($v['tableipp'])) ? ' LIMIT '.($v['tableipp']>0 ? ($v['tablepage']-1)*$v['tableipp'] : 0) .','.$v['tableipp'] : '')," + SELECT COUNT(*) AS recordCount,SUM(attendees) AS attendees,SUM(price_total) AS price_total,SUM(fullprice) AS fullprice + FROM ( + SELECT a.id AS id,c.id AS cid,CONCAT(c.title,IF(s.kurzus='Y',' *','')) AS title,a.user_id AS uid,u.`name`,u.email,u.`nUserID`,CONCAT(c.start_date,' ',c.start_time) AS start_date,CONCAT(c.finish_date,' ',c.finish_time) AS finish_date,a.attendees,a.price_per_attendee,price_total,price_vat,price_total*(1+(price_vat/100)) AS fullprice,a.gepet_kerek,a.berletem_van,a.published + FROM alworkshops_application a + LEFT OUTER JOIN alworkshops_courses c ON a.course_id=c.id + LEFT OUTER JOIN alworkshops_switch s ON c.alias=s.alias + LEFT OUTER JOIN jml_users u ON a.user_id=u.id WHERE 1 ".$felt.") z;" + )); +// $this->printSession($this->pf); +// print_r($objTabla->arrQuery); +// print_r($se); + $objTabla->drawTable(TRUE); + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos($_SERVER['HTTP_HOST'],".com") ? "en-GB" : "hu-HU"); } + return $this->lang; + } +} + +$controller=new Controller(); +$controller->run(); +?> + + diff --git a/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxCourseController.class.php b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxCourseController.class.php new file mode 100644 index 00000000..6c39b6ad --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxCourseController.class.php @@ -0,0 +1,107 @@ +pf]["_POST"]=$_POST; + if (!isset($_SESSION[$this->pf]['tableorder']) || trim($_SESSION[$this->pf]['tableorder'])=='' ) $_SESSION[$this->pf]['tableorder']='c.id DESC'; + + $se=&$_SESSION[$this->pf]['_POST']; + $felt=" AND s.`lang`='".($this->getLang()=='hu-HU' ? 'hun' : 'eng')."' "; + $arrIcons=array( + 'smallEnable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','disable','tablediv');setField('".$this->pf."','".$this->pf."_value','REPLACE','tablediv');}","img"=>IconHelper::getIcon("smallEnable") ), + 'smallDisable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','enable','tablediv');setField('".$this->pf."','".$this->pf."_value','REPLACE','tablediv');}",'img'=>IconHelper::getIcon("smallDisable") ), + 'smallEdit'=>array("href"=>"index.php?option=com_alworkshops&view=courseedit&id=REPLACE", "img"=>IconHelper::getIcon("smallEdit"), "linkjoin"=>"id","alttext"=>"Edit" ), + ); + $_LANG=parse_ini_file($_SERVER['DOCUMENT_ROOT']."/administrator/language/".$this->getLang()."/".$this->getLang().".com_alworkshops.ini"); + + if (isset($_POST[$this->pf.'_event']) and trim($_POST[$this->pf.'_event'])>'') + { + $event=trim(strtolower(addslashes((string)$_POST[$this->pf.'_event']))); + $value=trim(strtolower(addslashes((string)$_POST[$this->pf.'_value']))); + if ((int)$value>0) + { + switch ($event) + { + case 'enable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='Y' WHERE id=".$value);break; } + case 'disable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='N' WHERE id=".$value);break; } + } + } + } + + if (isset($se['wid']) && $se['wid']>"") + { + if (strpos($se['wid'], "-")) + { + $reszek=explode("-", $se['wid']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND c.id>=".(int)$reszek[0]." AND c.id<=".(int)$reszek[1] : " AND c.id>=".(int)$reszek[1]." AND c.id<=".(int)$reszek[0]); + } + else + { + $felt.=" AND c.id=".(int)$se['wid']; + } + } + if (isset($se['name']) && $se['name']>"") $felt.=" AND (c.title LIKE '%".trim($se['name'])."%' OR c.alias LIKE '%".trim($se['name'])."%')"; + if (isset($se['start_date']) && $se['start_date']>"") $felt.=" AND c.start_date>='".trim($se['start_date'])."'"; + if (isset($se['finish_date']) && $se['finish_date']>"") $felt.=" AND c.finish_date<='".trim($se['finish_date'])."'"; + if (isset($se['published']) && $se['published']!='A') $felt.=" AND c.published='".$se['published']."'"; + if (isset($se['onlypay']) && $se['onlypay']!='A') $felt.=" AND c.price".(trim($se['onlypay'])=='Y'?">":"=")."0 "; + + $objTabla=New TableHelper(); + $objTabla->setParams(array('prefix'=>$this->pf,'tablewidth'=>'100%','imagePreview'=>true,'tablediv'=>'tablediv')); + $v=$objTabla->setSession(); + $objTabla->setColumn('id',array('header'=>$_LANG['COM_ALWORKSHOPS_ID'],'width'=>'40px','format'=>'number','decimal'=>0,'link'=>'index.php?option=com_alworkshops&view=courseedit&id=REPLACE')); + $objTabla->setColumn('title',array('header'=>$_LANG['COM_ALWORKSHOPS_TITLE'],'linkjoin'=>'id','link'=>'index.php?option=com_alworkshops&view=courseedit&id=REPLACE')); + $objTabla->setColumn('price',array('header'=>$_LANG['COM_ALWORKSHOPS_PRICE'],'width'=>'60px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('vat',array('header'=>$_LANG['COM_ALWORKSHOPS_VAT'],'width'=>'60px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('fullprice',array('header'=>str_replace(' ','
    ',$_LANG['COM_ALWORKSHOPS_FULLPRICE']),'width'=>'70px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('capacity',array('header'=>$_LANG['COM_ALWORKSHOPS_CAPACITY']."
    ".$_LANG['COM_ALWORKSHOPS_MIN_ATTEND'],'width'=>'70px','order'=>false,'align'=>'center')); + $objTabla->setColumn('attendees',array('header'=>$_LANG['COM_ALWORKSHOPS_ATTENDEES']."
    ".$_LANG['COM_ALWORKSHOPS_APPLICATIONS'],'width'=>'70px','order'=>false,'align'=>'center')); + $objTabla->setColumn('start_date',array('header'=>$_LANG['COM_ALWORKSHOPS_START_DATE'],'align'=>'center','width'=>'100px')); + $objTabla->setColumn('finish_date',array('header'=>$_LANG['COM_ALWORKSHOPS_FINISH_DATE'],'align'=>'center','width'=>'100px')); + $objTabla->setColumn('sessions',array('header'=>$_LANG['COM_ALWORKSHOPS_SESSIONS'],'align'=>'center','width'=>'70px')); + $objTabla->setColumn('published',array('visible'=>FALSE/*'header'=>$_LANG['COM_ALWORKSHOPS_PUBLISHED'],'align'=>'center','width'=>'70px'*/)); + $objTabla->setColumn('percent',array('header'=>'%','width'=>'40px','format'=>'percent','decimal'=>2)); + $objTabla->setColumn('options',array('header'=>$_LANG['COM_ALWORKSHOPS_OPTIONS'],'align'=>'right','width'=>'70px','order'=>false,'addicons'=>$arrIcons,'linkjoin'=>'id')); + $objTabla->setQuery(array(" + SELECT DISTINCT c.id,CONCAT(c.title,IF(s.kurzus='Y',' *','')) AS title,c.price,c.vat,c.price*(1+(vat/100)) AS fullprice,CONCAT(c.start_date,' ',SUBSTRING(c.start_time,1,5)) AS start_date,CONCAT(c.finish_date,' ',SUBSTRING(c.finish_time,1,5)) AS finish_date,sess.sessions,c.published,CONCAT(c.capacity,'|',c.min_attend) AS capacity,CONCAT(a.attendees,'|',a.application) AS attendees,(a.attendees/c.capacity)*100 AS percent,CONCAT(IF(c.published='N','smallDisable','smallEnable'),'|','smallEdit') AS options + FROM ".TABLE." c + LEFT OUTER JOIN `alworkshops_switch` s ON c.alias=s.alias + LEFT OUTER JOIN (SELECT course_id, SUM(attendees) AS attendees, COUNT(*) AS application FROM alworkshops_application GROUP BY course_id) a ON c.id=a.course_id + LEFT OUTER JOIN (SELECT courseid,COUNT(*) as `sessions` FROM alworkshops_sessions GROUP BY courseid) sess ON c.id=sess.courseid + WHERE 1 ".$felt + .((isset($v['tableorder']) and $v['tableorder']>'') ? ' ORDER BY '.$v['tableorder'] : '') + .((isset($v['tableipp'])) ? ' LIMIT '.($v['tableipp']>0 ? ($v['tablepage']-1)*$v['tableipp'] : 0) .','.$v['tableipp'] : '')," + SELECT COUNT(*) AS recordCount + FROM (SELECT c.id FROM ".TABLE." c LEFT OUTER JOIN `alworkshops_switch` s ON c.alias=s.alias WHERE 1 ".$felt.") z;" + )); +// $this->printSession($this->pf); + $objTabla->drawTable(TRUE); + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos($_SERVER['HTTP_HOST'],".com") ? "en-GB" : "hu-HU"); } + return $this->lang; + } +} + +$controller=new Controller(); +$controller->run(); +?> + + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxEducationController.class.php b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxEducationController.class.php new file mode 100644 index 00000000..f33c26be --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxEducationController.class.php @@ -0,0 +1,95 @@ +pf]["_POST"] = $_POST; + if (!isset($_SESSION[$this->pf]['tableorder']) || trim($_SESSION[$this->pf]['tableorder']) == '') $_SESSION[$this->pf]['tableorder'] = 's.id DESC'; + + $se = &$_SESSION[$this->pf]['_POST']; + $felt = " AND `lang`='" . ($this->getLang() == 'hu-HU' ? 'hun' : 'eng') . "' "; + $arrIcons = array( + 'smallEnable' => array("onclick" => "javascript:if (confirm('Are you sure?')) {setField('','" . $this->pf . "_event','disable','" . $this->targetdiv . "');setField('" . $this->pf . "','" . $this->pf . "_value','REPLACE','" . $this->targetdiv . "');}", "img" => IconHelper::getIcon("smallEnable")), + 'smallDisable' => array("onclick" => "javascript:if (confirm('Are you sure?')) {setField('','" . $this->pf . "_event','enable','" . $this->targetdiv . "');setField('" . $this->pf . "','" . $this->pf . "_value','REPLACE','" . $this->targetdiv . "');}", 'img' => IconHelper::getIcon("smallDisable")), + 'smallEdit' => array("href" => "index.php?option=com_alworkshops&view=educationedit&id=REPLACE", "img" => IconHelper::getIcon("smallEdit"), "linkjoin" => "id", "alttext" => "Edit"), + ); + $_LANG = parse_ini_file($_SERVER['DOCUMENT_ROOT'] . "/administrator/language/" . $this->getLang() . "/" . $this->getLang() . ".com_alworkshops.ini"); + + if (isset($_POST[$this->pf . '_event']) and trim($_POST[$this->pf . '_event']) > '') { + $event = trim(strtolower(addslashes((string)$_POST[$this->pf . '_event']))); + $value = trim(strtolower(addslashes((string)$_POST[$this->pf . '_value']))); + if ((int)$value > 0) { + switch ($event) { + case 'enable': { + MySqlHelper::getInstance()->query("UPDATE " . TABLE . " SET published='Y' WHERE id=" . $value); + break; + } + case 'disable': { + MySqlHelper::getInstance()->query("UPDATE " . TABLE . " SET published='N' WHERE id=" . $value); + break; + } + } + } + } + + if (isset($se['sid']) && $se['sid'] > "") { + if (strpos($se['sid'], "-")) { + $reszek = explode("-", $se['sid']); + $felt .= ((int)$reszek[0] < (int)$reszek[1] ? " AND id>=" . (int)$reszek[0] . " AND id<=" . (int)$reszek[1] : " AND id>=" . (int)$reszek[1] . " AND id<=" . (int)$reszek[0]); + } else { + $felt .= " AND id=" . (int)$se['sid']; + } + } + if (isset($se['tipus']) && $se['tipus'] != 'mind') $felt .= " AND `" . $se['tipus'] . "`='Y'"; + if (isset($se['alias']) && $se['alias'] > "") $felt .= " AND alias LIKE '%" . trim($se['alias']) . "%' "; + + $objTabla = new TableHelper(); + $objTabla->setParams(array('prefix' => $this->pf, 'tablewidth' => '100%', 'tablediv' => 'tablediv')); + $v = $objTabla->setSession(); + $objTabla->setColumn('id', array('header' => $_LANG['COM_ALWORKSHOPS_ID'], 'width' => '40px', 'format' => 'number', 'decimal' => 0, 'link' => 'index.php?option=com_alworkshops&view=educationedit&id=REPLACE')); + $objTabla->setColumn('options', array('header' => $_LANG['COM_ALWORKSHOPS_OPTIONS'], 'align' => 'right', 'width' => '70px', 'order' => false, 'addicons' => $arrIcons, 'linkjoin' => 'id')); + $objTabla->setQuery(array( + " + SELECT id, title, url, image, published, CONCAT(IF(published='N','smallDisable','smallEnable'),'|','smallEdit') AS options FROM " . TABLE . " s WHERE 1 " . $felt + . ((isset($v['tableorder']) and $v['tableorder'] > '') ? ' ORDER BY ' . $v['tableorder'] : '') + . ((isset($v['tableipp'])) ? ' LIMIT ' . ($v['tableipp'] > 0 ? ($v['tablepage'] - 1) * $v['tableipp'] : 0) . ',' . $v['tableipp'] : ''), " + SELECT COUNT(*) AS recordCount + FROM ( + SELECT id, title, url, image, published, CONCAT(IF(published='N','smallDisable','smallEnable'),'|','smallEdit') AS options FROM " . TABLE . " s WHERE 1 " . $felt . ") z;" + )); + //print_r($objTabla->arrQuery); + $objTabla->drawTable(TRUE); + } + + public function getLang() + { + if (!isset($this->lang)) { + $this->lang = (strpos($_SERVER['HTTP_HOST'], ".com") ? "en-GB" : "hu-HU"); + } + return $this->lang; + } +} + +$controller = new Controller(); +$controller->run(); +?> + + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxOnlineSessionController.class.php b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxOnlineSessionController.class.php new file mode 100644 index 00000000..189ce8ed --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxOnlineSessionController.class.php @@ -0,0 +1,130 @@ +pf]["_POST"]=$_POST; + if (isset($_POST['targetdiv'])) $this->targetdiv=$_POST['targetdiv']; + if (!isset($_SESSION[$this->pf]['tableorder']) || trim($_SESSION[$this->pf]['tableorder'])=='' ) $_SESSION[$this->pf]['tableorder']='s.id DESC'; + + $se=&$_SESSION[$this->pf]['_POST']; + + if($this->getLang() == 'hu-HU') { + $webinar = "webinariumok"; + } else { + $webinar = "webinars"; + } + $felt=" AND c.`alias`='{$webinar}' "; + + $arrIcons=array( + 'smallEnable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','disable','".$this->targetdiv."');setField('".$this->pf."','".$this->pf."_value','REPLACE','".$this->targetdiv."');}","img"=>IconHelper::getIcon("smallEnable") ), + 'smallDisable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','enable','".$this->targetdiv."');setField('".$this->pf."','".$this->pf."_value','REPLACE','".$this->targetdiv."');}",'img'=>IconHelper::getIcon("smallDisable") ), + 'smallEdit'=>array("href"=>"index.php?option=com_alworkshops&view=onlinesessionedit&id=REPLACE", "img"=>IconHelper::getIcon("smallEdit"), "linkjoin"=>"id","alttext"=>"Edit" ), + ); + $_LANG=parse_ini_file($_SERVER['DOCUMENT_ROOT']."/administrator/language/".$this->getLang()."/".$this->getLang().".com_alworkshops.ini"); + + if (isset($_POST[$this->pf.'_event']) and trim($_POST[$this->pf.'_event'])>'') + { + $event=trim(strtolower(addslashes((string)$_POST[$this->pf.'_event']))); + $value=trim(strtolower(addslashes((string)$_POST[$this->pf.'_value']))); + if ((int)$value>0) + { + switch ($event) + { + case 'enable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='Y' WHERE id=".$value);break; } + case 'disable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='N' WHERE id=".$value);break; } + } + } + } + + if (isset($se['sid']) && $se['sid']>"") + { + if (strpos($se['sid'], "-")) + { + $reszek=explode("-", $se['sid']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND id>=".(int)$reszek[0]." AND id<=".(int)$reszek[1] : " AND id>=".(int)$reszek[1]." AND id<=".(int)$reszek[0]); + } + else + { + $felt.=" AND id=".(int)$se['sid']; + } + } + if (isset($se['wid']) && $se['wid']>"") + { + if (strpos($se['wid'], "-")) + { + $reszek=explode("-", $se['wid']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND courseid>=".(int)$reszek[0]." AND courseid<=".(int)$reszek[1] : " AND courseid>=".(int)$reszek[1]." AND courseid<=".(int)$reszek[0]); + } + else + { + $felt.=" AND courseid=".(int)$se['wid']; + } + } + if (isset($se['title']) && $se['title']>"") $felt.=" AND title LIKE '%".trim($se['title'])."%' "; + if (isset($se['start_date']) && $se['start_date']>"") $felt.=" AND session_date>='".trim($se['start_date'])."'"; + if (isset($se['finish_date']) && $se['finish_date']>"") $felt.=" AND session_date<='".trim($se['finish_date'])."'"; + if (isset($se['published']) && $se['published']!='A') $felt.=" AND published='".$se['published']."'"; + + $objTabla=New TableHelper(); + $objTabla->setParams(array('prefix'=>$this->pf,'tablewidth'=>'100%','tablediv'=>$this->targetdiv)); + $v=$objTabla->setSession(); + $objTabla->setColumn('id',array('header'=>'SID','width'=>'50px','format'=>'number','decimal'=>0,'link'=>'index.php?option=com_alworkshops&view=onlinesessionedit&id=REPLACE')); + $objTabla->setColumn('courseid',array('header'=>'CID','align'=>'center','width'=>'50px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('title',array('header'=>$_LANG['COM_ALWORKSHOPS_TITLE'],'width'=>'200px')); + $objTabla->setColumn('session_date',array('header'=>$_LANG['COM_ALWORKSHOPS_START_DATE'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('start_time',array('header'=>$_LANG['COM_ALWORKSHOPS_START_TIME'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('finish_time',array('header'=>$_LANG['COM_ALWORKSHOPS_FINISH_TIME'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('duration',array('header'=>$_LANG['COM_ALWORKSHOPS_DURATION'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('ordering',array('header'=>$_LANG['COM_ALWORKSHOPS_ORDERING'],'width'=>'70px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('published',array('header'=>$_LANG['COM_ALWORKSHOPS_PUBLISHED'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('options',array('header'=>$_LANG['COM_ALWORKSHOPS_OPTIONS'],'align'=>'right','width'=>'70px','order'=>false,'addicons'=>$arrIcons,'linkjoin'=>'id')); + $objTabla->setQuery(array(" + SELECT s.*,CONCAT(IF(s.published='N','smallDisable','smallEnable'),'|','smallEdit') AS options + FROM alworkshops_online_sessions s + LEFT OUTER JOIN alworkshops_courses c ON c.id=s.courseid + WHERE 1 ".$felt + .((isset($v['tableorder']) and $v['tableorder']>'') ? ' ORDER BY '.$v['tableorder'] : '') + .((isset($v['tableipp'])) ? ' LIMIT '.($v['tableipp']>0 ? ($v['tablepage']-1)*$v['tableipp'] : 0) .','.$v['tableipp'] : '')," + SELECT COUNT(*) AS recordCount + FROM ( + SELECT s.*,CONCAT(IF(s.published='N','smallDisable','smallEnable'),'|','smallEdit') AS options + FROM alworkshops_online_sessions s + LEFT OUTER JOIN alworkshops_courses c ON c.id=s.courseid + WHERE 1 ".$felt.") z;" + )); + $objTabla->drawTable(TRUE); + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos($_SERVER['HTTP_HOST'],".com") ? "en-GB" : "hu-HU"); } + return $this->lang; + } +} + +$controller=new Controller(); +$controller->run(); +?> + + diff --git a/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxSessionController.class.php b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxSessionController.class.php new file mode 100644 index 00000000..f613b74b --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxSessionController.class.php @@ -0,0 +1,130 @@ +pf]["_POST"]=$_POST; + if (isset($_POST['targetdiv'])) $this->targetdiv=$_POST['targetdiv']; + if (!isset($_SESSION[$this->pf]['tableorder']) || trim($_SESSION[$this->pf]['tableorder'])=='' ) $_SESSION[$this->pf]['tableorder']='s.id DESC'; + + $se=&$_SESSION[$this->pf]['_POST']; + $felt=" AND sw.`lang`='".($this->getLang()=='hu-HU' ? 'hun' : 'eng')."' "; + + $arrIcons=array( + 'smallEnable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','disable','".$this->targetdiv."');setField('".$this->pf."','".$this->pf."_value','REPLACE','".$this->targetdiv."');}","img"=>IconHelper::getIcon("smallEnable") ), + 'smallDisable'=>array("onclick"=>"javascript:if (confirm('Are you sure?')) {setField('','".$this->pf."_event','enable','".$this->targetdiv."');setField('".$this->pf."','".$this->pf."_value','REPLACE','".$this->targetdiv."');}",'img'=>IconHelper::getIcon("smallDisable") ), + 'smallEdit'=>array("href"=>"index.php?option=com_alworkshops&view=sessionedit&id=REPLACE", "img"=>IconHelper::getIcon("smallEdit"), "linkjoin"=>"id","alttext"=>"Edit" ), + ); + $_LANG=parse_ini_file($_SERVER['DOCUMENT_ROOT']."/administrator/language/".$this->getLang()."/".$this->getLang().".com_alworkshops.ini"); + + if (isset($_POST[$this->pf.'_event']) and trim($_POST[$this->pf.'_event'])>'') + { + $event=trim(strtolower(addslashes((string)$_POST[$this->pf.'_event']))); + $value=trim(strtolower(addslashes((string)$_POST[$this->pf.'_value']))); + if ((int)$value>0) + { + switch ($event) + { + case 'enable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='Y' WHERE id=".$value);break; } + case 'disable' : { MySqlHelper::getInstance()->query("UPDATE ".TABLE." SET published='N' WHERE id=".$value);break; } + } + } + } + + if (isset($se['sid']) && $se['sid']>"") + { + if (strpos($se['sid'], "-")) + { + $reszek=explode("-", $se['sid']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND id>=".(int)$reszek[0]." AND id<=".(int)$reszek[1] : " AND id>=".(int)$reszek[1]." AND id<=".(int)$reszek[0]); + } + else + { + $felt.=" AND id=".(int)$se['sid']; + } + } + if (isset($se['wid']) && $se['wid']>"") + { + if (strpos($se['wid'], "-")) + { + $reszek=explode("-", $se['wid']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND courseid>=".(int)$reszek[0]." AND courseid<=".(int)$reszek[1] : " AND courseid>=".(int)$reszek[1]." AND courseid<=".(int)$reszek[0]); + } + else + { + $felt.=" AND courseid=".(int)$se['wid']; + } + } + if (isset($se['title']) && $se['title']>"") $felt.=" AND title LIKE '%".trim($se['title'])."%' "; + if (isset($se['description']) && $se['description']>"") $felt.=" AND description LIKE '%".trim($se['description'])."%' "; + if (isset($se['start_date']) && $se['start_date']>"") $felt.=" AND session_date>='".trim($se['start_date'])."'"; + if (isset($se['finish_date']) && $se['finish_date']>"") $felt.=" AND session_date<='".trim($se['finish_date'])."'"; + if (isset($se['published']) && $se['published']!='A') $felt.=" AND published='".$se['published']."'"; + $felt .= " GROUP BY id"; + + $objTabla=New TableHelper(); + $objTabla->setParams(array('prefix'=>$this->pf,'tablewidth'=>'100%','tablediv'=>$this->targetdiv)); + $v=$objTabla->setSession(); + $objTabla->setColumn('id',array('header'=>'SID','width'=>'50px','format'=>'number','decimal'=>0,'link'=>'index.php?option=com_alworkshops&view=sessionedit&id=REPLACE')); + $objTabla->setColumn('switchid',array('header'=>'SID','align'=>'center','width'=>'50px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('courseid',array('header'=>'CID','align'=>'center','width'=>'50px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('title',array('header'=>$_LANG['COM_ALWORKSHOPS_TITLE'],'width'=>'200px')); + $objTabla->setColumn('session_date',array('header'=>$_LANG['COM_ALWORKSHOPS_START_DATE'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('start_time',array('header'=>$_LANG['COM_ALWORKSHOPS_START_TIME'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('finish_time',array('header'=>$_LANG['COM_ALWORKSHOPS_FINISH_TIME'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('duration',array('header'=>$_LANG['COM_ALWORKSHOPS_DURATION'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('description',array('header'=>$_LANG['COM_ALWORKSHOPS_SESSIONDESC'])); + $objTabla->setColumn('ordering',array('header'=>$_LANG['COM_ALWORKSHOPS_ORDERING'],'width'=>'70px','format'=>'number','decimal'=>0)); + $objTabla->setColumn('published',array('header'=>$_LANG['COM_ALWORKSHOPS_PUBLISHED'],'align'=>'center','width'=>'80px')); + $objTabla->setColumn('options',array('header'=>$_LANG['COM_ALWORKSHOPS_OPTIONS'],'align'=>'right','width'=>'70px','order'=>false,'addicons'=>$arrIcons,'linkjoin'=>'id')); + $objTabla->setQuery(array(" + SELECT s.*,CONCAT(IF(s.published='N','smallDisable','smallEnable'),'|','smallEdit') AS options + FROM alworkshops_sessions s + LEFT OUTER JOIN alworkshops_courses c ON c.id=s.courseid + LEFT OUTER JOIN alworkshops_switch sw ON sw.alias=c.alias + WHERE 1 ".$felt + .((isset($v['tableorder']) and $v['tableorder']>'') ? ' ORDER BY '.$v['tableorder'] : '') + .((isset($v['tableipp'])) ? ' LIMIT '.($v['tableipp']>0 ? ($v['tablepage']-1)*$v['tableipp'] : 0) .','.$v['tableipp'] : '')," + SELECT COUNT(*) AS recordCount + FROM ( + SELECT s.*,CONCAT(IF(s.published='N','smallDisable','smallEnable'),'|','smallEdit') AS options + FROM alworkshops_sessions s + LEFT OUTER JOIN alworkshops_courses c ON c.id=s.courseid + LEFT OUTER JOIN alworkshops_switch sw ON sw.alias=c.alias + WHERE 1 ".$felt.") z;" + )); + $objTabla->drawTable(TRUE); + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos($_SERVER['HTTP_HOST'],".com") ? "en-GB" : "hu-HU"); } + return $this->lang; + } +} + +$controller=new Controller(); +$controller->run(); +?> + + diff --git a/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxSwitchController.class.php b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxSwitchController.class.php new file mode 100644 index 00000000..9fc01b5c --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/ajax/AjaxSwitchController.class.php @@ -0,0 +1,95 @@ +pf]["_POST"]=$_POST; + if (!isset($_SESSION[$this->pf]['tableorder']) || trim($_SESSION[$this->pf]['tableorder'])=='' ) $_SESSION[$this->pf]['tableorder']='s.id DESC'; + + $se=&$_SESSION[$this->pf]['_POST']; + $felt=" AND `lang`='".($this->getLang()=='hu-HU' ? 'hun' : 'eng')."' "; + $arrIcons=array( + 'smallEdit'=>array("href"=>"index.php?option=com_alworkshops&view=switchedit&id=REPLACE", "img"=>IconHelper::getIcon("smallEdit"), "linkjoin"=>"id","alttext"=>"Edit" ), + ); + $_LANG=parse_ini_file($_SERVER['DOCUMENT_ROOT']."/administrator/language/".$this->getLang()."/".$this->getLang().".com_alworkshops.ini"); + + if (isset($se['sid']) && $se['sid']>"") + { + if (strpos($se['sid'], "-")) + { + $reszek=explode("-", $se['sid']); + $felt.=( (int)$reszek[0]<(int)$reszek[1] ? " AND id>=".(int)$reszek[0]." AND id<=".(int)$reszek[1] : " AND id>=".(int)$reszek[1]." AND id<=".(int)$reszek[0]); + } + else + { + $felt.=" AND id=".(int)$se['sid']; + } + } + if (isset($se['tipus']) && $se['tipus']!='mind') $felt.=" AND `".$se['tipus']."`='Y'"; + if (isset($se['alias']) && $se['alias']>"") $felt.=" AND alias LIKE '%".trim($se['alias'])."%' "; + + $objTabla=New TableHelper(); + $objTabla->setParams(array('prefix'=>$this->pf,'tablewidth'=>'100%','tablediv'=>'tablediv')); + $v=$objTabla->setSession(); + $objTabla->setColumn('id',array('header'=>$_LANG['COM_ALWORKSHOPS_ID'],'width'=>'40px','format'=>'number','decimal'=>0,'link'=>'index.php?option=com_alworkshops&view=switchedit&id=REPLACE')); + $objTabla->setColumn('lang',array('visible'=>FALSE)); + $objTabla->setColumn('path',array('visible'=>FALSE/*'header'=>$_LANG['COM_ALWORKSHOPS_PATH'],'format'=>'text','strlen'=>20*/)); + $objTabla->setColumn('title',array('header'=>$_LANG['COM_ALWORKSHOPS_TITLE'])); + $objTabla->setColumn('alias',array('header'=>$_LANG['COM_ALWORKSHOPS_ALIAS'])); + $objTabla->setColumn('alias2',array('header'=>$_LANG['COM_ALWORKSHOPS_ALIAS'].'-1')); + $objTabla->setColumn('alias3',array('header'=>$_LANG['COM_ALWORKSHOPS_ALIAS'].'-2')); + $objTabla->setColumn('alias4',array('header'=>$_LANG['COM_ALWORKSHOPS_ALIAS'].'-3')); + $objTabla->setColumn('alias5',array('header'=>$_LANG['COM_ALWORKSHOPS_ALIAS'].'-4')); + $objTabla->setColumn('alias6',array('header'=>$_LANG['COM_ALWORKSHOPS_ALIAS'].'-5')); + $objTabla->setColumn('level',array('header'=>$_LANG['COM_ALWORKSHOPS_LEVEL'],'align'=>'center','width'=>'60px','replacevalues'=>array('1'=>$_LANG['COM_ALWORKSHOPS_PRELIMINARY'],'2'=>$_LANG['COM_ALWORKSHOPS_INTERMEDIATE'],'3'=>$_LANG['COM_ALWORKSHOPS_TUTOR']))); + $objTabla->setColumn('kurzus',array('header'=>$_LANG['COM_ALWORKSHOPS_COURSE'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('workshop',array('header'=>$_LANG['COM_ALWORKSHOPS_WORKSHOP'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('webinair',array('header'=>$_LANG['COM_ALWORKSHOPS_WEBINAIR'],'align'=>'center','width'=>'6px')); + $objTabla->setColumn('esemeny',array('header'=>$_LANG['COM_ALWORKSHOPS_EVENT_SHORT'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('vizsga',array('header'=>$_LANG['COM_ALWORKSHOPS_EXAM'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('telefonszam',array('header'=>$_LANG['COM_ALWORKSHOPS_PHONE_SHORT'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('orszag',array('header'=>$_LANG['COM_ALWORKSHOPS_COUNTRY_SHORT'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('szakma',array('header'=>$_LANG['COM_ALWORKSHOPS_PROFESSION_SHORT'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('login',array('header'=>$_LANG['COM_ALWORKSHOPS_LOGIN_SHORT'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('comment',array('header'=>$_LANG['COM_ALWORKSHOPS_COMMENT_SHORT'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('tanfsor',array('header'=>str_replace(' ','
    ',$_LANG['COM_ALWORKSHOPS_COURSENO_SHORT']),'align'=>'center','width'=>'60px')); + $objTabla->setColumn('vizsga_csoport',array('header'=>str_replace(' ','
    ',$_LANG['COM_ALWORKSHOPS_EXAM_GROUP']),'align'=>'center','width'=>'60px')); + $objTabla->setColumn('gepet_kerek',array('header'=>$_LANG['COM_ALWORKSHOPS_COMP'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('berletem_van',array('header'=>$_LANG['COM_ALWORKSHOPS_LEASE'],'align'=>'center','width'=>'60px')); + $objTabla->setColumn('options',array('header'=>$_LANG['COM_ALWORKSHOPS_OPTIONS'],'align'=>'right','width'=>'60px','order'=>false,'addicons'=>$arrIcons,'linkjoin'=>'id')); + $objTabla->setQuery(array(" + SELECT *,'smallEdit' AS options FROM ".TABLE." s WHERE 1 ".$felt + .((isset($v['tableorder']) and $v['tableorder']>'') ? ' ORDER BY '.$v['tableorder'] : '') + .((isset($v['tableipp'])) ? ' LIMIT '.($v['tableipp']>0 ? ($v['tablepage']-1)*$v['tableipp'] : 0) .','.$v['tableipp'] : '')," + SELECT COUNT(*) AS recordCount + FROM ( + SELECT *,'smallEdit' AS options FROM ".TABLE." s WHERE 1 ".$felt.") z;" + )); +//print_r($objTabla->arrQuery); + $objTabla->drawTable(TRUE); + } + + public function getLang() + { + if (!isset($this->lang)) { $this->lang=(strpos($_SERVER['HTTP_HOST'],".com") ? "en-GB" : "hu-HU"); } + return $this->lang; + } +} + +$controller=new Controller(); +$controller->run(); +?> + + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/assets/ajax/BaseController.class.php b/cadline/components/administrator/components/com_alworkshops/assets/ajax/BaseController.class.php new file mode 100644 index 00000000..6dd382d2 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/ajax/BaseController.class.php @@ -0,0 +1,28 @@ +procEvent(); + } + + public function printSession($key="") + { + print "
    ".print_r(($key=="" ? $_SESSION : $_SESSION[$key]),true)."
    "; + } +} +?> \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/assets/css/index.html b/cadline/components/administrator/components/com_alworkshops/assets/css/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/css/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/assets/css/jquery-ui.css b/cadline/components/administrator/components/com_alworkshops/assets/css/jquery-ui.css new file mode 100644 index 00000000..a22ecb05 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/css/jquery-ui.css @@ -0,0 +1,1311 @@ +/*! jQuery UI - v1.12.1 - 2016-09-14 +* http://jqueryui.com +* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); /* support: IE8 */ +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; + pointer-events: none; +} + + +/* Icons +----------------------------------*/ +.ui-icon { + display: inline-block; + vertical-align: middle; + margin-top: -.25em; + position: relative; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + +.ui-widget-icon-block { + left: 50%; + margin-left: -8px; + display: block; +} + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin: 2px 0 0 0; + padding: .5em .5em .5em .7em; + font-size: 100%; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-menu { + list-style: none; + padding: 0; + margin: 0; + display: block; + outline: 0; +} +.ui-menu .ui-menu { + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + cursor: pointer; + /* support: IE10, see #8844 */ + list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); +} +.ui-menu .ui-menu-item-wrapper { + position: relative; + padding: 3px 1em 3px .4em; +} +.ui-menu .ui-menu-divider { + margin: 5px 0; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-state-focus, +.ui-menu .ui-state-active { + margin: -1px; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item-wrapper { + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: 0; + bottom: 0; + left: .2em; + margin: auto 0; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + left: auto; + right: 0; +} +.ui-button { + padding: .4em 1em; + display: inline-block; + position: relative; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + /* Support: IE <= 11 */ + overflow: visible; +} + +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} + +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2em; + box-sizing: border-box; + text-indent: -9999px; + white-space: nowrap; +} + +/* no icon support for input elements */ +input.ui-button.ui-button-icon-only { + text-indent: 0; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon { + position: absolute; + top: 50%; + left: 50%; + margin-top: -8px; + margin-left: -8px; +} + +.ui-button.ui-icon-notext .ui-icon { + padding: 0; + width: 2.1em; + height: 2.1em; + text-indent: -9999px; + white-space: nowrap; + +} + +input.ui-button.ui-icon-notext .ui-icon { + width: auto; + height: auto; + text-indent: 0; + white-space: normal; + padding: .4em 1em; +} + +/* workarounds */ +/* Support: Firefox 5 - 40 */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-controlgroup { + vertical-align: middle; + display: inline-block; +} +.ui-controlgroup > .ui-controlgroup-item { + float: left; + margin-left: 0; + margin-right: 0; +} +.ui-controlgroup > .ui-controlgroup-item:focus, +.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { + z-index: 9999; +} +.ui-controlgroup-vertical > .ui-controlgroup-item { + display: block; + float: none; + width: 100%; + margin-top: 0; + margin-bottom: 0; + text-align: left; +} +.ui-controlgroup-vertical .ui-controlgroup-item { + box-sizing: border-box; +} +.ui-controlgroup .ui-controlgroup-label { + padding: .4em 1em; +} +.ui-controlgroup .ui-controlgroup-label span { + font-size: 80%; +} +.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { + border-left: none; +} +.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { + border-top: none; +} +.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { + border-right: none; +} +.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { + border-bottom: none; +} + +/* Spinner specific style fixes */ +.ui-controlgroup-vertical .ui-spinner-input { + + /* Support: IE8 only, Android < 4.4 only */ + width: 75%; + width: calc( 100% - 2.4em ); +} +.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { + border-top-style: solid; +} + +.ui-checkboxradio-label .ui-icon-background { + box-shadow: inset 1px 1px 1px #ccc; + border-radius: .12em; + border: none; +} +.ui-checkboxradio-radio-label .ui-icon-background { + width: 16px; + height: 16px; + border-radius: 1em; + overflow: visible; + border: none; +} +.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, +.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { + background-image: none; + width: 8px; + height: 8px; + border-width: 4px; + border-style: solid; +} +.ui-checkboxradio-disabled { + pointer-events: none; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 45%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} + +/* Icons */ +.ui-datepicker .ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; + left: .5em; + top: .3em; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 20px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-n { + height: 2px; + top: 0; +} +.ui-dialog .ui-resizable-e { + width: 2px; + right: 0; +} +.ui-dialog .ui-resizable-s { + height: 2px; + bottom: 0; +} +.ui-dialog .ui-resizable-w { + width: 2px; + left: 0; +} +.ui-dialog .ui-resizable-se, +.ui-dialog .ui-resizable-sw, +.ui-dialog .ui-resizable-ne, +.ui-dialog .ui-resizable-nw { + width: 7px; + height: 7px; +} +.ui-dialog .ui-resizable-se { + right: 0; + bottom: 0; +} +.ui-dialog .ui-resizable-sw { + left: 0; + bottom: 0; +} +.ui-dialog .ui-resizable-ne { + right: 0; + top: 0; +} +.ui-dialog .ui-resizable-nw { + left: 0; + top: 0; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-draggable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; + -ms-touch-action: none; + touch-action: none; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); + height: 100%; + filter: alpha(opacity=25); /* support: IE8 */ + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-selectable { + -ms-touch-action: none; + touch-action: none; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} +.ui-selectmenu-menu .ui-menu { + overflow: auto; + overflow-x: hidden; + padding-bottom: 1px; +} +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 1.5; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} +.ui-selectmenu-open { + display: block; +} +.ui-selectmenu-text { + display: block; + margin-right: 20px; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-selectmenu-button.ui-button { + text-align: left; + white-space: nowrap; + width: 14em; +} +.ui-selectmenu-icon.ui-icon { + float: right; + margin-top: 0; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; + -ms-touch-action: none; + touch-action: none; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* support: IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-sortable-handle { + -ms-touch-action: none; + touch-action: none; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: .222em 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 2em; +} +.ui-spinner-button { + width: 1.6em; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to override default borders */ +.ui-spinner a.ui-spinner-button { + border-top-style: none; + border-bottom-style: none; + border-right-style: none; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; +} +body .ui-tooltip { + border-width: 2px; +} +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Arial,Helvetica,sans-serif; + font-size: 1em; +} +.ui-widget.ui-widget-content { + border: 1px solid #c5c5c5; +} +.ui-widget-content { + border: 1px solid #dddddd; + background: #ffffff; + color: #333333; +} +.ui-widget-content a { + color: #333333; +} +.ui-widget-header { + border: 1px solid #dddddd; + background: #e9e9e9; + color: #333333; + font-weight: bold; +} +.ui-widget-header a { + color: #333333; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default, +.ui-button, + +/* We use html here because we need a greater specificity to make sure disabled +works properly when clicked or hovered */ +html .ui-button.ui-state-disabled:hover, +html .ui-button.ui-state-disabled:active { + border: 1px solid #c5c5c5; + background: #f6f6f6; + font-weight: normal; + color: #454545; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited, +a.ui-button, +a:link.ui-button, +a:visited.ui-button, +.ui-button { + color: #454545; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus, +.ui-button:hover, +.ui-button:focus { + border: 1px solid #cccccc; + background: #ededed; + font-weight: normal; + color: #2b2b2b; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited, +a.ui-button:hover, +a.ui-button:focus { + color: #2b2b2b; + text-decoration: none; +} + +.ui-visual-focus { + box-shadow: 0 0 3px 1px rgb(94, 158, 214); +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + border: 1px solid #003eff; + background: #007fff; + font-weight: normal; + color: #ffffff; +} +.ui-icon-background, +.ui-state-active .ui-icon-background { + border: #003eff; + background-color: #ffffff; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #ffffff; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #dad55e; + background: #fffa90; + color: #777620; +} +.ui-state-checked { + border: 1px solid #dad55e; + background: #fffa90; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #777620; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #f1a899; + background: #fddfdf; + color: #5f3f3f; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #5f3f3f; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #5f3f3f; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_444444_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon, +.ui-button:hover .ui-icon, +.ui-button:focus .ui-icon { + background-image: url("images/ui-icons_555555_256x240.png"); +} +.ui-state-active .ui-icon, +.ui-button:active .ui-icon { + background-image: url("images/ui-icons_ffffff_256x240.png"); +} +.ui-state-highlight .ui-icon, +.ui-button .ui-state-highlight.ui-icon { + background-image: url("images/ui-icons_777620_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_cc0000_256x240.png"); +} +.ui-button .ui-icon { + background-image: url("images/ui-icons_777777_256x240.png"); +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-caret-1-n { background-position: 0 0; } +.ui-icon-caret-1-ne { background-position: -16px 0; } +.ui-icon-caret-1-e { background-position: -32px 0; } +.ui-icon-caret-1-se { background-position: -48px 0; } +.ui-icon-caret-1-s { background-position: -65px 0; } +.ui-icon-caret-1-sw { background-position: -80px 0; } +.ui-icon-caret-1-w { background-position: -96px 0; } +.ui-icon-caret-1-nw { background-position: -112px 0; } +.ui-icon-caret-2-n-s { background-position: -128px 0; } +.ui-icon-caret-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -65px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -65px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 1px -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 3px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 3px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa; + opacity: .3; + filter: Alpha(Opacity=30); /* support: IE8 */ +} +.ui-widget-shadow { + -webkit-box-shadow: 0px 0px 5px #666666; + box-shadow: 0px 0px 5px #666666; +} diff --git a/cadline/components/administrator/components/com_alworkshops/assets/css/style.css b/cadline/components/administrator/components/com_alworkshops/assets/css/style.css new file mode 100644 index 00000000..b6a6ed60 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/css/style.css @@ -0,0 +1,86 @@ +#j-sidebar-container {display:inline-block;vertical-align:top;width:14.5%;height:300px;border:0px solid #000000;} +#j-main-container {display:inline-block;vertical-align:top;width:85%;border:0px solid #000000;} + +#j-main-container .pagination {margin:0px;padding:0px;display:inline;} +#j-main-container table.adminlist {width:100%;border-spacing:1px;background-color:#e7e7e7;color:#666;} +#j-main-container table.adminlist td, +#j-main-container table.adminlist th {padding:4px;} +#j-main-container table.adminlist thead th {text-align:center;background:#f0f0f0;color:#666;border-bottom:1px solid #999;border-left:1px solid #fff;} +#j-main-container table.adminlist thead a:hover { text-decoration: none; } +#j-main-container table.adminlist thead th img { vertical-align: middle; } +#j-main-container table.adminlist tbody th { font-weight: bold; } +#j-main-container table.adminlist tbody tr { background-color: #fff; text-align: left; } +#j-main-container table.adminlist tbody tr.row1 { background: #f9f9f9; border-top: 1px solid #fff; } +#j-main-container table.adminlist tbody tr.row0:hover td, +#j-main-container table.adminlist tbody tr.row1:hover td { background-color: #ffd ; } +#j-main-container table.adminlist tbody tr td { height: 25px; background: #fff; border: 1px solid #fff; } +#j-main-container table.adminlist tbody tr.row1 td { background: #f9f9f9; border-top: 1px solid #FFF; } +#j-main-container table.adminlist tfoot tr { text-align: center; color: #333; } +#j-main-container table.adminlist tfoot td, +#j-main-container table.adminlist tfoot th { background-color: #f3f3f3; border-top: 1px solid #999; text-align: center; } +#j-main-container table.adminlist td.order { text-align: center; white-space: nowrap; } +#j-main-container table.adminlist td.order span { float: left; display: block; width: 20px; text-align: center; } + +.j-sidebar-container.j-sidebar-hidden { + margin-left: 2vw !important; +} + + +#j-main-container .clear {clear:both;margin:0px;padding:0px;height:0px;width:0px;} +#j-main-container div.hasab {display:inline-block;width:340px;vertical-align:top;border:0px solid #000;} +#j-main-container div.hasab div.inputholder {display:block;height:38px;border:0px solid #ff0000;} +#j-main-container div.hasab div.inputholder label {display:inline-block;width:120px;font-weight:bold;border:0px solid #00ff00;} +#j-main-container div.hasab div.inputholder input[type="text"], +#j-main-container div.hasab div.inputholder select {display:inline;margin:0px;width:190px;} +#j-main-container div.hasab div.inputholder textarea {width:320px;height:260px;} +#j-main-container div.hasab div.inputholder input[type="file"] {width:190px;} +#j-main-container div.hasab div.inputholder fieldset {display:inline;width:190px;white-space:nowrap;border:0px solid #ff00ff;} +#j-main-container div.hasab div.inputholder fieldset label {width:50px;font-weight:normal;} + + +/* TableHelper */ +div.tableholder table { border: 1px solid #dddddd; font-size: 11px; } +div.tableholder table thead, div.tableholder table tfoot { background-color: #ddd; } +div.tableholder table thead tr td { padding-left: 3px; border-bottom: 1px solid #dddddd; white-space:nowrap; vertical-align:middle; } +div.tableholder table tfoot tr td { padding-left: 3px; border-top: 1px solid #dddddd; white-space:nowrap; vertical-align:middle; } +div.tableholder table thead tr th, +div.tableholder table tfoot tr th { white-space:nowrap; vertical-align:middle; } +div.tableholder table thead tr th span { display: block; float: left; text-align: center; margin-left:3px; float: left; height: 30px; line-height: 14px; font-weight: bold; } +div.tableholder table thead tr th div.shortlinks { display: inline-block; margin: 1px; width: 9px; height: 24px; float: right; } +div.tableholder table thead tr th div.shortlinks a.tableshort-up { display: block; text-decoration: none; width: 9px; height: 11px; background: #ececec url(/administrator/components/com_alworkshops/assets/images/tableshort-up.jpg) no-repeat left top; } +div.tableholder table thead tr th div.shortlinks a.tableshort-up:hover { background: #ececec url(/administrator/components/com_alworkshops/assets/images/tableshort-up.jpg) no-repeat left -11px; } +div.tableholder table thead tr th div.shortlinks a.tableshort-down { margin-top:2px;display: block; text-decoration: none; width: 9px; height: 11px; background: #ececec url(/administrator/components/com_alworkshops/assets/images/tableshort-down.jpg) no-repeat left top; } +div.tableholder table thead tr th div.shortlinks a.tableshort-down:hover { margin-top:2px;background: #ececec url(/administrator/components/com_alworkshops/assets/images/tableshort-down.jpg) no-repeat left -11px; } + +div.tableholder table tbody tr.even { background-color: #ebebeb; } +div.tableholder table tbody tr.odd { background-color: #ffffff; } +div.tableholder table tbody tr.selected { background-color: #f5c0b8;color:#000000; } +div.tableholder table tbody tr.selected a { color: #000000;} +div.tableholder table tbody tr td { padding: 3px; text-align: left; border-top: 0px solid #afc4d2; border-right: 1px solid #e0eef7; } +div.tableholder table tbody tr td img { padding: 0px; margin:0px; border:0px;vertical-align: middle; } +div.tableholder table tbody tr.even:hover, +div.tableholder table tbody tr.odd:hover, +div.tableholder table tbody tr.selected:hover { cursor: pointer; background-color: #c5e6a1; color: #000000; } +div.tableholder table tbody tr td input { padding: 0px; margin:0; vertical-align:middle; } +div.tableholder table tbody tr td img { margin: 0px 2px; } +div.tableholder table tfoot { height: 30px; font-size: 11px; font-weight: bold; } +div.tableholder table a {text-decoration:none;cursor:pointer;} +div.tableholder table a:hover {text-decoration:none;cursor:pointer;} +div.tablenav select { margin: 0px; float: left; width: auto; padding: 2px 2px 3px 2px;border: 1px solid #afc4d2;font-size: 11px;font-family: Tahoma;font-weight: normal;text-align: left;color: #484947;cursor: pointer;} +div.tablenav {margin: 10px 0px 10px 0px;height: 32px;overflow: hidden;} +div.tablenav p {margin: 0px 0px 0px 3px;float: left;line-height: 32px; float:left;} +div.tablenav ul.pager {margin: 0px 0px 0px 20px;float: right;height: 22px;} +div.tablenav ul.pager li {display: inline;} +div.tablenav ul.pager li a, +div.tablenav ul.pager li a.inactive, +div.tablenav ul.pager li a.inactive:hover { background: none; display: inline-block; float: left; margin: 0px 0px 0px 3px; width: 20px; height: 20px; line-height: 20px; font-size: 12px; font-weight: bold; text-align: center; vertical-align: middle; border: 1px solid #B3B9AA; color: #009cff; cursor:pointer;} +div.tablenav ul.pager li a.nextfive { border: none; line-height: 22px; cursor:pointer; } +div.tablenav ul.pager li a.inactive, +div.tablenav ul.pager li a.inactive:hover { color: #c3c4c1; cursor:pointer;} +div.tablenav ul.pager li a.activepage, +div.tablenav ul.pager li a.activepage:hover { background-color: #b4c799; color: #ffffff; border-color: #577046; font-weight: bold; cursor:pointer;} +div.tablenav ul.pager li a:hover {background-color: #009cff;color: #ffffff;border-color: #2d4e63; cursor:pointer; } + + +#preview {position:absolute; border:1px solid #ccc;display:none;color:#fff;background:#fff;padding:5px;white-space:normal; } +#tooltip {position:absolute; border:1px solid #333;display:none;color:#333;background:#f7f5d1;padding:2px 5px; } \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/environment.png b/cadline/components/administrator/components/com_alworkshops/assets/images/environment.png new file mode 100644 index 0000000000000000000000000000000000000000..5b14c0b0e0e540cf773bd44265dd4f1a93553622 GIT binary patch literal 2298 zcmV004R=004l4008;_004mK002@5009+P0026d000+n*IFNt z000PqNkle#8v z*mk;5T5YY>&VY59>8LPmr>#|})mp_Bq7(!pgCGGEP$7UxSONsH5VE{2@2FK?|wTrIFdHI#~ua%aTE=?p7Xqtv5^2J7G=8P;f(!cy3s8NiJ+qQ$_ zI*c6?rK_u(y1F{wGtaGiD;gbh%h1pe8f2pQ{XTp?A3mRfVHhZ-FpQBlD5at6dX}Ar zu4|(&m!F@H0L{(KoIZ1wT|0L$p{UTmcJ0~?B_$IYj1kJFY2r5&O4C3YfQDtJ(RCe7 z_hH)>x~`!#jdUtWFeewKX^4QKYb=;Qk7P1MUS0%yYBh#oP&a3`{`T9Ab2MKdfNNX4 zwQeXr8qPo~-S##&zb^OGoGp!Xb) z{p>FG?%su$?B|6wt8g5bP$-0Hnv|85xmsqE;rNk*^rbvzF20@VbLOKfAvQR`&UZI( zVE1;ydHEdLzn7lwZpIf*VCQ@9&^H)o=t3v^KiZ3Dd}qV`9lTib5V!swNQ#_z6YFGkNwk9Qa@hr%#=vYHBU6Z83A+b(EBp(Aja4_9LG% zamq~Uudhdd!jdxlK0g40LI5Kx9+al&?(OGd{1|ZwQ$4+gM691_bFYI$5AVM5A`U)8 zT*70EsF+mE?yVc>?>f!6vMT(5Wm&kMhnJPCh=2%&Qh-3BzmMvx=Ckb1?}DeWEt}*( zAH|x>4Y%D*%bq6E79(P$VoEIsn%*Rt5*lv32LQ)1@#_jtGD%7{m^Q*h0(pG0ubGFw z_idhfY$cBCk+6i$b6o^;A}m~b8$%{2Jwtx(qQ%5LKc=2X-RxPJWqdiD?Yf9-*`rKE z1jDvWl3we;pt!V z?CQr!^>@+u{A$waG{eIw`j7A9%x60Q_;k;9o_TT=HMO-Aj2(;XdZWoY>RsYFv>iQ+ z9W3BStJZMj;9lN*^<|Fid!MbF-{xy~KgjY&|3p`32d_Q123=`5;%8UWRu1m{knzQ3 z#N%;dLqnq+1P?(N^#)HMT3AB9o~H4cC(xti%vw;-(F1#!aAhq^mNbwXFj%;FDQ(9N zbL_}r!qEb17T&`tuIAe&zP3m-MT#owP_OTnZ$R99EidguVdW|}46ya%i#XHK-@ zdV(UuKtxcIAuy_hE9ZQbf^o$F)ZKVH1A{RNic0y`@|CoGzFgP;sK%r)zs9~vUu_08O`r)#1V~o^*7@T$Jn>C ziK2gE#fJ4fx+H!{$7frGo>XE+%roHvG0BtmD~AqpyMsBgH5 zfx#gjS+(-#hNkHN?Ax)0_M=CbGHU^SXFg~1OTVLP!L1Y*4#f!j6BLGjN`oxui!|v3X6(4b)uD6au_FZk+vP{*|6>pbab4d^UP@`PM${9^jRD__;JSGU5`^I zPGUPYx?$jYZpN||7_M!hd^yxCT1xq(Dtv)l7Dl7wN5WLjoKMZnS?u>kIC`p`KqyJw zSC$fwCGh+G)YLEIM88Xp?xKw^XWG>_ksAzPrBj#Y25jEExkW_8^*k9KPK)D;m}Xky z$&}cxC#LO+<%&2W;&`4|t|w{Bmh)X*5=$n<6Or>>UDDm#C$@-mb@#}rj?*$Y6qD|r zURkkX#r;OsjY%Yuc&$)ffuImvS93&Z!W7!VMcDT^h zjqNyy2%hI5US=Ib*K|KXI2=L=2y*G61_&ZqKSGf?8YF8Q9s=b3+uy#3kei!BD&<2r z4BfcU*VlWhqoX`N6dOQ8k@cPIB^zcWXvX-wOodXJG4&sU1cO1+rdi}VPU>F+0Mu8o U$%lb1p#T5?07*qoM6N<$f|*BdqyPW_ literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/accept.png b/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/accept.png new file mode 100644 index 0000000000000000000000000000000000000000..b9e2389e39accbc7e04732a78337195354ddea97 GIT binary patch literal 643 zcmV-}0(||6P)j`&3 z*=%n%T$+J$`78`<6Woo$7~X%r&A`g^i@`}ZfZ^}&zuUnE6ijig19EH7>1UtVGO@#7~0^DCac6~esYEg_Dn41a$Aa(w#ozW&x@ z^FMf7CEdyDvCU^^;hf-O70vMc{bhzP-`_L*{_~6B`RnHlmv3DLs{d`vnA&RbKg>Oq z;qjXb4ALT64Bx;1Vc2zS4a1LL-zs^y_}cv);~1X2xybPS*JrSc-oAg&aPQ$G24L9P z&aF9hgjvH<@aMg!S6$e-m>FJwe8j*6j39FzcZN@2KDyYOcro04aS|A4Zy0_7ZGQ3k zHN%~|4;X#}ZC==L?g%^u+1Od ze`a|6@CDfBH9a?vz`_U~jea@uUEDmJrLxN6U_+3>$M;_to;`dG*1T!T!z0LYDCxi> zRkDkVm$Ot_NrZusi4iRJ`TbXh7Z2ZoHSd`H{0Mp!V>I__unAR4u_Y2I*2ogf(*chEkigBfS4JVJPb2Z dnw>QTFvN&9 z;P>y}3_pMW#1O-3K*1CjYyrmb^VfG&1AhHt0IEd~@#!qTe*VhL4{yaV`OK{iDE!QT zdJHuaS5{}TfJ{DoWf=n@fK3fZFUSQ9-+z8*AP0c-LJjyvz5zgIOh0w<0!AR}8mgi2 zFQ31K&5Y@c*pjkej>3O!BV`n^tLN@AY?|_bk+^gK3><9HNSlO2lcWsHIMZ*Oe1MUi dv8e?JFaU&-kNmLq2fY9Q002ovPDHLkV1lw^iHiUL literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/arrow_undo.png b/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/arrow_undo.png new file mode 100644 index 0000000000000000000000000000000000000000..04442658e263733d7b03dda001810db57de573c6 GIT binary patch literal 731 zcmV<10wn#3P)f0o7KRY(^b%XAKzzc)|@+=aM-dXT2?fAn12u4HjeQBP?ET4t#-8f|U z1oU*;7|b26Y+}ivj1%cz^{@Ym#5vebCM~~xt266CKjefABzFITL~=m#`e=KH27K+? z`Vh+|7h^HbAp?=#+XFx^dBF^6Aw(y+ENykA+Q513%B_bMv#nC?`SGQ1e%TWt`r`SkpgF08MA%2~CATu9 z##Q-@H->fXsJ;4gIz}dMq)Eop-O%3JMYTV+2!DceRPUwIu;GjDpwzn@!2~tv9cm-@ z9w^mHR-s}*(JZff?)P>w5L%0opW?2YjXEnW}-S8=ypXXny6gR?kchxz8eeE;{K;XiYj*w76uU&BqD({qdeiWSyM9BVkwnm7xA zKh=>lPVK+q|8cCQYM>wwzqZcfbD#FYR$10Tmm7;8Uw~|>)2S{GUSGL`_-wdQ5LnpzNcUcbmOp}uaN7(CL(+j7&rg)W<^2{f3+ zAA$%^M}_*{3!Gk}$|@-8u6A%UQxReOorpwCh8!pOBSDTyx=(Xo-iiqRiVC#W(529q zv1Bk{ZMjHDQR1nlW7J57vDzVv0cE*{RY*W_k89^06=hy$Z6)MIvSZu~MN&~xzXdsE z8+@eJZ|GQ+9OFRC8Na>4&?$*lT9XPRfHB)VPEGdj-`L%-t%q8MN&L5qe7MxP#cVB z0?Bg})SnOumrxK86^IL356x3;@-8%-ZRKX8+U2onfLa=xIMU=3;lv085+5@-=7-Q} uI-PEqjmVSxg@}o10)=x)_!vZcsFZ|qOJJisvVZ>$ zXVXe(XN@^fFIg;r6z4HHng;QG8_#qz*LJn9p=g7@{;k(w!3+hEE~BRM>X;6N0!@r;+7%|OaZ06V3{ zR?$R7%uF+o1X)wmXjDjMPwQ3`ivNNe3LLNkx8Pex$~2 zfVrwh|4pfp5FSJ%@Vx9L?k96?{ieIIVOOO?MS64?!7&+PMy%5t$>*^3*sR9(#pMQF zfR_x2<*eYMF{p})64x_uty~U!kpT(+H9TZ;m|^7;FL&>MUl$lZ-HXfnj(lx1Q*ADX z0j5efidU@0f-)!RV;bW06!>reT%DB*(E-kU$` f7@0rL{|PVv+@G1>*Fs_a00000NkvXXu0mjfo|VFK literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/email.png b/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/email.png new file mode 100644 index 0000000000000000000000000000000000000000..194abdcc01d2ff48496d0cadcf114c5a963cbdb0 GIT binary patch literal 512 zcmV+b0{{JqP))K z?V?;R%b8eZ&M&N9uNU!n9Hu95xm-fB*=!^Ub~>E`&gb*ekQic>>46k%w_EuAeng{D zbUGabgF%r<*?~YnMog#E;uC9$A@)lFA1JF>EQ%MsUJtQYOma9Jf?G-^lTyRlhXQUv zmB~oh18cG(sYgfY0ZXeG{0=_S| literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/layout_join.png b/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/layout_join.png new file mode 100644 index 0000000000000000000000000000000000000000..dc407a21863fb5c8851f050d7438accff0c187e8 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X_IbKEhE&{2irG={(1eYx&4=yM!7n>@?9gfZ`T6<(|KH!s zpOjd_&mj@<@84f;v%Igbt`;n2W@3_fw7c)|ma53Dvdlj6!aa>V4Q2u*_HoP(e#$2q zN_bmh7=rlCADo|WZ{geC_|){9L{`GD4N?w15(mC)Y>?Qory<9?@org)et=Ae&k+mpc&Dc4tqT??h_H5RAL%q^cyZ^Ys;X*A fYPtZUKmtSkw;TG2$ECG_K4I{5^>bP0l+XkK;jC+E literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/layout_split.png b/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/layout_split.png new file mode 100644 index 0000000000000000000000000000000000000000..a4918b5abca47c362280f1103ddaac27ae86543c GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XHh8)?hE&{2irG={(1eYx&4=yM!7n>@?9gfZ`T6<(|KH!s zpOjd_&mj@<@84f;v%Igbt`;n2W@3_fw7c)|ma53Dvdlj6!aa>V4Q2u*_HoP(e#$2q zN_bmh7=rlCADo|WZ{d5KJ>k~|DF+{k179{aNbK0NVb3u+=j4>rjvJ~(m%B{sw5)l)m_pV!o1Cm` z?gn0FX5ZY)?Cvb%oUvjj#HX=fmdj--RCnjn4|o^c zpAM+r^E_I!(!TGre!tJi*X#9!s$$zVwQ7ZVtybeQJD*PC4sZ!P1BV#n8}*Qra)Oy(!@OSs28u`UZTJAbL^1gFNCCWo z)QBgJfYSEc=i}rtO>PzW6XFfvfa+v{9{~mcVMl$dHqw(U00000NkvXXu0mjf!&KnN literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/pencil.png b/cadline/components/administrator/components/com_alworkshops/assets/images/iconset/pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..407a627890aa0528cd6b775a5409f1a54a939ffe GIT binary patch literal 632 zcmV-;0*C#HP)?q(2~{T0k!F{|&tjEo(F#)pLc$uXQ|C}z0yo0mcM-G#4A|8W=q(|l@n!GE&=PX=d|B@D+7Z)JG&=n(@uJ3GS@ zAwve$?#tpp7yQPl`Q*&p{{}%}48I?wF$glgx0j*}s{bx9*k{dUgsEpjb^%QD(J84w&5Vbu^k>lz9lAiw~$l@o%> SRB9;z0000m;R#$L!9&pCCQ(YaZlI!}fGQOrAt7*tkRqYP1YztrJA0cO=N~7IO$s0* z?d)iGzBB*jjOzFMn*h4F*w{+F_uWpX1Lxd-k*!t>gTbJi3OF8*VP8H#k^;d3w)C)h zfYBblmTv*UuL@j$vJ(%D0$OX_>^w)daR+Al5kKENLjH9KR|g6ROxi0zozO}}M%Y9q zrV(Ko+11;)cK<1qM3WHa(IIfnX^|z@!Yl;j=ki$FxCQGST*Jr6#(=u7N&48l?X6mr|{{(prY9Oy&7`dy~7cNjRF!*@$D7XZ`_6c{tmk@ z9%C|UkW~RCi#eJE9LzjQMiN+vwN$a->6w6}@L~HQ8VR+g*s;fK;xIe%IM#q>A!|nQ zBllnsxNy6M?xR0r0`|WAYq$o zwo9A9Q-P9TExurh+=&lP%bl%XT1{d97k?=U6%isEA+bRC!-a}I5N0KXX*KV+4GM1F z>T@6#HVBc40004R=004l4008;_004mK002@5009+P0026d000+n*IFNt z000NfNklb$vr>s;WpSQIIIAifXf=+H6EQ3LFjx z?yK$O=1!!1=k5a;>FLEk5{bg@NnB#LYeY;ztJ@EXg57RI(KHlAA#&sl#_?|eu#i}m zMV~%tcs!kq9XFnho44%m+qdt`8=NS;9NF!5f)R@;t3D#DWCsg2odOh8Ah2u;o~aA) z%5Y%DP*-@!`=FX#`Bc+ehZNGv;fab8{bn3+AO``IHzfaJ5 z2}lLaZX;+3?)c*&YAb3P{j=dbH-9oq-mPQX%7YjqT&Yw{&80Q7 z89yKi0Na2R0(9``iuLSE3qp1lbzgiBfJX}S7k-Xw#Uda~aM?PnV37Z~P7>oCU{h)L zhiTSSxa?!!BilH3umjgiWeA^-S-)My*?vLftZbBR`$+!cEZ=;03D-YP117fdW5DS| z#$3ciu2-uZZ^j&)?=3|D!V(B6kw~;I@InYwRb}UE)2Z0|6@h6JPT|_`!1qV)uSp|XLtvn^!i-GZxlG%pTI zY@acj(>uUJu(SiImqVV;GV|-XLk$b#*QC;x>%oOmx(}5WXbHy8ER9Y%hN~FA@ zx<<|!M^?db+NxXle03FSz~I&qX^iZbMBL>d$2x!DcfTCQ(0fM_clrk`R{}N^-Z|IA zvsE<^Hkdy)n}Pv-FhZeNx+JR7<6CRfHHvo3CFAx%)T}+qp(@52RbZoI&Pf1UuZkGZ#vW^=)KEYl)nS_mO~Gm%mvgdj01h5O%ok|6~@ zp?=pXD(960Fyq}OR-LiHFF6`^^M_Fidm5W5{qQ6NLp(Wg4BHEH!LaBIg#j5&S5GF< z{7DScBt9dN2lmaU@{w&c?yhC8djnUiTPf<7!szm1W;QkO*8Y>cWw${n%rkl8Sf4)* z)9b+95CS12QV2rfFs?rFOy4n=fm4Ukbf^xS%TD5&X%vsYg@Y3( zK!Ou2!LyTcSU))jq(aR%=h(XCZ?w0!6Q}El*t4}RkuE1Px*re-1W8CwWXARi?xgKX8z)bkq^zurP&mwQo`0T%_;_A?=_PK>&85Bl3Z`jd7zR>G zG)?K=AbX@s#9YuV25|AhMO-cytt~D1JYEtK6M1v>Y6=Sr`Ss$(T=RHvyWQR8DrJXYJ8S3?UJO4cZ!iipc*1oIz00000NkvXXu0mjf(;V;h literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/index.html b/cadline/components/administrator/components/com_alworkshops/assets/images/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/images/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/l_com_alworkshops.png b/cadline/components/administrator/components/com_alworkshops/assets/images/l_com_alworkshops.png new file mode 100644 index 0000000000000000000000000000000000000000..6b49925134aaf6f3607b4438d03360eb1ca70240 GIT binary patch literal 3280 zcmV;>3@`JEP)u=w~efqQ|?z$Rd&Wm&{x zG4yH}2CnN;E|y^;d)D$XyEodSW z6BAs%e3_Av5qFxz&MjNE%ZUmC-!+kkoVw=g?ys@ce6V`B^r4QZ>q0(?Ue$y_%AJ9q9}7L7(< z>gecLyEGMG?fG-kT^`Y;tq_kREE|LX&qJ1`D4iK3H`#-I`?nFzH?k0%J$sfjXU=4R z`xS||<|AM*50tOpsr>q_uCA`Not>TV=A+a#=ZJQn>bj30f z@srrceuR_(3qf~xH+_A5ZNMI-@Po_)W1gV-ifNiZTeWIcOM81e{`fhZ@q@&=JHUw{ zD=z-obGYvv$31ooZ{RdCmqWzjM3*Qc+1D99agc?gt*wpz{{GmKB}<-FBpz8*7E!r1DyomdwlGIV z_{Eu9S@YG$Su6^L0*4MA@`29-ug+V@6iWyAaZgWAXKQOKo(@bY0T6zf5PrbC@H{HQ zWO*V(F*iXhnVRM+SO~QB*Q{A%9y@mIS>QK;%zTyjZ&a|ZS3ye<1l4>^CHdG2~0!K-`!5!ad0e?`JlaE*|KFVDmy&}Y@LgM-u;!pU#K55 zD@+He2?R9|Fa%Ce;#fAp<-Nb+het0kKIKwhpT-X)MPXn*aWr0UltXSb#*43|t5TW=j{dj|K5J@Kh$+cifmy22WX*S@6Qvn<9xsMyV zJFpEIek(s!;rK7#=8vEKFLpe5FYW0%=7Y|JioheY5zxEe13akQXNKZh0D{(AD4!^i z2m+9E6A*?#mdfnD(7{Vf{(vvs|GRWGnIs(#$1;F`qAO^*djoGDs^iag{fr&kKTk_t zf@?wdS`7^i>s8gh7kKrf7Wg9-xTX+d#_k)25sIH)LCIQ*S14je9R#z(CgAjBgq`EJ zv-+M@bksw3tia*RW%8u}fQF>W^0p{z)~(<_Po3nIw@>i3&)&j(P~8BEz{6J&P`hse z+f~+?Re94it0Zt&Y@u}eF_O#Mke<)12s{Qdf?wI6;*0HVoIE$qSl$bRH);|hUkG^j zbcM#o1nH(`jtrio=vIh3_PkaAHUo`7)*u9{Rl4emL?QsQ`oAWj*I?P_n4}ADqJRi| z@UIsAu2gV&FJq9Zk1IthjOWT2_#v^t4+SB^HMEQoiE}nzCR>H8lcEEyZAaL!yC`nz8#BYkhqke39QPK2{LHzcsM zA;o-1r_)@zbZH~7t4iROy1Kfn`t<6mCGcEiIfpT@2WRL2&d9qsi3qY%fk1vlA&6QY zX?Fm;3civ+$y_j`iC3B;VF_ZkMJ=eWuLt<84_jb$JRaA|RwXQAGJg^O{4bEFe~K}@ zk2)v7j@ejA8#5A{GX~-*hn6KaUb&24@d!MRYr!q%>4;mTq7iC9_0+c#FslUm^h>R@ z@B0MB5&ZXG#5(>IG5;cVB8t@!Cy)XV1c1=~&P+%kW_ap@qhv2>_i?8!Am>QAP%h-? zNJdFU9e|qRK*g)0`m;`Jy7zIUl%evKii`Z;?-L(>i9}-pY1QL-l5!aWz%qPn5rn=z z7Xm41vdZ+@gDM_ING9UiqH_>1DCH*TSy@ja;!rDeu~h`>Eg)%{=Ctw^yz_66$ow~T zjd98zxFwzbz%~MGQ-TC31=m6)kaRnfJYXN-p9a^`*V{u-ac5V4vWQ*EaZ~q=01F}j z)LZ#{KF|SNC14$Wig>hy>)MK;Bp!ikXHo0nDgaVOg-^%N^DpDW6br3bB0zqmdRw+b zZuAlxnxov>)5!u*{g!VXIB=kF*Ijq%wmCGjdGQUbM!{5Bk&yyh2m+4tl2(-SygtcSG4u9jujbm!}8#Dn?nSvk+ zo(~A5FF>+jc%glZ{7K_M4vzGZ9lwKA%&Nu$hG|kP6u4QA^QHdYMV;1wj0FfOf{$$iP6>KtN~_a{9LdPYO2}PfE=+=1)1f<6U@Ds-g5;*IR_^cb<1;I}h&dLCNQBw==*iyU!-w|) zzik0hvH7_=ENs_}l3eqLlm~VZw~9z92oSU8dH@rND-BMSQ~YCg1J6$MV>u31vWa+C z9kwL^f$xKWFdGdW{0|DpU#7=8N1L6c-YFvt@B*$OT{Nrq0nOX0#1+>!sIDHx)~$GuaH~;v{}C%brS^Uz)3E7e&fb9)=kKVE{oWi-Q162s~tv z#}Wpwe{h~EGMNm(F2MhAGbdF+dsjmEnkbzI8>{fN*^y$++@c4`~@k0+ilv91t?BopRexzz+6*_$JLJ>R{eIT&PY`P zRcP1J#KHqkG=|~1ApwcRK!gOZCj#HcSE32%$>6}iKpyz+HAjoe3Y(SkFRxv@cIF3z zK)X=*vCMdm@BCyBhljGEg+3`r8BlUv_B?zagM))w`M;}WHu|HbOP6j}Gol#;bUbJm z((>Yw4|w#oL%2bJTbZ^FfDi~4hpH9jw8i6&#nSo&-~05+y};doU&|%mH!obc(64rO zoto0kI2-F$R!SLG&AV1D=mFG|@o{y`uhm@i66H{f*j*jC?iMV3PX#x;)Y`UA%)I}p$rb)y$ zu}zDip+S8&kWtD%uyyO!Hy3+Hrb#4$=hZ}Pvr4bpeP)|nRAt8ddCs<4W{fdauGazk zmU{lOy4W~(J#HyAksqik{T)SwmX?;egKy?Km+~{#@$qqnhlll*>u%tyO8Kelc~7iK zYy|#Z5m>K@C_-EVwOF8f3!|@*w44OKrxgG9#oZIvPGk%414U$|o~P=fw;1S#QB{7u z>shTh@RU;CUC>3hez{1P!0!QHQ*p6bRd2NDZdUhF$z-y+!_{35Ye%tI)cw2`{r3T2 zC$J01vj~I)t^?|)M|~TCKA;om2TZQuD3Af(2lfK{K6>BvYasCJ$NvNUWn`Ou=)K|q O0000004R=004l4008;_004mK002@5009+P0026d000+n*IFNt z000LaNkl)wsW7jUn8w&Z4LF8CiYQG;AP{P7oPZyA!N&G_*Sp@? zow=tUcD>lfL6v$mM>})p-t#}_p7TF4lC8g}F*j?}Q`Bn}Cxu2)QjcX$SAuB5j z%d$9o_AE_}SNZglbL8da^3IMOwRw4YiyZfE4Wk$*WqhPlB7)21qNJpR-rio)($a7^ z9HhJ5l$Jck@ngs4IY!&A(Tv?65Ii0a9*^gq>MblRRQho51;fxW3gt0O78bB=+g1Q}{H20| zf`_Q7ej9*m*S;cu$|RO9O_2K+KYN}T(l4 z)E)af0RE0I0H``xkH-!En+?>}9cO=KB@dUcXX|U#eEi{RiXVFc5e3>^|MiiHz1h*t zqJ?A0_8Dv`|0UUDV-!ty(9;tJ;80B^V;#pqi&Rfj7mnJi%;CaeQdI|MjqND8; z8`e)|`BU%m!E6zDqG%0}5Xx^5t%VcRB}fGrA%^`jd)3Ik=?iS4?VC&R@s3@qEmwk(`ZCx)Se zrlD+w%jFz4Hyi=oP-JAJW7|SsurHBxO+$uO*Tst$dHR`WnKy3^3l=QoAGLKj3&I!b+9JUT6R>>*m$0|-`axTe}f;cDdJ|^Id<)Omv1cz zFnd-Od-v7Q&~To8ySEbzwv&;OLBh7&1<^E}tV~$H;SKh@_Zek#=dexS+;Mj8 z{0Xsm4ku64v+<`Dtp47s`Y7)M<)W`8-bxD(n zwG%gZ-8l7X=5 z+fQ)m!XN2qZ=s}g8acT?A`nbx|9dZyH)$%pL6|px0WDv@i6z2w&o1Gam2cAFH`!hB zV|+d@{!S<=DyFgVb#&(xdIHJbB_vRE$2cA--ozutU@Hg&{LWwrZfK zrw0)*3?19D>FMrDb%JPg07U2uBn~>K(}`^>`g;91olbN;!F7kr<7y9YRPED7AhtvLW}0OYZwg;cz%KG|d~1 cM9lvV07PXiH>cC^1ONa407*qoM6N<$f<*U_OaK4? literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/oli.png b/cadline/components/administrator/components/com_alworkshops/assets/images/oli.png new file mode 100644 index 0000000000000000000000000000000000000000..fed3002ed33c192a6e7bc5e3b7dd694886424c7d GIT binary patch literal 1357 zcmV-T1+w~yP)004R=004l4008;_004mK002@5009+P0026d000+n*IFNt z000EkNkl5o79^BSyFx5b%ZC0N{fA%! zVuKJOQlyF&shbL^MX(5>3)&=VNF6sJ%}XB7_%(A6i+N_wV2Tv)OE}552UuwzeT6;<_zqwOZ0@c{%eu zPdv|0&G!>)i|@Ck)9H$c$m;5<866$HHI(GRg9m@h|6IQB%l1Dz^7!$uGC5iKbdW;_ zK?p#v*H5kA@6+!GsRcn|VQOI*89=w&DwRBu&g!oeD5U_E+l!u6 z=1zVOgrehcba=$d%Ex^F!;g<9Cnr-P{Wcgwz_QQzJ%Atx2*Z%+=}A1#WqEmpZ@&HR zQKeG(JV){_PxIhvfDp#U#t4FdCr_TR@!~mu{Qeu&>MUP<{q@h)YW1f5wloX@Cj}pL zNQ92sMmLS{^B|FSLdnKYJ|q1lKdpmYprRw+wAP@ z@bu|Zo;~{u$0^WgG+19>r`>L&l%mt_P_NftRkX>@diVzC$%ff$T2 zd6F;;34%VSr>9)Iw!p;11OO8g6HHA_;kqsd2L~yL!~jMF5tHUsV(%r%OP0jM9$A*f zg$oyQ)nwaIeRR5AtR#XAm@$$ohLqe0NQR_PC;(6@l~Qj3eBUPwLrzamQGkdc48pVu z9jAcO3S$gPWyr-~#2^SdTlbYpg;J@M0{ecOmg};!vx6AJ+}s?#-=;iLrqk)rYPC2z zI;Pw0ViyW%ZRO>PBg{2pwOYk>TWoG@aB%Q1T3a+44Lr}|%e!|0c=P5B#u&D?w%C5T zO{1~P;?fecv$O2)?=v+$oywK8v7Jr4Wm(M6Uqx%h{{B9_UXPiX8J3nlWU^AB-RUwu zJ|2yVLIDNLUb@8O)D+!rkGZQ?xqSID?M^qXECg)HF!p+VEK5_X)tH~3PZQq{0^C*$ zr4-k%FQT<3G+{bUeBVc*xPAK$zUR?wHZysZ42dy7)KvX`kX|sxL|}1wdcKE9lvpGl zEpbD3PkSkGf}6{UNZg_EEXuwtB6&cQoJC|3jo!=|sa%qk%a}7zL@>#V1HePigp4!s zemwSba+x^%s4BAFo<)(KNp=Fq#AKq4@2dD?z)qw)^E7Fsj07?O9C;J%Wh6~W2bL{K zP`U8sOy_fCNu?o<&|qoe0ul5~h>BR;FD zVasu%X0rJ*koC> P00000NkvXXu0mjffBA004R=004l4008;_004mK002@5009+P0026d000+n*IFNt z000JVNkl4B70fvjet-Jl?d3RwkyKLp%H2$ltfVqQB> zy+}ok3{RH7x3~9eu~@8CYn=rU0j2n#kA{W@#>U3x9XWF3 z?99x}nW~Ep9Xd23B9cyLB$LTVCSzBaZQEko*^*_mMaxMxo0ELr5fPETzCPX9*w|AQ z?>i z$8ouO^$Ht$Ht@&3L&sZMDuIl0{*?ly6rkqZ17#RU-a(-YH7j2y)I_7CCR22Ge}(-A z4jzxk<0T-Y+*vi}pfD^8_tf98-~2T?HHk9KvS+~eeS#n$k%(j4X}Y?)`Q2OZ9B*l9 z*<1lq1Soe7;e`Qs2lrul4rXgx1pq)(Qxm@LbL!M7Musmi`0+nTCfj&p&z|>_$>auW zZuD~jLBjJy8^-(u2B6E*)nZZkG>L60Bgl6^tCHc0GSQ0 zQn@06*1B}&!|i@O^^w|H2(O zLEXzgM=iRa*rNNaM{xNfMn@;2bxFw9+}))V1Vf)9Gk3`S z;kQIKZN^%mOn&HO=VgMb@obgPqGUJa&nWjt5anVTzEpZM12H!Acdn zg0W%T{y(9850z*o_TB9OOixbo+>d%WeE2;MA3n^;$S{i+FXsC7tGu&!AJ2UA86H@< zg7X(f=;~Ywv}gpunp=zD#&!IgpJS|CP3-A!qX84Rb!(CZ3*x-;$}jl*`Z)6w^Lgo| zml3ULZENMv$39@+-u;|CcaGQJ_!XUBeh}NvR?;OR;dXm?6KeSiRDC@(G!nQjW;Du) z6Mx0?G($t5(bkq=W@d_-nkb$Zkjv8-xeMbE<|p|y z6t-EYP=P>@ASh%8qBXXi<*OTeP)ebcV&ldQc%F}CnFLy6C`F((I?$}{XlF8&!YmdZ zDFZ3?o}zQnn5KzoMQ|M#$8m{9qi7wFv28@avO*#}&nwOQnRMvGG{e9vdY2TsX9%Lv zS}+WQbUKY`n$*|V;W&BnPM O++kTpui6?mM@yFS@V+WB)gzr52ENj=TWpXkF#Xz+# zNU@AAEn$(g2u2~lGiT1Qbm>z1kM%P!Fu;-}OW6J5i|pFDlgV3?jE#=c+0{iuLj%4a zl+hisq6%HsD$W-vWP*fQ0W>x?aN@%cd9JsYTsFt0e_v$LqJ^}zwlY3GP9l-ObzM-Z zVy4{na#!s7#et(`cH#8&ZNB&YAFyrPw@BXC#^B%}yLRrPwyut^Kl&&l!Y^NamF3Hq zGchqy6(AJj9J)jVjV7J3`SJ75)7;#Q>v?o`b@RjR+nJe3v*qcnI8L6Qyzl}O6X7^E z3-4l8L88&90npUgc-NmD?W;=DueEgnTefZ~3Ae7Ujl1io0#Y_mR6DBFeT{n9k{^Y-YQdpLyP^!VsW}W{G0Q0-|BiDDYkN^Mx07*qo IM6N<$f~`zdcmMzZ literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/s_com_alworkshops.png b/cadline/components/administrator/components/com_alworkshops/assets/images/s_com_alworkshops.png new file mode 100644 index 0000000000000000000000000000000000000000..9aee40ac30de697b71971fa289a08da99ebcfccf GIT binary patch literal 826 zcmV-A1I7G_P)g}ZDlSQ}6w6dFQe zXcj>TqAo-b?4nltQZ!Ai(wYoTGh;HDBr}tH@7(*p4{xA(U=N(d;c$N62Zv8$uOwi1 zo}HaNq-k0g-~mem0|S5YNbMcSfc);M*W#y-HGlMU*Ms-k4kne&yv1GfBt}yYrfDq! z=YYu&=KWt)86F-^^&iQ7byU03fADYxMV65zi<|Q~(#J;#e2-$WNU2o%4tP6+RCkmm zKcW_?tD{as@Ujc-9I(-oDG#Vx2@N#3Xj_U@Ds_5pZtnG6KqL}5uj@J}QS6pp?DYnc z*dkw6xDtH{udNeBOYlc5!>z(9nM?-YEPy;YIr&r~k?3e;9qrF)5``~82rvvhCt%C4 zSsAzn$c+(Nmp>;denIt2e8Z+EQsO!18lt|2 zW18sp8qew}0AjHiK(}g!3)gkYir?@gezOY}$H){CR6@Fi-@!_{ux%BgG?yqhD zEJ;Aq)YR1VYzv2@^?R%o{-IPW^GR@mWhq08;t->O6!^%hhD-p$CZo93YvU_yW97^&w4KYf3T)x1fP5`pI-*egj25h3iJD*^x&5QBq*mu6;W-q1AdWP5u% zFZT9u$5`P0zYVq=7e5Gg!=frOafM2uZd}*__&_i}KmU#-Ngo@Aai;yT$NAvI3*0G| zSzOzsZVMWgg|Hi#mi5Dp<;q#laTa!<><`q$#KiG^U=@|0FL8e+xGQZtu`_= zG;|s8fZ$>CNU#8PY;5en`1pALc8`vZb^zMLoxET8Kc+rf87UertpET307*qoM6N<$ Eg7hPTdjJ3c literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/tableshort-down.jpg b/cadline/components/administrator/components/com_alworkshops/assets/images/tableshort-down.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38689ce29226c4385bc832a7fe885cc362255353 GIT binary patch literal 453 zcmex=T;Nd3XdtKm-mL zSy)*)*g5#QxcEi*`1s)BL^J*$U=ZYB5M$tEW)x@ci+Wc+`GA&-H9i5cifB*4nd z#=*$I%*co&#=yYL!pbJVz{Cjj1S?#Ekx5Wdh?zl{MVVF1G0{kbO^^YofE8IMqac$I zvv6SI!i%Ct|8FtyFf#%zXBK3zXSg_Hchu9jGpm>1d$cGqvG>Qho9xPkOBS_oq&?td zkytoMH{)vLmYF>!+di(m5W9?9dEaIxSH`c+>*BBOUQ+pHu@u|GZx>(Py=3!E;zI2a w`?Vj}d3|Kdm(#b5sA=l5@VdXn^Hr4Y!WFN40#ElwKUt}@JZb+*R{8%o0pZT;Nd3XdtKm-mL zSy)*)*g5#QxcEi*`1s)BL^J*$U=ZYB5M$tEW)x@ci+Wc+`Gp@e~fnGxtn1Yl-i zZ*fU(rjehg$c5La}BinbgGM!!Ke9F;b&Y?LR znq1+>=d{Pvt_=&?IjhN}C%1g19S4t=&igr=$_t&jLc6uS^Y$?=)Q)4Ar)qe|-DKYR zx$~~%ThA)Ecyu%WlHgaLzVz*$*vmfaFJH&YKhwLG2A{f`sqsAK<*%2=*3CF4uI8Qb QcHu(3ydysto&Vni04n!tm;e9( literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/images/unknown.png b/cadline/components/administrator/components/com_alworkshops/assets/images/unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7b5da2f9bd8852420594f5a30b1dfaccb87e5c GIT binary patch literal 1401 zcmV-<1%~>GP)004R=004l4008;_004mK002@5009+P0026d000+n*IFNt z000F5Nkl;-kw@tU;newXl#sJw6?akDI(Hrwxrc+Nvmb2!nSR( zZ6^-LiJ~oz)0R%BDi`-ZD4SGl*k_Ow_`Co+=!D+Nj^K&9q_-zu>t zJqJQAo8@5tfaT>c`RV6hp3cn7#EFdI!x%cuFbpiq#Ij6G(?lsFu?IZQ!}on=XJ@eO zCY8!E-~aIA(_*oB9l%Q9NNog#Wts6?5kW*S35&%CMPHHJdfwkpQE*=Wjh={ zKF@b|@Ba4fojWVmFg2i*fl`V_qsiXhTXuGKXfzsVtualDQt4AJT)4o*!~_7@Y?ex; zLcLxmm&;*U7GwE5%at$q{qf_=)+oA6)4=zA?%%)1&dx4lV`F4884M$suhq7B@!|!y zZrx&GVF7?bp+KQf7;^8z!h$xE^hC*micO9ko2T7w1HoLk+vUiSBb+#K0^j#}`0!!; zK1r+AI{w}3^{@u13b+oQPMtc*;bEQg=g%`aImx?s@7UPbpxf;-Jw46-{yw|AyDTj& z#f3M3G={AkB~(DTI2_yC+f=Jnrl+T=*XzvB&r>d! zLnIRFA#p+p(OJWX526VsY}@9^lP8#_NxR)9lgV)H+O=5R{#^?HYC+V{jaMH)6O8rs zbq)^?$>;NUp2y9bH<_E8qvyJD_i@uV25WR;%&J>@4+qol2#`;^HE% z=b?SwuUz-_h@J<8A59lPtyV)s=ykgki$yM8ycn3k^8(9iK@gCB`_UpO0pvq;Nm}qm zqk-c%ynp|mLZQIa)D&(=Q?h!kBdP=mDH8-s4U{fP3x>&8R#v!jG8xL{&oB)G&-Y>!fo($sp*E2bB&kWVDiH#h znGC+~^Xr2LRI61)gmdT4asB!YEGvWS_F^64i%76P?q32%L`&Kg8qpdVl1Bv57%*lIz**KCny)JIEn7Rkm%beY$JwghQDH*S2x=GG=!YtAg5A)Cw5YBqyLNg6@iAj7twqDzYg2@F735dyZ|B0rYr@})}v zv}}iFvw>1Z+QOqQWB4^Mcv5)VS?9-G2uFRoji40$^Oa00000NkvXX Hu0mjf3tpI7 literal 0 HcmV?d00001 diff --git a/cadline/components/administrator/components/com_alworkshops/assets/index.html b/cadline/components/administrator/components/com_alworkshops/assets/index.html new file mode 100644 index 00000000..42682b47 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/assets/js/ajax.js b/cadline/components/administrator/components/com_alworkshops/assets/js/ajax.js new file mode 100644 index 00000000..9a9b4809 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/js/ajax.js @@ -0,0 +1,16 @@ +function submitForm(formid,targetdiv) +{ + jQuery.ajax({ + type: "POST", + url: jQuery('#'+formid).attr('action'), + data: jQuery('#'+formid).serialize(), + success: function(html) {jQuery('#'+targetdiv).html(html);} + }); + return false; +} + +function setField(formid,elementid,value,targetdiv) +{ + jQuery('#'+elementid).val(value); + if (formid>'') submitForm(formid,targetdiv); +} \ No newline at end of file diff --git a/cadline/components/administrator/components/com_alworkshops/assets/js/jquery-ui.js b/cadline/components/administrator/components/com_alworkshops/assets/js/jquery-ui.js new file mode 100644 index 00000000..02135523 --- /dev/null +++ b/cadline/components/administrator/components/com_alworkshops/assets/js/jquery-ui.js @@ -0,0 +1,18706 @@ +/*! jQuery UI - v1.12.1 - 2016-09-14 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +(function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define([ "jquery" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +}(function( $ ) { + +$.ui = $.ui || {}; + +var version = $.ui.version = "1.12.1"; + + +/*! + * jQuery UI Widget 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Widget +//>>group: Core +//>>description: Provides a factory for creating stateful widgets with a common API. +//>>docs: http://api.jqueryui.com/jQuery.widget/ +//>>demos: http://jqueryui.com/widget/ + + + +var widgetUuid = 0; +var widgetSlice = Array.prototype.slice; + +$.cleanData = ( function( orig ) { + return function( elems ) { + var events, elem, i; + for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { + try { + + // Only trigger remove when necessary to save time + events = $._data( elem, "events" ); + if ( events && events.remove ) { + $( elem ).triggerHandler( "remove" ); + } + + // Http://bugs.jquery.com/ticket/8235 + } catch ( e ) {} + } + orig( elems ); + }; +} )( $.cleanData ); + +$.widget = function( name, base, prototype ) { + var existingConstructor, constructor, basePrototype; + + // ProxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + var proxiedPrototype = {}; + + var namespace = name.split( "." )[ 0 ]; + name = name.split( "." )[ 1 ]; + var fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + if ( $.isArray( prototype ) ) { + prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); + } + + // Create selector for plugin + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + + // Allow instantiation without "new" keyword + if ( !this._createWidget ) { + return new constructor( options, element ); + } + + // Allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + + // Extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + + // Copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + + // Track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + } ); + + basePrototype = new base(); + + // We need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( !$.isFunction( value ) ) { + proxiedPrototype[ prop ] = value; + return; + } + proxiedPrototype[ prop ] = ( function() { + function _super() { + return base.prototype[ prop ].apply( this, arguments ); + } + + function _superApply( args ) { + return base.prototype[ prop ].apply( this, args ); + } + + return function() { + var __super = this._super; + var __superApply = this._superApply; + var returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + } )(); + } ); + constructor.prototype = $.widget.extend( basePrototype, { + + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name + }, proxiedPrototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + widgetFullName: fullName + } ); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // Redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, + child._proto ); + } ); + + // Remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); + + return constructor; +}; + +$.widget.extend = function( target ) { + var input = widgetSlice.call( arguments, 1 ); + var inputIndex = 0; + var inputLength = input.length; + var key; + var value; + + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName || name; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string"; + var args = widgetSlice.call( arguments, 1 ); + var returnValue = this; + + if ( isMethodCall ) { + + // If this is an empty collection, we need to have the instance method + // return undefined instead of the jQuery instance + if ( !this.length && options === "instance" ) { + returnValue = undefined; + } else { + this.each( function() { + var methodValue; + var instance = $.data( this, fullName ); + + if ( options === "instance" ) { + returnValue = instance; + return false; + } + + if ( !instance ) { + return $.error( "cannot call methods on " + name + + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + + if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + + " widget instance" ); + } + + methodValue = instance[ options ].apply( instance, args ); + + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + } ); + } + } else { + + // Allow multiple hashes to be passed on init + if ( args.length ) { + options = $.widget.extend.apply( null, [ options ].concat( args ) ); + } + + this.each( function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} ); + if ( instance._init ) { + instance._init(); + } + } else { + $.data( this, fullName, new object( options, this ) ); + } + } ); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
    ", + + options: { + classes: {}, + disabled: false, + + // Callbacks + create: null + }, + + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = widgetUuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + this.classesElementLookup = {}; + + if ( element !== this ) { + $.data( element, this.widgetFullName, this ); + this._on( true, this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + } ); + this.document = $( element.style ? + + // Element within the document + element.ownerDocument : + + // Element is window or document + element.document || element ); + this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); + } + + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this._create(); + + if ( this.options.disabled ) { + this._setOptionDisabled( this.options.disabled ); + } + + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + + _getCreateOptions: function() { + return {}; + }, + + _getCreateEventData: $.noop, + + _create: $.noop, + + _init: $.noop, + + destroy: function() { + var that = this; + + this._destroy(); + $.each( this.classesElementLookup, function( key, value ) { + that._removeClass( value, key ); + } ); + + // We can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .off( this.eventNamespace ) + .removeData( this.widgetFullName ); + this.widget() + .off( this.eventNamespace ) + .removeAttr( "aria-disabled" ); + + // Clean up events and states + this.bindings.off( this.eventNamespace ); + }, + + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key; + var parts; + var curOption; + var i; + + if ( arguments.length === 0 ) { + + // Don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + + // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( arguments.length === 1 ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( arguments.length === 1 ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + + _setOption: function( key, value ) { + if ( key === "classes" ) { + this._setOptionClasses( value ); + } + + this.options[ key ] = value; + + if ( key === "disabled" ) { + this._setOptionDisabled( value ); + } + + return this; + }, + + _setOptionClasses: function( value ) { + var classKey, elements, currentElements; + + for ( classKey in value ) { + currentElements = this.classesElementLookup[ classKey ]; + if ( value[ classKey ] === this.options.classes[ classKey ] || + !currentElements || + !currentElements.length ) { + continue; + } + + // We are doing this to create a new jQuery object because the _removeClass() call + // on the next line is going to destroy the reference to the current elements being + // tracked. We need to save a copy of this collection so that we can add the new classes + // below. + elements = $( currentElements.get() ); + this._removeClass( currentElements, classKey ); + + // We don't use _addClass() here, because that uses this.options.classes + // for generating the string of classes. We want to use the value passed in from + // _setOption(), this is the new value of the classes option which was passed to + // _setOption(). We pass this value directly to _classes(). + elements.addClass( this._classes( { + element: elements, + keys: classKey, + classes: value, + add: true + } ) ); + } + }, + + _setOptionDisabled: function( value ) { + this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); + + // If the widget is becoming disabled, then nothing is interactive + if ( value ) { + this._removeClass( this.hoverable, null, "ui-state-hover" ); + this._removeClass( this.focusable, null, "ui-state-focus" ); + } + }, + + enable: function() { + return this._setOptions( { disabled: false } ); + }, + + disable: function() { + return this._setOptions( { disabled: true } ); + }, + + _classes: function( options ) { + var full = []; + var that = this; + + options = $.extend( { + element: this.element, + classes: this.options.classes || {} + }, options ); + + function processClassString( classes, checkOption ) { + var current, i; + for ( i = 0; i < classes.length; i++ ) { + current = that.classesElementLookup[ classes[ i ] ] || $(); + if ( options.add ) { + current = $( $.unique( current.get().concat( options.element.get() ) ) ); + } else { + current = $( current.not( options.element ).get() ); + } + that.classesElementLookup[ classes[ i ] ] = current; + full.push( classes[ i ] ); + if ( checkOption && options.classes[ classes[ i ] ] ) { + full.push( options.classes[ classes[ i ] ] ); + } + } + } + + this._on( options.element, { + "remove": "_untrackClassesElement" + } ); + + if ( options.keys ) { + processClassString( options.keys.match( /\S+/g ) || [], true ); + } + if ( options.extra ) { + processClassString( options.extra.match( /\S+/g ) || [] ); + } + + return full.join( " " ); + }, + + _untrackClassesElement: function( event ) { + var that = this; + $.each( that.classesElementLookup, function( key, value ) { + if ( $.inArray( event.target, value ) !== -1 ) { + that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); + } + } ); + }, + + _removeClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, false ); + }, + + _addClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, true ); + }, + + _toggleClass: function( element, keys, extra, add ) { + add = ( typeof add === "boolean" ) ? add : extra; + var shift = ( typeof element === "string" || element === null ), + options = { + extra: shift ? keys : extra, + keys: shift ? element : keys, + element: shift ? this.element : element, + add: add + }; + options.element.toggleClass( this._classes( options ), add ); + return this; + }, + + _on: function( suppressDisabledCheck, element, handlers ) { + var delegateElement; + var instance = this; + + // No suppressDisabledCheck flag, shuffle arguments + if ( typeof suppressDisabledCheck !== "boolean" ) { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // No element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + + // Allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( !suppressDisabledCheck && + ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // Copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^([\w:-]*)\s*(.*)$/ ); + var eventName = match[ 1 ] + instance.eventNamespace; + var selector = match[ 2 ]; + + if ( selector ) { + delegateElement.on( eventName, selector, handlerProxy ); + } else { + element.on( eventName, handlerProxy ); + } + } ); + }, + + _off: function( element, eventName ) { + eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + + this.eventNamespace; + element.off( eventName ).off( eventName ); + + // Clear the stack to avoid memory leaks (#10056) + this.bindings = $( this.bindings.not( element ).get() ); + this.focusable = $( this.focusable.not( element ).get() ); + this.hoverable = $( this.hoverable.not( element ).get() ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); + }, + mouseleave: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); + } + } ); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); + }, + focusout: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); + } + } ); + }, + + _trigger: function( type, event, data ) { + var prop, orig; + var callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + + // The original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // Copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + + var hasOptions; + var effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } + + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + + if ( options.delay ) { + element.delay( options.delay ); + } + + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue( function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + } ); + } + }; +} ); + +var widget = $.widget; + + +/*! + * jQuery UI Position 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/position/ + */ + +//>>label: Position +//>>group: Core +//>>description: Positions elements relative to other elements. +//>>docs: http://api.jqueryui.com/position/ +//>>demos: http://jqueryui.com/position/ + + +( function() { +var cachedScrollbarWidth, + max = Math.max, + abs = Math.abs, + rhorizontal = /left|center|right/, + rvertical = /top|center|bottom/, + roffset = /[\+\-]\d+(\.[\d]+)?%?/, + rposition = /^\w+/, + rpercent = /%$/, + _position = $.fn.position; + +function getOffsets( offsets, width, height ) { + return [ + parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), + parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) + ]; +} + +function parseCss( element, property ) { + return parseInt( $.css( element, property ), 10 ) || 0; +} + +function getDimensions( elem ) { + var raw = elem[ 0 ]; + if ( raw.nodeType === 9 ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: 0, left: 0 } + }; + } + if ( $.isWindow( raw ) ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: elem.scrollTop(), left: elem.scrollLeft() } + }; + } + if ( raw.preventDefault ) { + return { + width: 0, + height: 0, + offset: { top: raw.pageY, left: raw.pageX } + }; + } + return { + width: elem.outerWidth(), + height: elem.outerHeight(), + offset: elem.offset() + }; +} + +$.position = { + scrollbarWidth: function() { + if ( cachedScrollbarWidth !== undefined ) { + return cachedScrollbarWidth; + } + var w1, w2, + div = $( "
    " + + "
    " ), + innerDiv = div.children()[ 0 ]; + + $( "body" ).append( div ); + w1 = innerDiv.offsetWidth; + div.css( "overflow", "scroll" ); + + w2 = innerDiv.offsetWidth; + + if ( w1 === w2 ) { + w2 = div[ 0 ].clientWidth; + } + + div.remove(); + + return ( cachedScrollbarWidth = w1 - w2 ); + }, + getScrollInfo: function( within ) { + var overflowX = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-x" ), + overflowY = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-y" ), + hasOverflowX = overflowX === "scroll" || + ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), + hasOverflowY = overflowY === "scroll" || + ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); + return { + width: hasOverflowY ? $.position.scrollbarWidth() : 0, + height: hasOverflowX ? $.position.scrollbarWidth() : 0 + }; + }, + getWithinInfo: function( element ) { + var withinElement = $( element || window ), + isWindow = $.isWindow( withinElement[ 0 ] ), + isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, + hasOffset = !isWindow && !isDocument; + return { + element: withinElement, + isWindow: isWindow, + isDocument: isDocument, + offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, + scrollLeft: withinElement.scrollLeft(), + scrollTop: withinElement.scrollTop(), + width: withinElement.outerWidth(), + height: withinElement.outerHeight() + }; + } +}; + +$.fn.position = function( options ) { + if ( !options || !options.of ) { + return _position.apply( this, arguments ); + } + + // Make a copy, we don't want to modify arguments + options = $.extend( {}, options ); + + var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, + target = $( options.of ), + within = $.position.getWithinInfo( options.within ), + scrollInfo = $.position.getScrollInfo( within ), + collision = ( options.collision || "flip" ).split( " " ), + offsets = {}; + + dimensions = getDimensions( target ); + if ( target[ 0 ].preventDefault ) { + + // Force left top to allow flipping + options.at = "left top"; + } + targetWidth = dimensions.width; + targetHeight = dimensions.height; + targetOffset = dimensions.offset; + + // Clone to reuse original targetOffset later + basePosition = $.extend( {}, targetOffset ); + + // Force my and at to have valid horizontal and vertical positions + // if a value is missing or invalid, it will be converted to center + $.each( [ "my", "at" ], function() { + var pos = ( options[ this ] || "" ).split( " " ), + horizontalOffset, + verticalOffset; + + if ( pos.length === 1 ) { + pos = rhorizontal.test( pos[ 0 ] ) ? + pos.concat( [ "center" ] ) : + rvertical.test( pos[ 0 ] ) ? + [ "center" ].concat( pos ) : + [ "center", "center" ]; + } + pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; + pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; + + // Calculate offsets + horizontalOffset = roffset.exec( pos[ 0 ] ); + verticalOffset = roffset.exec( pos[ 1 ] ); + offsets[ this ] = [ + horizontalOffset ? horizontalOffset[ 0 ] : 0, + verticalOffset ? verticalOffset[ 0 ] : 0 + ]; + + // Reduce to just the positions without the offsets + options[ this ] = [ + rposition.exec( pos[ 0 ] )[ 0 ], + rposition.exec( pos[ 1 ] )[ 0 ] + ]; + } ); + + // Normalize collision option + if ( collision.length === 1 ) { + collision[ 1 ] = collision[ 0 ]; + } + + if ( options.at[ 0 ] === "right" ) { + basePosition.left += targetWidth; + } else if ( options.at[ 0 ] === "center" ) { + basePosition.left += targetWidth / 2; + } + + if ( options.at[ 1 ] === "bottom" ) { + basePosition.top += targetHeight; + } else if ( options.at[ 1 ] === "center" ) { + basePosition.top += targetHeight / 2; + } + + atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); + basePosition.left += atOffset[ 0 ]; + basePosition.top += atOffset[ 1 ]; + + return this.each( function() { + var collisionPosition, using, + elem = $( this ), + elemWidth = elem.outerWidth(), + elemHeight = elem.outerHeight(), + marginLeft = parseCss( this, "marginLeft" ), + marginTop = parseCss( this, "marginTop" ), + collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + + scrollInfo.width, + collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + + scrollInfo.height, + position = $.extend( {}, basePosition ), + myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); + + if ( options.my[ 0 ] === "right" ) { + position.left -= elemWidth; + } else if ( options.my[ 0 ] === "center" ) { + position.left -= elemWidth / 2; + } + + if ( options.my[ 1 ] === "bottom" ) { + position.top -= elemHeight; + } else if ( options.my[ 1 ] === "center" ) { + position.top -= elemHeight / 2; + } + + position.left += myOffset[ 0 ]; + position.top += myOffset[ 1 ]; + + collisionPosition = { + marginLeft: marginLeft, + marginTop: marginTop + }; + + $.each( [ "left", "top" ], function( i, dir ) { + if ( $.ui.position[ collision[ i ] ] ) { + $.ui.position[ collision[ i ] ][ dir ]( position, { + targetWidth: targetWidth, + targetHeight: targetHeight, + elemWidth: elemWidth, + elemHeight: elemHeight, + collisionPosition: collisionPosition, + collisionWidth: collisionWidth, + collisionHeight: collisionHeight, + offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], + my: options.my, + at: options.at, + within: within, + elem: elem + } ); + } + } ); + + if ( options.using ) { + + // Adds feedback as second argument to using callback, if present + using = function( props ) { + var left = targetOffset.left - position.left, + right = left + targetWidth - elemWidth, + top = targetOffset.top - position.top, + bottom = top + targetHeight - elemHeight, + feedback = { + target: { + element: target, + left: targetOffset.left, + top: targetOffset.top, + width: targetWidth, + height: targetHeight + }, + element: { + element: elem, + left: position.left, + top: position.top, + width: elemWidth, + height: elemHeight + }, + horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", + vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" + }; + if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { + feedback.horizontal = "center"; + } + if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { + feedback.vertical = "middle"; + } + if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { + feedback.important = "horizontal"; + } else { + feedback.important = "vertical"; + } + options.using.call( this, props, feedback ); + }; + } + + elem.offset( $.extend( position, { using: using } ) ); + } ); +}; + +$.ui.position = { + fit: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, + outerWidth = within.width, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = withinOffset - collisionPosLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, + newOverRight; + + // Element is wider than within + if ( data.collisionWidth > outerWidth ) { + + // Element is initially over the left side of within + if ( overLeft > 0 && overRight <= 0 ) { + newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - + withinOffset; + position.left += overLeft - newOverRight; + + // Element is initially over right side of within + } else if ( overRight > 0 && overLeft <= 0 ) { + position.left = withinOffset; + + // Element is initially over both left and right sides of within + } else { + if ( overLeft > overRight ) { + position.left = withinOffset + outerWidth - data.collisionWidth; + } else { + position.left = withinOffset; + } + } + + // Too far left -> align with left edge + } else if ( overLeft > 0 ) { + position.left += overLeft; + + // Too far right -> align with right edge + } else if ( overRight > 0 ) { + position.left -= overRight; + + // Adjust based on position and margin + } else { + position.left = max( position.left - collisionPosLeft, position.left ); + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollTop : within.offset.top, + outerHeight = data.within.height, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = withinOffset - collisionPosTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, + newOverBottom; + + // Element is taller than within + if ( data.collisionHeight > outerHeight ) { + + // Element is initially over the top of within + if ( overTop > 0 && overBottom <= 0 ) { + newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - + withinOffset; + position.top += overTop - newOverBottom; + + // Element is initially over bottom of within + } else if ( overBottom > 0 && overTop <= 0 ) { + position.top = withinOffset; + + // Element is initially over both top and bottom of within + } else { + if ( overTop > overBottom ) { + position.top = withinOffset + outerHeight - data.collisionHeight; + } else { + position.top = withinOffset; + } + } + + // Too far up -> align with top + } else if ( overTop > 0 ) { + position.top += overTop; + + // Too far down -> align with bottom edge + } else if ( overBottom > 0 ) { + position.top -= overBottom; + + // Adjust based on position and margin + } else { + position.top = max( position.top - collisionPosTop, position.top ); + } + } + }, + flip: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.offset.left + within.scrollLeft, + outerWidth = within.width, + offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = collisionPosLeft - offsetLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, + myOffset = data.my[ 0 ] === "left" ? + -data.elemWidth : + data.my[ 0 ] === "right" ? + data.elemWidth : + 0, + atOffset = data.at[ 0 ] === "left" ? + data.targetWidth : + data.at[ 0 ] === "right" ? + -data.targetWidth : + 0, + offset = -2 * data.offset[ 0 ], + newOverRight, + newOverLeft; + + if ( overLeft < 0 ) { + newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - + outerWidth - withinOffset; + if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { + position.left += myOffset + atOffset + offset; + } + } else if ( overRight > 0 ) { + newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + + atOffset + offset - offsetLeft; + if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { + position.left += myOffset + atOffset + offset; + } + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.offset.top + within.scrollTop, + outerHeight = within.height, + offsetTop = within.isWindow ? within.scrollTop : within.offset.top, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = collisionPosTop - offsetTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, + top = data.my[ 1 ] === "top", + myOffset = top ? + -data.elemHeight : + data.my[ 1 ] === "bottom" ? + data.elemHeight : + 0, + atOffset = data.at[ 1 ] === "top" ? + data.targetHeight : + data.at[ 1 ] === "bottom" ? + -data.targetHeight : + 0, + offset = -2 * data.offset[ 1 ], + newOverTop, + newOverBottom; + if ( overTop < 0 ) { + newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - + outerHeight - withinOffset; + if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { + position.top += myOffset + atOffset + offset; + } + } else if ( overBottom > 0 ) { + newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + + offset - offsetTop; + if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { + position.top += myOffset + atOffset + offset; + } + } + } + }, + flipfit: { + left: function() { + $.ui.position.flip.left.apply( this, arguments ); + $.ui.position.fit.left.apply( this, arguments ); + }, + top: function() { + $.ui.position.flip.top.apply( this, arguments ); + $.ui.position.fit.top.apply( this, arguments ); + } + } +}; + +} )(); + +var position = $.ui.position; + + +/*! + * jQuery UI :data 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :data Selector +//>>group: Core +//>>description: Selects elements which have data stored under the specified key. +//>>docs: http://api.jqueryui.com/data-selector/ + + +var data = $.extend( $.expr[ ":" ], { + data: $.expr.createPseudo ? + $.expr.createPseudo( function( dataName ) { + return function( elem ) { + return !!$.data( elem, dataName ); + }; + } ) : + + // Support: jQuery <1.8 + function( elem, i, match ) { + return !!$.data( elem, match[ 3 ] ); + } +} ); + +/*! + * jQuery UI Disable Selection 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: disableSelection +//>>group: Core +//>>description: Disable selection of text content within the set of matched elements. +//>>docs: http://api.jqueryui.com/disableSelection/ + +// This file is deprecated + + +var disableSelection = $.fn.extend( { + disableSelection: ( function() { + var eventType = "onselectstart" in document.createElement( "div" ) ? + "selectstart" : + "mousedown"; + + return function() { + return this.on( eventType + ".ui-disableSelection", function( event ) { + event.preventDefault(); + } ); + }; + } )(), + + enableSelection: function() { + return this.off( ".ui-disableSelection" ); + } +} ); + + +/*! + * jQuery UI Effects 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Effects Core +//>>group: Effects +// jscs:disable maximumLineLength +//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects. +// jscs:enable maximumLineLength +//>>docs: http://api.jqueryui.com/category/effects-core/ +//>>demos: http://jqueryui.com/effect/ + + + +var dataSpace = "ui-effects-", + dataSpaceStyle = "ui-effects-style", + dataSpaceAnimated = "ui-effects-animated", + + // Create a local jQuery because jQuery Color relies on it and the + // global may not exist with AMD and a custom build (#10199) + jQuery = $; + +$.effects = { + effect: {} +}; + +/*! + * jQuery Color Animations v2.1.2 + * https://github.com/jquery/jquery-color + * + * Copyright 2014 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * Date: Wed Jan 16 08:47:09 2013 -0600 + */ +( function( jQuery, undefined ) { + + var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " + + "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", + + // Plusequals test for += 100 -= 100 + rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, + + // A set of RE's that can match strings and generate color tuples. + stringParsers = [ { + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; + } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ] * 2.55, + execResult[ 2 ] * 2.55, + execResult[ 3 ] * 2.55, + execResult[ 4 ] + ]; + } + }, { + + // This regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ) + ]; + } + }, { + + // This regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + space: "hsla", + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ] / 100, + execResult[ 3 ] / 100, + execResult[ 4 ] + ]; + } + } ], + + // JQuery.Color( ) + color = jQuery.Color = function( color, green, blue, alpha ) { + return new jQuery.Color.fn.parse( color, green, blue, alpha ); + }, + spaces = { + rgba: { + props: { + red: { + idx: 0, + type: "byte" + }, + green: { + idx: 1, + type: "byte" + }, + blue: { + idx: 2, + type: "byte" + } + } + }, + + hsla: { + props: { + hue: { + idx: 0, + type: "degrees" + }, + saturation: { + idx: 1, + type: "percent" + }, + lightness: { + idx: 2, + type: "percent" + } + } + } + }, + propTypes = { + "byte": { + floor: true, + max: 255 + }, + "percent": { + max: 1 + }, + "degrees": { + mod: 360, + floor: true + } + }, + support = color.support = {}, + + // Element for support tests + supportElem = jQuery( "

    " )[ 0 ], + + // Colors = jQuery.Color.names + colors, + + // Local aliases of functions called often + each = jQuery.each; + +// Determine rgba support immediately +supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; +support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; + +// Define cache name and alpha properties +// for rgba and hsla spaces +each( spaces, function( spaceName, space ) { + space.cache = "_" + spaceName; + space.props.alpha = { + idx: 3, + type: "percent", + def: 1 + }; +} ); + +function clamp( value, prop, allowEmpty ) { + var type = propTypes[ prop.type ] || {}; + + if ( value == null ) { + return ( allowEmpty || !prop.def ) ? null : prop.def; + } + + // ~~ is an short way of doing floor for positive numbers + value = type.floor ? ~~value : parseFloat( value ); + + // IE will pass in empty strings as value for alpha, + // which will hit this case + if ( isNaN( value ) ) { + return prop.def; + } + + if ( type.mod ) { + + // We add mod before modding to make sure that negatives values + // get converted properly: -10 -> 350 + return ( value + type.mod ) % type.mod; + } + + // For now all property types without mod have min and max + return 0 > value ? 0 : type.max < value ? type.max : value; +} + +function stringParse( string ) { + var inst = color(), + rgba = inst._rgba = []; + + string = string.toLowerCase(); + + each( stringParsers, function( i, parser ) { + var parsed, + match = parser.re.exec( string ), + values = match && parser.parse( match ), + spaceName = parser.space || "rgba"; + + if ( values ) { + parsed = inst[ spaceName ]( values ); + + // If this was an rgba parse the assignment might happen twice + // oh well.... + inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; + rgba = inst._rgba = parsed._rgba; + + // Exit each( stringParsers ) here because we matched + return false; + } + } ); + + // Found a stringParser that handled it + if ( rgba.length ) { + + // If this came from a parsed string, force "transparent" when alpha is 0 + // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) + if ( rgba.join() === "0,0,0,0" ) { + jQuery.extend( rgba, colors.transparent ); + } + return inst; + } + + // Named colors + return colors[ string ]; +} + +color.fn = jQuery.extend( color.prototype, { + parse: function( red, green, blue, alpha ) { + if ( red === undefined ) { + this._rgba = [ null, null, null, null ]; + return this; + } + if ( red.jquery || red.nodeType ) { + red = jQuery( red ).css( green ); + green = undefined; + } + + var inst = this, + type = jQuery.type( red ), + rgba = this._rgba = []; + + // More than 1 argument specified - assume ( red, green, blue, alpha ) + if ( green !== undefined ) { + red = [ red, green, blue, alpha ]; + type = "array"; + } + + if ( type === "string" ) { + return this.parse( stringParse( red ) || colors._default ); + } + + if ( type === "array" ) { + each( spaces.rgba.props, function( key, prop ) { + rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); + } ); + return this; + } + + if ( type === "object" ) { + if ( red instanceof color ) { + each( spaces, function( spaceName, space ) { + if ( red[ space.cache ] ) { + inst[ space.cache ] = red[ space.cache ].slice(); + } + } ); + } else { + each( spaces, function( spaceName, space ) { + var cache = space.cache; + each( space.props, function( key, prop ) { + + // If the cache doesn't exist, and we know how to convert + if ( !inst[ cache ] && space.to ) { + + // If the value was null, we don't need to copy it + // if the key was alpha, we don't need to copy it either + if ( key === "alpha" || red[ key ] == null ) { + return; + } + inst[ cache ] = space.to( inst._rgba ); + } + + // This is the only case where we allow nulls for ALL properties. + // call clamp with alwaysAllowEmpty + inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); + } ); + + // Everything defined but alpha? + if ( inst[ cache ] && + jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { + + // Use the default of 1 + inst[ cache ][ 3 ] = 1; + if ( space.from ) { + inst._rgba = space.from( inst[ cache ] ); + } + } + } ); + } + return this; + } + }, + is: function( compare ) { + var is = color( compare ), + same = true, + inst = this; + + each( spaces, function( _, space ) { + var localCache, + isCache = is[ space.cache ]; + if ( isCache ) { + localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; + each( space.props, function( _, prop ) { + if ( isCache[ prop.idx ] != null ) { + same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); + return same; + } + } ); + } + return same; + } ); + return same; + }, + _space: function() { + var used = [], + inst = this; + each( spaces, function( spaceName, space ) { + if ( inst[ space.cache ] ) { + used.push( spaceName ); + } + } ); + return used.pop(); + }, + transition: function( other, distance ) { + var end = color( other ), + spaceName = end._space(), + space = spaces[ spaceName ], + startColor = this.alpha() === 0 ? color( "transparent" ) : this, + start = startColor[ space.cache ] || space.to( startColor._rgba ), + result = start.slice(); + + end = end[ space.cache ]; + each( space.props, function( key, prop ) { + var index = prop.idx, + startValue = start[ index ], + endValue = end[ index ], + type = propTypes[ prop.type ] || {}; + + // If null, don't override start value + if ( endValue === null ) { + return; + } + + // If null - use end + if ( startValue === null ) { + result[ index ] = endValue; + } else { + if ( type.mod ) { + if ( endValue - startValue > type.mod / 2 ) { + startValue += type.mod; + } else if ( startValue - endValue > type.mod / 2 ) { + startValue -= type.mod; + } + } + result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); + } + } ); + return this[ spaceName ]( result ); + }, + blend: function( opaque ) { + + // If we are already opaque - return ourself + if ( this._rgba[ 3 ] === 1 ) { + return this; + } + + var rgb = this._rgba.slice(), + a = rgb.pop(), + blend = color( opaque )._rgba; + + return color( jQuery.map( rgb, function( v, i ) { + return ( 1 - a ) * blend[ i ] + a * v; + } ) ); + }, + toRgbaString: function() { + var prefix = "rgba(", + rgba = jQuery.map( this._rgba, function( v, i ) { + return v == null ? ( i > 2 ? 1 : 0 ) : v; + } ); + + if ( rgba[ 3 ] === 1 ) { + rgba.pop(); + prefix = "rgb("; + } + + return prefix + rgba.join() + ")"; + }, + toHslaString: function() { + var prefix = "hsla(", + hsla = jQuery.map( this.hsla(), function( v, i ) { + if ( v == null ) { + v = i > 2 ? 1 : 0; + } + + // Catch 1 and 2 + if ( i && i < 3 ) { + v = Math.round( v * 100 ) + "%"; + } + return v; + } ); + + if ( hsla[ 3 ] === 1 ) { + hsla.pop(); + prefix = "hsl("; + } + return prefix + hsla.join() + ")"; + }, + toHexString: function( includeAlpha ) { + var rgba = this._rgba.slice(), + alpha = rgba.pop(); + + if ( includeAlpha ) { + rgba.push( ~~( alpha * 255 ) ); + } + + return "#" + jQuery.map( rgba, function( v ) { + + // Default to 0 when nulls exist + v = ( v || 0 ).toString( 16 ); + return v.length === 1 ? "0" + v : v; + } ).join( "" ); + }, + toString: function() { + return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); + } +} ); +color.fn.parse.prototype = color.fn; + +// Hsla conversions adapted from: +// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 + +function hue2rgb( p, q, h ) { + h = ( h + 1 ) % 1; + if ( h * 6 < 1 ) { + return p + ( q - p ) * h * 6; + } + if ( h * 2 < 1 ) { + return q; + } + if ( h * 3 < 2 ) { + return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6; + } + return p; +} + +spaces.hsla.to = function( rgba ) { + if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { + return [ null, null, null, rgba[ 3 ] ]; + } + var r = rgba[ 0 ] / 255, + g = rgba[ 1 ] / 255, + b = rgba[ 2 ] / 255, + a = rgba[ 3 ], + max = Math.max( r, g, b ), + min = Math.min( r, g, b ), + diff = max - min, + add = max + min, + l = add * 0.5, + h, s; + + if ( min === max ) { + h = 0; + } else if ( r === max ) { + h = ( 60 * ( g - b ) / diff ) + 360; + } else if ( g === max ) { + h = ( 60 * ( b - r ) / diff ) + 120; + } else { + h = ( 60 * ( r - g ) / diff ) + 240; + } + + // Chroma (diff) == 0 means greyscale which, by definition, saturation = 0% + // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) + if ( diff === 0 ) { + s = 0; + } else if ( l <= 0.5 ) { + s = diff / add; + } else { + s = diff / ( 2 - add ); + } + return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ]; +}; + +spaces.hsla.from = function( hsla ) { + if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { + return [ null, null, null, hsla[ 3 ] ]; + } + var h = hsla[ 0 ] / 360, + s = hsla[ 1 ], + l = hsla[ 2 ], + a = hsla[ 3 ], + q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, + p = 2 * l - q; + + return [ + Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), + Math.round( hue2rgb( p, q, h ) * 255 ), + Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), + a + ]; +}; + +each( spaces, function( spaceName, space ) { + var props = space.props, + cache = space.cache, + to = space.to, + from = space.from; + + // Makes rgba() and hsla() + color.fn[ spaceName ] = function( value ) { + + // Generate a cache for this space if it doesn't exist + if ( to && !this[ cache ] ) { + this[ cache ] = to( this._rgba ); + } + if ( value === undefined ) { + return this[ cache ].slice(); + } + + var ret, + type = jQuery.type( value ), + arr = ( type === "array" || type === "object" ) ? value : arguments, + local = this[ cache ].slice(); + + each( props, function( key, prop ) { + var val = arr[ type === "object" ? key : prop.idx ]; + if ( val == null ) { + val = local[ prop.idx ]; + } + local[ prop.idx ] = clamp( val, prop ); + } ); + + if ( from ) { + ret = color( from( local ) ); + ret[ cache ] = local; + return ret; + } else { + return color( local ); + } + }; + + // Makes red() green() blue() alpha() hue() saturation() lightness() + each( props, function( key, prop ) { + + // Alpha is included in more than one space + if ( color.fn[ key ] ) { + return; + } + color.fn[ key ] = function( value ) { + var vtype = jQuery.type( value ), + fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), + local = this[ fn ](), + cur = local[ prop.idx ], + match; + + if ( vtype === "undefined" ) { + return cur; + } + + if ( vtype === "function" ) { + value = value.call( this, cur ); + vtype = jQuery.type( value ); + } + if ( value == null && prop.empty ) { + return this; + } + if ( vtype === "string" ) { + match = rplusequals.exec( value ); + if ( match ) { + value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); + } + } + local[ prop.idx ] = value; + return this[ fn ]( local ); + }; + } ); +} ); + +// Add cssHook and .fx.step function for each named hook. +// accept a space separated string of properties +color.hook = function( hook ) { + var hooks = hook.split( " " ); + each( hooks, function( i, hook ) { + jQuery.cssHooks[ hook ] = { + set: function( elem, value ) { + var parsed, curElem, + backgroundColor = ""; + + if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || + ( parsed = stringParse( value ) ) ) ) { + value = color( parsed || value ); + if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { + curElem = hook === "backgroundColor" ? elem.parentNode : elem; + while ( + ( backgroundColor === "" || backgroundColor === "transparent" ) && + curElem && curElem.style + ) { + try { + backgroundColor = jQuery.css( curElem, "backgroundColor" ); + curElem = curElem.parentNode; + } catch ( e ) { + } + } + + value = value.blend( backgroundColor && backgroundColor !== "transparent" ? + backgroundColor : + "_default" ); + } + + value = value.toRgbaString(); + } + try { + elem.style[ hook ] = value; + } catch ( e ) { + + // Wrapped to prevent IE from throwing errors on "invalid" values like + // 'auto' or 'inherit' + } + } + }; + jQuery.fx.step[ hook ] = function( fx ) { + if ( !fx.colorInit ) { + fx.start = color( fx.elem, hook ); + fx.end = color( fx.end ); + fx.colorInit = true; + } + jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); + }; + } ); + +}; + +color.hook( stepHooks ); + +jQuery.cssHooks.borderColor = { + expand: function( value ) { + var expanded = {}; + + each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { + expanded[ "border" + part + "Color" ] = value; + } ); + return expanded; + } +}; + +// Basic color names only. +// Usage of any of the other color names requires adding yourself or including +// jquery.color.svg-names.js. +colors = jQuery.Color.names = { + + // 4.1. Basic color keywords + aqua: "#00ffff", + black: "#000000", + blue: "#0000ff", + fuchsia: "#ff00ff", + gray: "#808080", + green: "#008000", + lime: "#00ff00", + maroon: "#800000", + navy: "#000080", + olive: "#808000", + purple: "#800080", + red: "#ff0000", + silver: "#c0c0c0", + teal: "#008080", + white: "#ffffff", + yellow: "#ffff00", + + // 4.2.3. "transparent" color keyword + transparent: [ null, null, null, 0 ], + + _default: "#ffffff" +}; + +} )( jQuery ); + +/******************************************************************************/ +/****************************** CLASS ANIMATIONS ******************************/ +/******************************************************************************/ +( function() { + +var classAnimationActions = [ "add", "remove", "toggle" ], + shorthandStyles = { + border: 1, + borderBottom: 1, + borderColor: 1, + borderLeft: 1, + borderRight: 1, + borderTop: 1, + borderWidth: 1, + margin: 1, + padding: 1 + }; + +$.each( + [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], + function( _, prop ) { + $.fx.step[ prop ] = function( fx ) { + if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { + jQuery.style( fx.elem, prop, fx.end ); + fx.setAttr = true; + } + }; + } +); + +function getElementStyles( elem ) { + var key, len, + style = elem.ownerDocument.defaultView ? + elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : + elem.currentStyle, + styles = {}; + + if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { + len = style.length; + while ( len-- ) { + key = style[ len ]; + if ( typeof style[ key ] === "string" ) { + styles[ $.camelCase( key ) ] = style[ key ]; + } + } + + // Support: Opera, IE <9 + } else { + for ( key in style ) { + if ( typeof style[ key ] === "string" ) { + styles[ key ] = style[ key ]; + } + } + } + + return styles; +} + +function styleDifference( oldStyle, newStyle ) { + var diff = {}, + name, value; + + for ( name in newStyle ) { + value = newStyle[ name ]; + if ( oldStyle[ name ] !== value ) { + if ( !shorthandStyles[ name ] ) { + if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { + diff[ name ] = value; + } + } + } + } + + return diff; +} + +// Support: jQuery <1.8 +if ( !$.fn.addBack ) { + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} + +$.effects.animateClass = function( value, duration, easing, callback ) { + var o = $.speed( duration, easing, callback ); + + return this.queue( function() { + var animated = $( this ), + baseClass = animated.attr( "class" ) || "", + applyClassChange, + allAnimations = o.children ? animated.find( "*" ).addBack() : animated; + + // Map the animated objects to store the original styles. + allAnimations = allAnimations.map( function() { + var el = $( this ); + return { + el: el, + start: getElementStyles( this ) + }; + } ); + + // Apply class change + applyClassChange = function() { + $.each( classAnimationActions, function( i, action ) { + if ( value[ action ] ) { + animated[ action + "Class" ]( value[ action ] ); + } + } ); + }; + applyClassChange(); + + // Map all animated objects again - calculate new styles and diff + allAnimations = allAnimations.map( function() { + this.end = getElementStyles( this.el[ 0 ] ); + this.diff = styleDifference( this.start, this.end ); + return this; + } ); + + // Apply original class + animated.attr( "class", baseClass ); + + // Map all animated objects again - this time collecting a promise + allAnimations = allAnimations.map( function() { + var styleInfo = this, + dfd = $.Deferred(), + opts = $.extend( {}, o, { + queue: false, + complete: function() { + dfd.resolve( styleInfo ); + } + } ); + + this.el.animate( this.diff, opts ); + return dfd.promise(); + } ); + + // Once all animations have completed: + $.when.apply( $, allAnimations.get() ).done( function() { + + // Set the final class + applyClassChange(); + + // For each animated element, + // clear all css properties that were animated + $.each( arguments, function() { + var el = this.el; + $.each( this.diff, function( key ) { + el.css( key, "" ); + } ); + } ); + + // This is guarnteed to be there if you use jQuery.speed() + // it also handles dequeuing the next anim... + o.complete.call( animated[ 0 ] ); + } ); + } ); +}; + +$.fn.extend( { + addClass: ( function( orig ) { + return function( classNames, speed, easing, callback ) { + return speed ? + $.effects.animateClass.call( this, + { add: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + } )( $.fn.addClass ), + + removeClass: ( function( orig ) { + return function( classNames, speed, easing, callback ) { + return arguments.length > 1 ? + $.effects.animateClass.call( this, + { remove: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + } )( $.fn.removeClass ), + + toggleClass: ( function( orig ) { + return function( classNames, force, speed, easing, callback ) { + if ( typeof force === "boolean" || force === undefined ) { + if ( !speed ) { + + // Without speed parameter + return orig.apply( this, arguments ); + } else { + return $.effects.animateClass.call( this, + ( force ? { add: classNames } : { remove: classNames } ), + speed, easing, callback ); + } + } else { + + // Without force parameter + return $.effects.animateClass.call( this, + { toggle: classNames }, force, speed, easing ); + } + }; + } )( $.fn.toggleClass ), + + switchClass: function( remove, add, speed, easing, callback ) { + return $.effects.animateClass.call( this, { + add: add, + remove: remove + }, speed, easing, callback ); + } +} ); + +} )(); + +/******************************************************************************/ +/*********************************** EFFECTS **********************************/ +/******************************************************************************/ + +( function() { + +if ( $.expr && $.expr.filters && $.expr.filters.animated ) { + $.expr.filters.animated = ( function( orig ) { + return function( elem ) { + return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); + }; + } )( $.expr.filters.animated ); +} + +if ( $.uiBackCompat !== false ) { + $.extend( $.effects, { + + // Saves a set of properties in a data storage + save: function( element, set ) { + var i = 0, length = set.length; + for ( ; i < length; i++ ) { + if ( set[ i ] !== null ) { + element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); + } + } + }, + + // Restores a set of previously saved properties from a data storage + restore: function( element, set ) { + var val, i = 0, length = set.length; + for ( ; i < length; i++ ) { + if ( set[ i ] !== null ) { + val = element.data( dataSpace + set[ i ] ); + element.css( set[ i ], val ); + } + } + }, + + setMode: function( el, mode ) { + if ( mode === "toggle" ) { + mode = el.is( ":hidden" ) ? "show" : "hide"; + } + return mode; + }, + + // Wraps the element around a wrapper that copies position properties + createWrapper: function( element ) { + + // If the element is already wrapped, return it + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + return element.parent(); + } + + // Wrap the element + var props = { + width: element.outerWidth( true ), + height: element.outerHeight( true ), + "float": element.css( "float" ) + }, + wrapper = $( "

    " ) + .addClass( "ui-effects-wrapper" ) + .css( { + fontSize: "100%", + background: "transparent", + border: "none", + margin: 0, + padding: 0 + } ), + + // Store the size in case width/height are defined in % - Fixes #5245 + size = { + width: element.width(), + height: element.height() + }, + active = document.activeElement; + + // Support: Firefox + // Firefox incorrectly exposes anonymous content + // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 + try { + active.id; + } catch ( e ) { + active = document.body; + } + + element.wrap( wrapper ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).trigger( "focus" ); + } + + // Hotfix for jQuery 1.4 since some change in wrap() seems to actually + // lose the reference to the wrapped element + wrapper = element.parent(); + + // Transfer positioning properties to the wrapper + if ( element.css( "position" ) === "static" ) { + wrapper.css( { position: "relative" } ); + element.css( { position: "relative" } ); + } else { + $.extend( props, { + position: element.css( "position" ), + zIndex: element.css( "z-index" ) + } ); + $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) { + props[ pos ] = element.css( pos ); + if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { + props[ pos ] = "auto"; + } + } ); + element.css( { + position: "relative", + top: 0, + left: 0, + right: "auto", + bottom: "auto" + } ); + } + element.css( size ); + + return wrapper.css( props ).show(); + }, + + removeWrapper: function( element ) { + var active = document.activeElement; + + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + element.parent().replaceWith( element ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).trigger( "focus" ); + } + } + + return element; + } + } ); +} + +$.extend( $.effects, { + version: "1.12.1", + + define: function( name, mode, effect ) { + if ( !effect ) { + effect = mode; + mode = "effect"; + } + + $.effects.effect[ name ] = effect; + $.effects.effect[ name ].mode = mode; + + return effect; + }, + + scaledDimensions: function( element, percent, direction ) { + if ( percent === 0 ) { + return { + height: 0, + width: 0, + outerHeight: 0, + outerWidth: 0 + }; + } + + var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1, + y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1; + + return { + height: element.height() * y, + width: element.width() * x, + outerHeight: element.outerHeight() * y, + outerWidth: element.outerWidth() * x + }; + + }, + + clipToBox: function( animation ) { + return { + width: animation.clip.right - animation.clip.left, + height: animation.clip.bottom - animation.clip.top, + left: animation.clip.left, + top: animation.clip.top + }; + }, + + // Injects recently queued functions to be first in line (after "inprogress") + unshift: function( element, queueLength, count ) { + var queue = element.queue(); + + if ( queueLength > 1 ) { + queue.splice.apply( queue, + [ 1, 0 ].concat( queue.splice( queueLength, count ) ) ); + } + element.dequeue(); + }, + + saveStyle: function( element ) { + element.data( dataSpaceStyle, element[ 0 ].style.cssText ); + }, + + restoreStyle: function( element ) { + element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || ""; + element.removeData( dataSpaceStyle ); + }, + + mode: function( element, mode ) { + var hidden = element.is( ":hidden" ); + + if ( mode === "toggle" ) { + mode = hidden ? "show" : "hide"; + } + if ( hidden ? mode === "hide" : mode === "show" ) { + mode = "none"; + } + return mode; + }, + + // Translates a [top,left] array into a baseline value + getBaseline: function( origin, original ) { + var y, x; + + switch ( origin[ 0 ] ) { + case "top": + y = 0; + break; + case "middle": + y = 0.5; + break; + case "bottom": + y = 1; + break; + default: + y = origin[ 0 ] / original.height; + } + + switch ( origin[ 1 ] ) { + case "left": + x = 0; + break; + case "center": + x = 0.5; + break; + case "right": + x = 1; + break; + default: + x = origin[ 1 ] / original.width; + } + + return { + x: x, + y: y + }; + }, + + // Creates a placeholder element so that the original element can be made absolute + createPlaceholder: function( element ) { + var placeholder, + cssPosition = element.css( "position" ), + position = element.position(); + + // Lock in margins first to account for form elements, which + // will change margin if you explicitly set height + // see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380 + // Support: Safari + element.css( { + marginTop: element.css( "marginTop" ), + marginBottom: element.css( "marginBottom" ), + marginLeft: element.css( "marginLeft" ), + marginRight: element.css( "marginRight" ) + } ) + .outerWidth( element.outerWidth() ) + .outerHeight( element.outerHeight() ); + + if ( /^(static|relative)/.test( cssPosition ) ) { + cssPosition = "absolute"; + + placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( { + + // Convert inline to inline block to account for inline elements + // that turn to inline block based on content (like img) + display: /^(inline|ruby)/.test( element.css( "display" ) ) ? + "inline-block" : + "block", + visibility: "hidden", + + // Margins need to be set to account for margin collapse + marginTop: element.css( "marginTop" ), + marginBottom: element.css( "marginBottom" ), + marginLeft: element.css( "marginLeft" ), + marginRight: element.css( "marginRight" ), + "float": element.css( "float" ) + } ) + .outerWidth( element.outerWidth() ) + .outerHeight( element.outerHeight() ) + .addClass( "ui-effects-placeholder" ); + + element.data( dataSpace + "placeholder", placeholder ); + } + + element.css( { + position: cssPosition, + left: position.left, + top: position.top + } ); + + return placeholder; + }, + + removePlaceholder: function( element ) { + var dataKey = dataSpace + "placeholder", + placeholder = element.data( dataKey ); + + if ( placeholder ) { + placeholder.remove(); + element.removeData( dataKey ); + } + }, + + // Removes a placeholder if it exists and restores + // properties that were modified during placeholder creation + cleanUp: function( element ) { + $.effects.restoreStyle( element ); + $.effects.removePlaceholder( element ); + }, + + setTransition: function( element, list, factor, value ) { + value = value || {}; + $.each( list, function( i, x ) { + var unit = element.cssUnit( x ); + if ( unit[ 0 ] > 0 ) { + value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; + } + } ); + return value; + } +} ); + +// Return an effect options object for the given parameters: +function _normalizeArguments( effect, options, speed, callback ) { + + // Allow passing all options as the first parameter + if ( $.isPlainObject( effect ) ) { + options = effect; + effect = effect.effect; + } + + // Convert to an object + effect = { effect: effect }; + + // Catch (effect, null, ...) + if ( options == null ) { + options = {}; + } + + // Catch (effect, callback) + if ( $.isFunction( options ) ) { + callback = options; + speed = null; + options = {}; + } + + // Catch (effect, speed, ?) + if ( typeof options === "number" || $.fx.speeds[ options ] ) { + callback = speed; + speed = options; + options = {}; + } + + // Catch (effect, options, callback) + if ( $.isFunction( speed ) ) { + callback = speed; + speed = null; + } + + // Add options to effect + if ( options ) { + $.extend( effect, options ); + } + + speed = speed || options.duration; + effect.duration = $.fx.off ? 0 : + typeof speed === "number" ? speed : + speed in $.fx.speeds ? $.fx.speeds[ speed ] : + $.fx.speeds._default; + + effect.complete = callback || options.complete; + + return effect; +} + +function standardAnimationOption( option ) { + + // Valid standard speeds (nothing, number, named speed) + if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { + return true; + } + + // Invalid strings - treat as "normal" speed + if ( typeof option === "string" && !$.effects.effect[ option ] ) { + return true; + } + + // Complete callback + if ( $.isFunction( option ) ) { + return true; + } + + // Options hash (but not naming an effect) + if ( typeof option === "object" && !option.effect ) { + return true; + } + + // Didn't match any standard API + return false; +} + +$.fn.extend( { + effect: function( /* effect, options, speed, callback */ ) { + var args = _normalizeArguments.apply( this, arguments ), + effectMethod = $.effects.effect[ args.effect ], + defaultMode = effectMethod.mode, + queue = args.queue, + queueName = queue || "fx", + complete = args.complete, + mode = args.mode, + modes = [], + prefilter = function( next ) { + var el = $( this ), + normalizedMode = $.effects.mode( el, mode ) || defaultMode; + + // Sentinel for duck-punching the :animated psuedo-selector + el.data( dataSpaceAnimated, true ); + + // Save effect mode for later use, + // we can't just call $.effects.mode again later, + // as the .show() below destroys the initial state + modes.push( normalizedMode ); + + // See $.uiBackCompat inside of run() for removal of defaultMode in 1.13 + if ( defaultMode && ( normalizedMode === "show" || + ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { + el.show(); + } + + if ( !defaultMode || normalizedMode !== "none" ) { + $.effects.saveStyle( el ); + } + + if ( $.isFunction( next ) ) { + next(); + } + }; + + if ( $.fx.off || !effectMethod ) { + + // Delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args.duration, complete ); + } else { + return this.each( function() { + if ( complete ) { + complete.call( this ); + } + } ); + } + } + + function run( next ) { + var elem = $( this ); + + function cleanup() { + elem.removeData( dataSpaceAnimated ); + + $.effects.cleanUp( elem ); + + if ( args.mode === "hide" ) { + elem.hide(); + } + + done(); + } + + function done() { + if ( $.isFunction( complete ) ) { + complete.call( elem[ 0 ] ); + } + + if ( $.isFunction( next ) ) { + next(); + } + } + + // Override mode option on a per element basis, + // as toggle can be either show or hide depending on element state + args.mode = modes.shift(); + + if ( $.uiBackCompat !== false && !defaultMode ) { + if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { + + // Call the core method to track "olddisplay" properly + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[ 0 ], args, done ); + } + } else { + if ( args.mode === "none" ) { + + // Call the core method to track "olddisplay" properly + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[ 0 ], args, cleanup ); + } + } + } + + // Run prefilter on all elements first to ensure that + // any showing or hiding happens before placeholder creation, + // which ensures that any layout changes are correctly captured. + return queue === false ? + this.each( prefilter ).each( run ) : + this.queue( queueName, prefilter ).queue( queueName, run ); + }, + + show: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "show"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.show ), + + hide: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "hide"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.hide ), + + toggle: ( function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) || typeof option === "boolean" ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "toggle"; + return this.effect.call( this, args ); + } + }; + } )( $.fn.toggle ), + + cssUnit: function( key ) { + var style = this.css( key ), + val = []; + + $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { + if ( style.indexOf( unit ) > 0 ) { + val = [ parseFloat( style ), unit ]; + } + } ); + return val; + }, + + cssClip: function( clipObj ) { + if ( clipObj ) { + return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + + clipObj.bottom + "px " + clipObj.left + "px)" ); + } + return parseClip( this.css( "clip" ), this ); + }, + + transfer: function( options, done ) { + var element = $( this ), + target = $( options.to ), + targetFixed = target.css( "position" ) === "fixed", + body = $( "body" ), + fixTop = targetFixed ? body.scrollTop() : 0, + fixLeft = targetFixed ? body.scrollLeft() : 0, + endPosition = target.offset(), + animation = { + top: endPosition.top - fixTop, + left: endPosition.left - fixLeft, + height: target.innerHeight(), + width: target.innerWidth() + }, + startPosition = element.offset(), + transfer = $( "
    " ) + .appendTo( "body" ) + .addClass( options.className ) + .css( { + top: startPosition.top - fixTop, + left: startPosition.left - fixLeft, + height: element.innerHeight(), + width: element.innerWidth(), + position: targetFixed ? "fixed" : "absolute" + } ) + .animate( animation, options.duration, options.easing, function() { + transfer.remove(); + if ( $.isFunction( done ) ) { + done(); + } + } ); + } +} ); + +function parseClip( str, element ) { + var outerWidth = element.outerWidth(), + outerHeight = element.outerHeight(), + clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, + values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ]; + + return { + top: parseFloat( values[ 1 ] ) || 0, + right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ), + bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ), + left: parseFloat( values[ 4 ] ) || 0 + }; +} + +$.fx.step.clip = function( fx ) { + if ( !fx.clipInit ) { + fx.start = $( fx.elem ).cssClip(); + if ( typeof fx.end === "string" ) { + fx.end = parseClip( fx.end, fx.elem ); + } + fx.clipInit = true; + } + + $( fx.elem ).cssClip( { + top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top, + right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right, + bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom, + left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left + } ); +}; + +} )(); + +/******************************************************************************/ +/*********************************** EASING ***********************************/ +/******************************************************************************/ + +( function() { + +// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing) + +var baseEasings = {}; + +$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { + baseEasings[ name ] = function( p ) { + return Math.pow( p, i + 2 ); + }; +} ); + +$.extend( baseEasings, { + Sine: function( p ) { + return 1 - Math.cos( p * Math.PI / 2 ); + }, + Circ: function( p ) { + return 1 - Math.sqrt( 1 - p * p ); + }, + Elastic: function( p ) { + return p === 0 || p === 1 ? p : + -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 ); + }, + Back: function( p ) { + return p * p * ( 3 * p - 2 ); + }, + Bounce: function( p ) { + var pow2, + bounce = 4; + + while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} + return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); + } +} ); + +$.each( baseEasings, function( name, easeIn ) { + $.easing[ "easeIn" + name ] = easeIn; + $.easing[ "easeOut" + name ] = function( p ) { + return 1 - easeIn( 1 - p ); + }; + $.easing[ "easeInOut" + name ] = function( p ) { + return p < 0.5 ? + easeIn( p * 2 ) / 2 : + 1 - easeIn( p * -2 + 2 ) / 2; + }; +} ); + +} )(); + +var effect = $.effects; + + +/*! + * jQuery UI Effects Blind 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Blind Effect +//>>group: Effects +//>>description: Blinds the element. +//>>docs: http://api.jqueryui.com/blind-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) { + var map = { + up: [ "bottom", "top" ], + vertical: [ "bottom", "top" ], + down: [ "top", "bottom" ], + left: [ "right", "left" ], + horizontal: [ "right", "left" ], + right: [ "left", "right" ] + }, + element = $( this ), + direction = options.direction || "up", + start = element.cssClip(), + animate = { clip: $.extend( {}, start ) }, + placeholder = $.effects.createPlaceholder( element ); + + animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ]; + + if ( options.mode === "show" ) { + element.cssClip( animate.clip ); + if ( placeholder ) { + placeholder.css( $.effects.clipToBox( animate ) ); + } + + animate.clip = start; + } + + if ( placeholder ) { + placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing ); + } + + element.animate( animate, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Bounce 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Bounce Effect +//>>group: Effects +//>>description: Bounces an element horizontally or vertically n times. +//>>docs: http://api.jqueryui.com/bounce-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) { + var upAnim, downAnim, refValue, + element = $( this ), + + // Defaults: + mode = options.mode, + hide = mode === "hide", + show = mode === "show", + direction = options.direction || "up", + distance = options.distance, + times = options.times || 5, + + // Number of internal animations + anims = times * 2 + ( show || hide ? 1 : 0 ), + speed = options.duration / anims, + easing = options.easing, + + // Utility: + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ), + i = 0, + + queuelen = element.queue().length; + + $.effects.createPlaceholder( element ); + + refValue = element.css( ref ); + + // Default distance for the BIGGEST bounce is the outer Distance / 3 + if ( !distance ) { + distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; + } + + if ( show ) { + downAnim = { opacity: 1 }; + downAnim[ ref ] = refValue; + + // If we are showing, force opacity 0 and set the initial position + // then do the "first" animation + element + .css( "opacity", 0 ) + .css( ref, motion ? -distance * 2 : distance * 2 ) + .animate( downAnim, speed, easing ); + } + + // Start at the smallest distance if we are hiding + if ( hide ) { + distance = distance / Math.pow( 2, times - 1 ); + } + + downAnim = {}; + downAnim[ ref ] = refValue; + + // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here + for ( ; i < times; i++ ) { + upAnim = {}; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + element + .animate( upAnim, speed, easing ) + .animate( downAnim, speed, easing ); + + distance = hide ? distance * 2 : distance / 2; + } + + // Last Bounce when Hiding + if ( hide ) { + upAnim = { opacity: 0 }; + upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; + + element.animate( upAnim, speed, easing ); + } + + element.queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Clip 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Clip Effect +//>>group: Effects +//>>description: Clips the element on and off like an old TV. +//>>docs: http://api.jqueryui.com/clip-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) { + var start, + animate = {}, + element = $( this ), + direction = options.direction || "vertical", + both = direction === "both", + horizontal = both || direction === "horizontal", + vertical = both || direction === "vertical"; + + start = element.cssClip(); + animate.clip = { + top: vertical ? ( start.bottom - start.top ) / 2 : start.top, + right: horizontal ? ( start.right - start.left ) / 2 : start.right, + bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom, + left: horizontal ? ( start.right - start.left ) / 2 : start.left + }; + + $.effects.createPlaceholder( element ); + + if ( options.mode === "show" ) { + element.cssClip( animate.clip ); + animate.clip = start; + } + + element.animate( animate, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); + +} ); + + +/*! + * jQuery UI Effects Drop 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Drop Effect +//>>group: Effects +//>>description: Moves an element in one direction and hides it at the same time. +//>>docs: http://api.jqueryui.com/drop-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) { + + var distance, + element = $( this ), + mode = options.mode, + show = mode === "show", + direction = options.direction || "left", + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=", + oppositeMotion = ( motion === "+=" ) ? "-=" : "+=", + animation = { + opacity: 0 + }; + + $.effects.createPlaceholder( element ); + + distance = options.distance || + element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; + + animation[ ref ] = motion + distance; + + if ( show ) { + element.css( animation ); + + animation[ ref ] = oppositeMotion + distance; + animation.opacity = 1; + } + + // Animate + element.animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Explode 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Explode Effect +//>>group: Effects +// jscs:disable maximumLineLength +//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. +// jscs:enable maximumLineLength +//>>docs: http://api.jqueryui.com/explode-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) { + + var i, j, left, top, mx, my, + rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3, + cells = rows, + element = $( this ), + mode = options.mode, + show = mode === "show", + + // Show and then visibility:hidden the element before calculating offset + offset = element.show().css( "visibility", "hidden" ).offset(), + + // Width and height of a piece + width = Math.ceil( element.outerWidth() / cells ), + height = Math.ceil( element.outerHeight() / rows ), + pieces = []; + + // Children animate complete: + function childComplete() { + pieces.push( this ); + if ( pieces.length === rows * cells ) { + animComplete(); + } + } + + // Clone the element for each row and cell. + for ( i = 0; i < rows; i++ ) { // ===> + top = offset.top + i * height; + my = i - ( rows - 1 ) / 2; + + for ( j = 0; j < cells; j++ ) { // ||| + left = offset.left + j * width; + mx = j - ( cells - 1 ) / 2; + + // Create a clone of the now hidden main element that will be absolute positioned + // within a wrapper div off the -left and -top equal to size of our pieces + element + .clone() + .appendTo( "body" ) + .wrap( "
    " ) + .css( { + position: "absolute", + visibility: "visible", + left: -j * width, + top: -i * height + } ) + + // Select the wrapper - make it overflow: hidden and absolute positioned based on + // where the original was located +left and +top equal to the size of pieces + .parent() + .addClass( "ui-effects-explode" ) + .css( { + position: "absolute", + overflow: "hidden", + width: width, + height: height, + left: left + ( show ? mx * width : 0 ), + top: top + ( show ? my * height : 0 ), + opacity: show ? 0 : 1 + } ) + .animate( { + left: left + ( show ? 0 : mx * width ), + top: top + ( show ? 0 : my * height ), + opacity: show ? 1 : 0 + }, options.duration || 500, options.easing, childComplete ); + } + } + + function animComplete() { + element.css( { + visibility: "visible" + } ); + $( pieces ).remove(); + done(); + } +} ); + + +/*! + * jQuery UI Effects Fade 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Fade Effect +//>>group: Effects +//>>description: Fades the element. +//>>docs: http://api.jqueryui.com/fade-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) { + var show = options.mode === "show"; + + $( this ) + .css( "opacity", show ? 0 : 1 ) + .animate( { + opacity: show ? 1 : 0 + }, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Fold 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Fold Effect +//>>group: Effects +//>>description: Folds an element first horizontally and then vertically. +//>>docs: http://api.jqueryui.com/fold-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) { + + // Create element + var element = $( this ), + mode = options.mode, + show = mode === "show", + hide = mode === "hide", + size = options.size || 15, + percent = /([0-9]+)%/.exec( size ), + horizFirst = !!options.horizFirst, + ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ], + duration = options.duration / 2, + + placeholder = $.effects.createPlaceholder( element ), + + start = element.cssClip(), + animation1 = { clip: $.extend( {}, start ) }, + animation2 = { clip: $.extend( {}, start ) }, + + distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ], + + queuelen = element.queue().length; + + if ( percent ) { + size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; + } + animation1.clip[ ref[ 0 ] ] = size; + animation2.clip[ ref[ 0 ] ] = size; + animation2.clip[ ref[ 1 ] ] = 0; + + if ( show ) { + element.cssClip( animation2.clip ); + if ( placeholder ) { + placeholder.css( $.effects.clipToBox( animation2 ) ); + } + + animation2.clip = start; + } + + // Animate + element + .queue( function( next ) { + if ( placeholder ) { + placeholder + .animate( $.effects.clipToBox( animation1 ), duration, options.easing ) + .animate( $.effects.clipToBox( animation2 ), duration, options.easing ); + } + + next(); + } ) + .animate( animation1, duration, options.easing ) + .animate( animation2, duration, options.easing ) + .queue( done ); + + $.effects.unshift( element, queuelen, 4 ); +} ); + + +/*! + * jQuery UI Effects Highlight 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Highlight Effect +//>>group: Effects +//>>description: Highlights the background of an element in a defined color for a custom duration. +//>>docs: http://api.jqueryui.com/highlight-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) { + var element = $( this ), + animation = { + backgroundColor: element.css( "backgroundColor" ) + }; + + if ( options.mode === "hide" ) { + animation.opacity = 0; + } + + $.effects.saveStyle( element ); + + element + .css( { + backgroundImage: "none", + backgroundColor: options.color || "#ffff99" + } ) + .animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Size 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Size Effect +//>>group: Effects +//>>description: Resize an element to a specified width and height. +//>>docs: http://api.jqueryui.com/size-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectSize = $.effects.define( "size", function( options, done ) { + + // Create element + var baseline, factor, temp, + element = $( this ), + + // Copy for children + cProps = [ "fontSize" ], + vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], + hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], + + // Set options + mode = options.mode, + restore = mode !== "effect", + scale = options.scale || "both", + origin = options.origin || [ "middle", "center" ], + position = element.css( "position" ), + pos = element.position(), + original = $.effects.scaledDimensions( element ), + from = options.from || original, + to = options.to || $.effects.scaledDimensions( element, 0 ); + + $.effects.createPlaceholder( element ); + + if ( mode === "show" ) { + temp = from; + from = to; + to = temp; + } + + // Set scaling factor + factor = { + from: { + y: from.height / original.height, + x: from.width / original.width + }, + to: { + y: to.height / original.height, + x: to.width / original.width + } + }; + + // Scale the css box + if ( scale === "box" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + from = $.effects.setTransition( element, vProps, factor.from.y, from ); + to = $.effects.setTransition( element, vProps, factor.to.y, to ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + from = $.effects.setTransition( element, hProps, factor.from.x, from ); + to = $.effects.setTransition( element, hProps, factor.to.x, to ); + } + } + + // Scale the content + if ( scale === "content" || scale === "both" ) { + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + from = $.effects.setTransition( element, cProps, factor.from.y, from ); + to = $.effects.setTransition( element, cProps, factor.to.y, to ); + } + } + + // Adjust the position properties based on the provided origin points + if ( origin ) { + baseline = $.effects.getBaseline( origin, original ); + from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top; + from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left; + to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; + to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; + } + element.css( from ); + + // Animate the children if desired + if ( scale === "content" || scale === "both" ) { + + vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps ); + hProps = hProps.concat( [ "marginLeft", "marginRight" ] ); + + // Only animate children with width attributes specified + // TODO: is this right? should we include anything with css width specified as well + element.find( "*[width]" ).each( function() { + var child = $( this ), + childOriginal = $.effects.scaledDimensions( child ), + childFrom = { + height: childOriginal.height * factor.from.y, + width: childOriginal.width * factor.from.x, + outerHeight: childOriginal.outerHeight * factor.from.y, + outerWidth: childOriginal.outerWidth * factor.from.x + }, + childTo = { + height: childOriginal.height * factor.to.y, + width: childOriginal.width * factor.to.x, + outerHeight: childOriginal.height * factor.to.y, + outerWidth: childOriginal.width * factor.to.x + }; + + // Vertical props scaling + if ( factor.from.y !== factor.to.y ) { + childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom ); + childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo ); + } + + // Horizontal props scaling + if ( factor.from.x !== factor.to.x ) { + childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom ); + childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo ); + } + + if ( restore ) { + $.effects.saveStyle( child ); + } + + // Animate children + child.css( childFrom ); + child.animate( childTo, options.duration, options.easing, function() { + + // Restore children + if ( restore ) { + $.effects.restoreStyle( child ); + } + } ); + } ); + } + + // Animate + element.animate( to, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: function() { + + var offset = element.offset(); + + if ( to.opacity === 0 ) { + element.css( "opacity", from.opacity ); + } + + if ( !restore ) { + element + .css( "position", position === "static" ? "relative" : position ) + .offset( offset ); + + // Need to save style here so that automatic style restoration + // doesn't restore to the original styles from before the animation. + $.effects.saveStyle( element ); + } + + done(); + } + } ); + +} ); + + +/*! + * jQuery UI Effects Scale 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Scale Effect +//>>group: Effects +//>>description: Grows or shrinks an element and its content. +//>>docs: http://api.jqueryui.com/scale-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectScale = $.effects.define( "scale", function( options, done ) { + + // Create element + var el = $( this ), + mode = options.mode, + percent = parseInt( options.percent, 10 ) || + ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ), + + newOptions = $.extend( true, { + from: $.effects.scaledDimensions( el ), + to: $.effects.scaledDimensions( el, percent, options.direction || "both" ), + origin: options.origin || [ "middle", "center" ] + }, options ); + + // Fade option to support puff + if ( options.fade ) { + newOptions.from.opacity = 1; + newOptions.to.opacity = 0; + } + + $.effects.effect.size.call( this, newOptions, done ); +} ); + + +/*! + * jQuery UI Effects Puff 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Puff Effect +//>>group: Effects +//>>description: Creates a puff effect by scaling the element up and hiding it at the same time. +//>>docs: http://api.jqueryui.com/puff-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) { + var newOptions = $.extend( true, {}, options, { + fade: true, + percent: parseInt( options.percent, 10 ) || 150 + } ); + + $.effects.effect.scale.call( this, newOptions, done ); +} ); + + +/*! + * jQuery UI Effects Pulsate 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Pulsate Effect +//>>group: Effects +//>>description: Pulsates an element n times by changing the opacity to zero and back. +//>>docs: http://api.jqueryui.com/pulsate-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) { + var element = $( this ), + mode = options.mode, + show = mode === "show", + hide = mode === "hide", + showhide = show || hide, + + // Showing or hiding leaves off the "last" animation + anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), + duration = options.duration / anims, + animateTo = 0, + i = 1, + queuelen = element.queue().length; + + if ( show || !element.is( ":visible" ) ) { + element.css( "opacity", 0 ).show(); + animateTo = 1; + } + + // Anims - 1 opacity "toggles" + for ( ; i < anims; i++ ) { + element.animate( { opacity: animateTo }, duration, options.easing ); + animateTo = 1 - animateTo; + } + + element.animate( { opacity: animateTo }, duration, options.easing ); + + element.queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Shake 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Shake Effect +//>>group: Effects +//>>description: Shakes an element horizontally or vertically n times. +//>>docs: http://api.jqueryui.com/shake-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectShake = $.effects.define( "shake", function( options, done ) { + + var i = 1, + element = $( this ), + direction = options.direction || "left", + distance = options.distance || 20, + times = options.times || 3, + anims = times * 2 + 1, + speed = Math.round( options.duration / anims ), + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + positiveMotion = ( direction === "up" || direction === "left" ), + animation = {}, + animation1 = {}, + animation2 = {}, + + queuelen = element.queue().length; + + $.effects.createPlaceholder( element ); + + // Animation + animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; + animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; + animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; + + // Animate + element.animate( animation, speed, options.easing ); + + // Shakes + for ( ; i < times; i++ ) { + element + .animate( animation1, speed, options.easing ) + .animate( animation2, speed, options.easing ); + } + + element + .animate( animation1, speed, options.easing ) + .animate( animation, speed / 2, options.easing ) + .queue( done ); + + $.effects.unshift( element, queuelen, anims + 1 ); +} ); + + +/*! + * jQuery UI Effects Slide 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Slide Effect +//>>group: Effects +//>>description: Slides an element in and out of the viewport. +//>>docs: http://api.jqueryui.com/slide-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) { + var startClip, startRef, + element = $( this ), + map = { + up: [ "bottom", "top" ], + down: [ "top", "bottom" ], + left: [ "right", "left" ], + right: [ "left", "right" ] + }, + mode = options.mode, + direction = options.direction || "left", + ref = ( direction === "up" || direction === "down" ) ? "top" : "left", + positiveMotion = ( direction === "up" || direction === "left" ), + distance = options.distance || + element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ), + animation = {}; + + $.effects.createPlaceholder( element ); + + startClip = element.cssClip(); + startRef = element.position()[ ref ]; + + // Define hide animation + animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef; + animation.clip = element.cssClip(); + animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ]; + + // Reverse the animation if we're showing + if ( mode === "show" ) { + element.cssClip( animation.clip ); + element.css( ref, animation[ ref ] ); + animation.clip = startClip; + animation[ ref ] = startRef; + } + + // Actually animate + element.animate( animation, { + queue: false, + duration: options.duration, + easing: options.easing, + complete: done + } ); +} ); + + +/*! + * jQuery UI Effects Transfer 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Transfer Effect +//>>group: Effects +//>>description: Displays a transfer effect from one element to another. +//>>docs: http://api.jqueryui.com/transfer-effect/ +//>>demos: http://jqueryui.com/effect/ + + + +var effect; +if ( $.uiBackCompat !== false ) { + effect = $.effects.define( "transfer", function( options, done ) { + $( this ).transfer( options, done ); + } ); +} +var effectsEffectTransfer = effect; + + +/*! + * jQuery UI Focusable 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :focusable Selector +//>>group: Core +//>>description: Selects elements which can be focused. +//>>docs: http://api.jqueryui.com/focusable-selector/ + + + +// Selectors +$.ui.focusable = function( element, hasTabindex ) { + var map, mapName, img, focusableIfVisible, fieldset, + nodeName = element.nodeName.toLowerCase(); + + if ( "area" === nodeName ) { + map = element.parentNode; + mapName = map.name; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { + return false; + } + img = $( "img[usemap='#" + mapName + "']" ); + return img.length > 0 && img.is( ":visible" ); + } + + if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { + focusableIfVisible = !element.disabled; + + if ( focusableIfVisible ) { + + // Form controls within a disabled fieldset are disabled. + // However, controls within the fieldset's legend do not get disabled. + // Since controls generally aren't placed inside legends, we skip + // this portion of the check. + fieldset = $( element ).closest( "fieldset" )[ 0 ]; + if ( fieldset ) { + focusableIfVisible = !fieldset.disabled; + } + } + } else if ( "a" === nodeName ) { + focusableIfVisible = element.href || hasTabindex; + } else { + focusableIfVisible = hasTabindex; + } + + return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); +}; + +// Support: IE 8 only +// IE 8 doesn't resolve inherit to visible/hidden for computed values +function visible( element ) { + var visibility = element.css( "visibility" ); + while ( visibility === "inherit" ) { + element = element.parent(); + visibility = element.css( "visibility" ); + } + return visibility !== "hidden"; +} + +$.extend( $.expr[ ":" ], { + focusable: function( element ) { + return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); + } +} ); + +var focusable = $.ui.focusable; + + + + +// Support: IE8 Only +// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop +// with a string, so we need to find the proper form. +var form = $.fn.form = function() { + return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); +}; + + +/*! + * jQuery UI Form Reset Mixin 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Form Reset Mixin +//>>group: Core +//>>description: Refresh input widgets when their form is reset +//>>docs: http://api.jqueryui.com/form-reset-mixin/ + + + +var formResetMixin = $.ui.formResetMixin = { + _formResetHandler: function() { + var form = $( this ); + + // Wait for the form reset to actually happen before refreshing + setTimeout( function() { + var instances = form.data( "ui-form-reset-instances" ); + $.each( instances, function() { + this.refresh(); + } ); + } ); + }, + + _bindFormResetHandler: function() { + this.form = this.element.form(); + if ( !this.form.length ) { + return; + } + + var instances = this.form.data( "ui-form-reset-instances" ) || []; + if ( !instances.length ) { + + // We don't use _on() here because we use a single event handler per form + this.form.on( "reset.ui-form-reset", this._formResetHandler ); + } + instances.push( this ); + this.form.data( "ui-form-reset-instances", instances ); + }, + + _unbindFormResetHandler: function() { + if ( !this.form.length ) { + return; + } + + var instances = this.form.data( "ui-form-reset-instances" ); + instances.splice( $.inArray( this, instances ), 1 ); + if ( instances.length ) { + this.form.data( "ui-form-reset-instances", instances ); + } else { + this.form + .removeData( "ui-form-reset-instances" ) + .off( "reset.ui-form-reset" ); + } + } +}; + + +/*! + * jQuery UI Support for jQuery core 1.7.x 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + */ + +//>>label: jQuery 1.7 Support +//>>group: Core +//>>description: Support version 1.7.x of jQuery core + + + +// Support: jQuery 1.7 only +// Not a great way to check versions, but since we only support 1.7+ and only +// need to detect <1.8, this is a simple check that should suffice. Checking +// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0 +// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting +// 1.7 anymore). See #11197 for why we're not using feature detection. +if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) { + + // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight() + // Unlike jQuery Core 1.8+, these only support numeric values to set the + // dimensions in pixels + $.each( [ "Width", "Height" ], function( i, name ) { + var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], + type = name.toLowerCase(), + orig = { + innerWidth: $.fn.innerWidth, + innerHeight: $.fn.innerHeight, + outerWidth: $.fn.outerWidth, + outerHeight: $.fn.outerHeight + }; + + function reduce( elem, size, border, margin ) { + $.each( side, function() { + size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; + if ( border ) { + size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; + } + if ( margin ) { + size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; + } + } ); + return size; + } + + $.fn[ "inner" + name ] = function( size ) { + if ( size === undefined ) { + return orig[ "inner" + name ].call( this ); + } + + return this.each( function() { + $( this ).css( type, reduce( this, size ) + "px" ); + } ); + }; + + $.fn[ "outer" + name ] = function( size, margin ) { + if ( typeof size !== "number" ) { + return orig[ "outer" + name ].call( this, size ); + } + + return this.each( function() { + $( this ).css( type, reduce( this, size, true, margin ) + "px" ); + } ); + }; + } ); + + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} + +; +/*! + * jQuery UI Keycode 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Keycode +//>>group: Core +//>>description: Provide keycodes as keynames +//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/ + + +var keycode = $.ui.keyCode = { + BACKSPACE: 8, + COMMA: 188, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + LEFT: 37, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SPACE: 32, + TAB: 9, + UP: 38 +}; + + + + +// Internal use only +var escapeSelector = $.ui.escapeSelector = ( function() { + var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g; + return function( selector ) { + return selector.replace( selectorEscape, "\\$1" ); + }; +} )(); + + +/*! + * jQuery UI Labels 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: labels +//>>group: Core +//>>description: Find all the labels associated with a given input +//>>docs: http://api.jqueryui.com/labels/ + + + +var labels = $.fn.labels = function() { + var ancestor, selector, id, labels, ancestors; + + // Check control.labels first + if ( this[ 0 ].labels && this[ 0 ].labels.length ) { + return this.pushStack( this[ 0 ].labels ); + } + + // Support: IE <= 11, FF <= 37, Android <= 2.3 only + // Above browsers do not support control.labels. Everything below is to support them + // as well as document fragments. control.labels does not work on document fragments + labels = this.eq( 0 ).parents( "label" ); + + // Look for the label based on the id + id = this.attr( "id" ); + if ( id ) { + + // We don't search against the document in case the element + // is disconnected from the DOM + ancestor = this.eq( 0 ).parents().last(); + + // Get a full set of top level ancestors + ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); + + // Create a selector for the label based on the id + selector = "label[for='" + $.ui.escapeSelector( id ) + "']"; + + labels = labels.add( ancestors.find( selector ).addBack( selector ) ); + + } + + // Return whatever we have found for labels + return this.pushStack( labels ); +}; + + +/*! + * jQuery UI Scroll Parent 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: scrollParent +//>>group: Core +//>>description: Get the closest ancestor element that is scrollable. +//>>docs: http://api.jqueryui.com/scrollParent/ + + + +var scrollParent = $.fn.scrollParent = function( includeHidden ) { + var position = this.css( "position" ), + excludeStaticParent = position === "absolute", + overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, + scrollParent = this.parents().filter( function() { + var parent = $( this ); + if ( excludeStaticParent && parent.css( "position" ) === "static" ) { + return false; + } + return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + + parent.css( "overflow-x" ) ); + } ).eq( 0 ); + + return position === "fixed" || !scrollParent.length ? + $( this[ 0 ].ownerDocument || document ) : + scrollParent; +}; + + +/*! + * jQuery UI Tabbable 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :tabbable Selector +//>>group: Core +//>>description: Selects elements which can be tabbed to. +//>>docs: http://api.jqueryui.com/tabbable-selector/ + + + +var tabbable = $.extend( $.expr[ ":" ], { + tabbable: function( element ) { + var tabIndex = $.attr( element, "tabindex" ), + hasTabindex = tabIndex != null; + return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); + } +} ); + + +/*! + * jQuery UI Unique ID 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: uniqueId +//>>group: Core +//>>description: Functions to generate and remove uniqueId's +//>>docs: http://api.jqueryui.com/uniqueId/ + + + +var uniqueId = $.fn.extend( { + uniqueId: ( function() { + var uuid = 0; + + return function() { + return this.each( function() { + if ( !this.id ) { + this.id = "ui-id-" + ( ++uuid ); + } + } ); + }; + } )(), + + removeUniqueId: function() { + return this.each( function() { + if ( /^ui-id-\d+$/.test( this.id ) ) { + $( this ).removeAttr( "id" ); + } + } ); + } +} ); + + +/*! + * jQuery UI Accordion 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Accordion +//>>group: Widgets +// jscs:disable maximumLineLength +//>>description: Displays collapsible content panels for presenting information in a limited amount of space. +// jscs:enable maximumLineLength +//>>docs: http://api.jqueryui.com/accordion/ +//>>demos: http://jqueryui.com/accordion/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/accordion.css +//>>css.theme: ../../themes/base/theme.css + + + +var widgetsAccordion = $.widget( "ui.accordion", { + version: "1.12.1", + options: { + active: 0, + animate: {}, + classes: { + "ui-accordion-header": "ui-corner-top", + "ui-accordion-header-collapsed": "ui-corner-all", + "ui-accordion-content": "ui-corner-bottom" + }, + collapsible: false, + event: "click", + header: "> li > :first-child, > :not(li):even", + heightStyle: "auto", + icons: { + activeHeader: "ui-icon-triangle-1-s", + header: "ui-icon-triangle-1-e" + }, + + // Callbacks + activate: null, + beforeActivate: null + }, + + hideProps: { + borderTopWidth: "hide", + borderBottomWidth: "hide", + paddingTop: "hide", + paddingBottom: "hide", + height: "hide" + }, + + showProps: { + borderTopWidth: "show", + borderBottomWidth: "show", + paddingTop: "show", + paddingBottom: "show", + height: "show" + }, + + _create: function() { + var options = this.options; + + this.prevShow = this.prevHide = $(); + this._addClass( "ui-accordion", "ui-widget ui-helper-reset" ); + this.element.attr( "role", "tablist" ); + + // Don't allow collapsible: false and active: false / null + if ( !options.collapsible && ( options.active === false || options.active == null ) ) { + options.active = 0; + } + + this._processPanels(); + + // handle negative values + if ( options.active < 0 ) { + options.active += this.headers.length; + } + this._refresh(); + }, + + _getCreateEventData: function() { + return { + header: this.active, + panel: !this.active.length ? $() : this.active.next() + }; + }, + + _createIcons: function() { + var icon, children, + icons = this.options.icons; + + if ( icons ) { + icon = $( "" ); + this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header ); + icon.prependTo( this.headers ); + children = this.active.children( ".ui-accordion-header-icon" ); + this._removeClass( children, icons.header ) + ._addClass( children, null, icons.activeHeader ) + ._addClass( this.headers, "ui-accordion-icons" ); + } + }, + + _destroyIcons: function() { + this._removeClass( this.headers, "ui-accordion-icons" ); + this.headers.children( ".ui-accordion-header-icon" ).remove(); + }, + + _destroy: function() { + var contents; + + // Clean up main element + this.element.removeAttr( "role" ); + + // Clean up headers + this.headers + .removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" ) + .removeUniqueId(); + + this._destroyIcons(); + + // Clean up content panels + contents = this.headers.next() + .css( "display", "" ) + .removeAttr( "role aria-hidden aria-labelledby" ) + .removeUniqueId(); + + if ( this.options.heightStyle !== "content" ) { + contents.css( "height", "" ); + } + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "event" ) { + if ( this.options.event ) { + this._off( this.headers, this.options.event ); + } + this._setupEvents( value ); + } + + this._super( key, value ); + + // Setting collapsible: false while collapsed; open first panel + if ( key === "collapsible" && !value && this.options.active === false ) { + this._activate( 0 ); + } + + if ( key === "icons" ) { + this._destroyIcons(); + if ( value ) { + this._createIcons(); + } + } + }, + + _setOptionDisabled: function( value ) { + this._super( value ); + + this.element.attr( "aria-disabled", value ); + + // Support: IE8 Only + // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE + // so we need to add the disabled class to the headers and panels + this._toggleClass( null, "ui-state-disabled", !!value ); + this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled", + !!value ); + }, + + _keydown: function( event ) { + if ( event.altKey || event.ctrlKey ) { + return; + } + + var keyCode = $.ui.keyCode, + length = this.headers.length, + currentIndex = this.headers.index( event.target ), + toFocus = false; + + switch ( event.keyCode ) { + case keyCode.RIGHT: + case keyCode.DOWN: + toFocus = this.headers[ ( currentIndex + 1 ) % length ]; + break; + case keyCode.LEFT: + case keyCode.UP: + toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; + break; + case keyCode.SPACE: + case keyCode.ENTER: + this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; + } + + if ( toFocus ) { + $( event.target ).attr( "tabIndex", -1 ); + $( toFocus ).attr( "tabIndex", 0 ); + $( toFocus ).trigger( "focus" ); + event.preventDefault(); + } + }, + + _panelKeyDown: function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().trigger( "focus" ); + } + }, + + refresh: function() { + var options = this.options; + this._processPanels(); + + // Was collapsed or no panel + if ( ( options.active === false && options.collapsible === true ) || + !this.headers.length ) { + options.active = false; + this.active = $(); + + // active false only when collapsible is true + } else if ( options.active === false ) { + this._activate( 0 ); + + // was active, but active panel is gone + } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + + // all remaining panel are disabled + if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) { + options.active = false; + this.active = $(); + + // activate previous panel + } else { + this._activate( Math.max( 0, options.active - 1 ) ); + } + + // was active, active panel still exists + } else { + + // make sure active index is correct + options.active = this.headers.index( this.active ); + } + + this._destroyIcons(); + + this._refresh(); + }, + + _processPanels: function() { + var prevHeaders = this.headers, + prevPanels = this.panels; + + this.headers = this.element.find( this.options.header ); + this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", + "ui-state-default" ); + + this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide(); + this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" ); + + // Avoid memory leaks (#10056) + if ( prevPanels ) { + this._off( prevHeaders.not( this.headers ) ); + this._off( prevPanels.not( this.panels ) ); + } + }, + + _refresh: function() { + var maxHeight, + options = this.options, + heightStyle = options.heightStyle, + parent = this.element.parent(); + + this.active = this._findActive( options.active ); + this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" ) + ._removeClass( this.active, "ui-accordion-header-collapsed" ); + this._addClass( this.active.next(), "ui-accordion-content-active" ); + this.active.next().show(); + + this.headers + .attr( "role", "tab" ) + .each( function() { + var header = $( this ), + headerId = header.uniqueId().attr( "id" ), + panel = header.next(), + panelId = panel.uniqueId().attr( "id" ); + header.attr( "aria-controls", panelId ); + panel.attr( "aria-labelledby", headerId ); + } ) + .next() + .attr( "role", "tabpanel" ); + + this.headers + .not( this.active ) + .attr( { + "aria-selected": "false", + "aria-expanded": "false", + tabIndex: -1 + } ) + .next() + .attr( { + "aria-hidden": "true" + } ) + .hide(); + + // Make sure at least one header is in the tab order + if ( !this.active.length ) { + this.headers.eq( 0 ).attr( "tabIndex", 0 ); + } else { + this.active.attr( { + "aria-selected": "true", + "aria-expanded": "true", + tabIndex: 0 + } ) + .next() + .attr( { + "aria-hidden": "false" + } ); + } + + this._createIcons(); + + this._setupEvents( options.event ); + + if ( heightStyle === "fill" ) { + maxHeight = parent.height(); + this.element.siblings( ":visible" ).each( function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + } ); + + this.headers.each( function() { + maxHeight -= $( this ).outerHeight( true ); + } ); + + this.headers.next() + .each( function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + } ) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.headers.next() + .each( function() { + var isVisible = $( this ).is( ":visible" ); + if ( !isVisible ) { + $( this ).show(); + } + maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); + if ( !isVisible ) { + $( this ).hide(); + } + } ) + .height( maxHeight ); + } + }, + + _activate: function( index ) { + var active = this._findActive( index )[ 0 ]; + + // Trying to activate the already active panel + if ( active === this.active[ 0 ] ) { + return; + } + + // Trying to collapse, simulate a click on the currently active header + active = active || this.active[ 0 ]; + + this._eventHandler( { + target: active, + currentTarget: active, + preventDefault: $.noop + } ); + }, + + _findActive: function( selector ) { + return typeof selector === "number" ? this.headers.eq( selector ) : $(); + }, + + _setupEvents: function( event ) { + var events = { + keydown: "_keydown" + }; + if ( event ) { + $.each( event.split( " " ), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + } ); + } + + this._off( this.headers.add( this.headers.next() ) ); + this._on( this.headers, events ); + this._on( this.headers.next(), { keydown: "_panelKeyDown" } ); + this._hoverable( this.headers ); + this._focusable( this.headers ); + }, + + _eventHandler: function( event ) { + var activeChildren, clickedChildren, + options = this.options, + active = this.active, + clicked = $( event.currentTarget ), + clickedIsActive = clicked[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : clicked.next(), + toHide = active.next(), + eventData = { + oldHeader: active, + oldPanel: toHide, + newHeader: collapsing ? $() : clicked, + newPanel: toShow + }; + + event.preventDefault(); + + if ( + + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.headers.index( clicked ); + + // When the call to ._toggle() comes after the class changes + // it causes a very odd bug in IE 8 (see #6720) + this.active = clickedIsActive ? $() : clicked; + this._toggle( eventData ); + + // Switch classes + // corner classes on the previously active header stay after the animation + this._removeClass( active, "ui-accordion-header-active", "ui-state-active" ); + if ( options.icons ) { + activeChildren = active.children( ".ui-accordion-header-icon" ); + this._removeClass( activeChildren, null, options.icons.activeHeader ) + ._addClass( activeChildren, null, options.icons.header ); + } + + if ( !clickedIsActive ) { + this._removeClass( clicked, "ui-accordion-header-collapsed" ) + ._addClass( clicked, "ui-accordion-header-active", "ui-state-active" ); + if ( options.icons ) { + clickedChildren = clicked.children( ".ui-accordion-header-icon" ); + this._removeClass( clickedChildren, null, options.icons.header ) + ._addClass( clickedChildren, null, options.icons.activeHeader ); + } + + this._addClass( clicked.next(), "ui-accordion-content-active" ); + } + }, + + _toggle: function( data ) { + var toShow = data.newPanel, + toHide = this.prevShow.length ? this.prevShow : data.oldPanel; + + // Handle activating a panel during the animation for another activation + this.prevShow.add( this.prevHide ).stop( true, true ); + this.prevShow = toShow; + this.prevHide = toHide; + + if ( this.options.animate ) { + this._animate( toShow, toHide, data ); + } else { + toHide.hide(); + toShow.show(); + this._toggleComplete( data ); + } + + toHide.attr( { + "aria-hidden": "true" + } ); + toHide.prev().attr( { + "aria-selected": "false", + "aria-expanded": "false" + } ); + + // if we're switching panels, remove the old header from the tab order + // if we're opening from collapsed state, remove the previous header from the tab order + // if we're collapsing, then keep the collapsing header in the tab order + if ( toShow.length && toHide.length ) { + toHide.prev().attr( { + "tabIndex": -1, + "aria-expanded": "false" + } ); + } else if ( toShow.length ) { + this.headers.filter( function() { + return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; + } ) + .attr( "tabIndex", -1 ); + } + + toShow + .attr( "aria-hidden", "false" ) + .prev() + .attr( { + "aria-selected": "true", + "aria-expanded": "true", + tabIndex: 0 + } ); + }, + + _animate: function( toShow, toHide, data ) { + var total, easing, duration, + that = this, + adjust = 0, + boxSizing = toShow.css( "box-sizing" ), + down = toShow.length && + ( !toHide.length || ( toShow.index() < toHide.index() ) ), + animate = this.options.animate || {}, + options = down && animate.down || animate, + complete = function() { + that._toggleComplete( data ); + }; + + if ( typeof options === "number" ) { + duration = options; + } + if ( typeof options === "string" ) { + easing = options; + } + + // fall back from options to animation in case of partial down settings + easing = easing || options.easing || animate.easing; + duration = duration || options.duration || animate.duration; + + if ( !toHide.length ) { + return toShow.animate( this.showProps, duration, easing, complete ); + } + if ( !toShow.length ) { + return toHide.animate( this.hideProps, duration, easing, complete ); + } + + total = toShow.show().outerHeight(); + toHide.animate( this.hideProps, { + duration: duration, + easing: easing, + step: function( now, fx ) { + fx.now = Math.round( now ); + } + } ); + toShow + .hide() + .animate( this.showProps, { + duration: duration, + easing: easing, + complete: complete, + step: function( now, fx ) { + fx.now = Math.round( now ); + if ( fx.prop !== "height" ) { + if ( boxSizing === "content-box" ) { + adjust += fx.now; + } + } else if ( that.options.heightStyle !== "content" ) { + fx.now = Math.round( total - toHide.outerHeight() - adjust ); + adjust = 0; + } + } + } ); + }, + + _toggleComplete: function( data ) { + var toHide = data.oldPanel, + prev = toHide.prev(); + + this._removeClass( toHide, "ui-accordion-content-active" ); + this._removeClass( prev, "ui-accordion-header-active" ) + ._addClass( prev, "ui-accordion-header-collapsed" ); + + // Work around for rendering bug in IE (#5421) + if ( toHide.length ) { + toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; + } + this._trigger( "activate", null, data ); + } +} ); + + + +var safeActiveElement = $.ui.safeActiveElement = function( document ) { + var activeElement; + + // Support: IE 9 only + // IE9 throws an "Unspecified error" accessing document.activeElement from an