From 7c2efc115c6d92e7e8e2c8797e9165891a4dedaf Mon Sep 17 00:00:00 2001 From: Jerome Mouneyrac Date: Mon, 4 Nov 2013 14:11:46 +1100 Subject: [PATCH] MDL-40874 Retire MyMobile as a standard theme --- lib/classes/plugin_manager.php | 2 +- lib/db/upgrade.php | 33 + theme/mymobile/config.php | 162 - theme/mymobile/jquery/custom131.js | 257 - theme/mymobile/jquery/jquery.mobile-1.3.1.js | 11199 ---------------- theme/mymobile/jquery/plugins.php | 51 - theme/mymobile/lang/en/theme_mymobile.php | 44 - theme/mymobile/layout/embedded.php | 73 - theme/mymobile/layout/general.php | 292 - theme/mymobile/lib.php | 73 - theme/mymobile/pix/07-map-marker.png | Bin 3131 -> 0 bytes theme/mymobile/pix/41-picture-frame.png | Bin 2928 -> 0 bytes theme/mymobile/pix/83-calendar.png | Bin 2889 -> 0 bytes theme/mymobile/pix/ajax-loader.png | Bin 340 -> 0 bytes theme/mymobile/pix/ajax-loader2.gif | Bin 7825 -> 0 bytes theme/mymobile/pix/ajax-loader2.png | Bin 503 -> 0 bytes theme/mymobile/pix/clip.png | Bin 388 -> 0 bytes theme/mymobile/pix/empty.gif | Bin 43 -> 0 bytes theme/mymobile/pix/favicon.ico | Bin 1406 -> 0 bytes theme/mymobile/pix/form-check-off.png | Bin 364 -> 0 bytes theme/mymobile/pix/form-check-on.png | Bin 460 -> 0 bytes theme/mymobile/pix/form-radio-off.png | Bin 453 -> 0 bytes theme/mymobile/pix/form-radio-on.png | Bin 519 -> 0 bytes theme/mymobile/pix/header.png | Bin 840 -> 0 bytes theme/mymobile/pix/ibulb.png | Bin 1352 -> 0 bytes theme/mymobile/pix/icalendar.png | Bin 596 -> 0 bytes theme/mymobile/pix/icalendarI4.png | Bin 1064 -> 0 bytes theme/mymobile/pix/icon-arrow-white-down.png | Bin 232 -> 0 bytes theme/mymobile/pix/icon-arrow-white-left.png | Bin 236 -> 0 bytes theme/mymobile/pix/icon-arrow-white-right.png | Bin 236 -> 0 bytes theme/mymobile/pix/icon-arrow-white-up.png | Bin 231 -> 0 bytes theme/mymobile/pix/icon-delete.png | Bin 1106 -> 0 bytes theme/mymobile/pix/icon-minus-white.png | Bin 965 -> 0 bytes theme/mymobile/pix/icon-plus-white.png | Bin 971 -> 0 bytes theme/mymobile/pix/icon-search-black.png | Bin 1245 -> 0 bytes theme/mymobile/pix/icons-18-black.png | Bin 1968 -> 0 bytes theme/mymobile/pix/icons-18-white.png | Bin 1988 -> 0 bytes theme/mymobile/pix/icons-36-black.png | Bin 3859 -> 0 bytes theme/mymobile/pix/icons-36-white.png | Bin 3861 -> 0 bytes theme/mymobile/pix/imessage.png | Bin 444 -> 0 bytes theme/mymobile/pix/imessageI4.png | Bin 640 -> 0 bytes theme/mymobile/pix/iuser.png | Bin 554 -> 0 bytes theme/mymobile/pix/iuserI4.png | Bin 492 -> 0 bytes theme/mymobile/pix/linevert.png | Bin 50212 -> 0 bytes theme/mymobile/pix/m2m.png | Bin 2381 -> 0 bytes theme/mymobile/pix/m2m2x.png | Bin 4378 -> 0 bytes theme/mymobile/pix/m2ms.png | Bin 12099 -> 0 bytes theme/mymobile/pix/navs.png | Bin 532 -> 0 bytes theme/mymobile/pix/navsI4.png | Bin 729 -> 0 bytes theme/mymobile/pix/newnav.png | Bin 3091 -> 0 bytes theme/mymobile/pix/newnav_s.png | Bin 1657 -> 0 bytes theme/mymobile/pix/photos.png | Bin 366 -> 0 bytes theme/mymobile/pix/pinstripes.png | Bin 117 -> 0 bytes theme/mymobile/pix/power.png | Bin 478 -> 0 bytes theme/mymobile/pix/req.png | Bin 193 -> 0 bytes theme/mymobile/pix/screenshot.png | Bin 61457 -> 0 bytes theme/mymobile/pix/texture_05.png | Bin 4171 -> 0 bytes theme/mymobile/pix/texture_075.png | Bin 4637 -> 0 bytes theme/mymobile/pix_core/a/help.png | Bin 164 -> 0 bytes theme/mymobile/pix_core/a/refresh.png | Bin 175 -> 0 bytes theme/mymobile/pix_core/a/search.png | Bin 179 -> 0 bytes theme/mymobile/pix_core/a/setting.png | Bin 185 -> 0 bytes theme/mymobile/pix_core/c/event.png | Bin 157 -> 0 bytes theme/mymobile/pix_core/docs.png | Bin 133 -> 0 bytes theme/mymobile/pix_core/f/audio.png | Bin 418 -> 0 bytes theme/mymobile/pix_core/f/avi.png | Bin 133 -> 0 bytes theme/mymobile/pix_core/f/dmg.png | Bin 131 -> 0 bytes theme/mymobile/pix_core/f/docm.png | Bin 581 -> 0 bytes theme/mymobile/pix_core/f/docx.png | Bin 581 -> 0 bytes theme/mymobile/pix_core/f/excel.png | Bin 607 -> 0 bytes theme/mymobile/pix_core/f/image.png | Bin 463 -> 0 bytes theme/mymobile/pix_core/f/text.png | Bin 399 -> 0 bytes theme/mymobile/pix_core/f/video.png | Bin 511 -> 0 bytes theme/mymobile/pix_core/f/web.png | Bin 437 -> 0 bytes theme/mymobile/pix_core/help.png | Bin 865 -> 0 bytes theme/mymobile/pix_core/i/admin.png | Bin 145 -> 0 bytes theme/mymobile/pix_core/i/backup.png | Bin 138 -> 0 bytes theme/mymobile/pix_core/i/calc.png | Bin 124 -> 0 bytes .../mymobile/pix_core/i/checkpermissions.png | Bin 139 -> 0 bytes theme/mymobile/pix_core/i/closed.png | Bin 131 -> 0 bytes theme/mymobile/pix_core/i/cohort.png | Bin 125 -> 0 bytes .../mymobile/pix_core/i/completion-auto-n.png | Bin 1446 -> 0 bytes .../mymobile/pix_core/i/completion-auto-y.png | Bin 1479 -> 0 bytes .../pix_core/i/completion-manual-n.png | Bin 531 -> 0 bytes .../pix_core/i/completion-manual-y.png | Bin 537 -> 0 bytes theme/mymobile/pix_core/i/course.png | Bin 133 -> 0 bytes theme/mymobile/pix_core/i/courseevent.png | Bin 164 -> 0 bytes theme/mymobile/pix_core/i/db.png | Bin 132 -> 0 bytes theme/mymobile/pix_core/i/edit.png | Bin 143 -> 0 bytes theme/mymobile/pix_core/i/email.png | Bin 135 -> 0 bytes theme/mymobile/pix_core/i/files.png | Bin 119 -> 0 bytes theme/mymobile/pix_core/i/filter.png | Bin 510 -> 0 bytes theme/mymobile/pix_core/i/flagged.png | Bin 813 -> 0 bytes theme/mymobile/pix_core/i/grades.png | Bin 128 -> 0 bytes theme/mymobile/pix_core/i/group.png | Bin 130 -> 0 bytes theme/mymobile/pix_core/i/groupevent.png | Bin 156 -> 0 bytes theme/mymobile/pix_core/i/guest.png | Bin 127 -> 0 bytes theme/mymobile/pix_core/i/info.png | Bin 125 -> 0 bytes theme/mymobile/pix_core/i/item.png | Bin 111 -> 0 bytes theme/mymobile/pix_core/i/lock.png | Bin 129 -> 0 bytes theme/mymobile/pix_core/i/log.png | Bin 125 -> 0 bytes theme/mymobile/pix_core/i/mail.png | Bin 135 -> 0 bytes theme/mymobile/pix_core/i/menu.png | Bin 144 -> 0 bytes theme/mymobile/pix_core/i/navigationitem.png | Bin 126 -> 0 bytes theme/mymobile/pix_core/i/new.png | Bin 280 -> 0 bytes theme/mymobile/pix_core/i/news.png | Bin 124 -> 0 bytes theme/mymobile/pix_core/i/open.png | Bin 132 -> 0 bytes theme/mymobile/pix_core/i/payment.png | Bin 135 -> 0 bytes theme/mymobile/pix_core/i/publish.png | Bin 138 -> 0 bytes theme/mymobile/pix_core/i/reload.png | Bin 136 -> 0 bytes theme/mymobile/pix_core/i/report.png | Bin 125 -> 0 bytes theme/mymobile/pix_core/i/return.png | Bin 142 -> 0 bytes theme/mymobile/pix_core/i/rss.png | Bin 621 -> 0 bytes theme/mymobile/pix_core/i/search.png | Bin 920 -> 0 bytes theme/mymobile/pix_core/i/siteevent.png | Bin 155 -> 0 bytes theme/mymobile/pix_core/i/stats.png | Bin 125 -> 0 bytes theme/mymobile/pix_core/i/switch.png | Bin 506 -> 0 bytes theme/mymobile/pix_core/i/unflagged.png | Bin 870 -> 0 bytes theme/mymobile/pix_core/i/unlock.png | Bin 131 -> 0 bytes theme/mymobile/pix_core/i/user.png | Bin 135 -> 0 bytes theme/mymobile/pix_core/i/userevent.png | Bin 162 -> 0 bytes theme/mymobile/pix_core/i/users.png | Bin 130 -> 0 bytes theme/mymobile/pix_core/req.png | Bin 141 -> 0 bytes theme/mymobile/pix_core/t/add.png | Bin 157 -> 0 bytes theme/mymobile/pix_core/t/adddir.png | Bin 158 -> 0 bytes theme/mymobile/pix_core/t/addfile.png | Bin 177 -> 0 bytes theme/mymobile/pix_core/t/approve.png | Bin 803 -> 0 bytes theme/mymobile/pix_core/t/check.png | Bin 178 -> 0 bytes theme/mymobile/pix_core/t/collapsed.png | Bin 1377 -> 0 bytes theme/mymobile/pix_core/t/delete.png | Bin 648 -> 0 bytes theme/mymobile/pix_core/t/down.png | Bin 180 -> 0 bytes theme/mymobile/pix_core/t/edit.png | Bin 616 -> 0 bytes theme/mymobile/pix_core/t/email.png | Bin 175 -> 0 bytes theme/mymobile/pix_core/t/expanded.png | Bin 1377 -> 0 bytes theme/mymobile/pix_core/t/groupn.png | Bin 169 -> 0 bytes theme/mymobile/pix_core/t/hiddenuntil.png | Bin 178 -> 0 bytes theme/mymobile/pix_core/t/hideuntil.png | Bin 178 -> 0 bytes theme/mymobile/pix_core/t/left.png | Bin 181 -> 0 bytes theme/mymobile/pix_core/t/lock.png | Bin 168 -> 0 bytes theme/mymobile/pix_core/t/log.png | Bin 165 -> 0 bytes theme/mymobile/pix_core/t/message.png | Bin 661 -> 0 bytes theme/mymobile/pix_core/t/move.png | Bin 165 -> 0 bytes theme/mymobile/pix_core/t/portfolioadd.png | Bin 728 -> 0 bytes theme/mymobile/pix_core/t/preview.png | Bin 186 -> 0 bytes theme/mymobile/pix_core/t/ranges.png | Bin 165 -> 0 bytes theme/mymobile/pix_core/t/reload.png | Bin 175 -> 0 bytes theme/mymobile/pix_core/t/restore.png | Bin 177 -> 0 bytes theme/mymobile/pix_core/t/right.png | Bin 180 -> 0 bytes theme/mymobile/pix_core/t/unlock.png | Bin 170 -> 0 bytes theme/mymobile/pix_core/t/up.png | Bin 184 -> 0 bytes theme/mymobile/pix_core/t/user.png | Bin 175 -> 0 bytes theme/mymobile/pix_core/u/f1.png | Bin 3802 -> 0 bytes theme/mymobile/pix_core/u/f2.png | Bin 1038 -> 0 bytes theme/mymobile/pix_core/u/user100.png | Bin 3802 -> 0 bytes theme/mymobile/pix_core/u/user35.png | Bin 1038 -> 0 bytes .../pix_plugins/mod/assignment/icon.png | Bin 363 -> 0 bytes theme/mymobile/pix_plugins/mod/book/icon.png | Bin 1275 -> 0 bytes theme/mymobile/pix_plugins/mod/chat/icon.png | Bin 432 -> 0 bytes .../mymobile/pix_plugins/mod/choice/icon.png | Bin 424 -> 0 bytes theme/mymobile/pix_plugins/mod/data/icon.png | Bin 250 -> 0 bytes .../pix_plugins/mod/feedback/icon.png | Bin 178 -> 0 bytes .../mymobile/pix_plugins/mod/folder/icon.png | Bin 363 -> 0 bytes theme/mymobile/pix_plugins/mod/forum/icon.png | Bin 398 -> 0 bytes .../pix_plugins/mod/glossary/icon.png | Bin 409 -> 0 bytes .../pix_plugins/mod/glossary/print.png | Bin 368 -> 0 bytes theme/mymobile/pix_plugins/mod/label/icon.png | Bin 477 -> 0 bytes theme/mymobile/pix_plugins/mod/lams/icon.png | Bin 520 -> 0 bytes .../mymobile/pix_plugins/mod/lesson/icon.png | Bin 526 -> 0 bytes theme/mymobile/pix_plugins/mod/mail/icon.png | Bin 175 -> 0 bytes theme/mymobile/pix_plugins/mod/page/icon.png | Bin 124 -> 0 bytes theme/mymobile/pix_plugins/mod/quiz/icon.png | Bin 889 -> 0 bytes .../pix_plugins/mod/resource/icon.png | Bin 465 -> 0 bytes theme/mymobile/pix_plugins/mod/scorm/icon.png | Bin 569 -> 0 bytes .../mymobile/pix_plugins/mod/survey/icon.png | Bin 481 -> 0 bytes theme/mymobile/pix_plugins/mod/wiki/icon.png | Bin 290 -> 0 bytes theme/mymobile/readme_moodle.txt | 16 - theme/mymobile/renderers.php | 810 -- .../renderers/mod_choice_renderer.php | 190 - theme/mymobile/settings.php | 91 - theme/mymobile/style/core.css | 1632 --- theme/mymobile/style/jmobile131.css | 3366 ----- theme/mymobile/style/jmobile131_rtl.css | 62 - theme/mymobile/style/media.css | 93 - theme/mymobile/version.php | 33 - theme/upgrade.txt | 7 + version.php | 2 +- 186 files changed, 42 insertions(+), 18446 deletions(-) delete mode 100644 theme/mymobile/config.php delete mode 100644 theme/mymobile/jquery/custom131.js delete mode 100644 theme/mymobile/jquery/jquery.mobile-1.3.1.js delete mode 100644 theme/mymobile/jquery/plugins.php delete mode 100644 theme/mymobile/lang/en/theme_mymobile.php delete mode 100644 theme/mymobile/layout/embedded.php delete mode 100644 theme/mymobile/layout/general.php delete mode 100644 theme/mymobile/lib.php delete mode 100644 theme/mymobile/pix/07-map-marker.png delete mode 100644 theme/mymobile/pix/41-picture-frame.png delete mode 100644 theme/mymobile/pix/83-calendar.png delete mode 100644 theme/mymobile/pix/ajax-loader.png delete mode 100644 theme/mymobile/pix/ajax-loader2.gif delete mode 100644 theme/mymobile/pix/ajax-loader2.png delete mode 100644 theme/mymobile/pix/clip.png delete mode 100644 theme/mymobile/pix/empty.gif delete mode 100644 theme/mymobile/pix/favicon.ico delete mode 100644 theme/mymobile/pix/form-check-off.png delete mode 100644 theme/mymobile/pix/form-check-on.png delete mode 100644 theme/mymobile/pix/form-radio-off.png delete mode 100644 theme/mymobile/pix/form-radio-on.png delete mode 100644 theme/mymobile/pix/header.png delete mode 100644 theme/mymobile/pix/ibulb.png delete mode 100644 theme/mymobile/pix/icalendar.png delete mode 100644 theme/mymobile/pix/icalendarI4.png delete mode 100644 theme/mymobile/pix/icon-arrow-white-down.png delete mode 100644 theme/mymobile/pix/icon-arrow-white-left.png delete mode 100644 theme/mymobile/pix/icon-arrow-white-right.png delete mode 100644 theme/mymobile/pix/icon-arrow-white-up.png delete mode 100644 theme/mymobile/pix/icon-delete.png delete mode 100644 theme/mymobile/pix/icon-minus-white.png delete mode 100644 theme/mymobile/pix/icon-plus-white.png delete mode 100644 theme/mymobile/pix/icon-search-black.png delete mode 100644 theme/mymobile/pix/icons-18-black.png delete mode 100644 theme/mymobile/pix/icons-18-white.png delete mode 100644 theme/mymobile/pix/icons-36-black.png delete mode 100644 theme/mymobile/pix/icons-36-white.png delete mode 100644 theme/mymobile/pix/imessage.png delete mode 100644 theme/mymobile/pix/imessageI4.png delete mode 100644 theme/mymobile/pix/iuser.png delete mode 100644 theme/mymobile/pix/iuserI4.png delete mode 100644 theme/mymobile/pix/linevert.png delete mode 100644 theme/mymobile/pix/m2m.png delete mode 100644 theme/mymobile/pix/m2m2x.png delete mode 100644 theme/mymobile/pix/m2ms.png delete mode 100644 theme/mymobile/pix/navs.png delete mode 100644 theme/mymobile/pix/navsI4.png delete mode 100644 theme/mymobile/pix/newnav.png delete mode 100644 theme/mymobile/pix/newnav_s.png delete mode 100644 theme/mymobile/pix/photos.png delete mode 100644 theme/mymobile/pix/pinstripes.png delete mode 100644 theme/mymobile/pix/power.png delete mode 100644 theme/mymobile/pix/req.png delete mode 100644 theme/mymobile/pix/screenshot.png delete mode 100644 theme/mymobile/pix/texture_05.png delete mode 100644 theme/mymobile/pix/texture_075.png delete mode 100644 theme/mymobile/pix_core/a/help.png delete mode 100644 theme/mymobile/pix_core/a/refresh.png delete mode 100644 theme/mymobile/pix_core/a/search.png delete mode 100644 theme/mymobile/pix_core/a/setting.png delete mode 100644 theme/mymobile/pix_core/c/event.png delete mode 100644 theme/mymobile/pix_core/docs.png delete mode 100644 theme/mymobile/pix_core/f/audio.png delete mode 100644 theme/mymobile/pix_core/f/avi.png delete mode 100644 theme/mymobile/pix_core/f/dmg.png delete mode 100644 theme/mymobile/pix_core/f/docm.png delete mode 100644 theme/mymobile/pix_core/f/docx.png delete mode 100644 theme/mymobile/pix_core/f/excel.png delete mode 100644 theme/mymobile/pix_core/f/image.png delete mode 100644 theme/mymobile/pix_core/f/text.png delete mode 100644 theme/mymobile/pix_core/f/video.png delete mode 100644 theme/mymobile/pix_core/f/web.png delete mode 100644 theme/mymobile/pix_core/help.png delete mode 100644 theme/mymobile/pix_core/i/admin.png delete mode 100644 theme/mymobile/pix_core/i/backup.png delete mode 100644 theme/mymobile/pix_core/i/calc.png delete mode 100644 theme/mymobile/pix_core/i/checkpermissions.png delete mode 100644 theme/mymobile/pix_core/i/closed.png delete mode 100644 theme/mymobile/pix_core/i/cohort.png delete mode 100644 theme/mymobile/pix_core/i/completion-auto-n.png delete mode 100644 theme/mymobile/pix_core/i/completion-auto-y.png delete mode 100644 theme/mymobile/pix_core/i/completion-manual-n.png delete mode 100644 theme/mymobile/pix_core/i/completion-manual-y.png delete mode 100644 theme/mymobile/pix_core/i/course.png delete mode 100644 theme/mymobile/pix_core/i/courseevent.png delete mode 100644 theme/mymobile/pix_core/i/db.png delete mode 100644 theme/mymobile/pix_core/i/edit.png delete mode 100644 theme/mymobile/pix_core/i/email.png delete mode 100644 theme/mymobile/pix_core/i/files.png delete mode 100644 theme/mymobile/pix_core/i/filter.png delete mode 100644 theme/mymobile/pix_core/i/flagged.png delete mode 100644 theme/mymobile/pix_core/i/grades.png delete mode 100644 theme/mymobile/pix_core/i/group.png delete mode 100644 theme/mymobile/pix_core/i/groupevent.png delete mode 100644 theme/mymobile/pix_core/i/guest.png delete mode 100644 theme/mymobile/pix_core/i/info.png delete mode 100644 theme/mymobile/pix_core/i/item.png delete mode 100644 theme/mymobile/pix_core/i/lock.png delete mode 100644 theme/mymobile/pix_core/i/log.png delete mode 100644 theme/mymobile/pix_core/i/mail.png delete mode 100644 theme/mymobile/pix_core/i/menu.png delete mode 100644 theme/mymobile/pix_core/i/navigationitem.png delete mode 100644 theme/mymobile/pix_core/i/new.png delete mode 100644 theme/mymobile/pix_core/i/news.png delete mode 100644 theme/mymobile/pix_core/i/open.png delete mode 100644 theme/mymobile/pix_core/i/payment.png delete mode 100644 theme/mymobile/pix_core/i/publish.png delete mode 100644 theme/mymobile/pix_core/i/reload.png delete mode 100644 theme/mymobile/pix_core/i/report.png delete mode 100644 theme/mymobile/pix_core/i/return.png delete mode 100644 theme/mymobile/pix_core/i/rss.png delete mode 100644 theme/mymobile/pix_core/i/search.png delete mode 100644 theme/mymobile/pix_core/i/siteevent.png delete mode 100644 theme/mymobile/pix_core/i/stats.png delete mode 100644 theme/mymobile/pix_core/i/switch.png delete mode 100644 theme/mymobile/pix_core/i/unflagged.png delete mode 100644 theme/mymobile/pix_core/i/unlock.png delete mode 100644 theme/mymobile/pix_core/i/user.png delete mode 100644 theme/mymobile/pix_core/i/userevent.png delete mode 100644 theme/mymobile/pix_core/i/users.png delete mode 100644 theme/mymobile/pix_core/req.png delete mode 100644 theme/mymobile/pix_core/t/add.png delete mode 100644 theme/mymobile/pix_core/t/adddir.png delete mode 100644 theme/mymobile/pix_core/t/addfile.png delete mode 100644 theme/mymobile/pix_core/t/approve.png delete mode 100644 theme/mymobile/pix_core/t/check.png delete mode 100644 theme/mymobile/pix_core/t/collapsed.png delete mode 100644 theme/mymobile/pix_core/t/delete.png delete mode 100644 theme/mymobile/pix_core/t/down.png delete mode 100644 theme/mymobile/pix_core/t/edit.png delete mode 100644 theme/mymobile/pix_core/t/email.png delete mode 100644 theme/mymobile/pix_core/t/expanded.png delete mode 100644 theme/mymobile/pix_core/t/groupn.png delete mode 100644 theme/mymobile/pix_core/t/hiddenuntil.png delete mode 100644 theme/mymobile/pix_core/t/hideuntil.png delete mode 100644 theme/mymobile/pix_core/t/left.png delete mode 100644 theme/mymobile/pix_core/t/lock.png delete mode 100644 theme/mymobile/pix_core/t/log.png delete mode 100644 theme/mymobile/pix_core/t/message.png delete mode 100644 theme/mymobile/pix_core/t/move.png delete mode 100644 theme/mymobile/pix_core/t/portfolioadd.png delete mode 100644 theme/mymobile/pix_core/t/preview.png delete mode 100644 theme/mymobile/pix_core/t/ranges.png delete mode 100644 theme/mymobile/pix_core/t/reload.png delete mode 100644 theme/mymobile/pix_core/t/restore.png delete mode 100644 theme/mymobile/pix_core/t/right.png delete mode 100644 theme/mymobile/pix_core/t/unlock.png delete mode 100644 theme/mymobile/pix_core/t/up.png delete mode 100644 theme/mymobile/pix_core/t/user.png delete mode 100644 theme/mymobile/pix_core/u/f1.png delete mode 100644 theme/mymobile/pix_core/u/f2.png delete mode 100644 theme/mymobile/pix_core/u/user100.png delete mode 100644 theme/mymobile/pix_core/u/user35.png delete mode 100644 theme/mymobile/pix_plugins/mod/assignment/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/book/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/chat/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/choice/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/data/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/feedback/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/folder/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/forum/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/glossary/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/glossary/print.png delete mode 100644 theme/mymobile/pix_plugins/mod/label/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/lams/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/lesson/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/mail/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/page/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/quiz/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/resource/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/scorm/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/survey/icon.png delete mode 100644 theme/mymobile/pix_plugins/mod/wiki/icon.png delete mode 100644 theme/mymobile/readme_moodle.txt delete mode 100644 theme/mymobile/renderers.php delete mode 100644 theme/mymobile/renderers/mod_choice_renderer.php delete mode 100644 theme/mymobile/settings.php delete mode 100644 theme/mymobile/style/core.css delete mode 100644 theme/mymobile/style/jmobile131.css delete mode 100644 theme/mymobile/style/jmobile131_rtl.css delete mode 100644 theme/mymobile/style/media.css delete mode 100644 theme/mymobile/version.php diff --git a/lib/classes/plugin_manager.php b/lib/classes/plugin_manager.php index 05b72efd90220..35bf4c125f8c5 100644 --- a/lib/classes/plugin_manager.php +++ b/lib/classes/plugin_manager.php @@ -1103,7 +1103,7 @@ public static function standard_plugins_list($type) { 'theme' => array( 'afterburner', 'anomaly', 'arialist', 'base', 'binarius', 'bootstrapbase', 'boxxie', 'brick', 'canvas', 'clean', 'formal_white', 'formfactor', - 'fusion', 'leatherbound', 'magazine', 'mymobile', 'nimble', + 'fusion', 'leatherbound', 'magazine', 'nimble', 'nonzero', 'overlay', 'serenity', 'sky_high', 'splash', 'standard', 'standardold' ), diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index edf21a9e346d5..7604f3e85df22 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -2774,5 +2774,38 @@ function xmldb_main_upgrade($oldversion) { upgrade_main_savepoint(true, 2013102500.01); } + if ($oldversion < 2013110400.00) { + + if (!check_dir_exists($CFG->dirroot . '/theme/mymobile', false)) { + // Delete from config_plugins. + $DB->delete_records('config_plugins', array('plugin' => 'theme_mymobile')); + // Delete the config logs. + $DB->delete_records('config_log', array('plugin' => 'theme_mymobile')); + + // Replace the mymobile settings. + $DB->set_field('course', 'theme', 'clean', array('theme' => 'mymobile')); + $DB->set_field('course_categories', 'theme', 'clean', array('theme' => 'mymobile')); + $DB->set_field('user', 'theme', 'clean', array('theme' => 'mymobile')); + $DB->set_field('mnet_host', 'theme', 'clean', array('theme' => 'mymobile')); + + // Replace the theme configs. + if (get_config('core', 'theme') == 'mymobile') { + set_config('theme', 'clean'); + } + if (get_config('core', 'thememobile') == 'mymobile') { + set_config('thememobile', 'clean'); + } + if (get_config('core', 'themelegacy') == 'mymobile') { + set_config('themelegacy', 'clean'); + } + if (get_config('core', 'themetablet') == 'mymobile') { + set_config('themetablet', 'clean'); + } + } + + // Main savepoint reached. + upgrade_main_savepoint(true, 2013110400.00); + } + return true; } diff --git a/theme/mymobile/config.php b/theme/mymobile/config.php deleted file mode 100644 index c162766fac822..0000000000000 --- a/theme/mymobile/config.php +++ /dev/null @@ -1,162 +0,0 @@ -. - -/** - * Config file for mymobile theme - * - * @package theme_mymobile - * @copyright John Stabinger - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -// The name of the theme -$THEME->name = 'mymobile'; - -// This theme relies on canvas and of course base themes -$THEME->parents = array( - 'canvas', - 'base', -); - -// Set the stylesheets that we want to include for this theme -$THEME->sheets = array( - 'jmobile131', - 'jmobile131_rtl', - 'core', - 'media' -); - -// Exclude parent sheets that we don't want -$THEME->parents_exclude_sheets = array( - 'base' => array( - 'pagelayout', - 'dock', - 'editor', - ), - 'canvas' => array( - 'pagelayout', - 'tabs', - 'editor', - ), -); - -// Disable the dock - this theme does not support it. -$THEME->enable_dock = false; - -// Set up the default layout options. Note that none of these have block -// regions. See the code below this for where and when block regions are added. -$THEME->layouts = array( - 'base' => array( - 'file' => 'general.php', - 'regions' => array(), - ), - 'standard' => array( - 'file' => 'general.php', - 'regions' => array(), - ), - 'course' => array( - 'file' => 'general.php', - 'regions' => array(), - ), - 'coursecategory' => array( - 'file' => 'general.php', - 'regions' => array(), - ), - 'incourse' => array( - 'file' => 'general.php', - 'regions' => array(), - ), - 'frontpage' => array( - 'file' => 'general.php', - 'regions' => array(), - ), - 'admin' => array( - 'file' => 'general.php', - 'regions' => array(), - ), - 'mydashboard' => array( - 'file' => 'general.php', - 'regions' => array(), - 'options' => array('nonavbar' => true), - ), - 'mypublic' => array( - 'file' => 'general.php', - 'regions' => array(), - ), - 'login' => array( - 'file' => 'general.php', - 'regions' => array(), - 'options' => array('langmenu'=>true, 'nonavbar'=>true), - ), - 'popup' => array( - 'file' => 'embedded.php', - 'regions' => array(), - 'options' => array('nofooter'=>true, 'noblocks'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true), - ), - 'frametop' => array( - 'file' => 'general.php', - 'regions' => array(), - 'options' => array('nofooter'=>true, 'nocoursefooter'=>true), - ), - 'maintenance' => array( - 'file' => 'general.php', - 'regions' => array(), - 'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true), - ), - 'embedded' => array( - 'file' => 'embedded.php', - 'regions' => array(), - 'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocourseheaderfooter'=>true), - ), - // Should display the content and basic headers only. - 'print' => array( - 'file' => 'general.php', - 'regions' => array(), - 'options' => array('nofooter'=>true, 'nonavbar'=>false, 'noblocks'=>true, 'nocourseheaderfooter'=>true), - ), - // The pagelayout used when a redirection is occuring. - 'redirect' => array( - 'file' => 'embedded.php', - 'regions' => array(), - 'options' => array('nofooter'=>true, 'nonavbar'=>true, 'nocustommenu'=>true, 'nocourseheaderfooter'=>true), - ), - // The pagelayout used for reports - 'report' => array( - 'file' => 'general.php', - 'regions' => array(), - 'options' => array('nofooter'=>true, 'nonavbar'=>false, 'noblocks'=>true), - ), -); - -// Get whether to show blocks and use appropriate pagelayout -// this is necessary for block JS errors and other block problems. -$thisdevice = core_useragent::get_device_type(); -if ($thisdevice === core_useragent::DEVICETYPE_DEFAULT || $thisdevice === core_useragent::DEVICETYPE_TABLET || - optional_param('mymobile_blocks', false, PARAM_BOOL)) { - // These are layouts with blocks. - $blocklayouts = array('course', 'incourse', 'frontpage', 'mydashboard', 'mypublic'); - foreach ($blocklayouts as $layout) { - $THEME->layouts[$layout]['regions'] = array('myblocks'); - $THEME->layouts[$layout]['defaultregion'] = 'myblocks'; - } -} - -// Sets a custom render factory to use with the theme, used when working with custom renderers. -$THEME->rendererfactory = 'theme_overridden_renderer_factory'; -$THEME->csspostprocess = 'mymobile_user_settings'; - -// Disables CSS Optimiser for MyMobile theme. -$THEME->supportscssoptimisation = false; diff --git a/theme/mymobile/jquery/custom131.js b/theme/mymobile/jquery/custom131.js deleted file mode 100644 index 5d4b0ad785a95..0000000000000 --- a/theme/mymobile/jquery/custom131.js +++ /dev/null @@ -1,257 +0,0 @@ -$(document).bind("mobileinit", function(){ -//mobile init stuff 11/12/10 -//turn off ajax forms... -$.mobile.defaultPageTransition = "slide"; -}); - -$(document).ready(function() { - //get some vars to start - var siteurl = $('.mobilesiteurl').attr("id"); - var mytheme = $(".datatheme").attr("id"); - var mythemeb = $(".datathemeb").attr("id"); - - - //function below does generic stuff before creating all pages... - $('div').live('pagebeforecreate', function(event, ui) { - //turn off ajax on all forms for now as of beta1 - $('form').attr("data-ajax", "false"); - //lesson - $('.lessonbutton.standardbutton a').attr("data-role", "button"); - $('#page-mod-lesson-viewPAGE div.fitemtitle label').addClass("afirst"); - - //tablet column removal switch - $('.slider').live("change",function() { - var slids = $(this).val(); - M.util.set_user_preference('theme_mymobile_chosen_colpos', slids); - if (slids == "off") { - $('.ui-page-active').removeClass("has-myblocks"); - } else { - $('.ui-page-active').addClass("has-myblocks"); - } - }); - - //tabs- links set to external to fix forms - $('div.tabtree ul.tabrow0').attr("data-role", "controlgroup"); - $('div.tabtree ul.tabrow12').attr("data-role", "controlgroup"); - $('div.tabtree li a').attr("data-role", "button").attr("data-ajax", "false"); - - //jump to current or bottom - $('a.jumptocurrent').live('tap', function() { - var position = $(".ui-page-active .section.current").position(); - if (!position) { - var position = $(".ui-page-active .mobilefooter").position(); - } - $.mobile.silentScroll(position.top); - $(this).removeClass("ui-btn-active"); - return false; - }); - - //scroll to top - $('a#uptotop').live('tap', function() { - var position = $(".ui-page-active").position(); - $.mobile.silentScroll(position.top); - $(this).removeClass("ui-btn-active"); - return false; - }); - - //remove message notifcation overlay on tap 6/21/11 - $('a#notificationno').live('tap', function() { - $('#newmessageoverlay').remove(); - return false; - }); - - //calendar and other links that need to be external - $('.maincalendar .filters a, li.activity.scorm a, div.files a, #page-user-filesPAGE li div a, .maincalendar .bottom a, .section li.url.modtype_url a, .resourcecontent .resourcemediaplugin a, #underfooter .noajax a, .block_mnet_hosts .content a, .block_private_files .content a, a.portfolio-add-link, #attempts td a, .settingsul li a, .foldertree li a').attr("data-ajax", "false"); - - //add blank to open in window for some - $('#page-mod-url-viewPAGE div.urlworkaround a, #page-mod-resource-viewPAGE div.resourceworkaround a, .mediaplugin a.mediafallbacklink, #page-mod-resource-viewPAGE .resourcemp3 a, .foldertree li a').attr("target", "_blank").attr("data-role", "button").attr("data-icon", "plus"); - - //// **** general stuff *** //// - $('form fieldset').attr("data-role", "fieldcontain"); - $('form .fitem').attr("data-role", "fieldcontain"); - - //submit button for forum - $('#page-mod-url-viewPAGE div.urlworkaround a').attr("data-role", "button"); - - //survey form fix - $('#surveyform').attr("action", siteurl + '/mod/survey/save.php'); - - //nav select navigtation NEW - $("#navselect").live("change",function() { - var meb = encodeURI($(this).val()); - $(this).val("-1"); - if (meb != "" && meb != "-1") { - $.mobile.changePage(meb); - } - }); - - }); - - - //course page only js - $('div.path-site, div.path-course-view, .path-course-view div.generalpage').live('pagebeforecreate', function(event, ui) { - //course listing - $('.section li img.activityicon').addClass("ui-li-icon"); - $('.course-content ul.section, .sitetopic ul.section').attr("data-role", "listview").attr("data-inset", "true").attr("data-theme", mythemeb); - $('.topics div.left.side').addClass("ui-bar-" + mytheme); - $('.section.hidden div.headingwrap').attr("data-theme", mythemeb); - //$('.topics #section-0 div.left.side').removeClass("ui-li ui-li-divider ui-btn ui-bar-a"); - $('.section .resource.modtype_resource a, .section .modtype_survey a').attr("data-ajax", "false"); - - //toggle completion checkmarks and form fixes - $('.togglecompletion input[type="image"]').attr("data-role", "none"); - $('.togglecompletion input[type="image"]').click(function() { - $(".section .togglecompletion").attr("action", ''); - var mylocc = siteurl + "/course/togglecompletion.php"; - $(".section .togglecompletion").attr("action", mylocc); - this.form.submit(); - return false; - }); - - // Force the class ui-li-desc on non-detected elements. - $('ul.section div.availabilityinfo, ul.section div.contentafterlink').addClass('ui-li-desc'); - - // Force some classes on dimmed elements. - $('ul.section div.dimmed_text > span').addClass('instancename'); - }); - - //forum listing only stuff - $('div#page-mod-forum-viewPAGE, #page-mod-forum-view div.generalpage').live('pagebeforecreate',function(event, ui){ - //forums listing change theme for other theme - $('table.forumheaderlist').attr("data-role", "controlgroup"); - $('table.forumheaderlist thead tr').attr("data-role", "button").attr("data-theme", mythemeb); - $('table.forumheaderlist td.topic a').attr("data-role", "button").attr("data-icon", "arrow-r").attr("data-iconpos", "right").attr("data-theme", mythemeb); - }); - - $('div#page-mod-forum-viewPAGE').live('pageinit',function(event, ui){ - $('.forumheaderlist td.topic').each(function(index) { - var ggg = $(this).nextAll("td.replies").text(); - $(this).find('a').append(' ' + ggg + ''); - }); - }); - - //forum discussion page only stuff - $('div#page-mod-forum-discussPAGE, #page-mod-forum-discuss div.generalpage, div.forumtype-single, .forumtype-single div.generalpage, div#page-mod-forum-postPAGE').live('pagebeforecreate',function(event, ui){ - //actual forum posting - $('.forumpost div.row.header').addClass("ui-li ui-li-divider ui-btn ui-bar-" + mytheme); - $('.options div.commands').attr("data-role", "controlgroup").attr("data-type", "horizontal"); - $('.options div.commands a').attr("data-role", "button").attr("data-ajax", "false").attr("data-inline", "true"); - $('.forumpost div.author a').attr("data-inline", "true"); - $('.options div.commands').contents().filter(function() { - return this.nodeType == 3; //Node.TEXT_NODE - }).remove(); - //function above removes | in div.commands - }); - - //frontpage only stuff - $('div#page-site-indexPAGE, div.pagelayout-coursecategory').live('pagebeforecreate',function(event, ui){ - //course boxes on category pages and front page stuff - //forum posts on front page only - $('.forumpost div.row.header').addClass("ui-li ui-li-divider ui-btn ui-bar-" + mytheme); - $('div.subscribelink a').attr("data-role", "button").attr("data-inline", "true"); - $('.unlist').attr("data-role", "controlgroup"); - $('div.coursebox a').attr("data-role", "button").attr("data-icon", "arrow-r").attr("data-iconpos", "right").attr("data-theme", mythemeb); - $('.box.categorybox').attr("data-role", "controlgroup"); - $('div.categorylist div.category a').attr("data-role", "button").attr("data-theme", mythemeb); - $('#shortsearchbox, #coursesearch2 #shortsearchbox').attr("data-type", "search"); - }); - - $('div#page-site-indexPAGE').live('pageinit',function(event, ui){ - $('div.categorylist div.category').each(function(index) { - var ggb = $(this).find("span.numberofcourse").text().replace('(','').replace(')',''); - if (ggb != "") { - $(this).find('a').append('' + ggb + ''); - } - }); - }); - - //chat only stuff - $('div#chatpage, div.path-mod-chat').live('pagebeforecreate',function(event, ui){ - $('#input-message, #button-send').attr("data-role", "none"); - $('#enterlink a').attr("data-role", "button").attr("data-ajax", "false").attr("data-icon", "plus"); - $('form, input, button').attr("data-ajax", "false"); - }); - - //login page only stuff - $('div#page-login-indexPAGE').live('pagebeforecreate',function(event, ui){ - //signup form fix - $('.path-login .signupform #signup').attr("action", siteurl + '/login/signup.php'); - $('.path-login #guestlogin').attr("action", siteurl + '/login/index.php'); - }); - - //messaging only stuff - $('div#page-message-indexPAGE').live('pagebeforecreate',function(event, ui){ - //below to fix form actions here and there - $("#usergroupform").attr("action", ''); - //if (userform == "") { - var myloc = siteurl + "/message/index.php"; - $("#usergroupform").attr("action", myloc); - //messaging links - $('.path-message td.link').attr("data-role", "controlgroup").attr("data-type", "horizontal"); - $('.path-message td.link a').attr("data-role", "button").attr("data-inline", "true"); - }); - - //database and glossary only stuff - $('div#page-mod-data-viewPAGE, div#page-mod-glossary-viewPAGE').live('pagebeforecreate',function(event, ui){ - $('.defaulttemplate td a').attr("data-role", "button").attr("data-ajax", "false").attr("data-inline", "true"); - $('#options select, .aliases select').attr("data-native-menu", "true"); - $('#pref_search, .glossarysearchbox input[type="text"]').attr("data-type", "search"); - $('#options').attr("action", siteurl + '/mod/data/view.php'); - $('#page-mod-glossary-viewPAGE form').each(function(index) { - var glossform = $(this).attr("action"); - if (glossform == "view.php") { - $(this).attr("action", siteurl + '/mod/glossary/view.php'); - } - }); - }); - - //mymoodle only stuff - $('div#page-my-indexPAGE').live('pagebeforecreate',function(event, ui){ - //my moodle page fixes - //block_course_overview - $('.block_course_overview div.headingwrap').attr("data-role", "none"); - $('.block_course_overview h3 a').attr("data-theme", mytheme); - }); - - //resource only stuff to help embedded PDFs, provides link to open in new window - $('div#page-mod-resource-viewPAGE').live('pagebeforecreate',function(event, ui){ - $('div.resourcepdf').each(function(index) { - var thisopen = $(this).find('#resourceobject').attr("data"); - $(this).append(''); - }); - }); - - //quiz page only js - $('div#page-mod-quiz-viewPAGE, div#page-mod-quiz-attemptPAGE, div#page-mod-quiz-summaryPAGE, div#page-mod-quiz-reviewPAGE, #page-mod-quiz-attempt #content2').live('pagebeforecreate',function(event, ui){ - //add quiz timer into quiz page - $('#quiz-timer').remove(); - $('.mymobilecontent').prepend('
'); - $('.que .info').addClass("ui-bar-" + mytheme); - $('.que input.submit').attr("data-role", "none"); - $('div.submitbtns a, div.quizattemptcounts a').attr("data-role", "button").attr("data-ajax", "false"); - $('#page-mod-quiz-attemptPAGE .questionflag input, .path-mod-quiz .questionflag input').attr("data-role", "none"); - }); - - //assignment page only stuff - $('#page-mod-assignment-viewPAGE').live('pagebeforecreate',function(event, ui){ - //below fixes the advanced upload edit notes button - $('#page-mod-assignment-viewPAGE div[rel="upload.php"]').parent().attr("action", siteurl + '/mod/assignment/upload.php'); - }); - - //hotpot page only stuff - $('div.path-mod-hotpot').live('pagebeforecreate',function(event, ui){ - $('.path-mod-hotpot button').attr("data-role", "none"); - }); - - ///// functions below does stuff after creating page for some cleaning... - $('div').live('pageinit',function(event, ui){ - $('.path-calendar div.ui-radio label:first-child, .path-mod-lesson div.ui-radio label:first-child, #page-mod-wiki-createPAGE div.ui-radio label:first-child').addClass("afirst"); - $('.forumpost div.author a').removeAttr('data-role'); - //$('.questionflagimage2').removeClass("ui-btn-hidden");a#notificationyes - //image replacement - $(this).find(".ithumb .course-content .summary img, .ithumb .course-content .activity.label img, .ithumb .sitetopic .no-overflow img").click(function() { - var turl = $(this).attr("src"); - window.open(turl); - }); - }); -}); \ No newline at end of file diff --git a/theme/mymobile/jquery/jquery.mobile-1.3.1.js b/theme/mymobile/jquery/jquery.mobile-1.3.1.js deleted file mode 100644 index 692e96d567602..0000000000000 --- a/theme/mymobile/jquery/jquery.mobile-1.3.1.js +++ /dev/null @@ -1,11199 +0,0 @@ -/* -* jQuery Mobile 1.3.1 -* Git HEAD hash: 74b4bec049fd93e4fe40205e6157de16eb64eb46 <> Date: Mon Apr 8 2013 19:41:28 UTC -* http://jquerymobile.com -* -* Copyright 2010, 2013 jQuery Foundation, Inc. and other contributors -* Released under the MIT license. -* http://jquery.org/license -* -*/ - - -(function ( root, doc, factory ) { - if ( typeof define === "function" && define.amd ) { - // AMD. Register as an anonymous module. - define( [ "jquery" ], function ( $ ) { - factory( $, root, doc ); - return $.mobile; - }); - } else { - // Browser globals - factory( root.jQuery, root, doc ); - } -}( this, document, function ( jQuery, window, document, undefined ) { -(function( $ ) { - $.mobile = {}; -}( jQuery )); -(function( $, window, undefined ) { - var nsNormalizeDict = {}; - - // jQuery.mobile configurable options - $.mobile = $.extend($.mobile, { - - // Version of the jQuery Mobile Framework - version: "1.3.1", - - // Namespace used framework-wide for data-attrs. Default is no namespace - ns: "", - - // Define the url parameter used for referencing widget-generated sub-pages. - // Translates to to example.html&ui-page=subpageIdentifier - // hash segment before &ui-page= is used to make Ajax request - subPageUrlKey: "ui-page", - - // Class assigned to page currently in view, and during transitions - activePageClass: "ui-page-active", - - // Class used for "active" button state, from CSS framework - activeBtnClass: "ui-btn-active", - - // Class used for "focus" form element state, from CSS framework - focusClass: "ui-focus", - - // Automatically handle clicks and form submissions through Ajax, when same-domain - ajaxEnabled: true, - - // Automatically load and show pages based on location.hash - hashListeningEnabled: true, - - // disable to prevent jquery from bothering with links - linkBindingEnabled: true, - - // Set default page transition - 'none' for no transitions - defaultPageTransition: "fade", - - // Set maximum window width for transitions to apply - 'false' for no limit - maxTransitionWidth: false, - - // Minimum scroll distance that will be remembered when returning to a page - minScrollBack: 250, - - // DEPRECATED: the following property is no longer in use, but defined until 2.0 to prevent conflicts - touchOverflowEnabled: false, - - // Set default dialog transition - 'none' for no transitions - defaultDialogTransition: "pop", - - // Error response message - appears when an Ajax page request fails - pageLoadErrorMessage: "Error Loading Page", - - // For error messages, which theme does the box uses? - pageLoadErrorMessageTheme: "e", - - // replace calls to window.history.back with phonegaps navigation helper - // where it is provided on the window object - phonegapNavigationEnabled: false, - - //automatically initialize the DOM when it's ready - autoInitializePage: true, - - pushStateEnabled: true, - - // allows users to opt in to ignoring content by marking a parent element as - // data-ignored - ignoreContentEnabled: false, - - // turn of binding to the native orientationchange due to android orientation behavior - orientationChangeEnabled: true, - - buttonMarkup: { - hoverDelay: 200 - }, - - // define the window and the document objects - window: $( window ), - document: $( document ), - - // TODO might be useful upstream in jquery itself ? - keyCode: { - ALT: 18, - BACKSPACE: 8, - CAPS_LOCK: 20, - COMMA: 188, - COMMAND: 91, - COMMAND_LEFT: 91, // COMMAND - COMMAND_RIGHT: 93, - CONTROL: 17, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - INSERT: 45, - LEFT: 37, - MENU: 93, // COMMAND_RIGHT - NUMPAD_ADD: 107, - NUMPAD_DECIMAL: 110, - NUMPAD_DIVIDE: 111, - NUMPAD_ENTER: 108, - NUMPAD_MULTIPLY: 106, - NUMPAD_SUBTRACT: 109, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - RIGHT: 39, - SHIFT: 16, - SPACE: 32, - TAB: 9, - UP: 38, - WINDOWS: 91 // COMMAND - }, - - // Place to store various widget extensions - behaviors: {}, - - // Scroll page vertically: scroll to 0 to hide iOS address bar, or pass a Y value - silentScroll: function( ypos ) { - if ( $.type( ypos ) !== "number" ) { - ypos = $.mobile.defaultHomeScroll; - } - - // prevent scrollstart and scrollstop events - $.event.special.scrollstart.enabled = false; - - setTimeout( function() { - window.scrollTo( 0, ypos ); - $.mobile.document.trigger( "silentscroll", { x: 0, y: ypos }); - }, 20 ); - - setTimeout( function() { - $.event.special.scrollstart.enabled = true; - }, 150 ); - }, - - // Expose our cache for testing purposes. - nsNormalizeDict: nsNormalizeDict, - - // Take a data attribute property, prepend the namespace - // and then camel case the attribute string. Add the result - // to our nsNormalizeDict so we don't have to do this again. - nsNormalize: function( prop ) { - if ( !prop ) { - return; - } - - return nsNormalizeDict[ prop ] || ( nsNormalizeDict[ prop ] = $.camelCase( $.mobile.ns + prop ) ); - }, - - // Find the closest parent with a theme class on it. Note that - // we are not using $.fn.closest() on purpose here because this - // method gets called quite a bit and we need it to be as fast - // as possible. - getInheritedTheme: function( el, defaultTheme ) { - var e = el[ 0 ], - ltr = "", - re = /ui-(bar|body|overlay)-([a-z])\b/, - c, m; - - while ( e ) { - c = e.className || ""; - if ( c && ( m = re.exec( c ) ) && ( ltr = m[ 2 ] ) ) { - // We found a parent with a theme class - // on it so bail from this loop. - break; - } - - e = e.parentNode; - } - - // Return the theme letter we found, if none, return the - // specified default. - - return ltr || defaultTheme || "a"; - }, - - // TODO the following $ and $.fn extensions can/probably should be moved into jquery.mobile.core.helpers - // - // Find the closest javascript page element to gather settings data jsperf test - // http://jsperf.com/single-complex-selector-vs-many-complex-selectors/edit - // possibly naive, but it shows that the parsing overhead for *just* the page selector vs - // the page and dialog selector is negligable. This could probably be speed up by - // doing a similar parent node traversal to the one found in the inherited theme code above - closestPageData: function( $target ) { - return $target - .closest( ':jqmData(role="page"), :jqmData(role="dialog")' ) - .data( "mobile-page" ); - }, - - enhanceable: function( $set ) { - return this.haveParents( $set, "enhance" ); - }, - - hijackable: function( $set ) { - return this.haveParents( $set, "ajax" ); - }, - - haveParents: function( $set, attr ) { - if ( !$.mobile.ignoreContentEnabled ) { - return $set; - } - - var count = $set.length, - $newSet = $(), - e, $element, excluded; - - for ( var i = 0; i < count; i++ ) { - $element = $set.eq( i ); - excluded = false; - e = $set[ i ]; - - while ( e ) { - var c = e.getAttribute ? e.getAttribute( "data-" + $.mobile.ns + attr ) : ""; - - if ( c === "false" ) { - excluded = true; - break; - } - - e = e.parentNode; - } - - if ( !excluded ) { - $newSet = $newSet.add( $element ); - } - } - - return $newSet; - }, - - getScreenHeight: function() { - // Native innerHeight returns more accurate value for this across platforms, - // jQuery version is here as a normalized fallback for platforms like Symbian - return window.innerHeight || $.mobile.window.height(); - } - }, $.mobile ); - - // Mobile version of data and removeData and hasData methods - // ensures all data is set and retrieved using jQuery Mobile's data namespace - $.fn.jqmData = function( prop, value ) { - var result; - if ( typeof prop !== "undefined" ) { - if ( prop ) { - prop = $.mobile.nsNormalize( prop ); - } - - // undefined is permitted as an explicit input for the second param - // in this case it returns the value and does not set it to undefined - if( arguments.length < 2 || value === undefined ){ - result = this.data( prop ); - } else { - result = this.data( prop, value ); - } - } - return result; - }; - - $.jqmData = function( elem, prop, value ) { - var result; - if ( typeof prop !== "undefined" ) { - result = $.data( elem, prop ? $.mobile.nsNormalize( prop ) : prop, value ); - } - return result; - }; - - $.fn.jqmRemoveData = function( prop ) { - return this.removeData( $.mobile.nsNormalize( prop ) ); - }; - - $.jqmRemoveData = function( elem, prop ) { - return $.removeData( elem, $.mobile.nsNormalize( prop ) ); - }; - - $.fn.removeWithDependents = function() { - $.removeWithDependents( this ); - }; - - $.removeWithDependents = function( elem ) { - var $elem = $( elem ); - - ( $elem.jqmData( 'dependents' ) || $() ).remove(); - $elem.remove(); - }; - - $.fn.addDependents = function( newDependents ) { - $.addDependents( $( this ), newDependents ); - }; - - $.addDependents = function( elem, newDependents ) { - var dependents = $( elem ).jqmData( 'dependents' ) || $(); - - $( elem ).jqmData( 'dependents', $.merge( dependents, newDependents ) ); - }; - - // note that this helper doesn't attempt to handle the callback - // or setting of an html element's text, its only purpose is - // to return the html encoded version of the text in all cases. (thus the name) - $.fn.getEncodedText = function() { - return $( "
" ).text( $( this ).text() ).html(); - }; - - // fluent helper function for the mobile namespaced equivalent - $.fn.jqmEnhanceable = function() { - return $.mobile.enhanceable( this ); - }; - - $.fn.jqmHijackable = function() { - return $.mobile.hijackable( this ); - }; - - // Monkey-patching Sizzle to filter the :jqmData selector - var oldFind = $.find, - jqmDataRE = /:jqmData\(([^)]*)\)/g; - - $.find = function( selector, context, ret, extra ) { - selector = selector.replace( jqmDataRE, "[data-" + ( $.mobile.ns || "" ) + "$1]" ); - - return oldFind.call( this, selector, context, ret, extra ); - }; - - $.extend( $.find, oldFind ); - - $.find.matches = function( expr, set ) { - return $.find( expr, null, null, set ); - }; - - $.find.matchesSelector = function( node, expr ) { - return $.find( expr, null, null, [ node ] ).length > 0; - }; -})( jQuery, this ); - - -/*! - * jQuery UI Widget v1.10.0pre - 2012-11-13 (ff055a0c353c3c8ce6e5bfa07ad7cb03e8885bc5) - * http://jqueryui.com - * - * Copyright 2010, 2013 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/jQuery.widget/ - */ -(function( $, undefined ) { - -var uuid = 0, - slice = Array.prototype.slice, - _cleanData = $.cleanData; -$.cleanData = function( elems ) { - for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - try { - $( elem ).triggerHandler( "remove" ); - // http://bugs.jquery.com/ticket/8235 - } catch( e ) {} - } - _cleanData( elems ); -}; - -$.widget = function( name, base, prototype ) { - var fullName, existingConstructor, constructor, basePrototype, - namespace = name.split( "." )[ 0 ]; - - name = name.split( "." )[ 1 ]; - fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - // 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 ) ) { - prototype[ prop ] = (function() { - var _super = function() { - return base.prototype[ prop ].apply( this, arguments ); - }, - _superApply = function( args ) { - return base.prototype[ prop ].apply( this, args ); - }; - return function() { - var __super = this._super, - __superApply = this._superApply, - 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 - }, prototype, { - 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 ); -}; - -$.widget.extend = function( target ) { - var input = slice.call( arguments, 1 ), - inputIndex = 0, - inputLength = input.length, - key, - 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", - args = slice.call( arguments, 1 ), - returnValue = this; - - // allow multiple hashes to be passed on init - options = !isMethodCall && args.length ? - $.widget.extend.apply( null, [ options ].concat(args) ) : - options; - - if ( isMethodCall ) { - this.each(function() { - var methodValue, - instance = $.data( this, fullName ); - 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 { - this.each(function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} )._init(); - } else { - $.data( this, fullName, new object( options, this ) ); - } - }); - } - - return returnValue; - }; -}; - -$.Widget = function( /* options, element */ ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "
", - options: { - disabled: false, - - // callbacks - create: null - }, - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = uuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - - 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._create(); - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - _getCreateOptions: $.noop, - _getCreateEventData: $.noop, - _create: $.noop, - _init: $.noop, - - destroy: function() { - this._destroy(); - // we can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .unbind( this.eventNamespace ) - // 1.9 BC for #7810 - // TODO remove dual storage - .removeData( this.widgetName ) - .removeData( this.widgetFullName ) - // support: jquery <1.6.3 - // http://bugs.jquery.com/ticket/9413 - .removeData( $.camelCase( this.widgetFullName ) ); - this.widget() - .unbind( this.eventNamespace ) - .removeAttr( "aria-disabled" ) - .removeClass( - this.widgetFullName + "-disabled " + - "ui-state-disabled" ); - - // clean up events and states - this.bindings.unbind( this.eventNamespace ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - }, - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key, - parts, - curOption, - 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 ( value === undefined ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( value === undefined ) { - 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 ) { - this.options[ key ] = value; - - if ( key === "disabled" ) { - this.widget() - .toggleClass( this.widgetFullName + "-disabled ui-state-disabled", !!value ) - .attr( "aria-disabled", value ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - } - - return this; - }, - - enable: function() { - return this._setOption( "disabled", false ); - }, - disable: function() { - return this._setOption( "disabled", true ); - }, - - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement, - 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 { - // accept selectors, DOM elements - 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*(.*)$/ ), - eventName = match[1] + instance.eventNamespace, - selector = match[2]; - if ( selector ) { - delegateElement.delegate( selector, eventName, handlerProxy ); - } else { - element.bind( eventName, handlerProxy ); - } - }); - }, - - _off: function( element, eventName ) { - eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; - element.unbind( eventName ).undelegate( eventName ); - }, - - _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 ) { - $( event.currentTarget ).addClass( "ui-state-hover" ); - }, - mouseleave: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-hover" ); - } - }); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - $( event.currentTarget ).addClass( "ui-state-focus" ); - }, - focusout: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-focus" ); - } - }); - }, - - _trigger: function( type, event, data ) { - var prop, orig, - 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, - 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(); - }); - } - }; -}); - -})( jQuery ); - -(function( $, undefined ) { - -$.widget( "mobile.widget", { - // decorate the parent _createWidget to trigger `widgetinit` for users - // who wish to do post post `widgetcreate` alterations/additions - // - // TODO create a pull request for jquery ui to trigger this event - // in the original _createWidget - _createWidget: function() { - $.Widget.prototype._createWidget.apply( this, arguments ); - this._trigger( 'init' ); - }, - - _getCreateOptions: function() { - - var elem = this.element, - options = {}; - - $.each( this.options, function( option ) { - - var value = elem.jqmData( option.replace( /[A-Z]/g, function( c ) { - return "-" + c.toLowerCase(); - }) - ); - - if ( value !== undefined ) { - options[ option ] = value; - } - }); - - return options; - }, - - enhanceWithin: function( target, useKeepNative ) { - this.enhance( $( this.options.initSelector, $( target )), useKeepNative ); - }, - - enhance: function( targets, useKeepNative ) { - var page, keepNative, $widgetElements = $( targets ), self = this; - - // if ignoreContentEnabled is set to true the framework should - // only enhance the selected elements when they do NOT have a - // parent with the data-namespace-ignore attribute - $widgetElements = $.mobile.enhanceable( $widgetElements ); - - if ( useKeepNative && $widgetElements.length ) { - // TODO remove dependency on the page widget for the keepNative. - // Currently the keepNative value is defined on the page prototype so - // the method is as well - page = $.mobile.closestPageData( $widgetElements ); - keepNative = ( page && page.keepNativeSelector()) || ""; - - $widgetElements = $widgetElements.not( keepNative ); - } - - $widgetElements[ this.widgetName ](); - }, - - raise: function( msg ) { - throw "Widget [" + this.widgetName + "]: " + msg; - } -}); - -})( jQuery ); - - -(function( $, window ) { - // DEPRECATED - // NOTE global mobile object settings - $.extend( $.mobile, { - // DEPRECATED Should the text be visble in the loading message? - loadingMessageTextVisible: undefined, - - // DEPRECATED When the text is visible, what theme does the loading box use? - loadingMessageTheme: undefined, - - // DEPRECATED default message setting - loadingMessage: undefined, - - // DEPRECATED - // Turn on/off page loading message. Theme doubles as an object argument - // with the following shape: { theme: '', text: '', html: '', textVisible: '' } - // NOTE that the $.mobile.loading* settings and params past the first are deprecated - showPageLoadingMsg: function( theme, msgText, textonly ) { - $.mobile.loading( 'show', theme, msgText, textonly ); - }, - - // DEPRECATED - hidePageLoadingMsg: function() { - $.mobile.loading( 'hide' ); - }, - - loading: function() { - this.loaderWidget.loader.apply( this.loaderWidget, arguments ); - } - }); - - // TODO move loader class down into the widget settings - var loaderClass = "ui-loader", $html = $( "html" ), $window = $.mobile.window; - - $.widget( "mobile.loader", { - // NOTE if the global config settings are defined they will override these - // options - options: { - // the theme for the loading message - theme: "a", - - // whether the text in the loading message is shown - textVisible: false, - - // custom html for the inner content of the loading message - html: "", - - // the text to be displayed when the popup is shown - text: "loading" - }, - - defaultHtml: "
" + - "" + - "

" + - "
", - - // For non-fixed supportin browsers. Position at y center (if scrollTop supported), above the activeBtn (if defined), or just 100px from top - fakeFixLoader: function() { - var activeBtn = $( "." + $.mobile.activeBtnClass ).first(); - - this.element - .css({ - top: $.support.scrollTop && $window.scrollTop() + $window.height() / 2 || - activeBtn.length && activeBtn.offset().top || 100 - }); - }, - - // check position of loader to see if it appears to be "fixed" to center - // if not, use abs positioning - checkLoaderPosition: function() { - var offset = this.element.offset(), - scrollTop = $window.scrollTop(), - screenHeight = $.mobile.getScreenHeight(); - - if ( offset.top < scrollTop || ( offset.top - scrollTop ) > screenHeight ) { - this.element.addClass( "ui-loader-fakefix" ); - this.fakeFixLoader(); - $window - .unbind( "scroll", this.checkLoaderPosition ) - .bind( "scroll", $.proxy( this.fakeFixLoader, this ) ); - } - }, - - resetHtml: function() { - this.element.html( $( this.defaultHtml ).html() ); - }, - - // Turn on/off page loading message. Theme doubles as an object argument - // with the following shape: { theme: '', text: '', html: '', textVisible: '' } - // NOTE that the $.mobile.loading* settings and params past the first are deprecated - // TODO sweet jesus we need to break some of this out - show: function( theme, msgText, textonly ) { - var textVisible, message, $header, loadSettings; - - this.resetHtml(); - - // use the prototype options so that people can set them globally at - // mobile init. Consistency, it's what's for dinner - if ( $.type(theme) === "object" ) { - loadSettings = $.extend( {}, this.options, theme ); - - // prefer object property from the param then the old theme setting - theme = loadSettings.theme || $.mobile.loadingMessageTheme; - } else { - loadSettings = this.options; - - // here we prefer the them value passed as a string argument, then - // we prefer the global option because we can't use undefined default - // prototype options, then the prototype option - theme = theme || $.mobile.loadingMessageTheme || loadSettings.theme; - } - - // set the message text, prefer the param, then the settings object - // then loading message - message = msgText || $.mobile.loadingMessage || loadSettings.text; - - // prepare the dom - $html.addClass( "ui-loading" ); - - if ( $.mobile.loadingMessage !== false || loadSettings.html ) { - // boolean values require a bit more work :P, supports object properties - // and old settings - if ( $.mobile.loadingMessageTextVisible !== undefined ) { - textVisible = $.mobile.loadingMessageTextVisible; - } else { - textVisible = loadSettings.textVisible; - } - - // add the proper css given the options (theme, text, etc) - // Force text visibility if the second argument was supplied, or - // if the text was explicitly set in the object args - this.element.attr("class", loaderClass + - " ui-corner-all ui-body-" + theme + - " ui-loader-" + ( textVisible || msgText || theme.text ? "verbose" : "default" ) + - ( loadSettings.textonly || textonly ? " ui-loader-textonly" : "" ) ); - - // TODO verify that jquery.fn.html is ok to use in both cases here - // this might be overly defensive in preventing unknowing xss - // if the html attribute is defined on the loading settings, use that - // otherwise use the fallbacks from above - if ( loadSettings.html ) { - this.element.html( loadSettings.html ); - } else { - this.element.find( "h1" ).text( message ); - } - - // attach the loader to the DOM - this.element.appendTo( $.mobile.pageContainer ); - - // check that the loader is visible - this.checkLoaderPosition(); - - // on scroll check the loader position - $window.bind( "scroll", $.proxy( this.checkLoaderPosition, this ) ); - } - }, - - hide: function() { - $html.removeClass( "ui-loading" ); - - if ( $.mobile.loadingMessage ) { - this.element.removeClass( "ui-loader-fakefix" ); - } - - $.mobile.window.unbind( "scroll", this.fakeFixLoader ); - $.mobile.window.unbind( "scroll", this.checkLoaderPosition ); - } - }); - - $window.bind( 'pagecontainercreate', function() { - $.mobile.loaderWidget = $.mobile.loaderWidget || $( $.mobile.loader.prototype.defaultHtml ).loader(); - }); -})(jQuery, this); - - -// Script: jQuery hashchange event -// -// *Version: 1.3, Last updated: 7/21/2010* -// -// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/ -// GitHub - http://github.com/cowboy/jquery-hashchange/ -// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js -// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped) -// -// About: License -// -// Copyright (c) 2010 "Cowboy" Ben Alman, -// Dual licensed under the MIT and GPL licenses. -// http://benalman.com/about/license/ -// -// About: Examples -// -// These working examples, complete with fully commented code, illustrate a few -// ways in which this plugin can be used. -// -// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/ -// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/ -// -// About: Support and Testing -// -// Information about what version or versions of jQuery this plugin has been -// tested with, what browsers it has been tested in, and where the unit tests -// reside (so you can test it yourself). -// -// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2 -// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, -// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. -// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/ -// -// About: Known issues -// -// While this jQuery hashchange event implementation is quite stable and -// robust, there are a few unfortunate browser bugs surrounding expected -// hashchange event-based behaviors, independent of any JavaScript -// window.onhashchange abstraction. See the following examples for more -// information: -// -// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/ -// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/ -// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/ -// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/ -// -// Also note that should a browser natively support the window.onhashchange -// event, but not report that it does, the fallback polling loop will be used. -// -// About: Release History -// -// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more -// "removable" for mobile-only development. Added IE6/7 document.title -// support. Attempted to make Iframe as hidden as possible by using -// techniques from http://www.paciellogroup.com/blog/?p=604. Added -// support for the "shortcut" format $(window).hashchange( fn ) and -// $(window).hashchange() like jQuery provides for built-in events. -// Renamed jQuery.hashchangeDelay to and -// lowered its default value to 50. Added -// and properties plus document-domain.html -// file to address access denied issues when setting document.domain in -// IE6/7. -// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin -// from a page on another domain would cause an error in Safari 4. Also, -// IE6/7 Iframe is now inserted after the body (this actually works), -// which prevents the page from scrolling when the event is first bound. -// Event can also now be bound before DOM ready, but it won't be usable -// before then in IE6/7. -// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug -// where browser version is incorrectly reported as 8.0, despite -// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. -// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special -// window.onhashchange functionality into a separate plugin for users -// who want just the basic event & back button support, without all the -// extra awesomeness that BBQ provides. This plugin will be included as -// part of jQuery BBQ, but also be available separately. - -(function( $, window, undefined ) { - // Reused string. - var str_hashchange = 'hashchange', - - // Method / object references. - doc = document, - fake_onhashchange, - special = $.event.special, - - // Does the browser support window.onhashchange? Note that IE8 running in - // IE7 compatibility mode reports true for 'onhashchange' in window, even - // though the event isn't supported, so also test document.documentMode. - doc_mode = doc.documentMode, - supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 ); - - // Get location.hash (or what you'd expect location.hash to be) sans any - // leading #. Thanks for making this necessary, Firefox! - function get_fragment( url ) { - url = url || location.href; - return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' ); - }; - - // Method: jQuery.fn.hashchange - // - // Bind a handler to the window.onhashchange event or trigger all bound - // window.onhashchange event handlers. This behavior is consistent with - // jQuery's built-in event handlers. - // - // Usage: - // - // > jQuery(window).hashchange( [ handler ] ); - // - // Arguments: - // - // handler - (Function) Optional handler to be bound to the hashchange - // event. This is a "shortcut" for the more verbose form: - // jQuery(window).bind( 'hashchange', handler ). If handler is omitted, - // all bound window.onhashchange event handlers will be triggered. This - // is a shortcut for the more verbose - // jQuery(window).trigger( 'hashchange' ). These forms are described in - // the section. - // - // Returns: - // - // (jQuery) The initial jQuery collection of elements. - - // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and - // $(elem).hashchange() for triggering, like jQuery does for built-in events. - $.fn[ str_hashchange ] = function( fn ) { - return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange ); - }; - - // Property: jQuery.fn.hashchange.delay - // - // The numeric interval (in milliseconds) at which the - // polling loop executes. Defaults to 50. - - // Property: jQuery.fn.hashchange.domain - // - // If you're setting document.domain in your JavaScript, and you want hash - // history to work in IE6/7, not only must this property be set, but you must - // also set document.domain BEFORE jQuery is loaded into the page. This - // property is only applicable if you are supporting IE6/7 (or IE8 operating - // in "IE7 compatibility" mode). - // - // In addition, the property must be set to the - // path of the included "document-domain.html" file, which can be renamed or - // modified if necessary (note that the document.domain specified must be the - // same in both your main JavaScript as well as in this file). - // - // Usage: - // - // jQuery.fn.hashchange.domain = document.domain; - - // Property: jQuery.fn.hashchange.src - // - // If, for some reason, you need to specify an Iframe src file (for example, - // when setting document.domain as in ), you can - // do so using this property. Note that when using this property, history - // won't be recorded in IE6/7 until the Iframe src file loads. This property - // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7 - // compatibility" mode). - // - // Usage: - // - // jQuery.fn.hashchange.src = 'path/to/file.html'; - - $.fn[ str_hashchange ].delay = 50; - /* - $.fn[ str_hashchange ].domain = null; - $.fn[ str_hashchange ].src = null; - */ - - // Event: hashchange event - // - // Fired when location.hash changes. In browsers that support it, the native - // HTML5 window.onhashchange event is used, otherwise a polling loop is - // initialized, running every milliseconds to - // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7 - // compatibility" mode), a hidden Iframe is created to allow the back button - // and hash-based history to work. - // - // Usage as described in : - // - // > // Bind an event handler. - // > jQuery(window).hashchange( function(e) { - // > var hash = location.hash; - // > ... - // > }); - // > - // > // Manually trigger the event handler. - // > jQuery(window).hashchange(); - // - // A more verbose usage that allows for event namespacing: - // - // > // Bind an event handler. - // > jQuery(window).bind( 'hashchange', function(e) { - // > var hash = location.hash; - // > ... - // > }); - // > - // > // Manually trigger the event handler. - // > jQuery(window).trigger( 'hashchange' ); - // - // Additional Notes: - // - // * The polling loop and Iframe are not created until at least one handler - // is actually bound to the 'hashchange' event. - // * If you need the bound handler(s) to execute immediately, in cases where - // a location.hash exists on page load, via bookmark or page refresh for - // example, use jQuery(window).hashchange() or the more verbose - // jQuery(window).trigger( 'hashchange' ). - // * The event can be bound before DOM ready, but since it won't be usable - // before then in IE6/7 (due to the necessary Iframe), recommended usage is - // to bind it inside a DOM ready handler. - - // Override existing $.event.special.hashchange methods (allowing this plugin - // to be defined after jQuery BBQ in BBQ's source code). - special[ str_hashchange ] = $.extend( special[ str_hashchange ], { - - // Called only when the first 'hashchange' event is bound to window. - setup: function() { - // If window.onhashchange is supported natively, there's nothing to do.. - if ( supports_onhashchange ) { return false; } - - // Otherwise, we need to create our own. And we don't want to call this - // until the user binds to the event, just in case they never do, since it - // will create a polling loop and possibly even a hidden Iframe. - $( fake_onhashchange.start ); - }, - - // Called only when the last 'hashchange' event is unbound from window. - teardown: function() { - // If window.onhashchange is supported natively, there's nothing to do.. - if ( supports_onhashchange ) { return false; } - - // Otherwise, we need to stop ours (if possible). - $( fake_onhashchange.stop ); - } - - }); - - // fake_onhashchange does all the work of triggering the window.onhashchange - // event for browsers that don't natively support it, including creating a - // polling loop to watch for hash changes and in IE 6/7 creating a hidden - // Iframe to enable back and forward. - fake_onhashchange = (function() { - var self = {}, - timeout_id, - - // Remember the initial hash so it doesn't get triggered immediately. - last_hash = get_fragment(), - - fn_retval = function( val ) { return val; }, - history_set = fn_retval, - history_get = fn_retval; - - // Start the polling loop. - self.start = function() { - timeout_id || poll(); - }; - - // Stop the polling loop. - self.stop = function() { - timeout_id && clearTimeout( timeout_id ); - timeout_id = undefined; - }; - - // This polling loop checks every $.fn.hashchange.delay milliseconds to see - // if location.hash has changed, and triggers the 'hashchange' event on - // window when necessary. - function poll() { - var hash = get_fragment(), - history_hash = history_get( last_hash ); - - if ( hash !== last_hash ) { - history_set( last_hash = hash, history_hash ); - - $(window).trigger( str_hashchange ); - - } else if ( history_hash !== last_hash ) { - location.href = location.href.replace( /#.*/, '' ) + history_hash; - } - - timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay ); - }; - - // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv - // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - window.attachEvent && !window.addEventListener && !supports_onhashchange && (function() { - // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8 - // when running in "IE7 compatibility" mode. - - var iframe, - iframe_src; - - // When the event is bound and polling starts in IE 6/7, create a hidden - // Iframe for history handling. - self.start = function() { - if ( !iframe ) { - iframe_src = $.fn[ str_hashchange ].src; - iframe_src = iframe_src && iframe_src + get_fragment(); - - // Create hidden Iframe. Attempt to make Iframe as hidden as possible - // by using techniques from http://www.paciellogroup.com/blog/?p=604. - iframe = $('