From 1cc0286707529860dccbfc9b8ceff8e84308adc0 Mon Sep 17 00:00:00 2001 From: samhemelryk Date: Thu, 22 Oct 2009 03:59:35 +0000 Subject: [PATCH] tag MDL-16704 Moved inline Javascript to tag.js and upgraded to page methods --- blocks/tags/block_tags.php | 18 +++++----- tag/coursetags_edit.php | 8 ++--- tag/coursetagslib.php | 68 ++++++-------------------------------- tag/edit.php | 24 ++------------ tag/tag.js | 64 +++++++++++++++++++++++++++++++++++ 5 files changed, 90 insertions(+), 92 deletions(-) create mode 100644 tag/tag.js diff --git a/blocks/tags/block_tags.php b/blocks/tags/block_tags.php index 4a7f867f4d..7258ab3a6e 100644 --- a/blocks/tags/block_tags.php +++ b/blocks/tags/block_tags.php @@ -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 { '.$moretagsstring.' '; - $coursetagdivs .= '"f_alltags", '; + $coursetagdivs[] = 'f_alltags'; } if ($mytags) { if ($mymoodlepage) { @@ -168,7 +169,7 @@ class block_tags extends block_base { '.$moretagsstring.' '; - $coursetagdivs .= '"f_mytags", '; + $coursetagdivs[] = 'f_mytags'; } if ($officialtags) { if ($mytags or $alltags) { @@ -184,7 +185,7 @@ class block_tags extends block_base { '.$moretagsstring.' '; - $coursetagdivs .= '"f_officialtags", '; + $coursetagdivs[] = 'f_officialtags'; } if ($coursetags) { if ($coursepage) { @@ -200,7 +201,7 @@ class block_tags extends block_base { '.$moretagsstring.' '; - $coursetagdivs .= '"f_coursetags", '; + $coursetagdivs[] = 'f_coursetags'; } if ($commtags) { $commtagscontent = ' @@ -211,11 +212,10 @@ class block_tags extends block_base { '.$moretagsstring.' '; - $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 diff --git a/tag/coursetags_edit.php b/tag/coursetags_edit.php index 00ad861324..dadf4a79a4 100644 --- a/tag/coursetags_edit.php +++ b/tag/coursetags_edit.php @@ -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 .= <<
@@ -153,7 +153,7 @@ echo $OUTPUT->header();
diff --git a/tag/coursetagslib.php b/tag/coursetagslib.php index 64066d93f6..959e342edb 100644 --- a/tag/coursetagslib.php +++ b/tag/coursetagslib.php @@ -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 = << 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 = ' - '; $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 .= '
'; foreach ($coursetagslinks as $a) { - $links .= ''.$a['text'].' |'; + $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 = ' - '; - - return $str; + return ''; } /** diff --git a/tag/edit.php b/tag/edit.php index d8261a5013..94fee1c7d9 100644 --- a/tag/edit.php +++ b/tag/edit.php @@ -131,28 +131,8 @@ if (!empty($errorstring)) { $tagform->display(); if (ajaxenabled()) { -?> - - - -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 index 0000000000..6aff427421 --- /dev/null +++ b/tag/tag.js @@ -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 -- 2.39.5