135e99cadabef44faf5a2ff97790d4bce3e397ed
[moodle.git] / theme / mymobile / javascript / custom.js
1 $(document).bind("mobileinit", function(){
2 //mobile init stuff 11/12/10
3 //turn off ajax forms...
4 $.mobile.defaultPageTransition = "slide";
5 });
7 $(document).ready(function() {
8     //get some vars to start
9     var siteurl = $('.mobilesiteurl').attr("id");
10     var mytheme = $(".datatheme").attr("id");
11     var mythemeb = $(".datathemeb").attr("id");
14     //function below does generic stuff before creating all pages...
15     $('div').live('pagebeforecreate', function(event, ui) {
16         //turn off ajax on all forms for now as of beta1
17         $('form').attr("data-ajax", "false");
18         //lesson
19         $('.lessonbutton.standardbutton a').attr("data-role", "button");
20         $('#page-mod-lesson-viewPAGE div.fitemtitle label').addClass("afirst");
22         //tablet column removal switch
23         $('.slider').live("change",function() {
24             var slids = $(this).val();
25             M.util.set_user_preference('theme_mymobile_chosen_colpos', slids);
26             if (slids == "off") {
27                 $('.ui-page-active').removeClass("has-myblocks");
28             } else {
29                 $('.ui-page-active').addClass("has-myblocks");
30             }
31         });
33         //tabs- links set to external to fix forms
34         $('div.tabtree ul.tabrow0').attr("data-role", "controlgroup");
35         $('div.tabtree ul.tabrow12').attr("data-role", "controlgroup");
36         $('div.tabtree li a').attr("data-role", "button").attr("data-ajax", "false");
38         //jump to current or bottom
39         $('a.jumptocurrent').live('tap', function() {
40             var position = $(".ui-page-active .section.current").position();
41             if (!position) {
42                 var position = $(".ui-page-active .mobilefooter").position();
43             }
44             $.mobile.silentScroll(position.top);
45             $(this).removeClass("ui-btn-active");
46             return false;
47         });
49         //scroll to top
50         $('a#uptotop').live('tap', function() {
51             var position = $(".ui-page-active").position();
52             $.mobile.silentScroll(position.top);
53             $(this).removeClass("ui-btn-active");
54             return false;
55         });
57         //remove message notifcation overlay on tap 6/21/11
58         $('a#notificationno').live('tap', function() {
59             $('#newmessageoverlay').remove();
60             return false;
61         });
63         //calendar and other links that need to be external
64         $('.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').attr("data-ajax", "false");
66         //add blank to open in window for some
67         $('#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");
69         //// **** general stuff *** ////
70         $('form fieldset').attr("data-role", "fieldcontain");
71         $('form .fitem').attr("data-role", "fieldcontain");
73         //submit button for forum
74         $('#page-mod-url-viewPAGE div.urlworkaround a').attr("data-role", "button");
76         //survey form fix
77         $('#surveyform').attr("action", siteurl + '/mod/survey/save.php');
79         //nav select navigtation NEW
80         $("#navselect").live("change",function() {
81             var meb = encodeURI($(this).val());
82             $(this).val("-1");
83             if (meb != "" && meb != "-1") {
84                 $.mobile.changePage(meb);
85             }
86        });
88     });
91     //course page only js
92     $('div.path-course-view, .path-course-view div.generalpage').live('pagebeforecreate', function(event, ui) {
93         //course listing
94         $('.section li img').addClass("ui-li-icon");
95         $('.course-content ul.section').attr("data-role", "listview").attr("data-inset", "true").attr("data-theme", mythemeb);
96         $('.sitetopic ul.section').attr("data-role", "listview").attr("data-inset", "true").attr("data-theme", mythemeb);
97         $('.topics div.left.side').addClass("ui-bar-" + mytheme);
98         $('.section.hidden div.headingwrap').attr("data-theme", mythemeb);
99         //$('.topics #section-0 div.left.side').removeClass("ui-li ui-li-divider ui-btn ui-bar-a");
100         $('.section .resource.modtype_resource a, .section .modtype_survey a').attr("data-ajax", "false");
102         //toggle completion checkmarks and form fixes
103         $('.togglecompletion input[type="image"]').attr("data-role", "none");
104         $('.togglecompletion input[type="image"]').click(function() {
105             $(".section .togglecompletion").attr("action", '');
106             var mylocc = siteurl + "/course/togglecompletion.php";
107             $(".section .togglecompletion").attr("action", mylocc);
108             this.form.submit();
109             return false;
110         });
111     });
113     //forum listing only stuff
114     $('div#page-mod-forum-viewPAGE, #page-mod-forum-view div.generalpage').live('pagebeforecreate',function(event, ui){
115         //forums listing change theme for other theme
116         $('table.forumheaderlist').attr("data-role", "controlgroup");
117         $('table.forumheaderlist thead tr').attr("data-role", "button").attr("data-theme", mythemeb);
118         $('table.forumheaderlist td.topic a').attr("data-role", "button").attr("data-icon", "arrow-r").attr("data-iconpos", "right").attr("data-theme", mythemeb);
119     });
121     $('div#page-mod-forum-viewPAGE').live('pageinit',function(event, ui){
122         $('.forumheaderlist td.topic').each(function(index) {
123             var ggg = $(this).nextAll("td.replies").text();
124             $(this).find('a').append('<span class="ui-li-count ui-btn-up-a ui-btn-corner-all"> ' + ggg + '</span>');
125          });
126     });
128     //forum discussion page only stuff
129     $('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){
130         //remove parent post because of hash remove this if has listening is fixed
131         $('.options div.commands a').each(function(index) {
132             var url = $(this).attr("href");
133             if (url.indexOf("#") != -1) {
134                 $(this).remove();
135             }
136         });
138         //actual forum posting
139         $('.forumpost div.row.header').addClass("ui-li ui-li-divider ui-btn ui-bar-" + mytheme);
140         $('.options div.commands').attr("data-role", "controlgroup").attr("data-type", "horizontal");
141         $('.options div.commands a').attr("data-role", "button").attr("data-ajax", "false").attr("data-inline", "true");
142         $('.forumpost div.author a').attr("data-inline", "true");
143         $('.options div.commands').contents().filter(function() {
144             return this.nodeType == 3; //Node.TEXT_NODE
145         }).remove();
146         //function above removes | in div.commands
147     });
149     //frontpage only stuff
150     $('div#page-site-indexPAGE, div.pagelayout-coursecategory').live('pagebeforecreate',function(event, ui){
151         //course boxes on category pages and front page stuff
152         //forum posts on front page only
153         $('.forumpost div.row.header').addClass("ui-li ui-li-divider ui-btn ui-bar-" + mytheme);
154         $('div.subscribelink a').attr("data-role", "button").attr("data-inline", "true");
155         $('.unlist').attr("data-role", "controlgroup");
156         $('div.coursebox a').attr("data-role", "button").attr("data-icon", "arrow-r").attr("data-iconpos", "right").attr("data-theme", mythemeb);
157         $('.box.categorybox').attr("data-role", "controlgroup");
158         $('div.categorylist div.category a').attr("data-role", "button").attr("data-theme", mythemeb);
159         $('#shortsearchbox, #coursesearch2 #shortsearchbox').attr("data-type", "search");
160     });
162     $('div#page-site-indexPAGE').live('pageinit',function(event, ui){
163         $('div.categorylist div.category').each(function(index) {
164             var ggb = $(this).find("span.numberofcourse").text().replace('(','').replace(')','');
165             if (ggb != "") {
166                 $(this).find('a').append('<span class="ui-li-count ui-btn-up-a ui-btn-corner-all">' + ggb + '</span>');
167             }
168         });
169     });
171     //chat only stuff
172     $('div#chatpage, div.path-mod-chat').live('pagebeforecreate',function(event, ui){
173         $('#input-message, #button-send').attr("data-role", "none");
174         $('#enterlink a').attr("data-role", "button").attr("data-ajax", "false").attr("data-icon", "plus");
175         $('form, input, button').attr("data-ajax", "false");
176     });
178     //login page only stuff
179     $('div#page-login-indexPAGE').live('pagebeforecreate',function(event, ui){
180         //signup form fix
181         $('.path-login .signupform #signup').attr("action", siteurl + '/login/signup.php');
182         $('.path-login #guestlogin').attr("action", siteurl + '/login/index.php');
183     });
185     //messaging only stuff
186     $('div#page-message-indexPAGE').live('pagebeforecreate',function(event, ui){
187         //below to fix form actions here and there
188         $("#usergroupform").attr("action", '');
189         //if (userform == "") {
190         var myloc = siteurl + "/message/index.php";
191         $("#usergroupform").attr("action", myloc);
192         //messaging links
193         $('.path-message td.link').attr("data-role", "controlgroup").attr("data-type", "horizontal");
194         $('.path-message td.link a').attr("data-role", "button").attr("data-inline", "true");
195     });
197     //database and glossary only stuff
198     $('div#page-mod-data-viewPAGE, div#page-mod-glossary-viewPAGE').live('pagebeforecreate',function(event, ui){
199         $('.defaulttemplate td a').attr("data-role", "button").attr("data-ajax", "false").attr("data-inline", "true");
200         $('#options select, .aliases select').attr("data-native-menu", "true");
201         $('#pref_search, .glossarysearchbox input[type="text"]').attr("data-type", "search");
202         $('#options').attr("action", siteurl + '/mod/data/view.php');
203         $('#page-mod-glossary-viewPAGE form').each(function(index) {
204             var glossform = $(this).attr("action");
205             if (glossform == "view.php") {
206                 $(this).attr("action", siteurl + '/mod/glossary/view.php');
207             }
208         });
209     });
211     //mymoodle only stuff
212     $('div#page-my-indexPAGE').live('pagebeforecreate',function(event, ui){
213         //my moodle page fixes
214         //block_course_overview
215         $('.block_course_overview div.headingwrap').attr("data-role", "none");
216         $('.block_course_overview h3.main a').attr("data-theme", mytheme);
217     });
219     //resource only stuff to help embedded PDFs, provides link to open in new window
220     $('div#page-mod-resource-viewPAGE').live('pagebeforecreate',function(event, ui){
221         $('div.resourcepdf').each(function(index) {
222             var thisopen = $(this).find('#resourceobject').attr("data");
223             $(this).append('<a class="mobileresource" href="' +thisopen+ '" target="_blank"></a>');
224         });
225     });
227     //quiz page only js
228     $('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){
229         //add quiz timer into quiz page
230         $('#quiz-timer').remove();
231         $('.mymobilecontent').prepend('<div id="quiz-timer" > <span id="quiz-time-left"></span></div>');
232         $('.que .info').addClass("ui-bar-" + mytheme);
233         $('.que input.submit').attr("data-role", "none");
234         $('div.submitbtns a, div.quizattemptcounts a').attr("data-role", "button").attr("data-ajax", "false");
235         $('#page-mod-quiz-attemptPAGE .questionflag input, .path-mod-quiz .questionflag input').attr("data-role", "none");
236     });
238     //assignment page only stuff
239     $('#page-mod-assignment-viewPAGE').live('pagebeforecreate',function(event, ui){
240          //below fixes the advanced upload edit notes button
241          $('#page-mod-assignment-viewPAGE div[rel="upload.php"]').parent().attr("action", siteurl + '/mod/assignment/upload.php');
242     });
244     //hotpot page only stuff
245     $('div.path-mod-hotpot').live('pagebeforecreate',function(event, ui){
246         $('.path-mod-hotpot button').attr("data-role", "none");
247     });
249     //collapsed topic only stuff
250     $('div#page-course-view-topcollPAGE').live('pagebeforecreate',function(event, ui){
251         $('#page-course-view-topcollPAGE ul.section').attr("data-role", "none");
252         $('.section li img').removeClass("ui-li-icon");
253         $.getScript('../course/format/topcoll/module.js');
254         $('#page-course-view-topcollPAGE tr.cps a').attr("data-role", "button").attr("data-icon", "arrow-r");
255         $('#page-course-view-topcollPAGE #thetopics').attr("data-role", "controlgroup");
256         $('#page-course-view-topcollPAGE td.cps_centre').each(function(index) {
257             var cpsc = $(this).text().replace('<br>','').replace(')','');
258             $(this).prev('td').find('a').append('<span class="ui-li-count ui-btn-up-a ui-btn-corner-all">' + cpsc + '</span>');
259         });
260     });
262     ///// functions below does stuff after creating page for some cleaning...
263     $('div').live('pageinit',function(event, ui){
264         $('.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");
265         $('.forumpost div.author a').removeAttr('data-role');
266         //$('.questionflagimage2').removeClass("ui-btn-hidden");a#notificationyes
267         //image replacement
268         $(this).find(".ithumb .course-content .summary img, .ithumb .course-content .activity.label img, .ithumb .sitetopic .no-overflow img").click(function() {
269             var turl = $(this).attr("src");
270             window.open(turl);
271         });
272     });
273 });