//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);
<a href="'.$moretags.'?show=all'.$courseflag.'" title="'.$moretagstitle.'">'.$moretagsstring.'</a>
</div>
</div>';
- $coursetagdivs .= '"f_alltags", ';
+ $coursetagdivs[] = 'f_alltags';
}
if ($mytags) {
if ($mymoodlepage) {
<a href="'.$moretags.'?show=my'.$courseflag.'" title="'.$moretagstitle.'">'.$moretagsstring.'</a>
</div>
</div>';
- $coursetagdivs .= '"f_mytags", ';
+ $coursetagdivs[] = 'f_mytags';
}
if ($officialtags) {
if ($mytags or $alltags) {
<a href="'.$moretags.'?show=official'.$courseflag.'" title="'.$moretagstitle.'">'.$moretagsstring.'</a>
</div>
</div>';
- $coursetagdivs .= '"f_officialtags", ';
+ $coursetagdivs[] = 'f_officialtags';
}
if ($coursetags) {
if ($coursepage) {
<a href="'.$moretags.'?show=course'.$courseflag.'" title="'.$moretagstitle.'">'.$moretagsstring.'</a>
</div>
</div>';
- $coursetagdivs .= '"f_coursetags", ';
+ $coursetagdivs[] = 'f_coursetags';
}
if ($commtags) {
$commtagscontent = '
<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; }
'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
// 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 = '
}
// 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" />
</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>
* @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 '';
}
/**
$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();
--- /dev/null
+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