]> git.mjollnir.org Git - moodle.git/commitdiff
tag MDL-16704 Moved inline Javascript to tag.js and upgraded to page methods
authorsamhemelryk <samhemelryk>
Thu, 22 Oct 2009 03:59:35 +0000 (03:59 +0000)
committersamhemelryk <samhemelryk>
Thu, 22 Oct 2009 03:59:35 +0000 (03:59 +0000)
blocks/tags/block_tags.php
tag/coursetags_edit.php
tag/coursetagslib.php
tag/edit.php
tag/tag.js [new file with mode: 0644]

index 4a7f867f4dba29dfc995f89f9e92b8eea632fec7..7258ab3a6ef64244b1698ffe65b67123f23ce749 100644 (file)
@@ -104,7 +104,8 @@ class block_tags extends block_base {
             //TODO check whether time limited personal tags are required
             $numoftags = $this->config->numberoftags;
             $sort = 'name';
-            $alltags = $officialtags = $coursetags = $commtags = $mytags = $coursetagdivs = $courseflag = '';
+            $coursetagdivs = array();
+            $alltags = $officialtags = $coursetags = $commtags = $mytags = $courseflag = '';
             if ($sitepage or $coursepage) {
                 $alltags = coursetag_print_cloud(coursetag_get_all_tags($sort, $this->config->numberoftags), true);
                 $officialtags = coursetag_print_cloud(coursetag_get_tags(0, 0, 'official', $numoftags, $sort), true);
@@ -144,7 +145,7 @@ class block_tags extends block_base {
                             <a href="'.$moretags.'?show=all'.$courseflag.'" title="'.$moretagstitle.'">'.$moretagsstring.'</a>
                         </div>
                     </div>';
-                $coursetagdivs .= '"f_alltags", ';
+                $coursetagdivs[] = 'f_alltags';
             }
             if ($mytags) {
                 if ($mymoodlepage) {
@@ -168,7 +169,7 @@ class block_tags extends block_base {
                             <a href="'.$moretags.'?show=my'.$courseflag.'" title="'.$moretagstitle.'">'.$moretagsstring.'</a>
                         </div>
                     </div>';
-                $coursetagdivs .= '"f_mytags", ';
+                $coursetagdivs[] = 'f_mytags';
             }
             if ($officialtags) {
                 if ($mytags or $alltags) {
@@ -184,7 +185,7 @@ class block_tags extends block_base {
                             <a href="'.$moretags.'?show=official'.$courseflag.'" title="'.$moretagstitle.'">'.$moretagsstring.'</a>
                         </div>
                     </div>';
-                $coursetagdivs .= '"f_officialtags", ';
+                $coursetagdivs[] = 'f_officialtags';
             }
             if ($coursetags) {
                 if ($coursepage) {
@@ -200,7 +201,7 @@ class block_tags extends block_base {
                             <a href="'.$moretags.'?show=course'.$courseflag.'" title="'.$moretagstitle.'">'.$moretagsstring.'</a>
                         </div>
                     </div>';
-                $coursetagdivs .= '"f_coursetags", ';
+                $coursetagdivs[] = 'f_coursetags';
             }
             if ($commtags) {
                 $commtagscontent = '
@@ -211,11 +212,10 @@ class block_tags extends block_base {
                             <a href="'.$moretags.'?show=community'.$courseflag.'" title="'.$moretagstitle.'">'.$moretagsstring.'</a>
                         </div>
                     </div>';
-                $coursetagdivs .= '"f_commtags", ';
+                $coursetagdivs[] .= 'f_commtags';
             }
             // Tidy up the end of a javascript array and add javascript
-            $coursetagdivs = rtrim($coursetagdivs, ', ');
-            $this->content->text .= coursetag_get_jscript($coursetagdivs);
+            coursetag_get_jscript($coursetagdivs);
 
             // Add the divs (containing the tags) to the block's content
             if ($alltags) { $this->content->text .= $alltagscontent; }
@@ -308,7 +308,7 @@ EOT;
                                                     'onclick'=>'f_coursetags',
                                                     'text'=>get_string('coursetags1', $tagslang));
                 }
-                $this->content->footer .= coursetag_get_jscript_links($coursetagslinks);
+                coursetag_get_jscript_links($coursetagslinks);
 
             } else {
                 //if not logged in
index 00ad861324fc9dcbf1dadbaa1d0e155b9041ad5b..dadf4a79a45474a33be49c1cf26a011671e0feaf 100644 (file)
@@ -75,7 +75,7 @@ echo $OUTPUT->header();
 
     // Print personal tags for all courses
     $title = get_string('edittitle', $tagslang);
-    echo $OUTPUT->heading($title, 'center');
+    echo $OUTPUT->heading($title, 2, 'center');
 
     $mytags = coursetag_print_cloud(coursetag_get_tags(0, $USER->id, 'default'), true);
     $outstr = '
@@ -126,13 +126,13 @@ echo $OUTPUT->header();
         }
 
         // Print the add and delete form
-        $script = coursetag_get_jscript();
+        coursetag_get_jscript();
         $addtagshelp = $OUTPUT->help_icon(moodle_help_icon::make('addtags', 'adding tags', $tagslang));
         $edittagthisunit = get_string('edittagthisunit', $tagslang);
         $arrowtitle = get_string('arrowtitle', $tagslang);
         $sesskey = sesskey();
+        $leftarrow = $OUTPUT->old_icon_url('t/arrow_left');
         $outstr .= <<<EOT
-            $script
             <form action="$CFG->wwwroot/tag/coursetags_edit.php" method="post" id="coursetag">
                 <div style="display: none;">
                     <input type="hidden" name="courseid" value="$course->id" />
@@ -153,7 +153,7 @@ echo $OUTPUT->header();
                             </div>
                             <div class="coursetag_edit_input3" id="coursetag_sug_btn">
                                 <a title="$arrowtitle">
-                                    <img src="" . $OUTPUT->old_icon_url('t/arrow_left') . "" width="10" height="10" alt="enter" onclick="ctags_setKeywords()" />
+                                    <img src="$leftarrow" width="10" height="10" alt="enter" onclick="ctags_setKeywords()" />
                                 </a>
                             </div>
                         </div>
index 64066d93f61b4bffeb1f904065f62a4adfd20a13..959e342edb5f790d8f0da864baa5d22bc9456a0c 100644 (file)
@@ -241,85 +241,39 @@ function coursetag_print_cloud($tagcloud, $return=false, $max_size=180, $min_siz
  * @uses $CFG
  */
 function coursetag_get_jscript($coursetagdivs = '') {
-
     global $CFG, $DB, $PAGE;
 
-    $tabscript = '';
+    $PAGE->requires->js('tag/tag.js');
+    $PAGE->requires->strings_for_js(array('jserror1', 'jserror2'), 'block_tags');
+
     if ($coursetagdivs) {
-        $tabscript = 'var coursetagdivs = new Array('.$coursetagdivs.');';
+        $PAGE->requires->js_function_call('set_course_tag_divs', $coursetagdivs);
     }
 
-    $coursetags = $DB->get_records('tag', null, 'name ASC', 'name, id');
-    $a = 0;
-    $coursetagscript = '';
-    if (!empty($coursetags)) {
+    if ($coursetags = $DB->get_records('tag', null, 'name ASC', 'name, id')) {
         foreach ($coursetags as $key => $value) {
-            $coursetagscript .= "coursetag_tags[$a] = \"".addslashes_js($key)."\"; ";
-            $a++;
-        }
-    }
-
-    $jserror1 = get_string('jserror1', 'block_tags');
-    $jserror2 = get_string('jserror2', 'block_tags');
-
-    $inputscript = <<<EOT
-    function ctags_checkinput(val) {
-        var len = val.length;
-        if (len < 2 || len > 50) {
-            alert("$jserror1");
-            return false;
-        //can't check this - unterminated string error } else if (val.indexOf("\\") > 0) {
-        } else if (val.indexOf("<") > 0) {
-            alert("$jserror2");
-            return false;
-        } else if (val.indexOf(">") > 0) {
-            alert("$jserror2");
-            return false;
-        } else {
-            return true;
+            $PAGE->requires->js_function_call('set_course_tag', array($key));
         }
     }
-EOT;
-
-    $str = '
-    <script type="text/javascript">
-        //<![CDATA[
-            '.$tabscript.'
-            var coursetag_tags = new Array();
-            '.$coursetagscript.'
-            '.$inputscript.'
-        //]]>
-    </script>';
 
     $PAGE->requires->js('blocks/tags/coursetags.js');
 
-    return $str;
+    return '';
 }
 
 /**
  * Returns javascript to create the links in the tag block footer.
  */
 function coursetag_get_jscript_links($coursetagslinks) {
-
-    $links = '';
+    global $PAGE;
+    
     if (!empty($coursetagslinks)) {
-        $links .= '<hr />';
         foreach ($coursetagslinks as $a) {
-            $links .= '<a href="" title="'.$a['title'].'"
-                        onclick="return ctags_show_div(\''.$a['onclick'].'\')">'.$a['text'].'</a> |';
+            $PAGE->requires->js_function_call('add_tag_footer_link', array('coursetagslinks', $a['title'], $a['onclick'], $a['text']))->on_dom_ready();
         }
-        $links = addslashes_js(rtrim($links, '|'));
     }
 
-    $str = '
-    <script type="text/javascript">
-        //<![CDATA[
-            var element = document.getElementById("coursetagslinks");
-            element.innerHTML = "'.$links.'";
-        //]]>
-    </script>';
-
-    return $str;
+    return '';
 }
 
 /**
index d8261a5013c4cbf623f9d459a18b4e2b4ec6f986..94fee1c7d985b954132e27f9ac14566ac39fb5a8 100644 (file)
@@ -131,28 +131,8 @@ if (!empty($errorstring)) {
 $tagform->display();
 
 if (ajaxenabled()) {
-?>
-
-<script type="text/javascript">
-
-// An XHR DataSource
-var myServer = "./tag_autocomplete.php";
-var myDataSource = new YAHOO.widget.DS_XHR(myServer, ["\n", "\t"]);
-myDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
-myDataSource.maxCacheEntries = 60;
-myDataSource.queryMatchSubset = true;
-
-var myAutoComp = new YAHOO.widget.AutoComplete("id_relatedtags","relatedtags-autocomplete", myDataSource);
-myAutoComp.delimChar = ",";
-myAutoComp.maxResultsDisplayed = 20;
-myAutoComp.minQueryLength = 2;
-myAutoComp.allowBrowserAutocomplete = false;
-myAutoComp.formatResult = function(aResultItem, sQuery) {
-    return aResultItem[1];
-}
-</script>
-
-<?php
+    $PAGE->requires->js('tag/tag.js');
+    $PAGE->requires->js_function_call('init_tag_autocomplete')->on_dom_ready();
 }
 echo $OUTPUT->footer();
 
diff --git a/tag/tag.js b/tag/tag.js
new file mode 100644 (file)
index 0000000..6aff427
--- /dev/null
@@ -0,0 +1,64 @@
+var coursetagdivs = null;
+var coursetag_tags = new Array();
+
+function init_tag_autocomplete() {
+    // An XHR DataSource
+    var myServer = "./tag_autocomplete.php";
+    var myDataSource = new YAHOO.widget.DS_XHR(myServer, ["\n", "\t"]);
+    myDataSource.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
+    myDataSource.maxCacheEntries = 60;
+    myDataSource.queryMatchSubset = true;
+
+    var myAutoComp = new YAHOO.widget.AutoComplete("id_relatedtags","relatedtags-autocomplete", myDataSource);
+    myAutoComp.delimChar = ",";
+    myAutoComp.maxResultsDisplayed = 20;
+    myAutoComp.minQueryLength = 2;
+    myAutoComp.allowBrowserAutocomplete = false;
+    myAutoComp.formatResult = function(aResultItem, sQuery) {
+        return aResultItem[1];
+    }
+}
+
+function ctags_checkinput(val) {
+    var len = val.length;
+    if (len < 2 || len > 50) {
+        alert(mstr.block_tags.jserror1);
+        return false;
+    } else if (val.indexOf("<") > 0) {
+        alert(mstr.block_tags.jserror2);
+        return false;
+    } else if (val.indexOf(">") > 0) {
+        alert(mstr.block_tags.jserror2);
+        return false;
+    } else {
+        return true;
+    }
+}
+
+function set_course_tag_divs(ctagdivs) {
+    window.coursetagdivs = ctagdivs;
+}
+
+function set_course_tag(key) {
+    window.coursetag_tags[window.coursetag_tags.length] = key;
+}
+
+function add_tag_footer_link(eid, ltitle, laction, ltext) {
+    var e = document.getElementById(eid);
+    if (e) {
+        var link = document.createElement('a');
+        link.setAttribute('href', '');
+        link.setAttribute('title', ltitle);
+        link.appendChild(document.createTextNode(ltext));
+        var callback = function () {
+            ctags_show_div(laction);
+        }
+        YAHOO.util.Event.addListener(link, 'click', callback);
+        if (e.childNodes.length > 0) {
+            e.appendChild(document.createTextNode(' | '));
+        } else {
+            e.appendChild(document.createElement('hr'));
+        }
+        e.appendChild(link);
+    }
+}
\ No newline at end of file