Merge branch 'MDL-57550-master' of git://github.com/danpoltawski/moodle
authorAndrew Nicols <andrew@nicols.co.uk>
Tue, 24 Jan 2017 06:57:53 +0000 (14:57 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Tue, 24 Jan 2017 06:57:53 +0000 (14:57 +0800)
mod/forum/classes/output/big_search_form.php
mod/forum/forum.js [deleted file]
mod/forum/lib.php
mod/forum/templates/big_search_form.mustache
mod/forum/upgrade.txt
theme/boost/templates/mod_forum/big_search_form.mustache

index e2bd7ce..6a77898 100644 (file)
@@ -48,7 +48,6 @@ class big_search_form implements renderable, templatable {
     public $fullwords;
     public $notwords;
     public $phrase;
-    public $scripturl;
     public $showfullwords;
     public $subject;
     public $user;
@@ -65,7 +64,6 @@ class big_search_form implements renderable, templatable {
     public function __construct($course) {
         global $DB;
         $this->course = $course;
-        $this->scripturl = new moodle_url('/mod/forum/forum.js');
         $this->showfullwords = $DB->get_dbfamily() == 'mysql' || $DB->get_dbfamily() == 'postgres';
         $this->actionurl = new moodle_url('/mod/forum/search.php');
 
@@ -153,7 +151,6 @@ class big_search_form implements renderable, templatable {
     public function export_for_template(renderer_base $output) {
         $data = new stdClass();
 
-        $data->scripturl = $this->scripturl->out(false);
         $data->courseid = $this->course->id;
         $data->words = $this->words;
         $data->phrase = $this->phrase;
diff --git a/mod/forum/forum.js b/mod/forum/forum.js
deleted file mode 100644 (file)
index a6881b3..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-var timefromitems = ['fromday','frommonth','fromyear','fromhour', 'fromminute'];
-var timetoitems = ['today','tomonth','toyear','tohour','tominute'];
-
-function forum_produce_subscribe_link(forumid, backtoindex, ltext, ltitle) {
-    var elementid = "subscriptionlink";
-    var subs_link = document.getElementById(elementid);
-    if(subs_link){
-        subs_link.innerHTML = "<a title='"+ltitle+"' href='"+M.cfg.wwwroot+"/mod/forum/subscribe.php?id="+forumid+backtoindex+"&amp;sesskey="+M.cfg.sesskey+"'>"+ltext+"<\/a>";
-    }
-}
-
-function forum_produce_tracking_link(forumid, ltext, ltitle) {
-    var elementid = "trackinglink";
-    var subs_link = document.getElementById(elementid);
-    if(subs_link){
-        subs_link.innerHTML = "<a title='"+ltitle+"' href='"+M.cfg.wwwroot+"/mod/forum/settracking.php?id="+forumid+"&amp;sesskey="+M.cfg.sesskey+"'>"+ltext+"<\/a>";
-    }
-}
-
-function lockoptions_timetoitems() {
-    lockoptions('searchform','timefromrestrict', timefromitems);
-}
-
-function lockoptions_timefromitems() {
-    lockoptions('searchform','timetorestrict', timetoitems);
-}
-
-function lockoptions(formid, master, subitems) {
-    // Subitems is an array of names of sub items.
-    // Optionally, each item in subitems may have a
-    // companion hidden item in the form with the
-    // same name but prefixed by "h".
-    var form = document.forms[formid], i;
-    if (form[master].checked) {
-        for (i=0; i<subitems.length; i++) {
-            unlockoption(form, subitems[i]);
-        }
-    } else {
-        for (i=0; i<subitems.length; i++) {
-            lockoption(form, subitems[i]);
-        }
-    }
-    return(true);
-}
-
-
-function lockoption(form,item) {
-    form[item].setAttribute('disabled', 'disabled');
-    if (form.elements['h'+item]) {
-        form.elements['h'+item].value=1;
-    }
-}
-
-function unlockoption(form,item) {
-    form[item].removeAttribute('disabled');
-    if (form.elements['h'+item]) {
-        form.elements['h'+item].value=0;
-    }
-}
index d482fa5..ef67d74 100644 (file)
@@ -4791,12 +4791,13 @@ function forum_post_subscription($fromform, $forum, $discussion) {
  *      Any strings not passed in are taken from the $defaultmessages array
  *      at the top of the function.
  * @param bool $cantaccessagroup
- * @param bool $fakelink
+ * @param bool $unused1
  * @param bool $backtoindex
- * @param array $subscribed_forums
+ * @param array $unused2
  * @return string
  */
-function forum_get_subscribe_link($forum, $context, $messages = array(), $cantaccessagroup = false, $fakelink=true, $backtoindex=false, $subscribed_forums=null) {
+function forum_get_subscribe_link($forum, $context, $messages = array(), $cantaccessagroup = false, $unused1 = true,
+    $backtoindex = false, $unused2 = null) {
     global $CFG, $USER, $PAGE, $OUTPUT;
     $defaultmessages = array(
         'subscribed' => get_string('unsubscribe', 'forum'),
@@ -4835,22 +4836,11 @@ function forum_get_subscribe_link($forum, $context, $messages = array(), $cantac
         } else {
             $backtoindexlink = '';
         }
-        $link = '';
 
-        if ($fakelink) {
-            $PAGE->requires->js('/mod/forum/forum.js');
-            $PAGE->requires->js_function_call('forum_produce_subscribe_link', array($forum->id, $backtoindexlink, $linktext, $linktitle));
-            $link = "<noscript>";
-        }
         $options['id'] = $forum->id;
         $options['sesskey'] = sesskey();
         $url = new moodle_url('/mod/forum/subscribe.php', $options);
-        $link .= $OUTPUT->single_button($url, $linktext, 'get', array('title'=>$linktitle));
-        if ($fakelink) {
-            $link .= '</noscript>';
-        }
-
-        return $link;
+        return $OUTPUT->single_button($url, $linktext, 'get', array('title' => $linktitle));
     }
 }
 
index ffdc388..8a8a7f6 100644 (file)
@@ -21,7 +21,6 @@
 
     Example context (json):
     {
-        "scripturl": "https://example.com/mod/forum/forum.js",
         "actionurl": "https://example.com/mod/forum/search.php",
         "courseid": "2",
         "words": "apples",
@@ -52,9 +51,8 @@
     {{#str}}searchforumintro, forum{{/str}}
 </div>
 <div class="box generalbox boxaligncenter">
-    <script type="text/javascript" src="{{scripturl}}"></script>
     <form id="searchform" action="{{actionurl}}" method="get">
-        <table class="searchbox" id="form" cellpadding="10">
+        <table class="searchbox table" id="form">
             <tr>
                 <td class="c0">
                     <label for="words">{{#str}}searchwords, forum{{/str}}</label>
@@ -95,7 +93,7 @@
                     {{#str}}searchdatefrom, forum{{/str}}
                 </td>
                 <td class="c1">
-                    <input type="checkbox" name="timefromrestrict" value="1" onclick="return lockoptions('searchform', 'timefromrestrict', timefromitems)" {{#datefromchecked}}checked{{/datefromchecked}}>
+                    <input type="checkbox" name="timefromrestrict" value="1" {{#datefromchecked}}checked{{/datefromchecked}}>
                     {{{datefromfields}}}
                     <input type="hidden" name="hfromday" value="0">
                     <input type="hidden" name="hfrommonth" value="0">
                     {{#str}}searchdateto, forum{{/str}}
                 </td>
                 <td class="c1">
-                    <input type="checkbox" name="timetorestrict" value="1" onclick="return lockoptions('searchform', 'timetorestrict', timetoitems)" {{#datetochecked}}checked{{/datetochecked}}>
+                    <input type="checkbox" name="timetorestrict" value="1" {{#datetochecked}}checked{{/datetochecked}}>
                     {{{datetofields}}}
                     <input type="hidden" name="htoday" value="0">
                     <input type="hidden" name="htomonth" value="0">
                 </td>
             </tr>
             <tr>
-                <td colspan="2" class="submit" align="center">
-                    <input type="submit" value={{#quote}}{{#str}}searchforums, forum{{/str}}{{/quote}}>
+                <td colspan="2" class="submit">
+                    <div class="text-center">
+                        <input type="submit" value={{#quote}}{{#str}}searchforums, forum{{/str}}{{/quote}}>
+                    </div>
                 </td>
             </tr>
         </table>
     </form>
-    {{#js}}
-        lockoptions_timetoitems();
-        lockoptions_timefromitems();
-    {{/js}}
 </div>
+{{#js}}
+    require(['jquery'], function($) {
+        var toggleDateFields = function(prefix, disabled) {
+            $('#searchform select[name^=' + prefix + ']').prop('disabled', disabled);
+            $('#searchform input[name^=h' + prefix + ']').val(disabled ? 1 : 0);
+        };
+
+        toggleDateFields('from', true);
+        $("#searchform input[name='timefromrestrict']").click(function() {
+            toggleDateFields('from', !this.checked);
+        });
+
+        toggleDateFields('to', true);
+        $("#searchform input[name='timetorestrict']").click(function() {
+            toggleDateFields('to', !this.checked);
+        });
+    });
+{{/js}}
index 7cd1a70..966d9af 100644 (file)
@@ -4,6 +4,9 @@ information provided here is intended especially for developers.
 === 3.3 ===
   * External function get_forums_by_courses now returns and additional field "istracked" that indicates if the user
    is tracking the related forum.
+* The legacy forum.js file has been removed, this includes the js functions:
+    forum_produce_subscribe_link, forum_produce_tracking_link, lockoptions_timetoitems,
+    lockoptions_timefromitems, lockoptions, lockoption, unlockoption
 
 === 3.2 ===
  * The setting $CFG->forum_replytouser has been removed in favour of a centralized noreplyaddress setting.
index 3e96080..32d30d4 100644 (file)
@@ -21,7 +21,6 @@
 
     Example context (json):
     {
-        "scripturl": "https://example.com/mod/forum/forum.js",
         "actionurl": "https://example.com/mod/forum/search.php",
         "courseid": "2",
         "words": "apples",
@@ -52,9 +51,8 @@
     {{#str}}searchforumintro, forum{{/str}}
 </div>
 <div class="box generalbox boxaligncenter">
-    <script type="text/javascript" src="{{scripturl}}"></script>
     <form id="searchform" action="{{actionurl}}" method="get">
-        <table class="searchbox table table-striped" id="form" cellpadding="10">
+        <table class="searchbox table table-striped" id="form">
             <tr>
                 <td class="c0 text-xs-right">
                     <label for="words">{{#str}}searchwords, forum{{/str}}</label>
@@ -95,7 +93,7 @@
                     {{#str}}searchdatefrom, forum{{/str}}
                 </td>
                 <td class="c1 text-nowrap form-inline">
-                    <input type="checkbox" name="timefromrestrict" value="1" onclick="return lockoptions('searchform', 'timefromrestrict', timefromitems)" {{#datefromchecked}}checked{{/datefromchecked}}>
+                    <input type="checkbox" name="timefromrestrict" value="1" {{#datefromchecked}}checked{{/datefromchecked}}>
                     {{{datefromfields}}}
                     <input type="hidden" name="hfromday" value="0">
                     <input type="hidden" name="hfrommonth" value="0">
                     {{#str}}searchdateto, forum{{/str}}
                 </td>
                 <td class="c1 text-nowrap form-inline">
-                    <input type="checkbox" name="timetorestrict" value="1" onclick="return lockoptions('searchform', 'timetorestrict', timetoitems)" {{#datetochecked}}checked{{/datetochecked}}>
+                    <input type="checkbox" name="timetorestrict" value="1" {{#datetochecked}}checked{{/datetochecked}}>
                     {{{datetofields}}}
                     <input type="hidden" name="htoday" value="0">
                     <input type="hidden" name="htomonth" value="0">
             </tr>
         </table>
     </form>
-    {{#js}}
-        lockoptions_timetoitems();
-        lockoptions_timefromitems();
-    {{/js}}
 </div>
+{{#js}}
+require(['jquery'], function($) {
+    var toggleDateFields = function(prefix, disabled) {
+        $('#searchform select[name^=' + prefix + ']').prop('disabled', disabled);
+        $('#searchform input[name^=h' + prefix + ']').val(disabled ? 1 : 0);
+    };
+
+    toggleDateFields('from', true);
+    $("#searchform input[name='timefromrestrict']").click(function() {
+        toggleDateFields('from', !this.checked);
+    });
+
+    toggleDateFields('to', true);
+    $("#searchform input[name='timetorestrict']").click(function() {
+        toggleDateFields('to', !this.checked);
+    });
+});
+{{/js}}