- Global glossaries now available. All current rules apply to its entries.

This commit is contained in:
willcast
2003-10-29 23:33:54 +00:00
parent 68e16a6f47
commit 0de786f7da
11 changed files with 101 additions and 17 deletions
+2
View File
@@ -59,8 +59,10 @@ $string['explainalphabet'] = "Browse the glossary using this index";
$string['explainall'] = "Shows ALL entries on one page";
$string['exportedentry'] = "Exported entry";
$string['exporttomainglossary'] = "Export to main glossary";
$string['fillfields'] = "Concept and definition are mandatory fields.";
$string['fullmatch'] = "Match whole words only<br><small>(when automatically linked)</small>";
$string['glossarytype'] = "Glossary Type";
$string['isglobal'] = "Is this glossary global?";
$string['mainglossary'] = "Main glossary";
$string['modulename'] = "Glossary";
$string['modulenameplural'] = "Glossaries";
+5
View File
@@ -118,6 +118,11 @@ function glossary_upgrade($oldversion) {
execute_sql(" INSERT INTO {$CFG->prefix}log_display VALUES ('glossary', 'approve entry', 'glossary', 'name') ");
}
if ( $oldversion < 2003102800 ) {
execute_sql( "ALTER TABLE `{$CFG->prefix}glossary`" .
" ADD `globalglossary` TINYINT(2) UNSIGNED NOT NULL default '0' AFTER `defaultapproval`");
}
return true;
}
+1
View File
@@ -23,6 +23,7 @@ CREATE TABLE prefix_glossary (
allowcomments tinyint(2) unsigned NOT NULL default '0',
usedynalink tinyint(2) unsigned NOT NULL default '1',
defaultapproval tinyint(2) unsigned NOT NULL default '1',
globalglossary tinyint(2) unsigned NOT NULL default '0',
timecreated int(10) unsigned NOT NULL default '0',
timemodified int(10) unsigned NOT NULL default '0',
PRIMARY KEY (id)
+1
View File
@@ -22,6 +22,7 @@ CREATE TABLE prefix_glossary (
showall int2 NOT NULL default '1',
allowcomments int2 NOT NULL default '0',
usedynalink int2 NOT NULL default '1',
globalglossary int2 NOT NULL default '0',
timecreated int4 NOT NULL default '0',
timemodified int4 NOT NULL default '0',
PRIMARY KEY (id)
+10 -9
View File
@@ -12,14 +12,14 @@
$GLOSSARY_CONCEPT_IS_ENTRY = 0;
$GLOSSARY_CONCEPT_IS_CATEGORY = 1;
$glossarieslist = get_records_select("glossary", "usedynalink != 0 and course = $courseid","id");
// $glossarieslist = get_records_select("glossary", "usedynalink != 0 and (course = $courseid or global != 0)","id");
$glossarieslist = get_records_select("glossary", "usedynalink != 0 and (course = $courseid or globalglossary != 0)","globalglossary, id");
if ( $glossarieslist ) {
$glossaries = "";
foreach ( $glossarieslist as $glossary ) {
$glossaries .= "$glossary->id,";
}
$glossaries=substr($glossaries,0,-1);
/// sorting by the lenght of the concept in order to assure that large concepts
/// could be linked first, if they exist in the text to parse
switch ($CFG->dbtype) {
@@ -34,7 +34,7 @@
break;
}
$entries = get_records_select("glossary_entries", "glossaryid IN ($glossaries) AND usedynalink != 0 and approved != 0","$ebylenght glossaryid","id,glossaryid,concept,casesensitive,$GLOSSARY_CONCEPT_IS_ENTRY category,fullmatch");
$entries = get_records_select("glossary_entries", "glossaryid IN ($glossaries) AND usedynalink != 0 and approved != 0 and concept != ''","$ebylenght glossaryid","id,glossaryid,concept,casesensitive,$GLOSSARY_CONCEPT_IS_ENTRY category,fullmatch");
$categories = get_records_select("glossary_categories", "glossaryid IN ($glossaries)", "$cbylenght glossaryid,id","id,glossaryid,name concept, 1 casesensitive,$GLOSSARY_CONCEPT_IS_CATEGORY category, 1 fullmatch");
if ( $entries and $categories ) {
$concepts = array_merge($entries, $categories);
@@ -53,7 +53,6 @@
$glossary = get_record("glossary","id",$concept->glossaryid);
$lastglossary = $glossary->id;
}
if ( $concept->category ) {
if ( $lastcategory != $concept->id ) {
$category = get_record("glossary_categories","id",$concept->id);
@@ -128,9 +127,9 @@
}
// getting ride of all other tags
$final = array();
preg_match_all('/<(.+?)>/is',$text,$list_of_words);
preg_match_all('/<(.+?)>/is',$text,$list_of_tags);
foreach (array_unique($list_of_words[0]) as $key=>$value) {
foreach (array_unique($list_of_tags[0]) as $key=>$value) {
$final['<|'.$key.'|>'] = $value;
}
@@ -149,9 +148,11 @@
if ( $excludes ) {
$text = str_replace(array_keys($excludes),$excludes,$text);
}
if ( isset($words) and $fullmatch ) {
if ($words) {
$text = str_replace(array_keys($words),$words,$text);
if ( $fullmatch ) {
if ( isset($words) ) {
if ($words) {
$text = str_replace(array_keys($words),$words,$text);
}
}
}
return stripslashes($text);
+10
View File
@@ -1,6 +1,16 @@
<center>
<form name="form" method="post" <?=$onsubmit ?> action="edit.php" enctype="multipart/form-data">
<table class=generalbox cellpadding=5 bgcolor="<?php p($THEME->cellheading)?>">
<?PHP
if (isset($errors)) {
?>
<tr valign=top>
<td colspan=2 align=center><strong><font color=red><?PHP p($errors) ?></font></strong>
</td>
</tr>
<?PHP
}
?>
<tr valign=top>
<td align=right><p><b><?php echo get_string("concept","glossary") ?>:</b></p></td>
<td>
+32 -4
View File
@@ -21,7 +21,7 @@ if (! $course = get_record("course", "id", $cm->course)) {
require_login($course->id);
if (isguest()) {
if ( isguest() ) {
error("Guests are not allowed to edit glossaries", $_SERVER["HTTP_REFERER"]);
}
@@ -47,6 +47,34 @@ if ( $confirm ) {
$newentry->fullmatch = $form->fullmatch;
$newentry->timemodified = $timenow;
if ($form->concept == '' or trim($form->text) == '' ) {
$errors = get_string('fillfields','glossary');
$strglossary = get_string("modulename", "glossary");
$strglossaries = get_string("modulenameplural", "glossary");
$stredit = get_string("edit");
if ($usehtmleditor = can_use_richtext_editor()) {
$defaultformat = FORMAT_HTML;
$onsubmit = "onsubmit=\"copyrichtext(form.text);\"";
} else {
$defaultformat = FORMAT_MOODLE;
$onsubmit = "";
}
print_header(strip_tags("$course->shortname: $glossary->name"), "$course->fullname",
"<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> ->
<A HREF=\"index.php?id=$course->id\">$strglossaries</A> ->
<A HREF=\"view.php?id=$cm->id\">$glossary->name</A> -> $stredit", "form.text",
"", true, "", navmenu($course, $cm));
print_heading($glossary->name);
include("edit.html");
print_footer($course);
die;
}
if ($e) {
$newentry->id = $e;
@@ -123,7 +151,7 @@ if ( $confirm ) {
}
}
}
redirect("view.php?id=$cm->id&eid=$newentry->id");
redirect("view.php?id=$cm->id&eid=$newentry->id&tab=$tab&cat=$cat");
die;
} else {
if ($e) {
@@ -154,7 +182,7 @@ $stredit = get_string("edit");
if ($usehtmleditor = can_use_richtext_editor()) {
$defaultformat = FORMAT_HTML;
$onsubmit = "onsubmit=\"copyrichtext(theform.text);\"";
$onsubmit = "onsubmit=\"copyrichtext(form.text);\"";
} else {
$defaultformat = FORMAT_MOODLE;
$onsubmit = "";
@@ -163,7 +191,7 @@ if ($usehtmleditor = can_use_richtext_editor()) {
print_header(strip_tags("$course->shortname: $glossary->name"), "$course->fullname",
"<A HREF=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</A> ->
<A HREF=\"index.php?id=$course->id\">$strglossaries</A> ->
<A HREF=\"view.php?id=$cm->id\">$glossary->name</A> -> $stredit", "theform.text",
<A HREF=\"view.php?id=$cm->id\">$glossary->name</A> -> $stredit", "form.text",
"", true, "", navmenu($course, $cm));
print_heading($glossary->name);
+11 -1
View File
@@ -22,6 +22,12 @@ function glossary_add_instance($glossary) {
/// will create a new instance and return the id number
/// of the new instance.
if ( !isset($glossary->globalglossary) ) {
$glossary->globalglossary = 0;
} elseif ( !isadmin() ) {
$glossary->globalglossary = 0;
}
$glossary->timecreated = time();
$glossary->timemodified = $glossary->timecreated;
@@ -36,6 +42,10 @@ function glossary_update_instance($glossary) {
/// (defined by the form in mod.html) this function
/// will update an existing instance with new data.
if ( !isadmin() ) {
unset($glossary->globalglossary);
}
$glossary->timemodified = time();
$glossary->id = $glossary->instance;
@@ -1022,7 +1032,7 @@ function glossary_print_dynaentry($courseid, $entries) {
if (! $course = get_record("course", "id", $glossary->course)) {
error("Glossary is misconfigured - don't know what course it's from");
}
if (!$cm = get_coursemodule_from_instance("glossary", $entry->glossaryid, $courseid) ) {
if (!$cm = get_coursemodule_from_instance("glossary", $entry->glossaryid, $glossary->course) ) {
error("Glossary is misconfigured - don't know what course module it is ");
}
glossary_print_entry($course, $cm, $glossary, $entry);
+27 -1
View File
@@ -38,6 +38,9 @@ if (!isset($form->studentcanpost)) {
if (!isset($form->usedynalink)) {
$form->usedynalink = 1;
}
if ( !isset($form->globalglossary) ) {
$form->globalglossary = 0;
}
?>
<FORM name="form" method="post" action="<?=$ME ?>">
<CENTER>
@@ -67,6 +70,28 @@ if (!isset($form->usedynalink)) {
</tr>
<!-- More rows go in here... -->
<?php
if (isadmin() ) {
?>
<TR valign=top>
<TD align=right><P><B><?php echo get_string("isglobal", "glossary") ?>:</B></P></TD>
<TD>
<?php
$selected = "";
if ( isset($form->globalglossary) ) {
if ($form->globalglossary) {
$selected = "checked";
}
}
?>
<input type="checkbox" name="globalglossary" value=1 <?PHP p($selected)?>> <?php helpbutton("globalglossary", get_string("globallossary", "glossary"), "glossary") ?>
</TD>
</TR>
<?php
} else {
echo '<INPUT type="hidden" name=globalglossary value="' . $form->globalglossary . '">';
}
?>
<?php
$mainglossary = get_record("glossary","mainglossary",1,"course",$form->course);
if (!$mainglossary or $mainglossary->id == $form->instance ) {
?>
@@ -78,7 +103,8 @@ if (!$mainglossary or $mainglossary->id == $form->instance ) {
if ( $form->mainglossary ) {
echo "selected";
}
?>><?php echo get_string("mainglossary", "glossary") ?></option>
?>>
<?php echo get_string("mainglossary", "glossary") ?></option>
<option value="0" <?php
if ( !$form->mainglossary ) {
echo "selected";
+1 -1
View File
@@ -10,7 +10,7 @@
" where e.glossaryid = g.id and".
" (e.casesensitive != 0 and ucase(concept) = '" . strtoupper(trim($concept)). "' or".
" e.casesensitive = 0 and concept = '$concept') and".
" g.course = $courseid and".
" (g.course = $courseid or g.globalglossary) and".
" e.usedynalink != 0 and g.usedynalink != 0");
glossary_print_dynaentry($courseid, $entries);
+1 -1
View File
@@ -5,7 +5,7 @@
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
/////////////////////////////////////////////////////////////////////////////////
$module->version = 2003102000; // The current module version (Date: YYYYMMDDXX)
$module->version = 2003102800; // The current module version (Date: YYYYMMDDXX)
$module->cron = 0; // Period for cron to check this module (secs)
$release = "0.5 development"; // User-friendly version number